diff --git a/.github/actions/setup_node/action.yml b/.github/actions/setup_node/action.yml deleted file mode 100644 index d017766117f0..000000000000 --- a/.github/actions/setup_node/action.yml +++ /dev/null @@ -1,26 +0,0 @@ -# This action is a wrapper around `actions/setup-node`, to use the version specified in -# `dependencies.sh`. -name: Setup Node -description: Install Node using the version specified in `dependencies.sh`; additionally, restores the Yarn cache if one exists - -inputs: - restore-yarn-cache: - description: "If `true`, restores the Yarn cache alongside installing node." - required: false - type: boolean - default: false - -runs: - using: composite - steps: - - name: Configure Node version - shell: bash - run: | - source dependencies.sh - echo "NODE_VERSION_REQUIRED=$NODE_VERSION_LTS" >> $GITHUB_ENV - - name: Install Node - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION_REQUIRED }} - cache: ${{ fromJSON(inputs.restore-yarn-cache) && 'yarn' || '' }} - cache-dependency-path: ${{ fromJSON(inputs.restore-yarn-cache) && 'tgui/yarn.lock' || '' }} diff --git a/.github/gbp.toml b/.github/gbp.toml index fd52ca827a16..9080d0d15a7b 100644 --- a/.github/gbp.toml +++ b/.github/gbp.toml @@ -24,3 +24,4 @@ reset_label = "GBP: Reset" "Sprites" = 3 "Unit Tests" = 6 "Wallening Revert Recovery" = 10 +"Tools" = 12 diff --git a/.github/workflows/auto_changelog.yml b/.github/workflows/auto_changelog.yml index bbb87a22fd5b..76ce725b3e48 100644 --- a/.github/workflows/auto_changelog.yml +++ b/.github/workflows/auto_changelog.yml @@ -14,7 +14,9 @@ jobs: if: github.event.pull_request.merged == true steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 + with: + ref: ${{ github.event.repository.default_branch }} - name: Generate App Token id: app-token-generation diff --git a/.github/workflows/autowiki.yml b/.github/workflows/autowiki.yml index d6e8c5890972..0c4091b17712 100644 --- a/.github/workflows/autowiki.yml +++ b/.github/workflows/autowiki.yml @@ -20,7 +20,7 @@ jobs: echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install BYOND if: steps.secrets_set.outputs.SECRETS_ENABLED uses: ./.github/actions/restore_or_install_byond diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index e42012491855..fc7edf9f9d90 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -1,6 +1,12 @@ name: CI Suite on: + push: + branches: + - master + - 'project/**' + - 'gh-readonly-queue/master/**' + - 'gh-readonly-queue/project/**' pull_request: branches: - master @@ -52,6 +58,7 @@ jobs: uses: ./.github/workflows/perform_regular_version_tests.yml with: maps: ${{ needs.collect_data.outputs.maps }} + map_config: ${{ needs.collect_data.outputs.map_config }} max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }} run_alternate_tests: diff --git a/.github/workflows/codeowner_reviews.yml b/.github/workflows/codeowner_reviews.yml index f1cb174de37b..2dc3776c2044 100644 --- a/.github/workflows/codeowner_reviews.yml +++ b/.github/workflows/codeowner_reviews.yml @@ -7,23 +7,16 @@ on: jobs: assign-users: + if: github.event.pull_request.draft == false runs-on: ubuntu-24.04 timeout-minutes: 5 steps: # Checks-out your repository under $GITHUB_WORKSPACE, so the job can access it - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - #Parse the Codeowner file on non draft PRs - - name: CodeOwnersParser - if: github.event.pull_request.draft == false - id: CodeOwnersParser - uses: tgstation/CodeOwnersParser@v1 - - #Request reviews + #Request reviews - name: Request reviews - if: steps.CodeOwnersParser.outputs.owners != '' - uses: tgstation/RequestReviewFromUser@v1 + uses: tgstation/code-reviewers@main with: - separator: " " - users: ${{ steps.CodeOwnersParser.outputs.owners }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/collect_data.yml b/.github/workflows/collect_data.yml index 60cf249dfca0..a1a5fe0657ba 100644 --- a/.github/workflows/collect_data.yml +++ b/.github/workflows/collect_data.yml @@ -6,6 +6,9 @@ on: maps: description: "The maps that were found" value: ${{ jobs.collect_data.outputs.maps }} + map_config: + description: "The map config file to use" + value: ${{ jobs.collect_data.outputs.map_config }} alternate_tests: description: "The alternate tests that were found" value: ${{ jobs.collect_data.outputs.alternate_tests }} @@ -22,26 +25,38 @@ jobs: timeout-minutes: 5 outputs: maps: ${{ steps.map_finder.outputs.maps }} + map_config: ${{ steps.map_finder.outputs.map_config }} alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }} max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }} required_build_versions: ${{ steps.setup_required_build_versions.outputs.required_build_versions }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Find Maps id: map_finder run: | > maps_output.txt + > map_configs.txt + for file in _maps/*.json; do if ! jq -e '.exclude_from_ci == true' "$file" >/dev/null 2>&1; then - echo "\"$(basename "$file" .json)\"" >> maps_output.txt + map_name=$(basename "$file" .json) + + echo "\"$map_name\"" >> maps_output.txt + echo "map $map_name" >> map_configs.txt + echo "endmap" >> map_configs.txt else echo "Excluded: $file" fi done + map_list=$(paste -sd, maps_output.txt) echo "Maps: $map_list" echo "maps={\"paths\":[$map_list]}" >> "$GITHUB_OUTPUT" + + echo "map_config<> "$GITHUB_OUTPUT" + cat map_configs.txt >> "$GITHUB_OUTPUT" + echo "EOF" >> "$GITHUB_OUTPUT" - name: Find Alternate Tests id: alternate_test_finder run: | diff --git a/.github/workflows/compare_screenshots.yml b/.github/workflows/compare_screenshots.yml index a549a64a3f65..33d158214607 100644 --- a/.github/workflows/compare_screenshots.yml +++ b/.github/workflows/compare_screenshots.yml @@ -8,7 +8,7 @@ jobs: timeout-minutes: 15 runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup directory run: mkdir -p artifacts # If we ever add more artifacts, this is going to break, but it'll be obvious. diff --git a/.github/workflows/compile_all_maps.yml b/.github/workflows/compile_all_maps.yml index c80c0f4ae052..a28eb40306b2 100644 --- a/.github/workflows/compile_all_maps.yml +++ b/.github/workflows/compile_all_maps.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 5 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup Bun uses: ./.github/actions/setup_bun - name: Restore BYOND from Cache @@ -35,7 +35,7 @@ jobs: timeout-minutes: 5 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup Bun uses: ./.github/actions/setup_bun - name: Restore BYOND from Cache diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index b3fc492cd7bb..0067c4c1d559 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -2,7 +2,7 @@ name: Compile changelogs on: schedule: - - cron: "0 0 * * 1" + - cron: "0 0 * * *" # DARKPACK EDIT CHANGE workflow_dispatch: jobs: @@ -35,7 +35,7 @@ jobs: - name: "Checkout" if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 25 persist-credentials: false diff --git a/.github/workflows/discord_discussions.yml b/.github/workflows/discord_discussions.yml index 2d7a02dd5871..6d9938dff58b 100644 --- a/.github/workflows/discord_discussions.yml +++ b/.github/workflows/discord_discussions.yml @@ -34,7 +34,7 @@ jobs: dotnet-quality: ga - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Build Tgstation.DiscordDiscussions run: dotnet publish -c Release -o discord_discussions_bins tools/Tgstation.DiscordDiscussions/Tgstation.DiscordDiscussions.csproj diff --git a/.github/workflows/discord_pr_announce.yml b/.github/workflows/discord_pr_announce.yml index a24f8bb2b778..092e7d69a9d0 100644 --- a/.github/workflows/discord_pr_announce.yml +++ b/.github/workflows/discord_pr_announce.yml @@ -1,7 +1,7 @@ name: "Discord PR Notification" on: pull_request_target: - types: [opened, closed] + types: [opened, closed, reopened] jobs: notify: @@ -19,15 +19,11 @@ jobs: uses: tgstation/discord-notify@main if: > steps.secrets_set.outputs.SECRETS_ENABLED && - (github.event.pull_request.merged == true || github.event.action == 'opened') && + (github.event.pull_request.merged == true || github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request.author_association != 'FIRST_TIMER' && github.event.pull_request.author_association != 'FIRST_TIME_CONTRIBUTOR' with: webhook_url: ${{ secrets.DISCORD_WEBHOOK }} - title: ${{ github.event.pull_request.user.login }} - ${{ github.event.pull_request.title }} - message: GET_ACTION include_image: false show_author: false avatar_url: https://avatars.githubusercontent.com/u/1363778?s=200&v=4 - username: GitHub - title_url: "${{ github.event.pull_request.html_url }}" diff --git a/.github/workflows/gbp.yml b/.github/workflows/gbp.yml index 2294f843bd5c..14d160c0604c 100644 --- a/.github/workflows/gbp.yml +++ b/.github/workflows/gbp.yml @@ -12,7 +12,9 @@ jobs: issues: write # to apply labels steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 + with: + ref: ${{ github.event.repository.default_branch }} - name: Run Auto Labeler uses: actions/github-script@v9 with: @@ -40,7 +42,9 @@ jobs: echo "ACTIONS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 + with: + ref: ${{ github.event.repository.default_branch }} - name: Setup git if: steps.value_holder.outputs.ACTIONS_ENABLED run: | @@ -48,7 +52,7 @@ jobs: git config --global user.email "<>" - name: Checkout alternate branch if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: "gbp-balances" # The branch name path: gbp-balances diff --git a/.github/workflows/gbp_collect.yml b/.github/workflows/gbp_collect.yml index 715af0126efc..a8053b9cb0cd 100644 --- a/.github/workflows/gbp_collect.yml +++ b/.github/workflows/gbp_collect.yml @@ -18,7 +18,7 @@ jobs: echo "ACTIONS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Setup git if: steps.value_holder.outputs.ACTIONS_ENABLED run: | @@ -26,7 +26,7 @@ jobs: 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@v6 + uses: actions/checkout@v7 with: ref: "gbp-balances" # The branch name path: gbp-balances diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index ebb068f4337e..9e862bf4664f 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -13,9 +13,9 @@ jobs: runs-on: ubuntu-24.04 concurrency: gen-docs steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/SpacemanDMM key: ${{ runner.os }}-spacemandmm-${{ secrets.CACHE_PURGE_KEY }} diff --git a/.github/workflows/perform_regular_version_tests.yml b/.github/workflows/perform_regular_version_tests.yml index 724db11f7dfb..fee5d249b6ee 100644 --- a/.github/workflows/perform_regular_version_tests.yml +++ b/.github/workflows/perform_regular_version_tests.yml @@ -6,6 +6,9 @@ on: maps: required: true type: string + map_config: + required: true + type: string max_required_byond_client: required: true type: string @@ -21,4 +24,5 @@ jobs: with: map: ${{ matrix.map }} + map_config: ${{ inputs.map_config }} max_required_byond_client: ${{ inputs.max_required_byond_client }} diff --git a/.github/workflows/remove_guide_comments.yml b/.github/workflows/remove_guide_comments.yml index 5f2abf92f332..293bbfb5d34f 100644 --- a/.github/workflows/remove_guide_comments.yml +++ b/.github/workflows/remove_guide_comments.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Remove guide comments uses: actions/github-script@v9 with: diff --git a/.github/workflows/rerun_flaky_tests.yml b/.github/workflows/rerun_flaky_tests.yml index 908106bfd295..5747311f71d5 100644 --- a/.github/workflows/rerun_flaky_tests.yml +++ b/.github/workflows/rerun_flaky_tests.yml @@ -16,7 +16,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1 }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Rerun flaky tests uses: actions/github-script@v9 with: @@ -28,7 +28,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.run_attempt == 2 }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Report flaky tests uses: actions/github-script@v9 with: diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index 89f6cd236769..320a49f8dccc 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -8,6 +8,9 @@ on: map: required: true type: string + map_config: + required: false + type: string major: required: false type: string @@ -27,9 +30,9 @@ jobs: # For example, `Run Tests (runtimestation; 515)`. name: Run Tests (${{ inputs.major && format('{0}.{1}; ', inputs.major, inputs.minor) || '' }}${{ inputs.map }}; ${{ inputs.max_required_byond_client }}) runs-on: ubuntu-24.04 - timeout-minutes: 15 + timeout-minutes: 55 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Restore BYOND from Cache uses: ./.github/actions/restore_or_install_byond with: @@ -38,7 +41,7 @@ jobs: - name: Download build outputs uses: actions/download-artifact@v8 with: - name: build-artifact-${{ inputs.major || env.BYOND_MAJOR }}-${{ inputs.minor || env.BYOND_MINOR}} + name: build-artifact-${{ inputs.major || env.BYOND_MAJOR }}-${{ inputs.minor || env.BYOND_MINOR }} path: ./ - name: Setup database env: @@ -60,12 +63,12 @@ jobs: id: run_tests run: | source $HOME/BYOND/byond/bin/byondsetup - bash tools/ci/run_server.sh ${{ inputs.map }} + bash tools/ci/run_server.sh "${{ inputs.map }}" "${{ inputs.map_config }}" - name: Upload screenshot tests if: always() uses: actions/upload-artifact@v7 with: - name: test_artifacts_${{ inputs.map }}_${{ inputs.major }}_${{ inputs.minor }} + name: test_artifacts_${{ inputs.map }}_${{ inputs.major || env.BYOND_MAJOR }}_${{ inputs.minor || env.BYOND_MINOR }} path: data/screenshots_new/ retention-days: 1 - name: On test fail, write a step summary diff --git a/.github/workflows/run_linters.yml b/.github/workflows/run_linters.yml index b5c4c4bce2e5..3bcad0824d10 100644 --- a/.github/workflows/run_linters.yml +++ b/.github/workflows/run_linters.yml @@ -9,9 +9,9 @@ jobs: timeout-minutes: 5 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Restore SpacemanDMM cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/SpacemanDMM key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }} @@ -20,21 +20,21 @@ jobs: - name: Setup Bun uses: ./.github/actions/setup_bun - name: Restore Bootstrap cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: tools/bootstrap/.cache key: ${{ runner.os }}-bootstrap-${{ hashFiles('/tools/requirements.txt') }} restore-keys: | ${{ runner.os }}-bootstrap- - name: Restore Rust cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/.cargo key: ${{ runner.os }}-rust-${{ hashFiles('/tools/ci/ci_dependencies.sh')}} restore-keys: | ${{ runner.os }}-rust- - name: Restore Cutter cache - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: tools/icon_cutter/cache key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} diff --git a/.github/workflows/setup_build_artifact.yml b/.github/workflows/setup_build_artifact.yml index ec86658b009e..b0052359c6f5 100644 --- a/.github/workflows/setup_build_artifact.yml +++ b/.github/workflows/setup_build_artifact.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-24.04 timeout-minutes: 5 steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Setup Bun uses: ./.github/actions/setup_bun - name: Restore BYOND from Cache diff --git a/.github/workflows/show_screenshot_test_results.yml b/.github/workflows/show_screenshot_test_results.yml index 60abec66ed39..c9e150ede8ee 100644 --- a/.github/workflows/show_screenshot_test_results.yml +++ b/.github/workflows/show_screenshot_test_results.yml @@ -25,7 +25,7 @@ jobs: echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Prepare module if: steps.secrets_set.outputs.SECRETS_ENABLED run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 9d9fc69f4711..9034ca769269 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -77,5 +77,4 @@ jobs: include_image: false show_author: false avatar_url: https://avatars.githubusercontent.com/u/1363778?s=200&v=4 - username: GitHub - title_url: "${{ matrix.pull_request.html_url }}" + title_url: ${{ matrix.pull_request.html_url }} diff --git a/.github/workflows/test_merge_bot.yml b/.github/workflows/test_merge_bot.yml index 9c404edd34f7..a5601c80f4cc 100644 --- a/.github/workflows/test_merge_bot.yml +++ b/.github/workflows/test_merge_bot.yml @@ -23,7 +23,7 @@ jobs: echo "GET_TEST_MERGES_URL=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.GET_TEST_MERGES_URL - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Prepare module if: steps.secrets_set.outputs.GET_TEST_MERGES_URL run: | diff --git a/.github/workflows/tgs_test.yml b/.github/workflows/tgs_test.yml index fefe765bb753..c52b5bd05f62 100644 --- a/.github/workflows/tgs_test.yml +++ b/.github/workflows/tgs_test.yml @@ -64,7 +64,7 @@ jobs: dotnet-version: 8.0.x - name: Checkout Repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Test TGS Integration run: dotnet run -c Release --project tools/tgs_test ${{ github.repository }} /tgs_instances/tgstation ${{ env.TGS_API_PORT }} ${{ github.event.pull_request.head.sha || github.sha }} ${{ secrets.GITHUB_TOKEN }} ${{ env.PR_NUMBER }} diff --git a/.github/workflows/update_tgs_dmapi.yml b/.github/workflows/update_tgs_dmapi.yml index f5e444634bbb..fe6440cc66cd 100644 --- a/.github/workflows/update_tgs_dmapi.yml +++ b/.github/workflows/update_tgs_dmapi.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write steps: - name: Clone - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Branch run: | diff --git a/_maps/RandomRuins/AnywhereRuins/shoe_factory.dmm b/_maps/RandomRuins/AnywhereRuins/shoe_factory.dmm index 6bc24120e0b4..81ff890bb24a 100644 --- a/_maps/RandomRuins/AnywhereRuins/shoe_factory.dmm +++ b/_maps/RandomRuins/AnywhereRuins/shoe_factory.dmm @@ -264,8 +264,9 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "shoe_factory_entrance" }, -/obj/effect/mapping_helpers/airlock_note_placer, -/obj/item/paper/fluff/ruins/shoe_factory/osha_shutdown, +/obj/effect/mapping_helpers/airlock_note_placer{ + note_path = /obj/item/paper/fluff/ruins/shoe_factory/osha_shutdown + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -823,8 +824,9 @@ cycle_id = "shoe_factory_entrance" }, /obj/machinery/door/airlock/external/ruin, -/obj/effect/mapping_helpers/airlock_note_placer, -/obj/item/paper/fluff/ruins/shoe_factory/osha_shutdown, +/obj/effect/mapping_helpers/airlock_note_placer{ + note_path = /obj/item/paper/fluff/ruins/shoe_factory/osha_shutdown + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_lodge.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_lodge.dmm index 39c49ade1dd0..58ebf9634aa2 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_lodge.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_lodge.dmm @@ -1023,11 +1023,11 @@ "pU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/freezer/fridge/all_access, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot{ pixel_x = 1; pixel_y = 2 }, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot{ pixel_x = 6; pixel_y = -2 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm index fe11d7a8b6c2..47d268fc5e4c 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm @@ -1320,7 +1320,7 @@ }, /area/ruin/pizzeria) "XB" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "XS" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm index df600c338fab..c11ba6fad9a2 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm @@ -1414,7 +1414,7 @@ "yp" = ( /obj/structure/closet/secure_closet/freezer/fridge/open, /obj/item/knife/kitchen, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/potato, /obj/item/food/meat/slab/human/mutant/zombie, /obj/item/food/meat/slab/human/mutant/zombie, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm index 61bc59a530a5..ab0716d4be23 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm @@ -498,7 +498,7 @@ /obj/structure/closet/crate/freezer, /obj/item/food/grown/potato, /obj/item/food/grown/potato, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/onion, /obj/item/food/grown/garlic, /turf/open/floor/iron/white, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm index 137ddbbca247..e906f92237da 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm @@ -405,7 +405,7 @@ /turf/open/misc/ice/icemoon, /area/icemoon/underground/explored) "Zd" = ( -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/explored) (1,1,1) = {" diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm index 8f8230638562..3ad540bbfbc6 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm @@ -47,7 +47,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/unexplored) "l" = ( -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/explored) "m" = ( /obj/effect/decal/cleanable/blood, @@ -161,7 +161,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "I" = ( -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/unexplored) "J" = ( /obj/effect/turf_decal/weather/snow/corner{ @@ -238,7 +238,7 @@ /area/icemoon/underground/explored) "S" = ( /obj/structure/flora/grass/brown/style_random, -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/explored) "T" = ( /obj/structure/flora/rock/pile/icy/style_3, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 494d435575eb..f426b8fe1d93 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -455,7 +455,7 @@ /turf/open/misc/beach/sand, /area/ruin/powered/beach) "oQ" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/wood, /area/ruin/powered/beach) "oU" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index 56263c3b814e..35c88aa39992 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -43,7 +43,7 @@ /turf/open/misc/asteroid/snow, /area/ruin/powered/snow_biodome) "al" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/plating, /area/ruin/powered/snow_biodome) "am" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm index b642034f2d61..c7c0e7e32836 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm @@ -10,10 +10,10 @@ /area/ruin/powered) "e" = ( /obj/item/clothing/suit/space/orange, -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "f" = ( -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "g" = ( /turf/open/misc/asteroid{ @@ -57,7 +57,7 @@ /obj/item/seeds/plump, /obj/item/food/grown/mushroom/glowshroom, /obj/item/seeds/tower, -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "n" = ( /obj/machinery/hydroponics/soil, @@ -71,7 +71,7 @@ /obj/item/storage/bag/plants/portaseeder, /obj/item/storage/bag/ore, /obj/item/storage/medkit/regular, -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "q" = ( /obj/structure/glowshroom/single, @@ -81,7 +81,7 @@ /obj/structure/rack, /obj/item/pickaxe/emergency, /obj/item/tank/internals/oxygen, -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "s" = ( /turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, @@ -174,7 +174,7 @@ /area/ruin/powered) "M" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace, +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos, /area/ruin/powered) "P" = ( /turf/template_noop, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index dd1151ee4fa3..91dbf795e438 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -605,6 +605,7 @@ /obj/effect/mapping_helpers/apc/syndicate_access, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/white/side{ dir = 9 }, diff --git a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm index f877e7c8ae37..b263c5c9921c 100644 --- a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm +++ b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm @@ -375,7 +375,7 @@ /turf/open/floor/iron/kitchen, /area/ruin/space/has_grav/allamericandiner) "rV" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/allamericandiner) diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index b725897aa360..18a9b704e587 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -65,7 +65,7 @@ pixel_y = 1; anchored = 1 }, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ offset_at_init = 0; pixel_z = 17; anchored = 1 diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index d15e29541264..a0e7576959d3 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -74,7 +74,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/deepstorage/kitchen) "as" = ( diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm index a7eb36e8456d..893ef21aff84 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm @@ -502,8 +502,8 @@ /obj/item/knife/kitchen, /obj/item/storage/box/mousetraps, /obj/structure/broken_flooring/pile, -/obj/item/food/grown/parsnip, -/obj/item/food/grown/parsnip, +/obj/item/food/grown/carrotlike/parsnip, +/obj/item/food/grown/carrotlike/parsnip, /obj/item/food/cheese/wedge, /turf/open/floor/plating/dumpsterair, /area/ruin/space/has_grav/garbagetruck/foodwaste) diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm index 7b000adb8359..6b83db373b82 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm @@ -761,7 +761,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "Sb" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) diff --git a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm index b7016e7eb9ee..8bda3cde936f 100644 --- a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm @@ -1868,7 +1868,7 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/flora/bush/fullgrass/style_random, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot{ preserved_food = 1 }, /turf/open/floor/grass, diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 07001ee233fa..85a4b3f82bb1 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -523,6 +523,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table, /obj/machinery/door/window/brigdoor/right/directional/east, +/obj/item/circuitboard/computer/borgupload/no_lock, /turf/open/floor/iron/dark, /area/ruin/space/ancientstation/delta/ai) "cA" = ( @@ -6797,6 +6798,15 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white/textured, /area/ruin/space/ancientstation/delta/proto) +"MC" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table, +/obj/machinery/door/window/brigdoor/right/directional/east, +/obj/item/circuitboard/computer/aiupload/no_lock, +/turf/open/floor/iron/dark, +/area/ruin/space/ancientstation/delta/ai) "MH" = ( /obj/structure/girder/displaced, /turf/open/floor/plating/airless, @@ -14366,7 +14376,7 @@ Wb NS dT nG -cz +MC cz ad ad diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 86727c3b383a..663ead0607b4 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -5594,6 +5594,8 @@ pixel_y = 6 }, /obj/item/circuitboard/machine/protolathe/offstation, +/obj/item/circuitboard/computer/borgupload/no_lock, +/obj/item/circuitboard/computer/aiupload/no_lock, /turf/open/floor/circuit/red/off, /area/ruin/space/ks13/ai/corridor) "LM" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index e8448c8a0471..0b692788e97f 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -1332,12 +1332,12 @@ /obj/item/food/grown/potato, /obj/item/food/grown/potato, /obj/item/food/grown/potato, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/tomato, /obj/item/food/grown/tomato, /obj/item/food/grown/tomato, diff --git a/_maps/RandomRuins/SpaceRuins/waystation.dmm b/_maps/RandomRuins/SpaceRuins/waystation.dmm index c950663a8266..9c25b8a4d2cc 100644 --- a/_maps/RandomRuins/SpaceRuins/waystation.dmm +++ b/_maps/RandomRuins/SpaceRuins/waystation.dmm @@ -309,7 +309,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/waystation/cargobay) "fU" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/waystation/kitchen) "gf" = ( diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index e88494eb687c..745c71a50476 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -304,6 +304,9 @@ /obj/structure/noticeboard/directional/north, /turf/open/floor/iron/grimy, /area/awaymission/caves/academy) +"bJ" = ( +/turf/closed/indestructible/rock, +/area/awaymission/inaccessible) "bP" = ( /obj/structure/table/wood, /obj/item/pen/red, @@ -1590,6 +1593,7 @@ "kP" = ( /obj/effect/decal/cleanable/cobweb, /mob/living/basic/heretic_summon/raw_prophet, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "kR" = ( @@ -1629,6 +1633,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/remains/human, /mob/living/basic/construct/artificer/noncult, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "la" = ( @@ -1666,10 +1671,12 @@ /turf/open/floor/plating, /area/awaymission/caves/academy) "ll" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/riveted, /area/awaymission/caves/academy) "lp" = ( /obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/vault, /area/awaymission/caves/academy) "lq" = ( @@ -1677,6 +1684,7 @@ /area/awaymission/caves/academy) "ls" = ( /obj/machinery/power/smes/magical, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/vault, /area/awaymission/caves/academy) "lt" = ( @@ -1737,6 +1745,7 @@ /obj/effect/immovablerod{ dir = 4 }, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/plating, /area/awaymission/caves/academy) "lN" = ( @@ -1989,6 +1998,10 @@ /obj/item/food/meat/slab, /turf/open/misc/asteroid/snow, /area/awaymission/caves/academy) +"pr" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/fakeglass, +/area/awaymission/caves/academy) "pC" = ( /mob/living/basic/construct/proteon/hostile, /turf/open/floor/plating, @@ -2056,6 +2069,7 @@ /obj/machinery/power/terminal{ dir = 1 }, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/vault, /area/awaymission/caves/academy) "tj" = ( @@ -2065,6 +2079,7 @@ /area/awaymission/caves/academy) "tv" = ( /mob/living/basic/construct/harvester/heretic, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "tL" = ( @@ -2077,6 +2092,11 @@ }, /turf/open/floor/plating/airless, /area/awaymission/beach/academy) +"ud" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/wood, +/area/awaymission/caves/academy) "ug" = ( /mob/living/basic/spider/giant/viper/wizard, /turf/open/floor/engine/cult, @@ -2100,6 +2120,10 @@ /obj/structure/flora/bush/jungle/c/style_random, /turf/open/misc/grass/jungle, /area/awaymission/beach/academy) +"vk" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/open/floor/plating, +/area/awaymission/caves/academy) "vA" = ( /obj/structure/chair/wood, /mob/living/basic/wizard/classic, @@ -2198,6 +2222,7 @@ /area/awaymission/caves/academy) "Ar" = ( /mob/living/basic/construct/harvester, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "Av" = ( @@ -2311,6 +2336,7 @@ /area/awaymission/caves/academy) "Gw" = ( /mob/living/basic/construct/juggernaut/angelic, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "GA" = ( @@ -2326,6 +2352,9 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/awaymission/caves/academy) +"GT" = ( +/turf/cordon/secret, +/area/misc/cordon) "Hb" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/iron/showroomfloor, @@ -2424,6 +2453,7 @@ /area/awaymission/caves/academy) "My" = ( /mob/living/basic/heretic_summon/fire_shark, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/engine/cult, /area/awaymission/caves/academy) "Mz" = ( @@ -2465,6 +2495,10 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/awaymission/caves/academy) +"Op" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/wood, +/area/awaymission/caves/academy) "OU" = ( /obj/item/wrench/caravan{ pixel_x = -18; @@ -2587,6 +2621,10 @@ /mob/living/basic/wizard/classic, /turf/open/floor/iron, /area/awaymission/caves/academy) +"Ta" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/open/floor/vault, +/area/awaymission/caves/academy) "Tk" = ( /obj/structure/safe/floor{ name = "floor safe of doom that you should not open" @@ -2633,7 +2671,7 @@ /turf/open/misc/grass/jungle, /area/awaymission/beach/academy) "Ua" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/misc/asteroid/snow, /area/awaymission/caves/academy) "UC" = ( @@ -2742,6 +2780,16766 @@ /area/awaymission/beach/academy) (1,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(2,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(3,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(4,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(5,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(6,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(7,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(8,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(9,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(10,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(11,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(12,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(13,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(14,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(15,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(16,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(17,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(18,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(19,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(20,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(21,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(22,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(23,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(24,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(25,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(26,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(27,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(28,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(29,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(30,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(31,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(32,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(33,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(34,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(35,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(36,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(37,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(38,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(39,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(40,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(41,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(42,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(43,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(44,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(45,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(46,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(47,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(48,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(49,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(50,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(51,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(52,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(53,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(54,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(55,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(56,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(57,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(58,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(59,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(60,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(61,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(62,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(63,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(64,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(65,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(66,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +bJ aG aG aG @@ -2836,6 +19634,12 @@ aG aG aG aG +xr +xr +xr +xr +xr +xr aG aG aG @@ -2860,149 +19664,138 @@ aG aG aG aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG +bJ +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(2,1,1) = {" -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -xr -xr -xr -xr -xr -xr -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -"} -(3,1,1) = {" -aG +(67,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3129,10 +19922,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(4,1,1) = {" -aG +(68,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3259,10 +20179,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(5,1,1) = {" -aG +(69,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3389,10 +20436,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(6,1,1) = {" -aG +(70,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3519,10 +20693,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(7,1,1) = {" -aG +(71,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3649,10 +20950,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(8,1,1) = {" -aG +(72,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3763,26 +21191,153 @@ mY mY mY mY -aG -aG -aG -aG -aG -aG -aG -aG -aG -mY -mY -mY -mY -mY -mY -aG -aG +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +mY +mY +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(9,1,1) = {" -aG +(73,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -3892,27 +21447,154 @@ mK mK mY mY -aG -aG -mY -mY -mY -mY -mY -mY -mY -aG -aG -mY -mY -mY -mY -mY -aG -aG +bJ +bJ +mY +mY +mY +mY +mY +mY +mY +bJ +bJ +mY +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(10,1,1) = {" -aG +(74,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4022,7 +21704,7 @@ jU mK mY mY -aG +bJ mY mY kc @@ -4032,17 +21714,144 @@ BI BI mY mY -aG -mY -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(11,1,1) = {" -aG +(75,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4152,7 +21961,7 @@ jU mK mY mY -aG +bJ mY kc kc @@ -4162,17 +21971,144 @@ kc oQ kc mY -aG -aG -mY -mY -mY -mY -aG -aG +bJ +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(12,1,1) = {" -aG +(76,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4282,7 +22218,7 @@ jU mK mY mY -aG +bJ mY kc ou @@ -4293,16 +22229,143 @@ kc kc mY mY -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(13,1,1) = {" -aG +(77,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4412,7 +22475,7 @@ Wm mK mY mY -aG +bJ mY kc kc @@ -4423,16 +22486,143 @@ kc kc kc mY -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(14,1,1) = {" -aG +(78,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4541,8 +22731,8 @@ jU jU mK mY -aG -aG +bJ +bJ mY kc kc @@ -4553,16 +22743,143 @@ SR kc kc mY -aG -aG -mY -mY -mY -aG -aG +bJ +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(15,1,1) = {" -aG +(79,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4671,7 +22988,7 @@ TT jU mK mY -aG +bJ mY mY kc @@ -4684,15 +23001,142 @@ kc kc mY mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(16,1,1) = {" -aG +(80,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4801,7 +23245,7 @@ jU jU mK mY -aG +bJ mY kc kc @@ -4814,15 +23258,142 @@ oQ kc kc mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(17,1,1) = {" -aG +(81,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -4931,7 +23502,7 @@ jU jU mK mK -aG +bJ mY kc kc @@ -4944,15 +23515,142 @@ kc kc gK mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(18,1,1) = {" -aG +(82,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5061,7 +23759,7 @@ Wm jU jU mK -aG +bJ mY Ua Ua @@ -5074,15 +23772,142 @@ kc kc kc mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(19,1,1) = {" -aG +(83,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5191,7 +24016,7 @@ jU jU PA mK -aG +bJ mY Ua Ua @@ -5204,15 +24029,142 @@ kc kc kc mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(20,1,1) = {" -aG +(84,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5321,8 +24273,8 @@ QO AT jU mK -xr -aG +bJ +bJ mY mY mY @@ -5334,15 +24286,142 @@ kc kc mY mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(21,1,1) = {" -aG +(85,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5452,8 +24531,8 @@ jU jU jU mK -aG -aG +bJ +bJ mY mY mY @@ -5464,15 +24543,142 @@ kc kc mY mY -aG -mY -mY -mY -aG -aG +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(22,1,1) = {" -aG +(86,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5583,7 +24789,7 @@ jU jU mK mY -aG +bJ mY mY XP @@ -5593,16 +24799,143 @@ kc kc kc mY -aG -aG -mY -mY -mY -aG -aG +bJ +bJ +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(23,1,1) = {" -aG +(87,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5713,8 +25046,8 @@ Wm jU mK mK -aG -aG +bJ +bJ mY kb gU @@ -5723,16 +25056,143 @@ kc oQ SR mY -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(24,1,1) = {" -aG +(88,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5844,7 +25304,7 @@ jU jU mK mY -aG +bJ mY zI kc @@ -5853,16 +25313,143 @@ kc kc kc mY -aG -mY -mY -mY -mY -aG -aG -"} -(25,1,1) = {" -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(89,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -5974,7 +25561,7 @@ jU jU mK mK -aG +bJ mY mY en @@ -5983,16 +25570,143 @@ kc kc kc mY -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(26,1,1) = {" -aG +(90,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6104,8 +25818,8 @@ jU jU jU mK -aG -aG +bJ +bJ mY kc kc @@ -6113,16 +25827,143 @@ gK kc mY mY -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(27,1,1) = {" -aG +(91,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6235,24 +26076,151 @@ jU AT mK mK -aG -mY -mY -mY -mY -mY -mY -aG -aG -mY -mY -mY -mY -aG -aG +bJ +mY +mY +mY +mY +mY +mY +bJ +bJ +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(28,1,1) = {" -aG +(92,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6365,24 +26333,151 @@ Wm jU jU mK -xr -aG -aG -aG -aG -aG -aG -aG -mY -mY -mY -mY -mY -aG -aG +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +mY +mY +mY +mY +mY +aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(29,1,1) = {" -aG +(93,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6509,10 +26604,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(30,1,1) = {" -aG +(94,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6639,10 +26861,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(31,1,1) = {" -aG +(95,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6769,10 +27118,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(32,1,1) = {" -aG +(96,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -6899,10 +27375,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(33,1,1) = {" -aG +(97,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7029,10 +27632,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(34,1,1) = {" -aG +(98,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7159,10 +27889,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(35,1,1) = {" -aG +(99,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7289,10 +28146,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(36,1,1) = {" -aG +(100,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7419,10 +28403,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(37,1,1) = {" -aG +(101,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7549,10 +28660,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(38,1,1) = {" -aG +(102,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7679,10 +28917,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(39,1,1) = {" -aG +(103,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7809,10 +29174,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(40,1,1) = {" -aG +(104,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -7939,10 +29431,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(41,1,1) = {" -aG +(105,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8069,10 +29688,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(42,1,1) = {" -aG +(106,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8199,10 +29945,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(43,1,1) = {" -aG +(107,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8329,10 +30202,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(44,1,1) = {" -aG +(108,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8459,10 +30459,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(45,1,1) = {" -aG +(109,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8589,10 +30716,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(46,1,1) = {" -aG +(110,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8719,10 +30973,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(47,1,1) = {" -aG +(111,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8849,10 +31230,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(48,1,1) = {" -aG +(112,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -8979,10 +31487,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(49,1,1) = {" -aG +(113,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9109,10 +31744,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(50,1,1) = {" -aG +(114,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9239,10 +32001,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(51,1,1) = {" -aG +(115,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9369,10 +32258,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(52,1,1) = {" -aG +(116,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9499,10 +32515,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(53,1,1) = {" -aG +(117,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9629,10 +32772,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(54,1,1) = {" -aG +(118,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9759,10 +33029,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(55,1,1) = {" -aG +(119,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -9889,10 +33286,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(56,1,1) = {" -aG +(120,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10019,10 +33543,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(57,1,1) = {" -aG +(121,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10149,10 +33800,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(58,1,1) = {" -aG +(122,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10279,10 +34057,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(59,1,1) = {" -aG +(123,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10409,10 +34314,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(60,1,1) = {" -aG +(124,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10539,10 +34571,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(61,1,1) = {" -aG +(125,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10669,10 +34828,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(62,1,1) = {" -aG +(126,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10799,10 +35085,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(63,1,1) = {" -aG +(127,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -10929,10 +35342,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(64,1,1) = {" -aG +(128,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11059,10 +35599,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(65,1,1) = {" -aG +(129,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11189,10 +35856,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(66,1,1) = {" -aG +(130,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11319,10 +36113,137 @@ FN mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(67,1,1) = {" -aG +(131,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11449,10 +36370,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(68,1,1) = {" -aG +(132,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11579,10 +36627,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(69,1,1) = {" -aG +(133,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11709,10 +36884,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(70,1,1) = {" -aG +(134,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11839,10 +37141,137 @@ dj mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(71,1,1) = {" -aG +(135,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -11969,10 +37398,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(72,1,1) = {" -aG +(136,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -12099,10 +37655,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(73,1,1) = {" -aG +(137,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -12229,10 +37912,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(74,1,1) = {" -aG +(138,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -12359,10 +38169,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(75,1,1) = {" -aG +(139,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -12489,10 +38426,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(76,1,1) = {" -aG +(140,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -12619,10 +38683,137 @@ mK mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(77,1,1) = {" -aG +(141,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -12749,10 +38940,137 @@ jU mK mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(78,1,1) = {" -aG +(142,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -12879,10 +39197,137 @@ QX jU mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(79,1,1) = {" -aG +(143,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -13009,10 +39454,137 @@ jU jU mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(80,1,1) = {" -aG +(144,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -13139,10 +39711,137 @@ qD jU mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(81,1,1) = {" -aG +(145,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -13269,10 +39968,137 @@ jU jU mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(82,1,1) = {" -aG +(146,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mK @@ -13399,10 +40225,137 @@ Wm jU mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(83,1,1) = {" -aG +(147,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY MW @@ -13529,10 +40482,137 @@ jU mK mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(84,1,1) = {" -aG +(148,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -13659,10 +40739,137 @@ jU mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(85,1,1) = {" -aG +(149,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -13789,10 +40996,137 @@ mK mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(86,1,1) = {" -aG +(150,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -13919,10 +41253,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(87,1,1) = {" -aG +(151,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14049,10 +41510,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(88,1,1) = {" -aG +(152,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14179,10 +41767,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(89,1,1) = {" -aG +(153,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14309,10 +42024,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(90,1,1) = {" -aG +(154,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14439,10 +42281,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(91,1,1) = {" -aG +(155,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14569,10 +42538,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(92,1,1) = {" -aG +(156,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14699,10 +42795,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(93,1,1) = {" -aG +(157,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14829,10 +43052,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(94,1,1) = {" -aG +(158,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -14959,10 +43309,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(95,1,1) = {" -aG +(159,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15089,10 +43566,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(96,1,1) = {" -aG +(160,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15219,10 +43823,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(97,1,1) = {" -aG +(161,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15349,26 +44080,153 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(98,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG -aG -aG -aG -aG -aG +(162,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +aG +aG +aG +aG +aG +bJ aL la GA @@ -15479,10 +44337,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(99,1,1) = {" -aG +(163,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15609,10 +44594,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(100,1,1) = {" -aG +(164,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15739,10 +44851,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(101,1,1) = {" -aG +(165,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15869,10 +45108,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(102,1,1) = {" -aG +(166,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -15999,10 +45365,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(103,1,1) = {" -aG +(167,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -16114,7 +45607,7 @@ Mm mx Vl Iw -aG +bJ aG xr mK @@ -16129,10 +45622,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(104,1,1) = {" -aG +(168,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -16259,10 +45879,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(105,1,1) = {" -aG +(169,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -16389,10 +46136,137 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(106,1,1) = {" -aG +(170,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -16519,26 +46393,153 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(107,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG -aG +(171,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ +bJ aL AM aL -aG +bJ aL AM ld @@ -16649,21 +46650,148 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(108,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG +(172,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ aL aL AM @@ -16779,21 +46907,148 @@ mK mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(109,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG +(173,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ aL AM AM @@ -16909,21 +47164,148 @@ LQ mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(110,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG +(174,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ aL AM kW @@ -17014,7 +47396,7 @@ aG aG aG aG -aG +bJ Iw gC lJ @@ -17039,21 +47421,148 @@ LQ mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(111,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG +(175,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ aL AM AM @@ -17169,21 +47678,148 @@ zv mK mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(112,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG +(176,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ aL aL AM @@ -17276,7 +47912,7 @@ mY mY aG aG -aG +bJ Iw Iw Iw @@ -17299,26 +47935,153 @@ LQ LQ mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(113,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -aG -aG +(177,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +bJ +bJ aL AM aL -aG +bJ aL aL aL @@ -17429,28 +48192,155 @@ UC LQ mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(114,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV +(178,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +Op kV gN kV -kV -kV -aG +Op +Op +bJ aG aG aG @@ -17559,27 +48449,154 @@ UC LQ mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(115,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV +(179,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op Ar -mC +pr AM -mC +pr tv -kV +Op aG mY mY @@ -17689,27 +48706,154 @@ LQ mK mK aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(116,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV +(180,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +ud kV AM kV -kV -kV +Op +Op aG mY mY @@ -17819,27 +48963,154 @@ LQ mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(117,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV -kV -AM -kV -kV -kV +(181,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +ud +kV +AM +kV +Op +Op aG mY mY @@ -17949,27 +49220,154 @@ LQ mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(118,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV +(182,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op kP -mC +pr AM -mC +pr My -kV +Op aG mY mY @@ -17979,13 +49377,13 @@ mY mY mY aG -aG +bJ lq lE jH lN lq -aG +bJ aG mY mY @@ -18079,27 +49477,154 @@ mK mK mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(119,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV +(183,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +Op kV AM kV -kV -kV +Op +Op aG mY mY @@ -18209,27 +49734,154 @@ mK mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(120,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV +(184,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +Op kV AM kV -kV -kV +Op +Op aG mY mY @@ -18239,7 +49891,7 @@ mY aG aG aG -aG +bJ lq jH jH @@ -18339,27 +49991,154 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(121,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV +(185,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op Gw -mC +pr AM -mC +pr kZ -kV +Op aG mY mY @@ -18371,9 +50150,9 @@ ll ll ll ll -mC -mC -mC +pr +pr +pr ll aG mY @@ -18469,27 +50248,154 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(122,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV +(186,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +Op kV AM kV -kV -kV +Op +Op aG mY mY @@ -18501,9 +50407,9 @@ ll ls sw ll -jH -jH -jH +vk +vk +vk ll aG mY @@ -18599,27 +50505,154 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(123,1,1) = {" -aG -aG -mY -mY -mY -mY -mY -mY -mY -mY -aG -kV -kV -kV -kV -kV -kV +(187,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +aG +mY +mY +mY +mY +mY +mY +mY +mY +aG +Op +Op +Op kV +Op +ud +ud aG mY mY @@ -18628,12 +50661,12 @@ mY mY aG ll -ml -ml +Ta +Ta ll -jH +vk lK -jH +vk ll aG mY @@ -18729,10 +50762,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(124,1,1) = {" -aG +(188,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -18759,11 +50919,11 @@ mY aG ll lp -ml +Ta ll -jH -jH -jH +vk +vk +vk ll aG mY @@ -18859,10 +51019,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(125,1,1) = {" -aG +(189,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -18989,10 +51276,137 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(126,1,1) = {" -aG +(190,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ aG mY mY @@ -19017,14 +51431,14 @@ mY mY mY aG -aG -aG -aG -aG -aG -aG -aG -aG +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ aG mY mY @@ -19119,23 +51533,138 @@ mY mY mY aG -aG +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(127,1,1) = {" -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG +(191,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +bJ aG aG aG @@ -19158,6 +51687,16 @@ aG aG aG aG +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ aG aG aG @@ -19250,134 +51789,16528 @@ aG aG aG aG +bJ +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} -(128,1,1) = {" -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG -aG +(192,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +bJ +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(193,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(194,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(195,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(196,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(197,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(198,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(199,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(200,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(201,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(202,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(203,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(204,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(205,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(206,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(207,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(208,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(209,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(210,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(211,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(212,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(213,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(214,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(215,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(216,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(217,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(218,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(219,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(220,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(221,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(222,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(223,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(224,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(225,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(226,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(227,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(228,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(229,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(230,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(231,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(232,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(233,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(234,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(235,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(236,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(237,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(238,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(239,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(240,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(241,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(242,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(243,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(244,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(245,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(246,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(247,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(248,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(249,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(250,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(251,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(252,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(253,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(254,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +"} +(255,1,1) = {" +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT +GT "} diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index d164796beab2..c41deada17f4 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -437,7 +437,7 @@ /area/awaymission/cabin) "bI" = ( /turf/open/lava, -/area/awaymission/cabin/caves/mountain) +/area/awaymission/inaccessible) "bJ" = ( /obj/structure/sink/directional/west, /turf/open/floor/iron/freezer, @@ -527,7 +527,7 @@ desc = "I told you that you can't get past those doors."; name = "anti-fun pit" }, -/area/awaymission/cabin/caves/mountain) +/area/awaymission/inaccessible) "cp" = ( /obj/machinery/gateway/away, /turf/open/floor/wood, @@ -1049,21 +1049,25 @@ /turf/open/floor/iron/dark, /area/awaymission/cabin/caves/mountain) "fP" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakeglass, /area/awaymission/cabin/caves/mountain) "fQ" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7210" }, /area/awaymission/cabin/caves/mountain) "fR" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7211" }, /area/awaymission/cabin/caves/mountain) "fS" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7212" @@ -1083,24 +1087,28 @@ /turf/open/floor/iron/dark, /area/awaymission/cabin/caves/mountain) "fV" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7214" }, /area/awaymission/cabin/caves/mountain) "fW" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7215" }, /area/awaymission/cabin/caves/mountain) "fX" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7216" }, /area/awaymission/cabin/caves/mountain) "fY" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/fakedoor{ desc = "Jail."; name = "Jail Cell 7217" @@ -1199,7 +1207,7 @@ }, /area/awaymission/cabin/caves/mountain) "gx" = ( -/turf/closed/indestructible/rock/snow/ice, +/turf/closed/indestructible/ice, /area/awaymission/cabin/caves/mountain) "gy" = ( /obj/effect/decal/cleanable/dirt, @@ -1228,8 +1236,8 @@ /area/awaymission/cabin/caves/mountain) "gC" = ( /obj/effect/baseturf_helper/asteroid/snow, -/turf/closed/indestructible/rock/snow/ice, -/area/awaymission/cabin/caves/mountain) +/turf/closed/indestructible/ice, +/area/awaymission/inaccessible) "gD" = ( /obj/structure/girder, /obj/effect/decal/cleanable/shreds, @@ -1541,7 +1549,7 @@ /turf/open/floor/plating/snowed, /area/awaymission/cabin/caves) "hR" = ( -/obj/structure/reagent_dispensers/beerkeg{ +/obj/structure/reagent_dispensers/keg/beer{ desc = "Hey, CentCom, we located our complimentary case of space beer! The pamphlet didn't lie!"; name = "complimentary keg of space beer" }, @@ -1961,6 +1969,7 @@ light_color = "#9bbbff" }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "jR" = ( @@ -2229,10 +2238,12 @@ }, /area/awaymission/cabin/caves/sovietcave) "kN" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/plating, /area/awaymission/cabin/caves/sovietcave) "kO" = ( /obj/item/bear_armor, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/plating, /area/awaymission/cabin/caves/sovietcave) "kR" = ( @@ -2328,6 +2339,9 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) +"lJ" = ( +/turf/closed/wall/ice, +/area/awaymission/inaccessible) "lM" = ( /obj/effect/decal/cleanable/dirt, /obj/item/gun/ballistic/rifle/sks/chekhov, @@ -2373,7 +2387,7 @@ /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/lumbermill) "ms" = ( -/turf/closed/indestructible/rock/snow/ice, +/turf/closed/indestructible/ice, /area/awaymission/cabin/caves) "mx" = ( /obj/effect/decal/cleanable/dirt, @@ -3131,6 +3145,7 @@ name = "illegally acquired seraph" }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "ue" = ( @@ -3362,7 +3377,7 @@ pixel_y = 16 }, /obj/item/gun/magic/wand/nothing/fake_resurrection{ - pixel_y = -2 + pixel_y = -2 }, /obj/effect/light_emitter{ set_cap = 3; @@ -3598,6 +3613,7 @@ "yJ" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/sign/poster/contraband/free_drone/directional/west, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "yP" = ( @@ -3897,12 +3913,20 @@ }, /turf/closed/indestructible/rock/snow, /area/awaymission/cabin/caves) +"Db" = ( +/obj/effect/turf_decal/weather/snow, +/turf/closed/indestructible/rock/snow, +/area/awaymission/inaccessible) "Dl" = ( /obj/structure/statue/snow/snowman{ anchored = 1 }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) +"Dm" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/riveted, +/area/awaymission/cabin/caves/mountain) "Dr" = ( /obj/structure/chair{ dir = 1 @@ -4086,6 +4110,10 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) +"Fb" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/syndicate, +/area/awaymission/cabin/caves/sovietcave) "Fp" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/light_emitter{ @@ -4293,6 +4321,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "IX" = ( @@ -4344,6 +4373,9 @@ }, /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/snowforest/sovietsurface) +"Jt" = ( +/turf/closed/indestructible/rock/snow, +/area/awaymission/inaccessible) "Jw" = ( /obj/structure/table/wood, /obj/item/grown/log/tree{ @@ -4516,12 +4548,28 @@ /obj/structure/sign/warning/no_smoking/directional/east, /turf/open/floor/wood/freezing, /area/awaymission/cabin/lumbermill) +"Ly" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/inaccessible) +"LB" = ( +/obj/effect/light_emitter{ + name = "outdoor light"; + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, +/obj/effect/mapping_helpers/no_tele_turf, +/turf/open/indestructible, +/area/awaymission/cabin/caves/mountain) "LE" = ( /obj/item/nullrod/claymore/multiverse{ anchored = 1; force = 4 }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "LG" = ( @@ -4787,6 +4835,9 @@ }, /turf/open/floor/wood/freezing, /area/awaymission/cabin) +"PH" = ( +/turf/closed/indestructible/ice, +/area/awaymission/inaccessible) "PV" = ( /turf/open/misc/ice/smooth, /area/awaymission/cabin/caves) @@ -4847,6 +4898,7 @@ name = "\improper Nanotrasen Saber SMG" }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "QC" = ( @@ -5128,6 +5180,7 @@ desc = "He keeps breaking out somehow due to the help of cultists that utilize cargo shipments or atmospherical sabotage." }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "TG" = ( @@ -5334,6 +5387,7 @@ name = "Ancient Canvas Art" }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) "Wg" = ( @@ -5601,1058 +5655,12628 @@ /area/awaymission/cabin/caves) (1,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(2,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(3,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(4,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(5,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(6,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(7,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(8,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +Jt +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(9,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +gC +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +Jt +PH +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(10,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Dm +cx +fy +fy +cx +Dm +Dm +Dm +Dm +gE +gE +Dm +Dm +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(11,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fp +UE +UE +fM +fP +TD +Dm +cx +KK +UE +cx +Dm +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab ab ab ab +ms +ms +ms +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(12,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +fQ +jQ +Dm +cx +td +td +yv +cx +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt ab ab +gx +ms +ms +Oe +BR +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(13,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +eB +fr +fq +fN +fN +cx +Dm +Dm +cx +td +td +qV +cx +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt ab +gx +ms +ms +Oe +Oe +ms +ms +ms +ms +PH +PH +PH +PH +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(14,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +eP +fs +fq +fN +fN +fP +QA +Dm +cx +td +UE +sK +cx +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +gx +gx +ms +Oe +Oe +Oe +Oe +Oe +Oe +mP +ms +ms +PH +PH +PH +Jt +Jt +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(15,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +fR +jQ +Dm +cx +td +td +cx +Dm +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +gx +ms +ms +Oe +Oe +PV +PV +Oe +Oe +Oe +Oe +mP +PH +PH +PH +Jt +Jt +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(16,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fq +fq +fN +fN +cx +Dm +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +gx +ms +Oe +Oe +PV +zB +PV +Oe +Oe +Oe +Oe +mP +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(17,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cy +fq +fq +fN +fN +fP +yJ +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt ab +ms +ms +Oe +PV +PV +PV +PV +Oe +Oe +Oe +Oe +mP +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(18,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fq +fE +fN +fN +fS +jQ +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt ab +ms +Oe +Oe +PV +PV +yj +PV +Oe +ms +Oe +Oe +ms +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(19,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +cx +Dm +Dm +cx +td +AC +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt ab +ms +Ad +Oe +PV +PV +PV +PV +Oe +Oe +Oe +Oe +ms +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(20,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fg +fr +fq +fN +fN +fT +Pd +cx +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt ab +ms +ms +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe +ms +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +"} +(21,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fh +ft +Ea +SN +fN +fU +TJ +cx +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt ab +ms +ms +BR +PV +PV +zB +PV +PV +BR +Oe +Oe +ms +ms +PH +PH +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +"} +(22,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +aj +ft +Ea +SN +fN +cx +Dm +Dm +cx +td +UE +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ms +Oe +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +ms +PH +PH +PH +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +"} +(23,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fk +ft +Ea +SN +fN +fP +We +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +ms +Oe +Oe +Oe +PV +PV +PV +PV +Oe +Oe +ms +Oe +ms +ms +PH +PH +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +"} +(24,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fl +fs +fq +fN +fN +fV +LB +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +ms +Oe +PV +PV +PV +yj +PV +PV +Oe +Oe +Oe +Oe +Oe +ms +ms +PH +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +"} +(25,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +Dm +Dm +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +Jt ab +ms +Oe +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +ms +Oe +Oe +ms +PH +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +"} +(26,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fq +fq +fN +fN +fP +LE +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +gx +ms +Oe +PV +zB +PV +PV +PV +Oe +Oe +Oe +Oe +Oe +Oe +Oe +mP +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +"} +(27,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cy +fq +fq +fN +fN +fW +jQ +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +gx +ms +ms +Oe +PV +PV +PV +PV +Oe +Oe +ms +Oe +ms +Oe +Oe +Oe +ms +PH +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +"} +(28,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fq +fq +fN +fN +Dm +Dm +Dm +cx +ti +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +gx +ms +Oe +Oe +Oe +PV +PV +Oe +Oe +ms +ms +Oe +Oe +Oe +Oe +Oe +Oe +ms +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +"} +(29,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +fP +IV +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +ab +ab +ab +ab +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +gx +ms +ms +Oe +Oe +Oe +Oe +Oe +ms +ms +mP +mP +Oe +Oe +Oe +Oe +AQ +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(30,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fm +fr +fq +fN +fN +fX +jQ +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue +ue +ue +ue +ue +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +gx +ms +ms +ms +ms +ms +ms +ms ab ab +mP +mP +Oe +ms +Oe +Oe +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(31,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +fn +fs +fq +fN +fN +Dm +Dm +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +NJ +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +gx +gx +gx +gx +ab +ab +Jt +Jt ab +mP +Oe +Oe +Oe +ms +PH +ms +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(32,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cy +fq +fq +fN +fN +fP +ud +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue +vh +vh +gJ +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +mP +mP +Oe +Oe +ms +ms +Oe +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(33,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +cx +fu +UE +UE +fO +fY +jQ +Dm +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +PH +PH +gx +mP +Oe +Oe +Oe +Oe +BR +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(34,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Dm +cx +fy +fy +cx +cx +Dm +cx +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +PH +PH +PH +gx +mP +mP +Oe +Oe +mP +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(35,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Dm +cx +td +UE +cx +fZ +gS +gs +gw +td +UE +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +gx +mP +mP +Oe +Oe +mP +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(36,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cx +td +td +td +cx +gb +gp +gt +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +gx +mP +Oe +Oe +Oe +Oe +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(37,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +cx +so +td +td +td +cx +cx +cx +cx +cx +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +IX +pw ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +tr +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +IX +tr ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +mP +mP +Oe +Oe +Oe +Oe +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(38,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Dm +cx +td +td +td +td +td +td +UE +td +td +td +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue +ue +ue +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +gJ +vh +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +mP +mP +Oe +Oe +ms +Oe +Oe +mP +Jt +Jt +Jt +Jt +Jt +Jt +"} +(39,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Dm +cx +UE +td +td +td +RY +td +td +td +UE +cx +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue +vh +vh +gJ +vh +ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +lB +ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +mP +BR +Oe +Oe +Oe +Oe +ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(40,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +cx +cx +cx +cx +cx +cx +cx +cx +cx +Dm +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +gx +Oe +Oe ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab +Dt +Dt +ue +vh +vh +vh +vh +vh +RC +ue +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +IX +ue +ue ab +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +ue +ue +ue ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ms +ms +ms +Oe +Oe +Oe +ms +PH +Jt +Jt +Jt +Jt +Jt +Jt +"} +(41,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +gx +Oe +Oe +Oe +Oe +lD +ue +ue ab ab ab +Jt +Jt +Jt ab +CO +CO +Dt +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue ab +Jt +Jt +Jt +Jt ab ab ab +ue +ue +vh +vh +vh +ue +ue ab +Jt +Jt ab ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +gJ +ue +ue +ue +zo ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +ms +Oe +Oe +Oe +ms +Jt +Jt +Jt +Jt +Jt +Jt +"} +(42,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +Dm +cx +cx +gc +gc +cx +cx +Dm +Ly +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +Oe +Oe +Oe +PV +CO +KP +ue +ue +ue +ue ab ab ab ab +CO +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +IX +ue +ue ab ab ab ab +ue +ue +ue +ue +vh +vh +vh +gJ +vh +ue +ue ab ab +ue +ue +ue +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +Wg +vh +vh +vh +vh +vh +vh +vh +IX +ue +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +iz +iz +Jt +Jt +Jt +Jt +mP +iz +iz +iz +iz +nc +Jt +Jt +Jt +Jt +Jt +"} +(43,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Dm +cx +fI +fG +gd +gd +fG +fG +cx +Dm +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +gx +Oe +Oe +Oe +PV +PV +CO +KP +KP +KP +vh +ue +ue +ue +ue +CO +CO +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +gJ +vh +ue +ue ab +Jt +Jt +Jt ab ab +ue +ue +vh +vh +ue +ue +ue +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue +vh +gJ +vh +vh +vh +vh +BI +vh +vh +BI +vh +EQ +Aj +Sx +ue +CS +Jt +iz +Jt +iz +mP +Jt +Jt +iz +iz +iz +mP +iz +mP +iz +iz +iz +iz +iz +iz +Jt +Jt +Jt +Jt +Jt +"} +(44,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fH +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +gx +Oe +Oe +Oe +Oe +PV +PV +CO +KP +KP +KP +KP +KP +vh +vh +gJ +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab ab ab +ue +ue +ue +RC +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt ab +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab +ue +Sb +ue +vh +vh +vh +vh +vh +vh +BI +VA +BI +vh +BI +vh +MC +Su +Ut +CS +CS +iz +iz +mP +iz +iz +iz +mP +mJ +mJ +mJ +mJ +mJ +mJ +mU +mU +um +um +mU +mW +Jt +Jt +Jt +Jt +Jt +"} +(45,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +gy +fG +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +gx +Oe +Oe +Oe +Oe +PV +PV +PV +CO +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt ab +ue +ue +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ue +zo +ue +ue +vh +vh +vh +vh +xq +vh +vh +vh +vh +BI +vh +vh +vh +vh +Zb +ZZ +oz +oz +oz +iz +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mJ +mW +mW +mW +mX +um +um +um +mW +Db +Jt +Jt +Jt +Jt +Jt "} -(2,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(46,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fL +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Oe +PV +PV +PV +PV +CO +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +ue +ue ab ab ab +ue +ue +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab ab +ue +ue +vh +xq +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +GD +AD +AD +qg +Ua +mJ +mJ +mJ +mU +mU +mU +mJ +iC +iC +mP +mP +mP +PV +iC +vj +PV +PV +mP +Jt +Jt +Jt +Jt +Jt +Jt "} -(3,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI +(47,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI +co +co +co +co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +co +co +co +co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +CO +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +ue +vh +vh +vh +ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ue +ue +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xq +BI +vh +vh +vh +vh +vh +Qw +AD +uW +uW +tQ +iC +iC +iC +iC +mP +mP +iC +iC +PV +PV +PV +PV +PV +PV +PV +PV +na +mP +Jt +Jt +Jt +Jt +Jt +Jt "} -(4,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI +(48,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI +co +co +co +co +Ly +Ly +cx +fG +fG +fI +gd +gd +fG +fI +fG +cx +Ly +Ly +co +co +co +co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe +lD +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +KP +KP +KP +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +RC +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +ue +ue +ue ab ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ue +ue +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +Ng +AD +SI +uW +tQ +iC +iC +iC +mP +mP +mP +mP +iC +PV +PV +PV +PV +PV +PV +PV +PV +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(5,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI +(49,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI +co +co +co +co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +co +co +co +co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe +lD +ue +vh +vh +vh +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +ue +ue +ue +ue +ue +ue +zo +ue +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +st +AD +Su +uW +tQ +iC +iC +iC +mP +mP +mP +mP +iC +PV +PV +PV +PV +PV +PV +PV +iC +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(50,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI +co +co +co +co +Ly +Ly +cx +fH +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +co +co +co +co bI bI bI @@ -6661,235 +18285,230 @@ bI bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe +Oe ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab +ue +vh +vh +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +BI +vh +vh +vh +vh +vh +vh +vh +BI +vh +vh +Qw +AD +uW +uW +tQ +iC +iC +iC +iC +mP +mP +iC +iC +iC +iC +PV +PV +PV +PV +PV +iC +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(6,1,1) = {" -ab -ab -ab -ab +(51,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -6897,20 +18516,20 @@ co co co co -co -co -co -co -co -co -co -co -co -co -co -co -co -co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly co co co @@ -6918,235 +18537,235 @@ co bI bI bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +gx +Oe +Oe +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab +ue +vh +vh +KP +KP +KP +KP +vh +vh +Pv +CH +vh +vh +vh +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gU +vh +xq +vh +vh +vh +vh +vh +vh +xq +vh +vh +vh +xq +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +te +AD +Su +Je +Ua +mJ +mJ +mJ +mJ +mJ +mU +mJ +iC +iC +iC +iC +PV +iC +PV +iC +iC +mP +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(7,1,1) = {" -ab -ab -ab -ab +(52,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -7154,15 +18773,277 @@ co co co co +Ly +Ly +cx +fG +fG +fH +gd +gd +fG +fG +fG +cx +Ly +Ly co co co co +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +PH +gx +Oe +Oe +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe +ab +ue +vh +vh +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Zb +ZZ +oz +oz +oz +iz +mJ +mJ +mJ +mV +mJ +mJ +mW +mW +mW +mU +mU +mU +mU +mU +mJ +vD +mW +Db +Jt +Jt +Jt +Jt +Jt +"} +(53,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI co co co co -co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fH +fL +cx +Ly +Ly co co co @@ -7175,235 +19056,230 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -gx -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -ab -ab -ab -ab -ab +ue +vh +vh +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +BI +vh +Jc +vh +YY +Su +Ut +Ut +CS +iz +iz +mP +iz +iz +iz +mP +Db +Db +Db +mW +mJ +mJ +mJ +mW +mW +mW +Db +Db +Jt +Jt +Jt +Jt +Jt "} -(8,1,1) = {" -ab -ab -ab -ab +(54,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -7411,15 +19287,20 @@ co co co co -co -co -co -co -co -co -co -co -co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly co co co @@ -7432,235 +19313,230 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt ab +Oe +Oe +Oe +Oe +PV +PV +PV +PV +Oe +Oe +Oe ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab +ue +vh +vh +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +vh +vh +vh +vh +BI +vh +vh +vh +Ye +Aj +Sx +ue +CS +Jt +iz +Jt +mP +iz +iz +lJ +lJ +lJ +Jt +Jt +mP +iz +iz +iz +lJ +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(9,1,1) = {" -ab -ab -ab -ab +(55,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -7668,15 +19544,277 @@ co co co co +Ly +Ly +cx +fI +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +co +co +co +co co co co co co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +gx +Oe +Oe +Oe +Oe +PV +PV +PV +PV +Oe +Oe +Oe +ab +ab +ue +vh +vh +vh +KP +KP +KP +KP +KP +KP +vh +vh +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +BI +Kf +ue +ue +mP +Jt +Jt +ab +Jt +ab +ab +ab +Jt +lJ +lJ +lJ +Jt +Jt +Jt +Jt +Jt +lJ +lJ +lJ +lJ +Jt +Jt +Jt +Jt +Jt +"} +(56,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI co co co co +Ly +Ly +cx +fG +fG +fG +gd +gd +fG +fG +fG +cx +Ly +Ly co co co @@ -7689,235 +19827,230 @@ co bI bI bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gC -gx -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx +Oe +Oe +Oe +Oe +PV +PV +PV +PV +Oe +Oe ab +Jt ab +ue +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +ue +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -ab -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(10,1,1) = {" -ab -ab -ab -ab +(57,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -7925,20 +20058,25 @@ co co co co +Ly +Ly cx +fG +fG +fG +gd +gd +fG +gz +fG cx -cx -fy -fy -cx -cx -cx -cx -cx -gE -gE -cx -cx +Ly +Ly +Ly +Ly +Ly +Ly +Ly co co co @@ -7946,235 +20084,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +Ao ab +Jt +Jt ab +ue +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gU +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +lB ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(58,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fH +fG +gd +gd +fG +fG +fG +cx +Ly +Ly +Ly +Ly +Ly +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Oe +PV +PV +PV +PV +Oe +Oe ab +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +vh +vh +vh +vh +gJ +vh +vh +BI +vh +vh +vh +vh +vh +vh +tr ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(11,1,1) = {" -ab -ab -ab -ab +(59,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -8182,20 +20572,25 @@ co co co co +Ly +Ly +cx +fG +fG +fG +gd +gd +fI +fG +gH cx cx -fp -UE -UE -fM -fP -TD cx cx -KK -UE cx cx +Dm +Ly co co co @@ -8203,235 +20598,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Oe +Oe +PV +PV +PV +PV +Oe +gx +PH +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xq +vh +vh +vh +vh +vh +vh +vh +xq +vh +vh +vh +BI +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(60,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fG +fI +gd +gd +fG +fG +gu +fG +fG +fG +fG +hK +kR +cx +Dm +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +Oe +gx +PH +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -ms -ms -ms -ms -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(12,1,1) = {" -ab -ab -ab -ab +(61,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -8439,19 +21086,24 @@ co co co co +Ly +Ly cx -cy -fq -fq -fN -fN -fQ -jQ -cx -cx -td -td -yv +fG +fG +fG +gd +gd +fG +gA +fL +fG +gT +fH +gT +fG +kX +kZ cx co co @@ -8460,235 +21112,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +Oe +Oe +Oe gx +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +BI +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(62,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fG +fL +gd +gd +gu +fG +fG +fI +fG +fG +fG +jL +fG +kR +cx +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -ab -gx -ms -ms Oe -BR -ms -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe gx +Jt +Jt ab +ue +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +Wg +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(13,1,1) = {" -ab -ab -ab -ab +(63,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -8696,20 +21600,25 @@ co co co co +Ly +Ly cx -eB -fr -fq -fN -fN -cx -cx -cx -cx -td -td -qV -cx +fH +fG +fG +gd +gd +gd +gd +gd +gd +gd +gd +hJ +hJ +gd +gd +gc co co co @@ -8717,235 +21626,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +ki +ki +ko +ko +ki +ki +ki +Oe +Oe +gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(64,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fG +fH +gd +gd +gd +gd +gd +gd +gd +gd +hJ +hJ +gd +gd +gc +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -gx -ms -ms Oe Oe -ms -ms -ms -ms -gx -gx -gx -gx -ab -ab -ab -gx -gx +Oe +ko +ki +ki +ki +ki +ko +ki +Oe +Oe gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +tr +ue ab ab ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(14,1,1) = {" -ab -ab -ab -ab +(65,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -8953,19 +22114,24 @@ co co co co +Ly +Ly cx -eP -fs -fq -fN -fN -fP -QA -cx -cx -td -UE -sK +fG +fG +fG +fG +fH +fG +fG +fG +fG +fG +fG +fG +fG +fL +fG cx co co @@ -8974,235 +22140,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gU +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(66,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +fG +fI +fG +fG +fL +fG +fG +fG +fG +fI +fG +fG +fG +fG +fI +cx +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -gx -gx -ms -Oe -Oe +PV +PV +PV +PV +PV +PV Oe Oe Oe Oe -mP -ms -ms -gx -gx -gx -ab -ab -ab -gx gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +dC +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Wg +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +ue +Kf ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(15,1,1) = {" -ab -ab -ab -ab +(67,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -9210,20 +22628,25 @@ co co co co +Ly +Ly +Dm cx -cy -fq -fq -fN -fN -fR -jQ -cx -cx -td -td -cx +fG +fG +fG +fG +fG +gB +fG +fG +fG +fG +fG +fH +fG cx +Dm co co co @@ -9231,235 +22654,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +XX +Ez +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(68,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +Dm +cx +cx +cx +cx +cx +gD +cx +cx +cx +cx +cx +cx +cx +Dm +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -gx -ms -ms -Oe -Oe +PV +PV +PV +PV PV PV Oe Oe Oe Oe -mP -gx -gx -gx -ab -ab -ab -gx gx +PH +PH +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +XX +Fp +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +AB +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +zo ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(16,1,1) = {" -ab -ab -ab -ab +(69,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -9467,20 +23142,25 @@ co co co co +Ly +Ly +Ly +Ly +Ly +Ly cx +gr +gr +gr cx -fq -fq -fN -fN -cx -cx -cx -cx -td -td -cx -cx +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly co co co @@ -9488,235 +23168,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +kY +vh +vh +YL +Oq +Oq +Ez +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xq +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(70,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +Ly +Ly +Ly +Dm +cx +gr +gr +cx +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -gx -ms -Oe -Oe PV -zB +PV +PV +PV +PV PV Oe Oe Oe -Oe -mP -gx gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +PH +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +XX +Oq +Oq +XT +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(17,1,1) = {" -ab -ab -ab -ab +(71,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -9724,20 +23656,25 @@ co co co co +co +co +co +co +Ly +Ly cx -cy -fq -fq -fN -fN -fP -yJ -cx -cx -td -td -cx +gr +gr +gr cx +Ly +Ly +co +co +co +co +co +co co co co @@ -9745,235 +23682,487 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt ab +ue +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +XX +Oq +Fp +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(72,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -ms -ms -Oe +PV +PV +PV PV PV PV PV Oe Oe -Oe -Oe -mP -gx gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +PH +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +qF +sB +sB +sB +sB +sB +sB +Oq +Oq +Fp +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gU +vh +vh +tr ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(18,1,1) = {" -ab -ab -ab -ab +(73,1,1) = {" +Jt +Jt +Jt +Jt bI bI bI @@ -9981,20 +24170,25 @@ co co co co +co +co +co +co +Ly +Ly cx +gr +gr +gr cx -fq -fE -fN -fN -fS -jQ -cx -cx -td -td -cx -cx +Ly +Ly +co +co +co +co +co +co co co co @@ -10002,235 +24196,491 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +qF +qz +uQ +uQ +uQ +qz +qz +qz +Oq +Oq +Fp +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(74,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +Ly +Ly +Dm +cx +gr +gr +cx +Ly +Ly +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx -ab -ab -ms -Oe -Oe PV PV -yj +PV +PV +PV +PV +PV PV Oe -ms -Oe -Oe -ms gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +qF +qz +qz +uf +uf +uf +qz +qz +qz +Oq +Oq +Oq +Ez +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +Wg +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(19,1,1) = {" -ab -ab -ab -ab +(75,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI bI bI bI @@ -10238,20 +24688,15 @@ co co co co +Ly +Ly +Ly cx -cy -fq -fq -fN -fN -cx -cx -cx -cx -td -AC -cx +gr +gr cx +Ly +Ly co co co @@ -10259,235 +24704,497 @@ co bI bI bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt ab +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +uM +qz +qz +tc +tc +tc +qz +qz +qz +Oq +Oq +Oq +Fp +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(76,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +Dm +cx +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -ab -ms -Ad Oe PV PV PV PV +PV +PV +PV Oe -Oe -Oe -Oe -ms gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +xt +xt +xt +xt +xt +xt +xt +xt +xt +xt +xt +xt +PE +Vc +Vc +Ag +Vc +Vc +Vc +Vc +Vc +Fu +Fu +Fu +pl +xt +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(20,1,1) = {" -ab -ab -ab -ab +(77,1,1) = {" +Jt +Jt +Jt +Jt +bI +bI +bI +bI bI bI bI @@ -10495,20 +25202,15 @@ co co co co +Ly +Ly +Ly cx -fg -fr -fq -fN -fN -fT -Pd -cx -cx -td -td -cx +gr +gr cx +Ly +Ly co co co @@ -10516,235 +25218,497 @@ co bI bI bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +gx +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +xt +an +an +an +an +an +an +an +ao +ao +an +an +an +an +an +an +an +an +ba +ba +an +eq +eq +eq +eq +an +xt +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(78,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Dm +cx +cx +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH gx -ab -ab -ab -ms -ms Oe -PV -PV -PV -PV -PV Oe Oe Oe -ms -gx -gx -gx -ab -ab -ab -ab -ab -gx +Oe +ki +ki +ki +ki +ki +ko +Oe +Oe gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +an +Na +aV +ym +au +jk +an +aq +aq +an +bl +bM +ij +bT +cs +bl +an +aq +aq +an +cS +aL +aL +aL +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(21,1,1) = {" -ab -ab -ab -ab +(79,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -10752,256 +25716,256 @@ co co co co +Ly +Ly cx -fh -ft -Ea -SN -fN -fU -TJ -cx -cx -td -td -cx +gr +gr +gr cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -ms -ms -BR -PV -PV -zB -PV -PV -BR -Oe -Oe -ms -ms -gx -gx -ab -ab -ab -ab -ab -gx -gx -ab -ab +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +gx +Oe +gx +gx +Oe +Oe +ki +ki +ki +ko +ki +ki +Oe +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +xt +iZ +aN +aq +az +bb +bb +eg +bm +eg +nR +an +eg +eg +eg +eg +eg +eg +hB +eg +eg +an +cT +cV +wS +cV +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(22,1,1) = {" -ab -ab -ab -ab +(80,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -11009,20 +25973,15 @@ co co co co +Ly +Ly cx -aj -ft -Ea -SN -fN -cx -cx -cx -cx -td -UE -cx +gr +gr +gr cx +Ly +Ly co co co @@ -11030,203 +25989,568 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +gx +Oe +Oe +gx +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +iZ +jy +jG +az +bb +az +bh +an +aq +ht +an +cA +an +an +an +an +hx +an +aq +Kl +an +aL +aL +aL +TI +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(81,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +gx +Oe +gx +PH +gx +gx +Ao +PV +PV +PV +PV +PV +PV ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +iZ +bp +aq +az +az +az +aq +an +aq +eg +an +eg +aq +aq +aq +aq +eg +an +aq +eg +an +cV +wS +cV +cV +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(82,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +Oe +gx +PH +gx Oe Oe PV @@ -11234,31 +26558,185 @@ PV PV PV PV +PV Oe -Oe -Oe -Oe -ms -gx -gx -gx -ab -ab -ab -ab -gx -gx -gx -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +xt +an +an +aq +aA +Yp +aA +aq +an +br +eg +an +eg +aq +aq +aq +aq +ll +an +aq +eg +an +aL +aL +aL +oP +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(23,1,1) = {" -ab -ab -ab -ab +(83,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -11266,20 +26744,15 @@ co co co co +Ly +Ly cx -fk -ft -Ea -SN -fN -fP -We -cx -cx -td -td -cx +gr +gr +gr cx +Ly +Ly co co co @@ -11287,235 +26760,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +Oe +Oe +gx +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +xt +an +nU +an +an +an +aR +an +aq +eg +an +gl +aq +aq +aq +aq +eg +an +aq +eg +an +aL +cW +aL +Qa +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +Wg +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(84,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ms Oe +gx Oe Oe PV PV PV PV +PV +PV +PV Oe Oe -ms -Oe -ms -ms -gx -gx -ab -ab -ab -ab -gx -gx -gx -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +xt +an +as +aB +aH +an +an +an +aq +eg +an +OQ +eg +eg +eg +eg +eg +an +aq +eg +an +ed +aL +aL +kE +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(24,1,1) = {" -ab -ab -ab -ab +(85,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -11523,20 +27258,15 @@ co co co co +Ly +Ly cx -fl -fs -fq -fN -fN -fV -jQ -cx -cx -td -td -cx +gr +gr +gr cx +Ly +Ly co co co @@ -11544,235 +27274,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +xt +an +an +an +an +an +aS +hg +aq +eg +an +nT +bo +bo +bo +bo +cB +an +aq +eg +bV +ed +ed +gM +an +an +xt +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(86,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ms +Oe +Oe Oe PV PV PV -yj +PV +PV +PV +PV PV PV Oe -Oe -Oe -Oe -Oe -ms -ms -gx -ab -ab -ab -ab -gx -gx -gx -gx ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +at +aC +aH +an +an +an +aq +eg +an +aO +aO +aO +aO +aO +az +az +aq +eg +an +eb +cX +an +an +xt +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(25,1,1) = {" -ab -ab -ab -ab +(87,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -11780,20 +27772,15 @@ co co co co +Ly +Ly cx -cy -fq -fq -fN -fN -cx -cx -cx -cx -td -td -cx +gr +gr +gr cx +Ly +Ly co co co @@ -11801,203 +27788,310 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +xt +an +nU +an +an +an +aT +an +aq +Kl +an +az +aq +Dy +az +aq +aq +cO +aq +ht +an +an +an +an +xt +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +gJ +vh +vh +vh +RC +Gb ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(88,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -ab -ms +Oe +Oe Oe PV PV @@ -12005,31 +28099,186 @@ PV PV PV PV -Oe -Oe -Oe -ms -Oe -Oe -ms -gx -ab -ab -ab -ab -gx -gx -gx -gx +PV +PV +PV ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +an +aq +au +nd +aV +aq +an +bs +eg +eh +bb +eg +bb +hC +bb +hE +he +hG +eg +eN +an +xt +xt +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +zY +KP +KP +KP +KP +KP +zY +KP +KP +KP +KP +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(26,1,1) = {" -ab -ab -ab -ab +(89,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -12037,20 +28286,15 @@ co co co co +Ly +Ly cx +gr +nC +gr cx -fq -fq -fN -fN -fP -LE -cx -cx -td -td -cx -cx +Ly +Ly co co co @@ -12058,235 +28302,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +gx +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +FQ +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +xt +ja +aN +aq +az +az +az +aq +an +aq +eg +an +aP +az +ej +nB +hd +az +aO +aq +eg +aq +an +an +xt +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +vh +ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(90,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +cx +gr +gr +gr +cx +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH gx -ms -Oe -PV -zB -PV -PV -PV -Oe Oe Oe Oe Oe Oe -Oe -mP -ab -ab -ab -ab -ab -ab -gx -gx -gx +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV ab +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +ue +JZ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +ja +jy +jF +az +bb +bb +bh +an +aq +eg +an +UG +az +ha +hc +hd +az +az +aq +eg +aq +aN +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(27,1,1) = {" -ab -ab -ab -ab +(91,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -12294,20 +28800,15 @@ co co co co +Ly +Ly +Dm cx -cy -fq -fq -fN -fN -fW -jQ -cx -cx -td -td cx cx +Dm +Ly +Ly co co co @@ -12315,235 +28816,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +gx +Ao +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +gx +gx +gx +PH +PH +PH +PH +Jt ab +ue +IX +vh +px +vh +Qi +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +xt +ja +bp +aq +az +az +bb +eg +iY +eg +eg +an +bt +az +ej +jx +hd +az +cO +aq +eg +aq +iR +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(92,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -ms -ms Oe -PV -PV -PV -PV Oe Oe -ms Oe -ms Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Ao Oe Oe -ms -ms -ab -ab -ab -ab -ab -gx -gx gx +PH +PH +PH +Jt +Jt ab +ue +wf +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +an +Nq +aA +Yp +aA +jj +an +aq +eg +an +cN +aq +az +aO +az +ci +hF +cC +eg +aq +bp +ao +xt +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +zY +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +ue ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(28,1,1) = {" -ab -ab -ab -ab +(93,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -12551,20 +29314,15 @@ co co co co -cx -cx -fq -fq -fN -fN -cx -cx -cx -cx -ti -td -cx -cx +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly +Ly co co co @@ -12572,235 +29330,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +PH +PH +Jt +Jt ab +ue +Es +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +xt +xt +an +an +an +an +an +an +an +Gf +eg +an +jE +aq +Dy +az +aq +aq +aO +aq +eg +aq +an +an +xt +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +gm +KP +KP +KP +KP +KP +zY +KP +KP +KP +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(94,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ms -Oe Oe Oe -PV -PV -Oe Oe -ms -ms Oe Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV Oe Oe Oe Oe -ms -ab -ab -ab -ab -ab -gx -gx gx +PH +PH +PH +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +xt +an +an +So +aV +sG +au +ji +an +aq +ht +an +cO +cO +cO +cO +cO +az +az +aq +ht +an +an +xt +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +sI +gm +sI +gm +sI +KP +KP +KP +KP +KP +KP +vh +vh +Wg +ue +ue ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(29,1,1) = {" -ab -ab -ab -ab +(95,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -12808,20 +29828,15 @@ co co co co -cx -cy -fq -fq -fN -fN -fP -IV -cx -cx -td -td -cx -cx +co +co +co +co +co +co +co +co +co co co co @@ -12829,235 +29844,497 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab +Oe +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Ao +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt ab +ue +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +jb +aN +aq +az +bb +bb +eg +iX +eg +eg +an +hb +bU +Sh +eu +cK +cD +GL +aq +eg +aq +an +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +KP +KP +KP +KP +KP +KP +sI +gm +sI +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(96,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +co +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ms -ms Oe Oe Oe Oe Oe -ms -ms -mP -mP +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV Oe Oe Oe Oe -AQ -ms -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +jb +jy +jH +az +bb +az +bh +an +aq +eg +an +hn +aq +eg +eg +eg +eg +an +aq +eg +aq +aN +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(30,1,1) = {" -ab -ab -ab -ab +(97,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI @@ -13065,20 +30342,15 @@ co co co co -cx -fm -fr -fq -fN -fN -fX -jQ -cx -cx -td -td -cx -cx +co +co +co +co +co +co +co +co +co co co co @@ -13086,911 +30358,923 @@ co bI bI bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt ab +Oe +Oe +Oe +Ao +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue ue ue ue +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +jb +bp +aq +az +az +az +aq +an +aq +eg +an +bv +Qh +TK +aq +Gk +eg +an +aq +eg +aq +iU +ao +xt +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(98,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ms -ms -ms -ms -ms -ms -ms -ab -ab -mP -mP Oe -ms Oe Oe -mP -ab -ab -ab -ab -ab -ab -ab -ab +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab ab +ue +vh +vh +vh +gJ +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +an +aq +aA +Yp +aA +aq +an +br +eg +an +an +an +an +bu +an +eo +an +aq +eg +aq +bp +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +gJ +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(31,1,1) = {" -ab -ab -ab -ab +(99,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI -co -co -co -co -cx -fn -fs -fq -fN -fN -cx -cx -cx -cx -td -td -cx -cx -co -co -co -co bI bI bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +gx +Ao +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab ue -ue +tr vh vh vh vh -NJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +xt +an +nU +an +an +an +aU +an +aq +eg +an +bw +bO +bO +bO +bO +hz +eo +eg +eg +aq +an +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh vh ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -mP -Oe -Oe -Oe -ms -ms -ms -ms -ab -ab -ab -ab -ab -ab -ab -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(32,1,1) = {" -ab -ab -ab -ab +(100,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt bI bI bI -co -co -co -co -cx -cy -fq -fq -fN -fN -fP -ud -cx -cx -td -td -cx -cx -co -co -co -co bI bI bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +bI +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +Oe +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab ue -ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh gJ vh +xt +an +as +aB +aH +an +an +an +aq +eg +an +bx +bO +cJ +cF +cJ +hz +an +aq +ht +an +an +xt +xt vh vh vh vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -mP -mP -Oe -Oe -ms -ms -Oe -ms -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(33,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -fu -UE -UE -fO -fY -jQ -cx -cx -td -td -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue vh vh vh @@ -14000,251 +31284,180 @@ vh vh vh vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +KP +KP +KP +zY +KP +KP +KP +KP +KP +KP +KP +KP +zY +KP +KP +KP +vh +vh +vh ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(101,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt ab -gx -gx -gx -mP Oe Oe Oe Oe -BR -ms -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(34,1,1) = {" -ab -ab -ab +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +Ao +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fy -fy -cx -cx -cx -cx -cx -td -td -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue ue vh vh @@ -14256,251 +31469,70 @@ vh vh vh vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh gJ vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -gx -gx -gx -gx -mP -mP -Oe -Oe -mP -mP -mP -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(35,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -td -UE -cx -fZ -gS -gs -gw -td -UE -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue +vh +vh +vh +vh +xt +an +an +an +an +an +hf +hy +aq +Kl +an +by +bO +bO +bO +bO +hz +an +aq +eg +aq +an +an +xt +gJ +vh +vh +vh +vh vh vh vh @@ -14516,253 +31548,180 @@ vh vh vh vh +vh +vh +gJ +vh +vh +vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(102,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -mP -mP Oe Oe -mP -mP -mP -ab -ab -ab -ab -ab -ab -ab -ab -"} -(36,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -td -td -td -cx -gb -gp -gt -cx -td -td -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +Oe +Oe +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab ue -ue vh vh vh vh vh vh -gJ vh vh vh @@ -14773,245 +31732,19 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -mP -Oe -Oe -Oe -Oe -mP -mP -ab -ab -ab -ab -ab -ab -ab -"} -(37,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -so -td -td -td -cx -cx -cx -cx -cx -td -td -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -IX -pw -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -15027,254 +31760,44 @@ vh vh vh vh +gJ +xt +an +at +aC +aH +an +an +an +aq +eg +an +bz +bO +yW +ck +cj +hz +an +aq +eg +aq +aN +ao +xt vh vh vh vh -tr -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -IX -tr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -mP -mP -Oe -Oe -Oe -Oe -mP -mP -ab -ab -ab -ab -ab -ab -"} -(38,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -td -td -td -td -td -td -UE -td -td -td -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh vh +gJ vh vh vh vh vh +gJ vh vh vh @@ -15282,248 +31805,186 @@ vh vh vh vh -gJ vh vh vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -gJ +KP +KP +KP +KP +KP +KP +KP +zY +KP +KP +KP +KP +KP +KP +KP +KP +vh vh ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(103,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -mP -mP Oe Oe -ms Oe Oe -mP -ab -ab -ab -ab -ab -ab -"} -(39,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -UE -td -td -td -RY -td -td -td -UE -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +PV +PV +JL +JL +JL +JL +JL +JL +JL +JL +JL +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab ue -ue +vh +vh +vh +vh +vh +vh +vh +vh vh vh gJ vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh vh vh @@ -15537,6 +31998,7 @@ vh vh vh vh +Jc vh vh vh @@ -15547,240 +32009,39 @@ vh vh vh vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh vh -lB -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -mP -BR -Oe -Oe -Oe -Oe -ms -mP -ab -ab -ab -ab -ab -ab -"} -(40,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Dt -Dt -ue vh vh vh vh vh -RC -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -IX -ue -ue -ab -ab -ab -ab -ab -ab -ab -ue vh +xt +xt +an +nU +an +an +an +aW +an +aq +eg +an +an +an +an +an +an +hA +an +aq +eg +aq +iS +ao +xt vh vh vh @@ -15791,7 +32052,6 @@ vh vh vh vh -gJ vh vh vh @@ -15804,195 +32064,180 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh vh vh vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP +vh +vh +vh vh ue -ue -ue ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ms -ms -ms +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(104,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Ao Oe Oe Oe -ms -ms -ab -ab -ab -ab -ab -ab -"} -(41,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx Oe +JL +JL +JL +JL +JL +JL +JL +JL +JL +JL +JL Oe Oe Oe -lD -ue -ue -ab -ab -ab -ab -ab -ab +Oe +Oe +Ao +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab -CO -CO -Dt -KP -KP +ue +vh +Jc +vh +vh +vh +vh +vh +vh vh vh vh @@ -16001,42 +32246,9 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh vh vh -ue -ue -ab -ab -ab -ab -ab -ue -ue vh vh vh @@ -16055,48 +32267,57 @@ vh vh vh vh -gJ vh vh vh vh vh gJ -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue +vh +xt +an +an +aq +au +Ek +aV +aq +an +bs +eg +an +bA +bB +bX +cl +cl +hi +an +aq +eg +aq +bp +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -16104,148 +32325,15 @@ vh vh vh vh -gJ -ue -ue -ue -zo -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ms -ms -Oe -Oe -Oe -ms -ab -ab -ab -ab -ab -ab -"} -(42,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -gc -gc -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -Oe -Oe -Oe -PV -CO KP -ue -ue -ue -ue -ab -ab -ab -ab -CO +KP +KP +KP +KP +KP +KP +KP +KP KP KP KP @@ -16256,54 +32344,164 @@ vh vh vh vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ue -IX ue ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(105,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH ab +Oe +Oe +Oe +Oe +JL +JL +JL +JL +Oe +JL +JL +JL +Oe +Oe +JL +JL +Oe +Oe +Ao +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab -ab -ue -ue ue ue vh vh vh -gJ vh -ue -ue -ab -ab -ue -ue -ue vh +Jc vh vh vh vh -gJ vh vh vh +Jc vh -gJ vh vh vh @@ -16319,44 +32517,9 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue vh vh vh -Wg vh vh vh @@ -16364,178 +32527,41 @@ vh vh vh vh -IX -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -iz -iz -mP -mP -mP -mP -mP -iz -iz -iz -iz -nc -ab -ab -ab -ab -ab -"} -(43,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -fI -fG -gd -gd -fG -fG -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -Oe -Oe -Oe -PV -PV -CO -KP -KP -KP +gJ vh -ue -ue -ue -ue -CO -CO -KP -KP -KP -KP -KP -KP vh vh +xt +jc +aN +aq +az +az +az +aq +an +aq +eg +an +bB +bB +bB +bB +hi +hi +an +hh +eg +aq +an +an +xt vh vh vh vh gJ vh -ue -ue -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -ue -ue -ue -ue -ue -ue -vh vh vh vh @@ -16544,17 +32570,6 @@ vh vh vh vh -ue -ue -ue -ue -vh -vh -vh -vh -vh -vh -vh vh vh vh @@ -16569,6 +32584,16 @@ vh vh vh vh +KP +KP +KP +KP +KP +KP +KP +KP +KP +KP vh vh vh @@ -16579,194 +32604,153 @@ vh vh ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(106,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +JL +JL +JL +Oe +Oe +Oe +JL +JL +Oe +Oe +Oe +Oe +gx +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt ab ue -ue -vh -gJ -vh vh vh vh -BI vh vh -BI vh -EQ -Aj -Sx -ue -CS -mP -iz -mP -iz -mP -mP -mP -iz -iz -iz -mP -iz -mP -iz -iz -iz -iz -iz -iz -ab -ab -ab -ab -ab -"} -(44,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fH -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -Oe -Oe -Oe -Oe -PV -PV -CO -KP -KP -KP -KP -KP vh vh -gJ -KP -KP -KP -KP -KP -KP -KP -KP -KP vh vh vh @@ -16775,16 +32759,6 @@ vh vh vh vh -ue -ue -ab -ab -ab -ue -ue -ue -RC -gJ vh vh vh @@ -16800,6 +32774,7 @@ vh vh vh vh +Jc vh vh vh @@ -16813,6 +32788,31 @@ vh vh vh vh +xt +jc +jy +jI +az +bb +az +bh +an +aq +eg +an +bC +bB +Ic +is +dt +cG +an +aq +ht +an +an +xt +xt vh vh vh @@ -16834,189 +32834,14 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -Sb -ue vh vh vh vh vh vh -BI -VA -BI vh -BI vh -MC -Su -Ut -CS -CS -iz -iz -mP -iz -iz -iz -mP -mJ -mJ -mJ -mJ -mJ -mJ -mU -mU -um -um -mU -mW -ab -ab -ab -ab -ab -"} -(45,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -gy -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -Oe -Oe -Oe -Oe -PV -PV -PV -CO -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP KP KP KP @@ -17026,6 +32851,7 @@ KP KP vh vh +Wg vh vh vh @@ -17034,9 +32860,145 @@ vh vh vh ue -ue -ue -ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(107,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +ab +Oe +Ao +Oe +Oe +Oe +Oe +Oe +Oe +Oe +JL +JL +JL +Oe +Oe +Oe +JL +JL +Oe +Oe +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab ue vh vh @@ -17047,6 +33009,7 @@ vh vh vh vh +Jc vh vh vh @@ -17074,14 +33037,39 @@ vh vh vh vh +gJ vh vh vh vh vh -gJ vh vh +xt +jc +bp +aq +az +bb +bb +eg +iW +eg +eg +an +an +an +an +an +an +an +an +aq +eg +aq +an +an +xt vh vh vh @@ -17092,190 +33080,26 @@ vh vh vh vh -ue -ab -ab -ab -ab -ab -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -zo -ue -ue +vh +gJ +vh +vh +vh +vh +vh +vh vh vh vh vh -xq vh vh vh vh -BI vh vh vh vh -Zb -ZZ -oz -oz -oz -iz -mJ -mJ -mJ -mJ -mJ -mJ -mJ -mJ -mJ -mW -mW -mW -mX -um -um -um -mW -mW -ab -ab -ab -ab -ab -"} -(46,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fL -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -Oe -PV -PV -PV -PV -CO -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP vh vh KP @@ -17289,6 +33113,151 @@ vh vh vh vh +ue +ue +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(108,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ab +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +iv +iv +kj +iv +iv +Oe +Oe +JL +JL +JL +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +vh vh vh vh @@ -17304,11 +33273,13 @@ vh vh vh vh +Jc vh vh vh vh vh +Jc vh vh vh @@ -17323,20 +33294,47 @@ vh vh vh vh -gJ vh vh vh vh vh +gJ vh vh +xt +an +an +zv +aA +Yp +aA +jg +an +eg +bh +an +aJ +bG +cv +bE +hq +cv +an +aq +eg +aq +aN +ao +xt vh +gJ vh vh vh vh vh +gJ vh vh vh @@ -17349,34 +33347,9 @@ vh vh vh vh -ue -ue -ab -ab -ab -ue -ue vh vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue vh -xq vh vh vh @@ -17392,153 +33365,158 @@ vh vh vh vh -GD -AD -AD -qg -Ua -mJ -mJ -mJ -mU -mU -mU -mJ -iC -iC -mP -mP -mP -PV -iC -vj -PV -PV -mP -mP -ab -ab +vh +vh +vh +ue +ue +ue ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(47,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(109,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx Oe Oe Oe Oe -PV -PV -PV -PV -PV -CO -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP +Oe +Oe +Oe +iv +iv +iM +iM +iM +iv +iv +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh -KP -KP -KP vh vh vh @@ -17563,7 +33541,6 @@ vh vh vh vh -gJ vh vh vh @@ -17576,7 +33553,41 @@ vh vh vh vh -gJ +vh +vh +vh +vh +vh +vh +sC +xt +an +an +an +an +an +an +an +ct +aq +an +uS +bE +bE +bE +bE +lz +an +aq +eg +aq +iT +ao +xt +vh +vh +vh +vh vh vh vh @@ -17607,198 +33618,426 @@ vh vh vh vh -ue -ue -ue -ue -ue +vh +vh vh vh vh ue ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(110,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +Oe +iv +iM +iM +iM +iM +iM +iv +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue ue vh vh vh vh vh +Jc vh vh vh vh vh +Jc vh -xq -BI vh vh vh vh vh -Qw -AD -uW -uW -tQ -iC -iC -iC -iC -mP -mP -iC -iC -PV -PV -PV -PV -PV -PV -PV -PV -na -mP -mP -ab -ab -ab -ab -ab -"} -(48,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fI -gd -gd -fG -fI -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +xt +an +an +Vg +aV +bR +au +jh +an +eg +aq +an +bD +bE +bE +cI +hD +cP +nM +eg +eg +aq +bp +ao +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(111,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +PH +PH +gx Oe Oe Oe -PV -PV -PV -PV -PV -PV Oe -lD +Oe +iv +iP +iM +kl +iM +iM +iv +Oe +Oe +JL +JL +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh vh -KP -KP -KP -KP -KP -KP -KP vh vh vh vh -KP -KP -KP vh vh -gJ vh vh vh @@ -17826,8 +34065,6 @@ vh vh vh vh -RC -gJ vh vh vh @@ -17836,15 +34073,40 @@ vh vh vh vh +xt +jd +aN +aq +az +bb +bb +eg +iV +eg +aq +an +bE +bE +bE +cP +jq +bE +bE +aq +eg +aq +an +an +xt vh vh vh vh vh +gJ vh vh vh -gJ vh vh vh @@ -17869,24 +34131,161 @@ vh vh vh vh -gJ vh vh vh +gJ ue ue -ue -ab -ab -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(112,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +Oe +Oe +Oe +Ao +Oe +iv +iM +iM +iM +iM +iM +iv +Oe +Oe +JL +JL +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +IX ue -ue -vh vh -gJ vh vh vh @@ -17894,7 +34293,6 @@ vh vh vh vh -gJ vh vh vh @@ -17906,153 +34304,15 @@ Jc vh vh vh -Ng -AD -SI -uW -tQ -iC -iC -iC -mP -mP -mP -mP -iC -PV -PV -PV -PV -PV -PV -PV -PV -mP -mP -mP -ab -ab -ab -ab -ab -"} -(49,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -Oe -lD -ue vh vh vh -KP -KP -KP -KP -KP vh vh vh vh vh vh -KP -KP -KP vh vh vh @@ -18060,15 +34320,43 @@ vh vh vh vh +gJ vh vh vh vh vh +gJ vh vh vh +xt +jd +jy +jJ +az +bb +az +bh +an +eg +aq +an +bF +bP +cm +ho +bE +lz +an +aq +eg +an +an +xt +xt vh +gJ vh vh vh @@ -18084,6 +34372,7 @@ vh vh vh vh +gJ vh vh vh @@ -18103,7 +34392,158 @@ vh vh vh vh +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(113,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +ab +Oe +Oe +Oe +Oe +iv +iv +iQ +km +iQ +iv +iv +Oe +Oe +JL +JL +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +IX vh +Jc vh vh vh @@ -18129,25 +34569,16 @@ vh vh vh vh -Wg vh vh -ue -ue -ue -ue -ue -ue -zo -ue vh vh vh +gJ vh vh vh vh -gJ vh vh vh @@ -18156,6 +34587,30 @@ vh vh vh vh +xt +jd +bp +aq +az +az +az +aq +an +eg +nS +an +bF +LG +RM +hp +UH +hp +an +aq +eg +an +xt +xt vh vh vh @@ -18163,143 +34618,189 @@ vh vh vh vh -st -AD -Su -uW -tQ -iC -iC -iC -mP -mP -mP -mP -iC -PV -PV -PV -PV -PV -PV -PV -iC -mP -mP -mP -ab -ab -ab -ab +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(50,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fH -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(114,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +PH +gx ab Oe Oe Oe -PV -PV -PV -PV -PV -PV +iv +iv +iv +iv +iv Oe Oe +Oe +JL +JL +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh vh -KP -KP -KP -KP -KP vh vh vh @@ -18307,9 +34808,10 @@ vh vh vh vh -KP -KP -KP +vh +Jc +vh +vh vh vh vh @@ -18325,6 +34827,10 @@ vh vh vh vh +Jc +vh +vh +vh vh vh vh @@ -18338,6 +34844,32 @@ vh vh vh vh +xt +an +an +aq +aA +Yp +aA +aq +an +in +nN +an +an +an +an +an +an +an +an +aq +ht +an +xt +vh +vh +vh vh vh vh @@ -18373,6 +34905,157 @@ vh vh vh vh +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(115,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +gx +gx +ab +Jt +Jt +PH +PH +PH +gx +gx +gx +LW +LW +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh @@ -18409,164 +35092,234 @@ vh vh vh vh -BI vh vh vh +gJ vh vh vh vh -BI vh +xt +xt +an +nU +an +an +an +aU +an +eg +eg +nV +ei +et +hj +mx +hs +et +nV +eg +eg +an +xt vh -Qw -AD -uW -uW -tQ -iC -iC -iC -iC -mP -mP -iC -iC -iC -iC -PV -PV -PV -PV -PV -iC -mP -mP -mP -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(51,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx +(116,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +JL +JL gx -Oe -Oe -Oe -PV -PV -PV -PV -PV -Oe -Oe -Oe +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue +ue vh vh -KP -KP -KP -KP vh vh -Pv -CH vh vh vh -KP -KP -KP -KP vh vh vh @@ -18578,7 +35331,17 @@ vh vh vh vh -gJ +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh vh vh vh @@ -18596,6 +35359,40 @@ vh vh vh vh +xt +an +as +aB +aH +an +an +an +ar +an +an +an +an +an +an +an +an +an +cM +hm +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -18622,6 +35419,156 @@ vh vh vh vh +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(117,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +LW +LW +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue vh vh vh @@ -18630,12 +35577,14 @@ vh vh vh vh +Jc vh vh vh vh vh vh +xY vh vh vh @@ -18653,20 +35602,60 @@ vh vh vh vh -gU vh -xq vh vh vh vh vh vh -xq vh vh vh -xq +vh +gJ +vh +xt +xt +an +an +an +an +an +aX +bf +bb +an +bj +bH +an +sl +aq +aq +aq +io +az +bb +an +xt +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -18677,152 +35666,177 @@ vh vh vh vh -te -AD -Su -Je -Ua -mJ -mJ -mJ -mJ -mJ -mU -mJ -iC -iC -iC -iC -PV -iC -PV -iC -iC -mP -mP -mP -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(52,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fH -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -gx +(118,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx Oe -Oe -Oe -PV -PV -PV -PV -PV -Oe -Oe -Oe +JL +JL +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab ue +ue +vh +vh +vh +Jc vh vh -KP -KP -KP -KP -KP vh vh vh vh vh vh -KP -KP -KP vh vh vh @@ -18838,7 +35852,6 @@ vh vh vh vh -gJ vh vh vh @@ -18859,6 +35872,34 @@ vh vh vh vh +xt +an +an +aF +cL +aw +jC +bb +bb +az +an +bk +bJ +an +aq +aq +aq +eg +cH +cQ +bb +an +xt +vh +vh +vh +vh +gJ vh vh vh @@ -18866,6 +35907,7 @@ vh vh vh vh +gJ vh vh vh @@ -18891,6 +35933,156 @@ vh vh vh gJ +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(119,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +Oe +Oe +JL +JL +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +Jc +vh vh vh vh @@ -18902,12 +36094,19 @@ vh vh vh vh +NI +uU +uU +uU +uU +uU +DI +vh vh vh vh vh vh -gJ vh vh vh @@ -18930,155 +36129,242 @@ vh vh vh vh +xt +an +av +aw +ed +hu +an +aY +xo +bg +an +nU +an +an +bn +cp +eg +eg +aq +cQ +rk +an +xt vh vh vh vh -Zb -ZZ -oz -oz -oz -iz -mJ -mJ -mJ -mV -mJ -mJ -mW -mW -mW -mU -mU -mU -mU -mU -mJ -vD -mW -mW -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(53,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fH -fL -cx -cx -cx -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx +(120,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH gx -ab -ab -ab -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -Oe -Oe Oe +JL +JL +JL +gx +PH +PH +Jt +Jt +Jt +Jt +Jt ab ue +ue vh vh -KP -KP -KP -KP -KP vh vh vh vh vh vh -KP -KP +vh +vh +vh +vh +ad +ad +eG +eG +eH +eG +eG +ad +ad +vh +vh +vh +Jc +vh +vh vh vh vh @@ -19100,6 +36386,32 @@ vh vh vh vh +xt +an +aw +SW +ed +hv +an +hl +bd +az +an +jf +ay +an +aq +aq +aq +eg +cH +cQ +az +an +xt +vh +vh +vh vh vh vh @@ -19123,6 +36435,7 @@ vh vh vh vh +gJ vh vh vh @@ -19135,6 +36448,152 @@ vh vh vh vh +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(121,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +gx +Oe +JL +JL +JL +gx +PH +PH +PH +Jt +Jt +Jt +Jt +ab +ue vh vh vh @@ -19143,9 +36602,21 @@ vh vh vh vh +Jc vh vh vh +ad +ad +Un +af +af +af +af +af +Un +ad +ad vh vh vh @@ -19172,6 +36643,29 @@ vh vh vh vh +xt +an +aD +aM +du +hw +an +aZ +be +az +bi +hk +bL +an +aq +aq +aq +aq +aq +az +az +an +xt vh vh vh @@ -19187,155 +36681,200 @@ vh vh vh vh -BI vh -Jc vh -YY -Su -Ut -Ut -CS -iz -iz -mP -iz -iz -iz -mP -mW -mW -mW -mW -mJ -mJ -mJ -mW -mW -mW -mW -mW -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(54,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(122,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx -ab -ab -ab -Oe -Oe Oe Oe -PV -PV -PV -PV -Oe +JL +JL Oe Oe +gx +PH +PH +Jt +Jt +Jt +Jt ab -ab +ue ue vh vh -KP -KP -KP -KP -KP -KP vh vh vh vh -KP -KP -KP +vh +vh +vh +vh +ad +ad +af +af +af +af +jB +af +af +af +af +ad +ad vh vh vh @@ -19353,6 +36892,7 @@ vh vh vh vh +gJ vh vh vh @@ -19360,6 +36900,36 @@ vh vh vh gJ +xt +an +aE +aQ +dv +an +an +ao +ao +ao +an +an +je +an +an +jD +jD +an +jA +jz +an +an +xt +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -19389,12 +36959,159 @@ vh vh vh vh -gJ vh vh vh vh +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(123,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +JL +JL +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +ab +ue +ue vh +Jc vh vh vh @@ -19402,15 +37119,28 @@ vh vh vh vh +ad +ew +af +af +al +kf +ff +eQ +ak +af +af +eY +ad vh vh vh vh vh +Jc vh vh vh -gJ vh vh vh @@ -19425,174 +37155,242 @@ vh vh vh vh -Wg vh vh +xt +an +an +an +an +an +xt +xt +xt +xt +xt +xt +xt +xt +an +ao +ao +an +ao +ao +an +xt +xt +vh vh gJ vh vh vh vh +gJ +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh vh vh vh -Wg vh vh vh vh vh vh -BI vh vh vh -Ye -Aj -Sx ue -CS -mP -iz -mP -mP -iz -iz -iz -iz -iz -mP -mP -mP -iz -iz -iz -iz -mP -mP -mP -ab -ab -ab -ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(55,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fI -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx +(124,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH gx Oe Oe +JL +JL +JL Oe -Oe -PV -PV -PV -PV -Oe -Oe -Oe -ab +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh vh vh -KP -KP -KP -KP -KP -KP vh vh -KP -KP -KP -KP +vh +vh +vh +vh +ad +ad +af +af +ak +af +am +af +fe +af +af +ad +ad +vh +vh vh vh vh @@ -19600,7 +37398,6 @@ vh vh vh vh -gJ vh vh vh @@ -19617,12 +37414,30 @@ vh vh vh vh +xt +xt +xt +xt +xt +xt +xt +vh +vh +vh vh vh vh +xt +xt +xt +xt +xt +xt +xt +xt +xt vh vh -gJ vh vh vh @@ -19663,6 +37478,153 @@ vh vh vh vh +IX +IX +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(125,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue vh vh vh @@ -19672,6 +37634,19 @@ vh vh vh vh +ad +pH +af +af +af +jV +af +af +af +ZI +ad +vh +vh vh vh vh @@ -19701,155 +37676,22 @@ vh vh vh vh +gJ vh vh vh -BI -Kf -ue -ue -mP -mP -ab -ab -ab -ab -ab -ab -ab -iz -iz -iz -mP -mP -mP -mP -mP -iz -iz -iz -iz -ab -ab -ab -ab -ab -"} -(56,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -fG -fG -cx -cx -cx -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -PV -PV -PV -PV -Oe -Oe -ab -ab -ab -ue vh vh vh vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP +vh +vh +gJ +vh +vh +vh +vh +vh vh vh vh @@ -19893,6 +37735,153 @@ vh vh gJ vh +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(126,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh @@ -19902,6 +37891,17 @@ vh vh vh vh +ad +gY +af +af +af +af +af +af +af +jR +ad vh vh vh @@ -19931,6 +37931,7 @@ vh vh vh vh +gJ vh vh vh @@ -19957,156 +37958,15 @@ vh vh vh vh -gJ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(57,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -gz -fG -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -Ao -ab -ab -ab -ab -ue vh vh vh vh vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP vh vh vh @@ -20115,6 +37975,7 @@ vh vh vh vh +gJ vh vh vh @@ -20130,14 +37991,174 @@ vh vh vh vh +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(127,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh +Jc vh vh vh vh vh +ad +gY +af +af +ak +af +ak +af +af +SQ +ad vh vh vh @@ -20149,6 +38170,7 @@ vh vh vh vh +Jc vh vh vh @@ -20172,6 +38194,7 @@ vh vh vh vh +gJ vh vh vh @@ -20195,11 +38218,12 @@ vh vh vh vh +gJ vh -gU vh vh vh +gJ vh vh vh @@ -20219,162 +38243,187 @@ vh vh vh vh -lB -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(58,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fH -fG -gd -gd -fG -fG -fG -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe +(128,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx Oe Oe -PV -PV -PV -PV +JL +JL +JL Oe Oe -ab -ab -ab +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue +ue vh vh vh vh vh +Jc vh vh -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -vh +ad +OF +af +ak +jX +af +ka +ke +af +eA +ad vh vh +Jc vh vh vh vh +Jc vh vh vh @@ -20406,16 +38455,19 @@ vh vh vh vh +gJ vh vh vh vh vh vh +gJ vh vh vh vh +gJ vh vh vh @@ -20442,6 +38494,166 @@ vh vh vh vh +Si +Sg +Sg +tU +Sg +tU +Sg +Sg +Sg +Sg +Ut +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(129,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iz +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +JL +JL +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh @@ -20450,6 +38662,24 @@ vh vh vh vh +ad +gY +af +jW +af +af +jU +jT +af +jR +ad +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -20458,7 +38688,6 @@ vh vh vh vh -Wg vh vh vh @@ -20468,142 +38697,218 @@ vh gJ vh vh -BI vh vh vh vh vh vh -tr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(59,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fI -fG -gH -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe +(130,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iz +iz +gx +PH +PH +gx +PH +PH +PH +PH +PH +PH +PH +PH +gx Oe Oe Oe -PV -PV -PV -PV +JL +JL +JL Oe gx -gx -ab -ab +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh @@ -20614,11 +38919,22 @@ vh vh vh vh -KP -KP -KP -KP -KP +ad +pH +af +kb +gZ +af +af +uR +af +ZI +ad +vh +vh +vh +vh +vh vh vh vh @@ -20631,6 +38947,8 @@ vh vh vh vh +Jc +vh vh vh vh @@ -20667,7 +38985,6 @@ vh vh vh vh -gJ vh vh vh @@ -20688,8 +39005,194 @@ vh vh vh vh +pB +vh +vh +ac +Jz +Jz +Jz +Jz +Jz +ge +Jz +Jz +Jz +XQ +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(131,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iA +iC +gx +gx +iA +gx +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +JL +JL +JL +Oe +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Ao +ue +vh +vh +vh +vh +vh +vh +vh +ad +ad +af +af +ak +ak +af +kd +kc +af +af +ad +ad +vh +vh vh vh +Jc vh vh vh @@ -20717,7 +39220,6 @@ vh vh vh vh -xq vh vh vh @@ -20725,144 +39227,10 @@ vh vh vh vh -xq vh vh vh -BI vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(60,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fI -gd -gd -fG -fG -gu -fG -fG -fG -fG -hK -kR -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -Oe -gx -gx -ab -ab -ab -ue vh vh vh @@ -20872,9 +39240,6 @@ vh vh vh vh -KP -KP -KP vh vh vh @@ -20893,7 +39258,6 @@ vh vh vh vh -gJ vh vh vh @@ -20901,6 +39265,166 @@ vh vh vh vh +xf +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +ge +Jz +XQ +XQ +ab +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(132,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iB +iC +iG +iC +iH +gx +PH +PH +PH +PH +PH +gx +gx +Ao +Oe +JL +JL +JL +Oe +Oe +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh vh @@ -20908,6 +39432,19 @@ vh vh vh vh +ad +ex +af +af +af +jZ +af +jY +af +af +af +eZ +ad vh vh vh @@ -20942,20 +39479,17 @@ vh vh vh vh -gJ vh vh vh vh vh vh -gJ vh vh vh vh vh -gJ vh vh vh @@ -20968,7 +39502,6 @@ gJ vh vh vh -gJ vh vh vh @@ -20979,6 +39512,7 @@ vh vh vh vh +gJ vh vh vh @@ -20988,138 +39522,166 @@ vh vh vh vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ac +Jz +Yg +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ +XQ +XQ +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(61,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -gd -gd -fG -gA -fL -fG -gT -fH -gT -fG -kX -kZ -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe +(133,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iz +iA +iC +iC +iC +iJ +iz +PH +PH +PH +PH +gx Oe Oe -PV -PV -PV -PV -PV Oe Oe +JL +JL +JL Oe gx -ab -ab +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue +ue vh vh vh @@ -21127,11 +39689,22 @@ vh vh vh vh +ad +ad +af +af +af +af +af +af +af +af +af +ad +ad vh vh vh -KP -KP vh vh vh @@ -21155,9 +39728,14 @@ vh vh vh vh +gJ +vh +vh +vh vh vh vh +gJ vh vh vh @@ -21170,6 +39748,16 @@ vh vh vh vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -21184,7 +39772,6 @@ vh vh vh vh -gJ vh vh vh @@ -21192,7 +39779,186 @@ vh vh vh vh +RU +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(134,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +iz +iz +iD +iH +iI +iz +iz +PH +PH +PH +gx +Oe +Oe +Oe +Oe +JL +JL +JL +Oe +gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue +vh +Jc +vh +Jc +vh +vh +vh vh +UR +ad +ad +Lt +af +af +af +af +af +Lt +ad +ad +Sl vh vh vh @@ -21201,6 +39967,7 @@ vh vh vh vh +Jc vh vh vh @@ -21214,6 +39981,7 @@ vh vh vh vh +Jc vh vh vh @@ -21227,6 +39995,7 @@ vh vh vh vh +gJ vh vh vh @@ -21240,145 +40009,220 @@ vh vh vh vh -BI vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(62,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fL -gd -gd -gu -fG -fG -fI -fG -fG -fG -jL -fG -kR -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(135,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +iz +iz +iz +iz +iz Oe +gx +PH +gx Oe Oe -PV -PV -PV -PV -PV -PV Oe Oe +JL +JL +JL +Oe Oe gx -ab -ab +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh -gJ +vh +vh +vh +vh +vh +vh +vh +vh +XM +re +ad +ad +eH +eG +pj +eG +eH +ad +ad +re +tL +vh +vh +vh +vh +Jc +vh +vh vh vh vh @@ -21396,7 +40240,6 @@ vh vh vh vh -gJ vh vh vh @@ -21404,6 +40247,8 @@ vh vh vh vh +gJ +vh vh vh vh @@ -21434,6 +40279,13 @@ vh vh vh vh +gJ +vh +vh +vh +vh +vh +vh vh vh vh @@ -21441,6 +40293,164 @@ vh vh vh vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +ge +Jz +Jz +Jz +Jz +Jz +ge +Jz +XQ +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(136,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +gx +Oe +Oe +Oe +JL +JL +JL +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Ao +ue vh vh vh @@ -21450,6 +40460,19 @@ vh vh vh vh +XM +re +yQ +qz +qz +zR +Zw +tk +qz +qz +yQ +re +tL vh vh vh @@ -21461,6 +40484,7 @@ vh vh vh vh +Jc vh vh vh @@ -21491,7 +40515,6 @@ vh gJ vh vh -Wg vh vh vh @@ -21500,138 +40523,189 @@ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +ge +Jz +Jz +Jz +Jz +Jz +XQ +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(63,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fH -fG -fG -gd -gd -gd -gd -gd -gd -gd -gd -hJ -hJ -gd -gd -gc -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(137,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +gx Oe Oe -ki -ki -ko -ko -ki -ki -ki +Oe +JL +JL +JL Oe Oe gx -gx -gx -ab +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh @@ -21641,6 +40715,31 @@ vh vh vh vh +Jc +vh +XM +re +qz +qz +Jw +JV +md +wC +Jw +qz +qz +re +tL +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -21677,6 +40776,9 @@ vh vh vh vh +gJ +vh +vh vh vh vh @@ -21703,13 +40805,191 @@ vh vh vh vh -gJ +vh +vh +ac +Jz +ge +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(138,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +PV +Oe +Oe +Oe +gx +PH +gx +Oe +Oe +JL +JL +JL +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +Jc +vh +vh vh vh vh vh vh vh +XM +re +qz +ol +El +JV +md +wC +El +ol +qz +re +tL +vh +vh +vh vh vh vh @@ -21722,9 +41002,19 @@ vh vh vh vh +Jc +vh +vh +vh +vh +Jc +vh +vh vh vh vh +Jc +vh vh vh vh @@ -21748,147 +41038,188 @@ vh vh vh vh +gJ vh vh vh vh vh vh -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(64,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fH -gd -gd -gd -gd -gd -gd -gd -gd -hJ -hJ -gd -gd -gc -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe +(139,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx Oe -ko -ki -ki -ki -ki -ko -ki +PV +PV Oe Oe +IU gx +PH gx +Oe +Oe +JL +JL +JL +Oe +Oe gx -ab +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh @@ -21900,6 +41231,19 @@ vh vh vh vh +XM +re +qz +Jw +re +JV +md +wC +re +Jw +qz +re +tL vh vh vh @@ -21931,6 +41275,7 @@ vh vh vh vh +gJ vh vh vh @@ -21949,7 +41294,6 @@ vh vh vh vh -gJ vh vh vh @@ -21977,14 +41321,186 @@ vh vh vh vh +ac +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(140,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +PV +PV +Oe +Oe +Oe +gx +gx +Oe +Oe +Oe +JL +JL +JL +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue vh vh +Jc vh vh vh vh vh vh +JX +re +qz +El +re +kq +md +wC +re +El +qz +re +tL vh vh vh @@ -22010,142 +41526,214 @@ vh vh vh vh -tr -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +ge +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +Jz +es +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(65,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fG -fG -fG -fH -fG -fG -fG -fG -fG -fG -fG -fG -fL -fG -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe +(141,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx Oe PV PV -PV -PV -PV -PV Oe Oe Oe gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe gx -gx -ab +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh @@ -22157,6 +41745,31 @@ vh vh vh vh +XM +re +qz +qz +re +JV +pq +wC +re +qz +qz +re +tL +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh vh vh vh @@ -22165,7 +41778,6 @@ vh vh vh vh -gJ vh vh vh @@ -22210,6 +41822,12 @@ vh vh vh vh +gJ +vh +vh +vh +vh +gJ vh vh vh @@ -22217,13 +41835,186 @@ vh vh vh vh +ac +Jz +Jz +Jz +Jz +FK +lW +lW +Ue +Ue +Ue +Ue +Ue +Ue +yg +yg +lW +lW +Bo +XQ +DE +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(142,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +PV +PV +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Ao +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +vh vh vh vh vh +Jc vh vh vh +XM +re +qz +qz +re +Hx +wq +Hf +re +qz +qz +re +tL vh vh vh @@ -22241,12 +42032,13 @@ vh vh vh vh -Wg vh +Jc vh vh vh vh +Jc vh vh vh @@ -22256,155 +42048,16 @@ vh vh vh vh -gU vh vh vh vh vh +gJ vh vh vh vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(66,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -fG -fI -fG -fG -fL -fG -fG -fG -fG -fI -fG -fG -fG -fG -fI -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -ab -ab -ue vh vh vh @@ -22439,12 +42092,186 @@ vh vh vh vh +ac +Jz +Jz +Jz +Jz +Qk +zT +Ae +uq +qi +uq +zT +uq +uq +uq +uq +QR +Pu +Ih +XQ +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(143,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +Oe +PV +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +Jc +vh +vh vh vh vh vh vh vh +XM +re +qz +qz +qz +JV +pq +wC +qz +qz +qz +re +tL vh vh vh @@ -22457,6 +42284,7 @@ vh vh vh vh +Jc vh vh vh @@ -22476,8 +42304,8 @@ vh vh vh vh +gJ vh -dC vh vh vh @@ -22501,6 +42329,7 @@ vh vh vh vh +gJ vh vh vh @@ -22511,7 +42340,6 @@ vh vh vh vh -Wg vh vh vh @@ -22520,146 +42348,163 @@ vh vh vh vh -gJ vh -ue -Kf -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ac +Jz +Jz +Jz +es +Qk +Ae +Ae +Hk +Ae +Ae +qn +Ae +Ok +Ae +Ae +Ae +zT +Ih +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(67,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -fG -fG -fG -fG -fG -gB -fG -fG -fG -fG -fG -fH -fG -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV +(144,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx PV +Oe +IU PV PV Oe Oe Oe Oe +Oe +Oe gx gx gx -ab +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab ue vh @@ -22671,6 +42516,19 @@ vh vh vh vh +XM +re +qz +qz +qz +kq +md +XK +qz +qz +qz +re +tL vh vh vh @@ -22678,34 +42536,7 @@ vh vh vh vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh +Jc vh vh vh @@ -22728,14 +42559,11 @@ vh vh vh vh -gJ vh vh vh vh vh -XX -Ez vh vh vh @@ -22746,7 +42574,6 @@ vh vh vh vh -gJ vh vh vh @@ -22779,146 +42606,164 @@ vh vh vh vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +ac +Jz +Jz +Jz +Jz +tq +UC +Ae +SK +SK +SK +SK +yP +SK +QC +SK +Ae +yU +Xw +XQ +DE +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(68,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -cx -gD -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -ab +(145,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +Oe +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab ue +uZ vh vh vh @@ -22928,53 +42773,22 @@ vh vh vh vh +XM +re +re +qz +qz +vq +LR +MA +qz +qz +re +re +tL vh vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh +Jc vh vh vh @@ -22991,8 +42805,6 @@ vh vh vh vh -XX -Fp vh vh vh @@ -23016,9 +42828,9 @@ vh vh vh vh -AB vh vh +gJ vh vh vh @@ -23035,48103 +42847,28345 @@ vh vh vh vh +ue +ue +ue +ue +ue +ue vh -zo -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(69,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -gr -gr -gr -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -kY -vh -vh -YL -Oq -Oq -Ez -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xq -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(70,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -gr -gr -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -XX -Oq -Oq -XT -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(71,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -XX -Oq -Fp -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(72,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -qF -sB -sB -sB -sB -sB -sB -Oq -Oq -Fp -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gU -vh -vh -tr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(73,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -qF -qz -uQ -uQ -uQ -qz -qz -qz -Oq -Oq -Fp -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(74,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -cx -cx -cx -cx -gr -gr -cx -cx -cx -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -PV -PV -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -qF -qz -qz -uf -uf -uf -qz -qz -qz -Oq -Oq -Oq -Ez -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -Wg -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(75,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -uM -qz -qz -tc -tc -tc -qz -qz -qz -Oq -Oq -Oq -Fp -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(76,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -Oe -PV -PV -PV -PV -PV -PV -PV -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -xt -xt -xt -xt -xt -xt -xt -xt -xt -xt -xt -xt -PE -Vc -Vc -Ag -Vc -Vc -Vc -Vc -Vc -Fu -Fu -Fu -pl -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(77,1,1) = {" -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -an -an -an -an -an -an -an -ao -ao -an -an -an -an -an -an -an -an -ba -ba -an -eq -eq -eq -eq -an -xt -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(78,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -Oe -Oe -Oe -Oe -Oe -ki -ki -ki -ki -ki -ko -Oe -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -Na -aV -ym -au -jk -an -aq -aq -an -bl -bM -ij -bT -cs -bl -an -aq -aq -an -cS -aL -aL -aL -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(79,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -gx -gx -Oe -Oe -ki -ki -ki -ko -ki -ki -Oe -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -xt -iZ -aN -aq -az -bb -bb -eg -bm -eg -nR -an -eg -eg -eg -eg -eg -eg -hB -eg -eg -an -cT -cV -wS -cV -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(80,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -Oe -gx -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -iZ -jy -jG -az -bb -az -bh -an -aq -ht -an -cA -an -an -an -an -hx -an -aq -Kl -an -aL -aL -aL -TI -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(81,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -gx -gx -gx -gx -Ao -PV -PV -PV -PV -PV -PV -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -iZ -bp -aq -az -az -az -aq -an -aq -eg -an -eg -aq -aq -aq -aq -eg -an -aq -eg -an -cV -wS -cV -cV -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(82,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -Oe -gx -gx -gx -Oe -Oe -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -xt -an -an -aq -aA -Yp -aA -aq -an -br -eg -an -eg -aq -aq -aq -aq -ll -an -aq -eg -an -aL -aL -aL -oP -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(83,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -Oe -Oe -gx -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -an -nU -an -an -an -aR -an -aq -eg -an -gl -aq -aq -aq -aq -eg -an -aq -eg -an -aL -cW -aL -Qa -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -Wg -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(84,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -gx -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -xt -an -as -aB -aH -an -an -an -aq -eg -an -OQ -eg -eg -eg -eg -eg -an -aq -eg -an -ed -aL -aL -kE -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(85,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -xt -an -an -an -an -an -aS -hg -aq -eg -an -nT -bo -bo -bo -bo -cB -an -aq -eg -bV -ed -ed -gM -an -an -xt -gJ -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(86,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -gJ -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -at -aC -aH -an -an -an -aq -eg -an -aO -aO -aO -aO -aO -az -az -aq -eg -an -eb -cX -an -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(87,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -an -nU -an -an -an -aT -an -aq -Kl -an -az -aq -Dy -az -aq -aq -cO -aq -ht -an -an -an -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -gJ -vh -vh -vh -RC -Gb -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(88,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -aq -au -nd -aV -aq -an -bs -eg -eh -bb -eg -bb -hC -bb -hE -he -hG -eg -eN -an -xt -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -zY -KP -KP -KP -KP -KP -zY -KP -KP -KP -KP -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(89,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -nC -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -FQ -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -xt -ja -aN -aq -az -az -az -aq -an -aq -eg -an -aP -az -ej -nB -hd -az -aO -aq -eg -aq -an -an -xt -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(90,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -gr -gr -gr -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -JZ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -ja -jy -jF -az -bb -bb -bh -an -aq -eg -an -UG -az -ha -hc -hd -az -az -aq -eg -aq -aN -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(91,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -Ao -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -ab -ab -ue -IX -vh -px -vh -Qi -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -xt -ja -bp -aq -az -az -bb -eg -iY -eg -eg -an -bt -az -ej -jx -hd -az -cO -aq -eg -aq -iR -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(92,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Ao -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ue -wf -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -Nq -aA -Yp -aA -jj -an -aq -eg -an -cN -aq -az -aO -az -ci -hF -cC -eg -aq -bp -ao -xt -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -zY -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(93,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -cx -cx -cx -cx -cx -cx -cx -cx -cx -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -gx -gx -ab -ab -ab -ue -Es -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -xt -xt -an -an -an -an -an -an -an -Gf -eg -an -jE -aq -Dy -az -aq -aq -aO -aq -eg -aq -an -an -xt -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -gm -KP -KP -KP -KP -KP -zY -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(94,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -xt -an -an -So -aV -sG -au -ji -an -aq -ht -an -cO -cO -cO -cO -cO -az -az -aq -ht -an -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -sI -gm -sI -gm -sI -KP -KP -KP -KP -KP -KP -vh -vh -Wg -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(95,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Ao -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jb -aN -aq -az -bb -bb -eg -iX -eg -eg -an -hb -bU -Sh -eu -cK -cD -GL -aq -eg -aq -an -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -KP -KP -KP -KP -KP -KP -sI -gm -sI -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(96,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jb -jy -jH -az -bb -az -bh -an -aq -eg -an -hn -aq -eg -eg -eg -eg -an -aq -eg -aq -aN -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(97,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -co -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -Oe -Oe -Oe -Ao -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -ue -ue -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jb -bp -aq -az -az -az -aq -an -aq -eg -an -bv -Qh -TK -aq -Gk -eg -an -aq -eg -aq -iU -ao -xt -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(98,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -aq -aA -Yp -aA -aq -an -br -eg -an -an -an -an -bu -an -eo -an -aq -eg -aq -bp -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -gJ -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(99,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Ao -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -tr -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -an -nU -an -an -an -aU -an -aq -eg -an -bw -bO -bO -bO -bO -hz -eo -eg -eg -aq -an -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(100,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -bI -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -xt -an -as -aB -aH -an -an -an -aq -eg -an -bx -bO -cJ -cF -cJ -hz -an -aq -ht -an -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -zY -KP -KP -KP -KP -KP -KP -KP -KP -zY -KP -KP -KP -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(101,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -Ao -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -xt -an -an -an -an -an -hf -hy -aq -Kl -an -by -bO -bO -bO -bO -hz -an -aq -eg -aq -an -an -xt -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(102,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -ab -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -xt -an -at -aC -aH -an -an -an -aq -eg -an -bz -bO -yW -ck -cj -hz -an -aq -eg -aq -aN -ao -xt -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -zY -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(103,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -PV -PV -JL -JL -JL -JL -JL -JL -JL -JL -JL -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -an -nU -an -an -an -aW -an -aq -eg -an -an -an -an -an -an -hA -an -aq -eg -aq -iS -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(104,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Ao -Oe -Oe -Oe -Oe -JL -JL -JL -JL -JL -JL -JL -JL -JL -JL -JL -Oe -Oe -Oe -Oe -Oe -Ao -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -xt -an -an -aq -au -Ek -aV -aq -an -bs -eg -an -bA -bB -bX -cl -cl -hi -an -aq -eg -aq -bp -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(105,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -Oe -Oe -Oe -Oe -JL -JL -JL -JL -Oe -JL -JL -JL -Oe -Oe -JL -JL -Oe -Oe -Ao -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -xt -jc -aN -aq -az -az -az -aq -an -aq -eg -an -bB -bB -bB -bB -hi -hi -an -hh -eg -aq -an -an -xt -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -KP -KP -KP -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(106,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -Oe -JL -JL -Oe -Oe -Oe -Oe -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jc -jy -jI -az -bb -az -bh -an -aq -eg -an -bC -bB -Ic -is -dt -cG -an -aq -ht -an -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -KP -KP -KP -vh -vh -Wg -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(107,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -Oe -Ao -Oe -Oe -Oe -Oe -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -Oe -JL -JL -Oe -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -xt -jc -bp -aq -az -bb -bb -eg -iW -eg -eg -an -an -an -an -an -an -an -an -aq -eg -aq -an -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -KP -KP -KP -KP -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(108,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -iv -iv -kj -iv -iv -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -xt -an -an -zv -aA -Yp -aA -jg -an -eg -bh -an -aJ -bG -cv -bE -hq -cv -an -aq -eg -aq -aN -ao -xt -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(109,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -iv -iv -iM -iM -iM -iv -iv -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -sC -xt -an -an -an -an -an -an -an -ct -aq -an -uS -bE -bE -bE -bE -lz -an -aq -eg -aq -iT -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(110,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -iv -iM -iM -iM -iM -iM -iv -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -Vg -aV -bR -au -jh -an -eg -aq -an -bD -bE -bE -cI -hD -cP -nM -eg -eg -aq -bp -ao -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(111,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -iv -iP -iM -kl -iM -iM -iv -Oe -Oe -JL -JL -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jd -aN -aq -az -bb -bb -eg -iV -eg -aq -an -bE -bE -bE -cP -jq -bE -bE -aq -eg -aq -an -an -xt -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(112,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -Oe -Oe -Oe -Ao -Oe -iv -iM -iM -iM -iM -iM -iv -Oe -Oe -JL -JL -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -IX -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -xt -jd -jy -jJ -az -bb -az -bh -an -eg -aq -an -bF -bP -cm -ho -bE -lz -an -aq -eg -an -an -xt -xt -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(113,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -Oe -iv -iv -iQ -km -iQ -iv -iv -Oe -Oe -JL -JL -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -IX -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -jd -bp -aq -az -az -az -aq -an -eg -nS -an -bF -LG -RM -hp -UH -hp -an -aq -eg -an -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(114,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -gx -gx -ab -Oe -Oe -Oe -iv -iv -iv -iv -iv -Oe -Oe -Oe -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -aq -aA -Yp -aA -aq -an -in -nN -an -an -an -an -an -an -an -an -aq -ht -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(115,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -gx -gx -gx -gx -gx -gx -LW -LW -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -xt -xt -an -nU -an -an -an -aU -an -eg -eg -nV -ei -et -hj -mx -hs -et -nV -eg -eg -an -xt -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(116,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -as -aB -aH -an -an -an -ar -an -an -an -an -an -an -an -an -an -cM -hm -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(117,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -LW -LW -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -xY -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -xt -xt -an -an -an -an -an -aX -bf -bb -an -bj -bH -an -sl -aq -aq -aq -io -az -bb -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(118,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -aF -cL -aw -jC -bb -bb -az -an -bk -bJ -an -aq -aq -aq -eg -cH -cQ -bb -an -xt -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(119,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -Oe -Oe -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -NI -uU -uU -uU -uU -uU -DI -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -av -aw -ed -hu -an -aY -xo -bg -an -nU -an -an -bn -cp -eg -eg -aq -cQ -rk -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(120,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -Oe -JL -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ad -ad -eG -eG -eH -eG -eG -ad -ad -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -aw -SW -ed -hv -an -hl -bd -az -an -jf -ay -an -aq -aq -aq -eg -cH -cQ -az -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(121,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -Oe -JL -JL -JL -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -ad -ad -Un -af -af -af -af -af -Un -ad -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -aD -aM -du -hw -an -aZ -be -az -bi -hk -bL -an -aq -aq -aq -aq -aq -az -az -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(122,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ad -ad -af -af -af -af -jB -af -af -af -af -ad -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -gJ -xt -an -aE -aQ -dv -an -an -ao -ao -ao -an -an -je -an -an -jD -jD -an -jA -jz -an -an -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(123,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -ue -vh -Jc -vh -vh -vh -vh -vh -vh -vh -ad -ew -af -af -al -kf -ff -eQ -ak -af -af -eY -ad -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -an -an -an -an -an -xt -xt -xt -xt -xt -xt -xt -xt -an -ao -ao -an -ao -ao -an -xt -xt -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(124,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -JL -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -ad -ad -af -af -ak -af -am -af -fe -af -af -ad -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xt -xt -xt -xt -xt -xt -xt -vh -vh -vh -vh -vh -vh -xt -xt -xt -xt -xt -xt -xt -xt -xt -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -IX -IX -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(125,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -ad -pH -af -af -af -jV -af -af -af -ZI -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(126,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -ad -gY -af -af -af -af -af -af -af -jR -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(127,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -Jc -vh -vh -vh -vh -vh -ad -gY -af -af -ak -af -ak -af -af -SQ -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(128,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -Jc -vh -vh -ad -OF -af -ak -jX -af -ka -ke -af -eA -ad -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Si -Sg -Sg -tU -Sg -tU -Sg -Sg -Sg -Sg -Ut -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(129,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iz -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -ad -gY -af -jW -af -af -jU -jT -af -jR -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(130,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iz -iz -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -JL -JL -JL -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -ad -pH -af -kb -gZ -af -af -uR -af -ZI -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -pB -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -ge -Jz -Jz -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(131,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iA -iC -gx -gx -iA -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Ao -ue -vh -vh -vh -vh -vh -vh -vh -ad -ad -af -af -ak -ak -af -kd -kc -af -af -ad -ad -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -xf -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -ge -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(132,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iB -iC -iG -iC -iH -gx -gx -gx -gx -gx -gx -gx -gx -Ao -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -ad -ex -af -af -af -jZ -af -jY -af -af -af -eZ -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Yg -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -XQ -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(133,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iz -iA -iC -iC -iC -iJ -iz -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -JL -JL -JL -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -ad -ad -af -af -af -af -af -af -af -af -af -ad -ad -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -RU -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(134,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -iz -iz -iD -iH -iI -iz -iz -gx -gx -gx -gx -Oe -Oe -Oe -Oe -JL -JL -JL -Oe -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -Jc -vh -Jc -vh -vh -vh -vh -UR -ad -ad -Lt -af -af -af -af -af -Lt -ad -ad -Sl -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(135,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -iz -iz -iz -iz -iz -Oe -gx -gx -gx -Oe -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -ad -ad -eH -eG -pj -eG -eH -ad -ad -re -tL -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -ge -Jz -Jz -Jz -Jz -Jz -ge -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(136,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -Ao -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -yQ -qz -qz -zR -Zw -tk -qz -qz -yQ -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -ge -Jz -Jz -Jz -Jz -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(137,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -Jc -vh -XM -re -qz -qz -Jw -JV -md -wC -Jw -qz -qz -re -tL -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -ge -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(138,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -PV -Oe -Oe -Oe -gx -gx -gx -Oe -Oe -JL -JL -JL -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -Jc -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -qz -ol -El -JV -md -wC -El -ol -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(139,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -PV -PV -Oe -Oe -IU -gx -gx -gx -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -qz -Jw -re -JV -md -wC -re -Jw -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(140,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -PV -PV -Oe -Oe -Oe -gx -gx -Oe -Oe -Oe -JL -JL -JL -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -Jc -vh -vh -vh -vh -vh -vh -JX -re -qz -El -re -kq -md -wC -re -El -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -ge -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -Jz -es -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(141,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -PV -PV -Oe -Oe -Oe -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -qz -qz -re -JV -pq -wC -re -qz -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -FK -lW -lW -Ue -Ue -Ue -Ue -Ue -Ue -yg -yg -lW -lW -Bo -XQ -DE -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(142,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -PV -PV -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Ao -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -Jc -vh -vh -vh -XM -re -qz -qz -re -Hx -wq -Hf -re -qz -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Qk -zT -Ae -uq -qi -uq -zT -uq -uq -uq -uq -QR -Pu -Ih -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(143,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -Oe -PV -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -Jc -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -qz -qz -qz -JV -pq -wC -qz -qz -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -es -Qk -Ae -Ae -Hk -Ae -Ae -qn -Ae -Ok -Ae -Ae -Ae -zT -Ih -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(144,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -Oe -IU -PV -PV -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -qz -qz -qz -kq -md -XK -qz -qz -qz -re -tL -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -tq -UC -Ae -SK -SK -SK -SK -yP -SK -QC -SK -Ae -yU -Xw -XQ -DE -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(145,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -Oe -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -uZ -vh -vh -vh -vh -vh -vh -vh -vh -vh -XM -re -re -qz -qz -vq -LR -MA -qz -qz -re -re -tL -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ue -ue -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -ac -Jz -ge -Jz -Jz -vH -IR -MR -QC -Ae -Ae -DR -yt -Ae -zT -SK -Ae -yU -Xw -AL -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(146,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Zf -re -re -re -qz -qz -qz -qz -qz -re -re -re -DW -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -yD -Wb -Ae -SK -uF -Ae -zT -lk -QV -Ie -SK -Ae -yU -Xw -XQ -DE -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(147,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ue -ue -vh -vh -Jc -vh -vh -vh -vh -vh -Jc -vh -Qy -GB -Pi -Pi -Pi -Pi -Pi -Pi -Pi -Pi -Pi -OK -Qy -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ue -IX -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jp -sb -Ae -SK -Ae -QV -Ae -oH -Ae -Ae -SK -Ae -YG -Xw -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(148,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -KA -PV -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -uZ -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ab -ab -ab -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -ac -Jz -Jz -Jz -Jz -Jp -sb -Hk -SK -Ae -Cl -Ae -zT -Ae -zT -SK -Ae -yU -Xw -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(149,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -ue -ue -ue -ue -ue -ue -ue -vh -vh -vh -vh -vh -gJ -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -gJ -vh -ac -Jz -Jz -Jz -Jz -Ll -YI -Ae -SK -Ae -zT -Ae -Ae -Ae -sc -SK -qn -yU -Dr -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(150,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -Jc -vh -vh -vh -Jc -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ue -ue -ue -ue -vh -vh -vh -vh -ue -ue -ue -ue -ab -ab -ab -ab -ab -ue -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -gJ -ue -ue -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue -vh -ue -ue -Ut -XQ -Jz -ge -Jz -vH -IR -Ae -yP -ZH -Ae -rK -Ae -DR -rK -QC -zT -YG -Xw -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(151,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -gJ -vh -vh -vh -ue -ue -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -IX -ue -ab -ab -XQ -XQ -Jz -Jz -tq -UC -qn -SK -QC -SK -SK -SK -SK -SK -SK -Ae -yU -Xw -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(152,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -gJ -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ab -ab -ab -ab -XQ -XQ -es -Qk -Ae -Ae -zT -Ae -Ae -lk -Hk -Ae -Ae -Ae -Ae -Ae -Ih -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(153,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -XQ -XQ -Qk -Pu -zT -Md -ze -Md -Md -Md -zT -Md -Md -Ae -Pu -Ih -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(154,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -KA -PV -PV -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -ab -ue -vh -vh -vh -vh -ue -ue -ue -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -XQ -TG -Xe -Xe -qj -qj -qj -oN -qj -qj -qj -qj -Xe -Xe -Aa -XQ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(155,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -Oe -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -Jc -vh -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ue -ue -ue -IX -HH -ue -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -XQ -XQ -XQ -Jz -Jz -XQ -XQ -XQ -Jz -Jz -Jz -XQ -XQ -XQ -XQ -AL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(156,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -ue -ue -ue -ue -ue -ue -ue -vh -Jc -vh -Jc -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -gx -iv -iv -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -XQ -XQ -AL -XQ -ab -XQ -XQ -XQ -AL -XQ -ab -gx -XQ -DE -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(157,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -Oe -Oe -yy -Oe -Oe -Oe -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -vh -Jc -vh -ue -ue -ab -ab -ab -ab -ab -ue -ue -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -gx -gx -gx -iv -iv -gx -gx -gx -gx -Oe -Oe -gx -gx -Uu -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -DE -ab -ab -ab -DE -ab -ab -DE -ab -ab -gx -gx -JL -JL -JL -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(158,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -vh -Wg -vh -vh -Jc -vh -vh -vh -vh -Jc -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -Ao -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -gx -gx -gx -iv -iv -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -Oe -JL -JL -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(159,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -Oe -PV -PV -PV -PV -PV -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -vh -vh -vh -vh -vh -vh -Jc -vh -vh -vh -vh -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -GN -Oe -Oe -gx -gx -RN -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -JL -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(160,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -PV -PV -PV -PV -PV -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ue -ue -ue -ue -ue -ue -ue -ue -ue -ue -ue -ue -ue -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -JL -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(161,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -PV -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -Oe -pE -Oe -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Dl -Dl -Dl -Oe -Ao -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -JL -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(162,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Dl -Oe -Oe -Oe -Dl -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(163,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -KA -PV -PV -Oe -Oe -Oe -Oe -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -GN -Oe -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -vo -Oe -Dl -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -Oe -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(164,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -GN -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -Uu -gx -Dl -Oe -Oe -Oe -Dl -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -JL -JL -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(165,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -xa -PV -Oe -Oe -Oe -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -GN -gx -gx -gx -gx -gx -gx -gx -gx -Lm -Dl -Dl -Ao -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -Oe -JL -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(166,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -Oe -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -Oe -Oe -Oe -PV -PV -PV -KA -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -gx -ab -JL -JL -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(167,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -hM -hL -PV -PV -PV -PV -Oe -Oe -Oe -Oe -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -PV -KA -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -zn -Oe -Oe -gx -Oe -GN -Oe -pE -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -ab -gx -gx -ab -JL -JL -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(168,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -hM -WF -hQ -WF -wI -PV -Oe -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -PV -PV -KA -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -gx -ab -JL -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(169,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -hM -hQ -hR -hQ -RL -Ld -PV -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -GN -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -ab -ab -JL -JL -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(170,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -hM -WF -hQ -WF -Rz -PV -PV -gx -gx -gx -iv -iw -iv -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -pE -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -JL -JL -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(171,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -hM -hL -PV -PV -PV -PV -gx -gx -gx -gx -iv -iv -iv -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -GN -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -Oe -JL -JL -ab -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(172,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -zn -gx -Oe -Oe -GN -gx -gx -gx -gx -gx -gx -gx -Ri -gx -Oe -Oe -GN -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -Oe -JL -JL -JL -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(173,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -JW -Oe -Oe -Oe -Oe -gx -gx -Oe -Oe -Oe -GN -gx -Oe -zn -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -Oe -JL -JL -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(174,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -ab -gx -gx -gx -Oe -gx -Oe -Oe -Oe -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -JL -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(175,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -PV -PV -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -Oe -gx -gx -gx -gx -Oe -GN -Oe -gx -gx -pE -gx -Oe -gx -gx -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -JL -JL -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(176,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -PV -VC -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -Oe -Oe -Oe -gx -Oe -Oe -Oe -Oe -GN -gx -gx -To -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -JL -JL -JL -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(177,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Ao -Oe -GN -Oe -gx -gx -gx -Oe -Oe -pE -Oe -Oe -Oe -Oe -GN -Oe -Oe -gx -Oe -Oe -Oe -Oe -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -JL -JL -JL -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(178,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -pE -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -JL -JL -JL -JL -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(179,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -Oe -gx -gx -gx -gx -Oe -GN -Oe -Oe -TU -gx -ts -TU -gx -gx -gx -Oe -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -JL -JL -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(180,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -Oe -gx -gx -gx -Oe -Oe -gx -gx -gx -tC -tC -tC -EU -tC -pv -gx -Oe -gx -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(181,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -gx -gx -gx -gx -GN -Oe -gx -gx -gx -gx -Dw -TU -RD -Po -SS -gx -Oe -gx -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -JL -JL -Oe -Oe -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(182,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -pE -Oe -gx -gx -gx -Oe -Oe -gx -gx -gx -pv -Dw -tC -xx -tC -TU -gx -Oe -gx -gx -Oe -Oe -GN -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Ao -JL -JL -JL -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(183,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -zn -gx -Oe -GN -gx -gx -gx -Oe -Oe -gx -gx -gx -gx -Lj -tC -Dw -tC -WH -gx -Oe -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Oe -Oe -Oe -JL -JL -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(184,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -gx -gx -gx -pn -Oe -gx -gx -gx -gx -gx -zI -tC -TU -vJ -gx -Oe -gx -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -JL -JL -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(185,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -Yc -tC -QT -gx -pE -gx -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -ab -ab -ab -JL -JL -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(186,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -gx -gx -gx -Oe -gx -GN -gx -gx -gx -gx -Dw -tC -tC -Mk -gx -xN -gx -Oe -Oe -gx -Oe -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -Oe -JL -JL -Oe -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(187,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -tC -Po -tC -TU -Nb -gx -gx -gx -UO -gx -gx -GN -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -Oe -Oe -JL -JL -Oe -Oe -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(188,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -GN -Oe -gx -gx -gx -gx -Oe -IU -Oe -Oe -EU -tC -tC -EU -xw -gx -gx -gx -Oe -Oe -Oe -gx -Oe -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -JL -JL -ab -Oe -Oe -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(189,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -GN -Oe -gx -Po -Mk -gx -gx -gx -gx -gx -Oe -gx -gx -gx -Oe -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -JL -JL -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(190,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -GN -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -gx -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -gx -gx -JL -JL -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(191,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -pE -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -gx -ab -ab -JL -JL -ab -ab -ab -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(192,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -gx -gx -Nf -Oe -Oe -GO -Oe -pE -Oe -GO -Oe -pE -Oe -Oe -Oe -gx -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -ab -gx -ab -Oe -JL -JL -Oe -Oe -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(193,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -GN -Oe -Oe -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -GN -gx -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -ab -ab -JL -JL -Oe -Oe -Oe -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(194,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -gx -Oe -GN -Oe -Oe -Oe -Oe -gx -Oe -gx -gx -gx -gx -Oe -Oe -gx -gx -gx -pE -Oe -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -gx -gx -ab -ab -gx -gx -gx -gx -gx -Oe -JL -JL -Oe -gx -Oe -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(195,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -zn -Oe -Oe -Oe -Oe -GN -Oe -pE -Oe -Oe -Oe -gx -Oe -Oe -gx -Oe -gx -Oe -Oe -Oe -Oe -Oe -Oe -Ao -gx -gx -Oe -Oe -Oe -GN -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -ab -gx -gx -gx -ab -ab -gx -gx -gx -ab -ab -gx -Oe -JL -JL -Oe -Oe -Oe -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(196,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -gx -gx -gx -gx -gx -Oe -Oe -gx -Oe -GN -gx -Oe -Oe -Oe -gx -gx -gx -Oe -pE -Oe -gx -Oe -Oe -Oe -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -JL -JL -ab -ab -Oe -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(197,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -Oe -Oe -Ao -Oe -gx -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -gx -ab -ab -gx -gx -gx -gx -ii -ii -ab -ab -gx -JL -JL -Oe -ab -ab -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(198,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -gx -Oe -Uu -Oe -Oe -Oe -Oe -gx -gx -Oe -pE -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -Oe -Oe -ab -Oe -JL -JL -Oe -ab -ab -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(199,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -pE -Oe -pu -gx -Oe -vG -gx -gx -Oe -qo -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -ii -Oe -Oe -Oe -JL -JL -JL -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(200,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Nf -gx -Oe -Oe -Oe -gx -GN -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -Oe -Oe -JL -JL -JL -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(201,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -GN -Oe -gx -gx -gx -Oe -Oe -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -ii -ii -uo -JL -JL -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(202,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -gx -GN -gx -Oe -Oe -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -ii -ii -ii -ii -ii -JL -Ml -At -Oe -Oe -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(203,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -UZ -Oe -Oe -Oe -gx -gx -gx -gx -gx -Oe -Oe -Ao -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -mM -im -mS -JL -JL -ii -Oe -Oe -Ao -ii -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(204,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -zn -Oe -Oe -Oe -XO -Oe -gx -gx -gx -Oe -FW -ii -ii -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -ii -ii -ii -gx -ii -im -im -ii -ii -ii -mS -ii -ii -ii -ii -ii -ii -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(205,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -GN -gx -Oe -Oe -GN -Oe -Oe -Oe -Oe -ii -iq -ii -gx -ii -ii -ii -ii -gx -ii -ii -ii -ii -gx -gx -ii -lb -im -ii -ii -ii -im -im -kF -iq -ii -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(206,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -GN -Oe -gx -gx -gx -gx -gx -Oe -Oe -ii -ik -ii -ir -ii -ii -ii -kH -im -ii -ii -ii -kH -im -ii -ii -gx -ii -im -im -kF -im -im -im -im -kF -kF -ii -mM -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(207,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -gx -gx -gx -ys -Oe -Uu -ik -Rp -ip -jK -im -im -ir -ir -ir -ir -im -ir -ir -ir -ir -ii -gx -ii -im -kF -kF -im -im -im -im -im -im -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(208,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -Oe -Oe -gx -gx -Oe -Oe -Oe -ii -ii -ii -im -im -im -jK -im -im -jK -im -im -im -im -im -ii -ii -ii -mO -lM -kF -im -im -im -im -im -im -im -im -ii -gx -gx -gx -gx -gx -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(209,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Id -Oe -Oe -Oe -Oe -Oe -Oe -Oe -ik -Rp -ip -im -im -im -im -im -ir -ir -im -im -im -im -im -ii -kO -ii -im -kF -kF -im -im -kJ -im -im -ii -ii -ii -ii -gx -gx -gx -gx -gx -gx -gx -ab -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(210,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Ao -gx -Oe -Oe -GN -Oe -ii -ik -ii -mO -jK -im -im -im -ir -im -im -im -kJ -im -im -ii -ii -ii -im -im -kF -im -im -im -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(211,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -pE -Oe -Oe -Oe -Oe -GN -ii -im -im -im -im -jK -ir -ir -im -im -im -im -im -ir -im -ii -ii -ii -ii -im -im -im -im -kF -ii -ii -gx -gx -gx -gx -gx -ab -gx -ab -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(212,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -Oe -Oe -Oe -FO -ii -ii -ii -kF -kF -kF -im -im -im -im -im -im -im -im -im -nL -kH -im -nL -im -im -im -im -kF -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(213,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -pE -Oe -gx -gx -ii -ii -kG -ii -ii -ii -ii -kI -im -im -im -ir -im -ii -im -kF -ii -mN -im -EL -im -kF -mR -ii -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(214,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -Oe -gx -gx -gx -gx -ii -ii -ii -gx -gx -ii -ii -ir -ir -ir -ii -ii -ii -im -im -ii -ii -ii -ii -ii -ii -ii -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(215,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -ir -im -ir -ii -kN -ii -kF -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(216,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -im -ii -ii -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(217,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -kK -kL -kM -ii -gx -ii -im -kF -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(218,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -ii -ii -ii -ii -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(219,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -kF -mI -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(220,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(221,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lc -lc -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(222,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -iq -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(223,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -mI -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(224,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -iq -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(225,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(226,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(227,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(228,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -ab -gx -gx -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(229,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -ab -gx -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(230,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(231,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -iq -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(232,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(233,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -iq -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(234,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -jN -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(235,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -lS -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(236,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -lS -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(237,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -lS -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(238,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lT -mK -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(239,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -im -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(240,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -mI -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(241,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(242,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(243,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(244,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -lS -im -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(245,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -nn -im -im -nn -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(246,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -EK -no -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(247,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -nn -jN -im -nn -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(248,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -EK -qx -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(249,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -np -np -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(250,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ii -nq -nq -ii -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +vh +vh +vh +vh +gJ +vh +vh +vh +vh +ac +Jz +ge +Jz +Jz +vH +IR +MR +QC +Ae +Ae +DR +yt +Ae +zT +SK +Ae +yU +Xw +AL ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(251,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(146,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +Zf +re +re +re +qz +qz +qz +qz +qz +re +re +re +DW +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue ab ab ab ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +yD +Wb +Ae +SK +uF +Ae +zT +lk +QV +Ie +SK +Ae +yU +Xw +XQ +DE +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(147,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +Jc +vh +vh +vh +vh +vh +Jc +vh +Qy +GB +Pi +Pi +Pi +Pi +Pi +Pi +Pi +Pi +Pi +OK +Qy +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +ue +IX +ue +ue +ue ab ab ab +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +Jp +sb +Ae +SK +Ae +QV +Ae +oH +Ae +Ae +SK +Ae +YG +Xw +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(148,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +KA +PV +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt ab +uZ +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue ab ab ab +ue +ue ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +ac +Jz +Jz +Jz +Jz +Jp +sb +Hk +SK +Ae +Cl +Ae +zT +Ae +zT +SK +Ae +yU +Xw +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(149,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +ue +ue +ue +ue +ue +ue +ue +vh +vh +vh +vh +vh +gJ +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue ab ab +Jt +Jt +Jt ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +gJ +vh +ac +Jz +Jz +Jz +Jz +Ll +YI +Ae +SK +Ae +zT +Ae +Ae +Ae +sc +SK +qn +yU +Dr +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(150,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +Jc +vh +vh +vh +Jc +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +ue +ue +ue +ue +vh +vh +vh +vh +ue +ue +ue +ue ab ab ab ab ab +ue +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +gJ +ue +ue ab +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +ue +ue +vh +ue +ue +Ut +XQ +Jz +ge +Jz +vH +IR +Ae +yP +ZH +Ae +rK +Ae +DR +rK +QC +zT +YG +Xw +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(151,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +ue +ue ab ab ab ab ab ab +ue +ue +ue +ue +ue +ue ab ab ab +Jt +Jt +Jt +Jt +Jt ab ab +ue +ue +vh +vh +vh +vh +vh +vh +gJ +vh +vh +vh +ue +ue ab +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab +ue +IX +ue ab ab +XQ +XQ +Jz +Jz +tq +UC +qn +SK +QC +SK +SK +SK +SK +SK +SK +Ae +yU +Xw +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(152,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +gJ +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue ab +Jt +Jt ab +XQ +XQ +es +Qk +Ae +Ae +zT +Ae +Ae +lk +Hk +Ae +Ae +Ae +Ae +Ae +Ih +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(153,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Jt +Jt +Jt +Jt ab +XQ +XQ +Qk +Pu +zT +Md +ze +Md +Md +Md +zT +Md +Md +Ae +Pu +Ih +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(154,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +KA +PV +PV +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt ab +ue +vh +vh +vh +vh +ue +ue +ue +gx +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +XQ +TG +Xe +Xe +qj +qj +qj +oN +qj +qj +qj +qj +Xe +Xe +Aa +XQ ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(155,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +Oe +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +Jc +vh +vh +vh +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt ab +ue +ue +ue +IX +HH +ue +gx ab +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +XQ +XQ +XQ +Jz +Jz +XQ +XQ +XQ +Jz +Jz +Jz +XQ +XQ +XQ +XQ +AL +gx +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(156,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +ue +ue +ue +ue +ue +ue +ue +vh +Jc +vh +Jc +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt ab ab ab +gx +iv +iv +gx +PH +PH +PH +gx +gx +PH +PH +gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab +XQ +XQ +AL +XQ ab +XQ +XQ +XQ +AL +XQ ab +gx +XQ +DE +JL +Oe +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(157,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +Oe +Oe +yy +Oe +Oe +Oe +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +vh +Jc +vh +ue +ue ab ab ab ab ab +ue +ue +ue +ue +ue +ue ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +PH +PH +gx +iv +iv +gx +PH +gx +gx +Oe +Oe +gx +gx +Uu +gx +gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +DE ab ab ab +DE ab ab +DE ab +Jt +PH +gx +JL +JL +JL ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(158,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +vh +Wg +vh +vh +Jc +vh +vh +vh +vh +Jc +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt ab +Ao ab ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt +PH +PH +gx +iv +iv +gx +gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Jt +Jt +Jt ab +Jt +Jt ab +Jt +Jt +PH +gx +Oe +JL +JL +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(159,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +Oe +PV +PV +PV +PV +PV +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +ue +ue +vh +vh +vh +vh +vh +vh +Jc +vh +vh +vh +vh +ue +ue ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +gx +GN +Oe +Oe +gx +gx +RN +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH ab +JL +JL +Oe +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(160,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +PV +PV +PV +PV +PV +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ue +ue +ue +ue +ue +ue +ue +ue +ue +ue +ue +ue +ue +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx +Oe +Oe +Oe gx gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +Oe +Oe +Oe gx gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +ab +JL +JL +Oe gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(161,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +PV +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH gx +Oe +pE +Oe gx +PH gx gx +Oe +Oe +Oe +Oe +Oe +Oe +Dl +Dl +Dl +Oe +Ao gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +ab +JL +JL +JL gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(162,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +gx +gx +PH +PH gx +Oe +Oe +Oe +Oe +Dl +Oe +Oe +Oe +Dl gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +gx +PH gx +JL +JL gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(163,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +KA +PV +PV +Oe +Oe +Oe +Oe +PV gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH gx +Oe +Oe +GN +Oe gx -ii -nr -nr -ii +PH +PH +PH gx +Oe +Oe +Oe +Oe +Oe +vo +Oe +Dl gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +ab +Oe +JL +JL gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(164,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +gx +Oe +Oe +Oe +Oe +Oe +Oe +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH gx +GN +Oe +Oe +Oe gx +PH +PH +PH +PH gx +Uu gx +Dl +Oe +Oe +Oe +Dl +Oe gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx +Oe +JL +JL +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(165,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +Oe +gx +PH +PH +PH +PH +PH +PH +PH gx +Oe +Oe +Oe +xa +PV +Oe +Oe +Oe +PV +PV gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH gx gx +Oe +Oe +Oe +Oe +GN gx +PH +PH +PH +PH gx +PH gx +Lm +Dl +Dl +Ao gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH gx +Oe +JL +JL +JL gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(252,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(166,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +Oe +gx +gx +gx +PH +PH +PH +gx +gx +Oe +Oe +Oe +gx +Oe +Oe +Oe +PV +PV +PV +KA +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +gx +gx +gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +gx +gx +gx +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +PH ab +JL +JL +JL +Oe +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(167,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +hM +hL +PV +PV +PV +PV +Oe +Oe +Oe +Oe +gx +gx +gx +Oe +Oe +Oe +Oe +gx +gx +PV +KA +PV +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +gx +zn +Oe +Oe +gx +Oe +GN +Oe +pE +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +Jt +PH +PH ab +JL +JL +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(168,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +hM +WF +hQ +WF +wI +PV +Oe +gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +gx +PV +PV +KA +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +gx +gx +gx +gx +gx +Oe +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +PH ab +JL +JL +Oe +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(169,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +hM +hQ +hR +hQ +RL +Ld +PV +gx +gx +gx +Oe +Oe +Oe +gx +gx +gx +PH +PH +PH +PH +gx +gx +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +GN +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +Jt ab +JL +JL +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(170,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +hM +WF +hQ +WF +Rz +PV +PV +gx +PH +gx +iv +iw +iv +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +pE +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt ab +JL +JL ab +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(171,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +hM +hL +PV +PV +PV +PV +gx +PH +PH +PH +iv +iv +iv +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +GN +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +gx +PH +gx +gx +gx +gx +gx +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH ab +Oe +JL +JL ab +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(172,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH gx +zn gx +Oe +Oe +GN gx +PH +PH +PH +PH gx gx +Ri gx +Oe +Oe +GN +Oe +Oe gx gx +PH +gx +gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +Oe +JL +JL +JL gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(173,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +Oe +Oe +Oe +gx +PH +PH +PH gx +JW +Oe +Oe +Oe +Oe gx gx +Oe +Oe +Oe +GN gx +Oe +zn gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +Oe +JL +JL gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(174,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +Jt +PH +PH +gx +Oe +gx +Oe +Oe +Oe +gx +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +JL +JL +JL gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(175,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PV +PV +PV +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +Oe +Oe +gx +PH +PH gx -ii -im -im -ii +Oe +GN +Oe gx gx +pE gx +Oe gx gx +Oe +Oe +Oe +Oe +Oe gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +JL +JL gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(176,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +PV +VC gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +Oe +Oe +gx +PH +PH gx +Oe +Oe +Oe gx +Oe +Oe +Oe +Oe +GN gx gx +To +Oe +Oe gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +JL +JL +JL gx gx +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(177,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe +Ao +Oe +GN +Oe +gx +PH +gx +Oe +Oe +pE +Oe +Oe +Oe +Oe +GN +Oe +Oe +gx +Oe +Oe +Oe +Oe +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Oe +JL +JL +JL +Oe +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(253,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(178,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +Oe +gx +PH +PH +gx +Oe +Oe +Oe +Oe +gx +gx +gx +gx +gx +gx +gx +Oe +gx +Oe +pE +gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +JL +JL +JL +JL +gx +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(179,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +Oe +Oe +gx +PH +PH +gx +Oe +GN +Oe +Oe +TU +gx +ts +TU +gx +gx +gx +Oe +gx +Oe +Oe +Oe +gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab +Oe +JL +JL +JL +JL +gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(180,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +Oe +Oe +gx +PH +gx +Oe +Oe +gx +gx +gx +tC +tC +tC +EU +tC +pv +gx +Oe +gx +gx +Oe +Oe +gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab +JL +JL +gx ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(181,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +Oe +gx +PH +PH gx +GN +Oe gx +PH +PH gx +Dw +TU +RD +Po +SS gx +Oe gx gx +Oe +Oe gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt gx +JL +JL +Oe +Oe +Oe +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(182,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe gx +pE +Oe gx +PH gx +Oe +Oe gx +PH gx +pv +Dw +tC +xx +tC +TU gx +Oe gx gx +Oe +Oe +GN gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Ao +JL +JL +JL +Oe +ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(183,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +zn gx -ii -im -im -ii -gx -gx +Oe +GN gx +PH gx +Oe +Oe gx +PH +PH gx +Lj +tC +Dw +tC +WH gx +Oe gx +Oe +Oe gx gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +ab +Oe +Oe +Oe +JL +JL gx +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(184,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +Oe +Oe +gx +PH gx +pn +Oe gx +PH +PH +PH gx +zI +tC +TU +vJ gx +Oe gx +Oe gx gx gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt ab ab ab +JL +JL +Oe ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(254,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(185,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +PH +PH +gx +Oe +Oe +Oe +gx +PH +PH +PH +gx +Yc +tC +QT +gx +pE +gx +Oe +Oe +Oe +Oe +gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +Jt +Jt ab +JL +JL +Oe +gx ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(186,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +PH +PH +gx +Oe +gx +GN +gx +PH +PH +gx +Dw +tC +tC +Mk +gx +xN +gx +Oe +Oe +gx +Oe +gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +gx +Oe +JL +JL +Oe +gx +gx ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(187,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +PH +PH +gx +Oe +Oe +Oe +Oe +gx +gx +tC +Po +tC +TU +Nb +gx +gx +gx +UO +gx +gx +GN +gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +gx +Oe +Oe +JL +JL +Oe +Oe +gx ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(188,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +GN +Oe +gx +PH +gx +gx +Oe +IU +Oe +Oe +EU +tC +tC +EU +xw +gx +PH +gx +Oe +Oe +Oe +gx +Oe +gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH ab ab +JL +JL ab +Oe +Oe ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(189,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +gx +PH +gx +gx +gx +GN +Oe +gx +Po +Mk +gx +gx +PH +PH +gx +Oe +gx +gx +gx +Oe +gx +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +gx +JL +JL ab ab ab +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(190,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +GN +gx +PH +PH +PH +gx +gx +PH +gx +gx +PH +PH +PH +gx +Oe +Oe +Oe +Oe +gx +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +PH +gx +JL +JL +gx +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(191,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +pE +Oe +Oe +gx +PH +PH +gx +gx +gx +gx +gx +gx +gx +gx +Oe +Oe +Oe +Oe +gx +gx +Oe +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +PH +Jt ab +JL +JL ab ab +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(192,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +Oe +Oe +Oe +Oe +Oe +gx +gx +Nf +Oe +Oe +GO +Oe +pE +Oe +GO +Oe +pE +Oe +Oe +Oe +gx +Oe +gx +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +Jt +PH ab +Oe +JL +JL +Oe +Oe ab +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(193,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +Oe +GN +Oe +Oe +Oe +Oe +Oe +Oe +gx +gx +gx +gx +gx +gx +Oe +Oe +Oe +GN +gx +Oe +Oe +Oe +gx +PH +gx +gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +Jt ab +JL +JL +Oe +Oe +Oe ab +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(194,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx gx gx gx +Oe +Oe +Oe +Oe +Oe +Oe +gx +Oe +GN +Oe +Oe +Oe +Oe gx +Oe gx gx gx gx +Oe +Oe gx +PH gx +pE +Oe gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +PH +PH +Jt +Jt +PH +PH +PH +PH gx +Oe +JL +JL +Oe gx +Oe +ab +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(195,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +zn +Oe +Oe +Oe +Oe +GN +Oe +pE +Oe +Oe +Oe gx +Oe +Oe gx +Oe gx +Oe +Oe +Oe +Oe +Oe +Oe +Ao gx gx -ii -ns -nt -ii +Oe +Oe +Oe +GN gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +Jt +PH +PH +PH +Jt +Jt +PH +PH +PH +Jt +Jt gx +Oe +JL +JL +Oe +Oe +Oe +ab +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(196,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx gx gx +Oe +Oe gx gx gx gx gx +Oe +Oe gx +Oe +GN gx +Oe +Oe +Oe gx gx gx +Oe +pE +Oe gx +Oe +Oe +Oe gx +Oe +Oe gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +PH +PH +PH +PH +PH +PH +PH gx +JL +JL ab ab +Oe ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} -(255,1,1) = {" -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +(197,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +gx +PH +PH +PH +PH +PH +gx +gx +PH +gx +gx +PH +gx +gx +gx +PH gx +Oe +Oe +Oe +Oe +Oe +Oe +Ao +Oe gx gx +Oe +Oe gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +PH +Jt +Jt +PH +PH +PH +PH +Fb +ii +ab +Jt gx +JL +JL +Oe +ab +ab +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(198,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe gx gx +Oe +Uu +Oe +Oe +Oe +Oe gx gx +Oe +pE gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +Oe +Oe +ab +Oe +JL +JL +Oe +ab +Jt +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(199,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PH gx +pE +Oe +pu gx +Oe +vG gx gx +Oe +qo gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +ii +Oe +Oe +Oe +JL +JL +JL +ab +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(200,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe +Nf gx +Oe +Oe +Oe gx +GN gx +PH +gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +Oe +Oe +JL +JL +JL gx +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(201,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +GN +Oe gx +PH gx +Oe +Oe +Oe +Oe gx +PH gx +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +Fb +ii +uo +JL +JL gx +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(202,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +gx +PH +PH gx +GN gx +Oe +Oe gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Fb +ii +ii +ii +ii +ii +JL +Ml +At +Oe +Oe gx gx +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(203,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +UZ +Oe +Oe +Oe gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab gx +PH gx gx +Oe +Oe +Ao gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +mM +im +mS +JL +JL +ii +Oe +Oe +Ao +ii +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(204,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +zn +Oe +Oe +Oe +XO +Oe gx gx gx +Oe +FW +ii +ii +Fb +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Fb +ii +ii +Fb +PH +ii +im +im +ii +ii +ii +mS +ii +Fb +ii +ii +ii +Fb +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(205,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe +Oe +GN gx +Oe +Oe +GN +Oe +Oe +Oe +Oe +ii +iq +ii +PH +Fb +ii +ii +Fb +PH +Fb +ii +ii +Fb +PH +PH +ii +lb +im +ii +ii +ii +im +im +kF +iq +ii +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(206,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +GN +Oe gx +PH gx gx gx +Oe +Oe +ii +ik +ii +ir +ii +ii +ii +kH +im +ii +ii +ii +kH +im +ii +Fb +PH +ii +im +im +kF +im +im +im +im +kF +kF +ii +mM +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(207,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +Oe +Oe +gx +PH gx +ys +Oe +Uu +ik +Rp +ip +jK +im +im +ir +ir +ir +ir +im +ir +ir +ir +ir +ii +PH +ii +im +kF +kF +im +im +im +im +im +im +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(208,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe gx +Oe +Oe gx gx +Oe +Oe +Oe +ii ii ii +im +im +im +jK +im +im +jK +im +im +im +im +im ii +Fb ii +mO +lM +kF +im +im +im +im +im +im +im +im +ii +PH +PH +PH +PH +PH +PH +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(209,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe +Id +Oe +Oe +Oe +Oe +Oe +Oe +Oe +ik +Rp +ip +im +im +im +im +im +ir +ir +im +im +im +im +im +Fb +kO +Fb +im +kF +kF +im +im +kJ +im +im +ii +ii +ii +Fb +PH +PH +PH +PH +PH +PH +PH +Jt +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(210,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx gx gx +Ao gx +Oe +Oe +GN +Oe +ii +ik +ii +mO +jK +im +im +im +ir +im +im +im +kJ +im +im +ii +Fb +ii +im +im +kF +im +im +im +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(211,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx gx +pE +Oe +Oe +Oe +Oe +GN +ii +im +im +im +im +jK +ir +ir +im +im +im +im +im +ir +im +ii +ii +ii +ii +im +im +im +im +kF +ii +Fb +PH +PH +PH +PH +PH +Jt +PH +Jt +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(212,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx +Oe +Oe +Oe +Oe +FO +ii +ii +ii +kF +kF +kF +im +im +im +im +im +im +im +im +im +nL +kH +im +nL +im +im +im +im +kF +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(213,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH gx gx +Oe +pE +Oe gx -gx -gx -gx -gx -gx -gx -gx -gx -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +PH +Fb +ii +kG +ii +ii +ii +ii +kI +im +im +im +ir +im +ii +im +kF +ii +mN +im +EL +im +kF +mR +ii +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(214,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +Oe +gx +PH +PH +PH +Fb +ii +Fb +PH +PH +Fb +ii +ir +ir +ir +ii +Fb +ii +im +im +ii +ii +ii +ii +ii +ii +ii +Fb +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(215,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +gx +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +ir +im +ir +Fb +kN +Fb +kF +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(216,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +im +ii +Fb +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(217,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +kK +kL +kM +ii +PH +ii +im +kF +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(218,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Fb +ii +ii +ii +Fb +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(219,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +kF +mI +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(220,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(221,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lc +lc +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(222,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +iq +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(223,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +mI +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(224,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +iq +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(225,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(226,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(227,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(228,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +Jt +PH +PH +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(229,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +Jt +PH +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(230,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(231,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +iq +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(232,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(233,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +iq +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(234,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +jN +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(235,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +lS +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(236,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +lS +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(237,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +lS +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(238,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lT +mK +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(239,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(240,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +mI +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(241,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(242,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(243,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(244,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +lS +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(245,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +nn +im +im +nn +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(246,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +EK +no +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(247,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +nn +jN +im +nn +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(248,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +EK +qx +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(249,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +np +np +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(250,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +nq +nq +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(251,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +nr +nr +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(252,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(253,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +im +im +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(254,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +ii +ns +nt +ii +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +"} +(255,1,1) = {" +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Fb +ii +ii +Fb +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +PH +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt +Jt "} diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 3eb04da8ee67..3b71facaec68 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -187,7 +187,7 @@ /area/awaymission/beach) "cv" = ( /obj/structure/table/wood, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 8; pixel_x = 6 }, @@ -2300,7 +2300,7 @@ /area/awaymission/beach) "Dv" = ( /obj/item/storage/bag/tray, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 4; pixel_x = -1 }, @@ -2569,11 +2569,11 @@ /area/awaymission/beach) "FH" = ( /obj/structure/table/wood, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 13; pixel_x = 6 }, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 8; pixel_x = -4 }, diff --git a/_maps/RandomZLevels/heretic.dmm b/_maps/RandomZLevels/heretic.dmm index 5c9389cf0fbc..619ff9c739f5 100644 --- a/_maps/RandomZLevels/heretic.dmm +++ b/_maps/RandomZLevels/heretic.dmm @@ -55,16 +55,6 @@ }, /turf/open/floor/iron, /area/awaymission/caves/heretic_laboratory_clean) -"ao" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/deployable_turret/hmg, -/turf/open/floor/iron/large, -/area/awaymission/beach/heretic) "aq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1165,6 +1155,7 @@ /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 }, +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/reinforced, /area/awaymission/caves/heretic_laboratory_clean) "gm" = ( @@ -2112,6 +2103,7 @@ /area/awaymission/beach/heretic) "kX" = ( /obj/structure/sign/poster/abductor/ayy_recruitment/directional/south, +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/floor/plating, /area/awaymission/caves/heretic_laboratory) "ld" = ( @@ -2164,7 +2156,7 @@ /area/awaymission/caves/heretic_laboratory) "lu" = ( /turf/open/misc/asteroid, -/area/awaymission/caves/heretic_laboratory_clean) +/area/awaymission/inaccessible) "lv" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -3811,6 +3803,10 @@ /obj/effect/blessing/invisible, /turf/open/floor/iron/small, /area/awaymission/caves/heretic_laboratory) +"tT" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/open/floor/plating, +/area/awaymission/caves/heretic_laboratory) "tU" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -4759,6 +4755,9 @@ /obj/machinery/door/puzzle/keycard/weapon_anomalies, /turf/open/floor/iron/small, /area/awaymission/caves/heretic_laboratory) +"yi" = ( +/turf/closed/indestructible/rock, +/area/awaymission/inaccessible) "yj" = ( /obj/structure/closet/crate/bin, /obj/effect/spawner/random/heretic_gateway_low, @@ -5253,6 +5252,10 @@ /obj/structure/window/reinforced/plasma/spawner/directional/south, /turf/open/floor/engine, /area/awaymission/caves/heretic_laboratory_clean) +"AV" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced, +/area/awaymission/caves/heretic_laboratory_clean) "AZ" = ( /obj/structure/table/wood, /obj/item/flashlight/lantern/on, @@ -5723,12 +5726,18 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating/airless, /area/awaymission/caves/heretic_laboratory_clean) +"DP" = ( +/turf/closed/mineral/ash_rock, +/area/awaymission/inaccessible) "DR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible{ dir = 6 }, /turf/closed/indestructible/reinforced, /area/awaymission/caves/heretic_laboratory) +"DS" = ( +/turf/closed/indestructible/reinforced/titanium, +/area/awaymission/inaccessible) "DT" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron/white, @@ -6067,7 +6076,7 @@ dir = 8 }, /turf/open/misc/asteroid, -/area/awaymission/caves/heretic_laboratory_clean) +/area/awaymission/inaccessible) "Fz" = ( /obj/machinery/door/airlock{ name = "Kitchen" @@ -7208,7 +7217,7 @@ "La" = ( /obj/effect/baseturf_helper/beach/sand, /turf/closed/indestructible/rock, -/area/awaymission/caves/heretic_laboratory_clean) +/area/awaymission/inaccessible) "Lb" = ( /obj/structure/table, /obj/machinery/light/floor, @@ -8069,6 +8078,10 @@ /obj/structure/flora/bush/jungle/c/style_random, /turf/open/misc/grass/jungle, /area/awaymission/caves/heretic_laboratory) +"Qa" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced, +/area/awaymission/caves/heretic_laboratory) "Qb" = ( /obj/structure/safe/floor, /obj/item/keycard/highsec_access, @@ -8806,6 +8819,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible{ dir = 4 }, +/obj/effect/mapping_helpers/no_tele_turf, /turf/closed/indestructible/reinforced, /area/awaymission/caves/heretic_laboratory) "TY" = ( @@ -8830,6 +8844,11 @@ "Ug" = ( /turf/open/misc/beach/coast/corner, /area/awaymission/beach/heretic) +"Uh" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced, +/area/awaymission/caves/heretic_laboratory) "Ui" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -9943,6 +9962,332 @@ /area/awaymission/caves/heretic_laboratory) (1,1,1) = {" +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +"} +(2,1,1) = {" +yi +yi +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj Lh Lh Lh @@ -9998,466 +10343,140 @@ Lh Lh Lh Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -"} -(2,1,1) = {" -Lh -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Dj -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi La -Lh +yi "} (3,1,1) = {" -Lh +yi Dj nI nI @@ -10632,89 +10651,89 @@ xl xl xl xl -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -xl -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +AV KB KB KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (4,1,1) = {" -Lh +yi Dj nI nI @@ -10890,88 +10909,88 @@ OC yV tN xl -xl -xl -xl -xl -xl -xl -xl -xl +AV +AV +AV +AV +AV +AV +AV +AV xl Eg NO gY -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB -KB -KB -KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa +Qa +Qa +Qa +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (5,1,1) = {" -Lh +yi Dj nI nI @@ -11098,52 +11117,52 @@ Sv xl fC xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +xl +xl +xl +xl +xl +xl +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV xl yb yV @@ -11159,76 +11178,76 @@ xl JT kF gU -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa mE mE Mz -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (6,1,1) = {" -Lh +yi Dj nI nI @@ -11354,55 +11373,55 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -xl -xl +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +AV +AV KB KB KB @@ -11417,75 +11436,75 @@ nh od Yd KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa KB xQ xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (7,1,1) = {" -Lh +yi Dj nI nI @@ -11611,56 +11630,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa rA yX yX @@ -11669,80 +11688,80 @@ yX yX gy IK -gy -yX -yX -yX -yX -yX -yX -yX -yX -yX -yX -yX -yX -Ct -QG -QG -QG -Xd -cX -UX -du -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +gy +yX +yX +yX +yX +yX +yX +yX +yX +yX +yX +yX +yX +Ct +QG +QG +QG +Xd +cX +UX +du +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (8,1,1) = {" -Lh +yi Dj nI nI @@ -11868,56 +11887,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa nb zh YG nb -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB ay @@ -11947,59 +11966,59 @@ KB Yr yo pf -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (9,1,1) = {" -Lh +yi Dj nI nI @@ -12125,56 +12144,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB ay @@ -12204,59 +12223,59 @@ KB KB iJ KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (10,1,1) = {" -Lh +yi Dj nI nI @@ -12382,56 +12401,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB KB @@ -12469,51 +12488,51 @@ KB ov up sk -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (11,1,1) = {" -Lh +yi Dj nI nI @@ -12639,56 +12658,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa nb zh YG nb -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -12726,51 +12745,51 @@ KB XU mY Vj -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (12,1,1) = {" -Lh +yi Dj nI nI @@ -12896,56 +12915,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -12953,81 +12972,81 @@ Sv Sv Sv wn -wh -wn -KB -fW -qP -cL -aw -mq -xQ -xQ -xQ -KB -Zi -ay -Xk -lO -lm -lm -KB -Og -CI -mg -KB -Og -CI -mg -KB -Og -CI -mg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +wh +wn +KB +fW +qP +cL +aw +mq +xQ +xQ +xQ +KB +Zi +ay +Xk +lO +lm +lm +KB +Og +CI +mg +KB +Og +CI +mg +KB +Og +CI +mg +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (13,1,1) = {" -Lh +yi Dj nI nI @@ -13153,56 +13172,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg WV GW hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -13240,51 +13259,51 @@ KB dU Ck Vj -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (14,1,1) = {" -Lh +yi Dj nI nI @@ -13410,56 +13429,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa nb iL Dk nb -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -13497,51 +13516,51 @@ KB XI uh Dt -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (15,1,1) = {" -Lh +yi Dj nI nI @@ -13667,56 +13686,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg Fw MP hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -13754,51 +13773,51 @@ KB KB MD KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (16,1,1) = {" -Lh +yi Dj nI nI @@ -13924,56 +13943,56 @@ Sv Sv xl fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa hg Fw ER hg -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa sx KB Sv @@ -14011,51 +14030,51 @@ qB qB HW yJ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (17,1,1) = {" -Lh +yi Dj nI nI @@ -14179,140 +14198,140 @@ Sv Sv Sv Sv -xl -fC -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB -KB -KB -KB -KB -nb -Oh -yu -nb -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB -sx -KB -Sv -Sv -Sv -Sv -wn -wh -wn -KB -xQ -wz -cL -aw -mq -xQ -xQ -bR -Td -JA -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -Xu -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv +xl +fC +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa +Qa +Qa +Qa +KB +nb +Oh +yu +nb +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa +sx +KB Sv Sv Sv Sv -Lh -Lh +wn +wh +wn +KB +xQ +wz +cL +aw +mq +xQ +xQ +bR +Td +JA +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Xu +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (18,1,1) = {" -Lh +yi Dj nI nI @@ -14438,34 +14457,34 @@ Sv Sv xl cz -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa lB iz RW @@ -14474,19 +14493,19 @@ hg aL sc hg -KB -Sv -Sv -Sv -KB -KB -KB -KB -KB -KB -KB -KB -KB +Qa +DP +DP +DP +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa KB JU KB @@ -14525,51 +14544,51 @@ Xu Xu Km vS -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (19,1,1) = {" -Lh +yi Dj nI nI @@ -14696,33 +14715,33 @@ xl xl TQ xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -Sv -Sv -Sv -KB -KB -KB -KB -KB -KB -KB -Sv -KB +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +DP +DP +DP +Qa +Qa +Qa +Qa +Qa +Qa +Qa +DP +Qa Cn mo aV @@ -14731,11 +14750,11 @@ hg WV GW hg -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa gN ye CB @@ -14782,51 +14801,51 @@ KB KB KB KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (20,1,1) = {" -Lh +yi Dj nI nI @@ -14967,19 +14986,19 @@ vu vu vu vu -xl -Sv -Sv -Sv -KB +AV +DP +DP +DP +Qa jK cL VW cL jK -KB -Sv -KB +Qa +DP +Qa cw As YL @@ -14988,11 +15007,11 @@ nb zh YG nb -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa eT um df @@ -15039,51 +15058,51 @@ Xu if vN Md -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (21,1,1) = {" -Lh +yi Dj nI nI @@ -15224,19 +15243,19 @@ vu vu vu vu -xl -Sv -Sv -Sv -KB +AV +DP +DP +DP +Qa IV XL IV XL IV -KB -Sv -KB +Qa +DP +Qa fK mo mo @@ -15245,11 +15264,11 @@ hg WV GW hg -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa QF um lE @@ -15296,51 +15315,51 @@ Vb Vb qG Qj -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (22,1,1) = {" -Lh +yi Dj nI nI @@ -15481,19 +15500,19 @@ vu vu vu vu -xl -Sv -Sv -Sv -KB +AV +DP +DP +DP +Qa If If If If If -KB -Sv -KB +Qa +DP +Qa Fb mo mo @@ -15502,11 +15521,11 @@ hg WV GW hg -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa QF um AO @@ -15553,51 +15572,51 @@ Xu Xu Xu XB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (23,1,1) = {" -Lh +yi Dj nI nI @@ -15738,19 +15757,19 @@ wi vu vu vu -xl -Sv -Sv -Sv -KB +AV +DP +DP +DP +Qa Ol If If If Ol -KB -Sv -KB +Qa +DP +Qa EX mo mo @@ -15759,11 +15778,11 @@ nb zh YG nb -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa QF um mV @@ -15810,51 +15829,51 @@ Xu Xu Xu EO -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (24,1,1) = {" -Lh +yi Dj nI nI @@ -15995,18 +16014,18 @@ Az vu vu vu -xl -Sv -Sv -Sv -KB +AV +DP +DP +DP +Qa KB KB QZ KB KB KB -KB +Qa KB KB QZ @@ -16017,9 +16036,9 @@ Um II KB KB -KB -KB -KB +Qa +Qa +Qa KB yW wt @@ -16067,51 +16086,51 @@ Xu Xu Xu xv -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (25,1,1) = {" -Lh +yi Dj nI nI @@ -16253,9 +16272,9 @@ vu vu vu xl -KB -KB -KB +Qa +Qa +Qa KB gt KB @@ -16324,51 +16343,51 @@ Hr Hr Wi Qj -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (26,1,1) = {" -Lh +yi Dj nI nI @@ -16581,51 +16600,51 @@ Xu QN vN nN -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (27,1,1) = {" -Lh +yi Dj nI nI @@ -16831,58 +16850,58 @@ DT Xu Xu KB -KB -KB -KB -KB -KB -KB -KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (28,1,1) = {" -Lh +yi Dj nI nI @@ -17087,59 +17106,59 @@ QA Xu Xu Xu -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (29,1,1) = {" -Lh +yi Dj nI nI @@ -17344,59 +17363,59 @@ Xu Xu Xu Xu -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (30,1,1) = {" -Lh +yi Dj nI nI @@ -17538,9 +17557,9 @@ vu vu vu xl -KB -KB -KB +Qa +Qa +Qa DR Cs wP @@ -17601,59 +17620,59 @@ Km Xu Xu vS -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (31,1,1) = {" -Lh +yi Dj nI nI @@ -17794,10 +17813,10 @@ Az vu vu vu -xl -Sv -Sv -Sv +AV +DP +DP +DP TV ip Zs @@ -17837,80 +17856,80 @@ KB KB wn wh -wn -KB -KB -zF -cL -JG -KB -xQ -xQ -Pj -KB -KB -KB -KB -KB -KB -KB -KB +wn KB KB +zF +cL +JG KB +xQ +xQ +Pj KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (32,1,1) = {" -Lh +yi Dj nI nI @@ -18051,10 +18070,10 @@ Az vu vu vu -xl -Sv -Sv -Sv +AV +DP +DP +DP TV KB Rt @@ -18104,70 +18123,70 @@ mq xQ xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (33,1,1) = {" -Lh +yi Dj nI nI @@ -18308,10 +18327,10 @@ wi vu vu vu -xl -Sv -Sv -Sv +AV +DP +DP +DP TV KB ql @@ -18361,70 +18380,70 @@ mq xQ xQ UX -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (34,1,1) = {" -Lh +yi Dj nI nI @@ -18565,10 +18584,10 @@ PD vu vu vu -xl -Sv -Sv -Sv +AV +DP +DP +DP TV KB ay @@ -18618,327 +18637,70 @@ gq xQ KB KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (35,1,1) = {" -Lh -Dj -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -nI -EJ -bB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -xl -vu -vu -vu -PD -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -fl -Gu -KT -KT -KT -KT -rU -wN -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -Ry -PD -vu -zk -vu -xl -Sv -Sv -Sv -TV -KB -KB -KB -KB -KB -KB -KB -KB -KB -ay -SB -tL -mo -ik -mo -mo -mo -mo -mo -mo -mo -Xh -bq -bq -Af -yO -bq -hX -xS -kH -bq -XS -kk -bq -bq -KB -xl -IK -xl -KB -KB -vb -BU -mN -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -gj -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh -"} -(36,1,1) = {" -Lh +yi Dj nI nI @@ -19058,12 +18820,12 @@ Ry Ry Ry fl -hK +Gu KT -zO KT KT -im +KT +rU wN Ry Ry @@ -19077,26 +18839,26 @@ Ry Ry PD vu +zk vu -vu -xl -Sv -Sv -Sv -Fy -lu -lu -Sv -Sv -Sv -Sv -Sv -Sv -KB -Fk +AV +DP +DP +DP +TV +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa KB +ay +SB tL -ik +mo ik mo mo @@ -19111,9 +18873,9 @@ bq Af yO bq -Lc +hX xS -zS +kH bq XS kk @@ -19123,79 +18885,79 @@ KB xl IK xl -Sv KB -wz -cL -aw +KB +vb +BU +mN xl -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv -Yv xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +xl +xl +xl +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +gj +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(37,1,1) = {" -Lh +(36,1,1) = {" +yi Dj nI nI @@ -19302,7 +19064,7 @@ Sv xl vu vu -zk +vu PD Ry Ry @@ -19315,12 +19077,12 @@ Ry Ry Ry fl -Gs -zT -Gs +hK KT +zO KT KT +im wN Ry Ry @@ -19333,41 +19095,41 @@ Ry Ry Ry PD -zk vu vu -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB -KB -KB -KB -KB +vu +AV +DP +DP +DP +Fy +lu +lu +DP +DP +DP +DP +DP +DP +Qa +Fk KB tL -Et -KB -KB -KB -ix -Io -KB -KB -KB -KB +ik +ik +mo +mo +mo +mo +mo +mo +mo +Xh bq bq Af yO -CA +bq Lc xS zS @@ -19387,72 +19149,72 @@ cL aw xl Yv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv -Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +Yv +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(38,1,1) = {" -Lh +(37,1,1) = {" +yi Dj nI nI @@ -19520,7 +19282,7 @@ nI nI nI nI -EJ +nI EJ bB Sv @@ -19559,7 +19321,7 @@ Sv xl vu vu -vu +zk PD Ry Ry @@ -19572,10 +19334,10 @@ Ry Ry Ry fl +Gs +zT +Gs KT -qU -Qk -rt KT KT wN @@ -19590,49 +19352,49 @@ Ry Ry Ry PD +zk vu vu -vu -xl -Sv -xl -xl -xl -xl -xl -xl -xl -xl +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +Qa +Qa +Qa KB -gB -Za -va -va -ty -bT -KJ KB -lm KB -DT -Xu +tL +Et KB -Gi -iP KB -mI +KB +ix +Io +KB +KB +KB +KB +bq bq Af -Gv -Wx +yO +CA Lc xS zS bq -Gv +XS kk bq -Br +bq KB xl IK @@ -19696,20 +19458,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(39,1,1) = {" -Lh +(38,1,1) = {" +yi Dj nI nI @@ -19778,7 +19540,7 @@ nI nI nI EJ -bB +EJ bB Sv Sv @@ -19830,11 +19592,11 @@ Ry Ry fl KT -KG -ie -XY +qU +Qk +rt +KT KT -SI wN Ry Ry @@ -19850,55 +19612,55 @@ PD vu vu vu -xl -Sv -xl -vu -vu -dI -iB -MH -vu -vu +AV +DP +AV +AV +AV +AV +AV +AV +AV +AV KB -Qi -lD -Ic -uB -KB -tL +gB +Za +va +va +ty +bT KJ KB lm KB -Bm -vp +DT +Xu KB -qp -Hh -qv -bq +Gi +iP +KB +mI bq Af -yO -bq +Gv +Wx Lc xS zS bq -XS +Gv kk bq -bq +Br KB xl IK xl Sv KB -zF +wz cL -JG +aw xl Yv Jv @@ -19953,20 +19715,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(40,1,1) = {" -Lh +(39,1,1) = {" +yi Dj nI nI @@ -20036,7 +19798,7 @@ nI nI EJ bB -Sv +bB Sv Sv Sv @@ -20074,7 +19836,7 @@ xl vu vu vu -wi +PD Ry Ry Ry @@ -20084,17 +19846,15 @@ Ry Ry Ry Ry -kc -wi -nD -nD -nD -nD -nD -nD -wi -mC Ry +fl +KT +KG +ie +XY +KT +SI +wN Ry Ry Ry @@ -20103,37 +19863,39 @@ Ry Ry Ry Ry -wi +Ry +Ry +PD vu vu vu -xl -Sv -xl +AV +DP +AV vu vu -Gd -Rf -jU +dI +iB +MH vu vu KB -KB -KB -KB -KB +Qi +lD +Ic +uB KB tL KJ KB +lm KB +Bm +vp KB -KB -KB -KB -KB -KB -KB +qp +Hh +qv bq bq Af @@ -20153,9 +19915,9 @@ IK xl Sv KB -wz +zF cL -aw +JG xl Yv Jv @@ -20210,20 +19972,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(41,1,1) = {" -Lh +(40,1,1) = {" +yi Dj nI nI @@ -20331,26 +20093,26 @@ xl vu vu vu -Az -Ry -Ry -Ry -Ry -Ry -Ry +wi Ry Ry Ry -OJ -Wo Ry Ry Ry Ry Ry Ry -dS -UD +kc +wi +nD +nD +nD +nD +nD +nD +wi +mC Ry Ry Ry @@ -20360,45 +20122,45 @@ Ry Ry Ry Ry -Az +wi vu vu vu -xl -Sv -xl +AV +DP +AV vu vu -lW -LN -UC +Gd +Rf +jU vu vu KB -gB -Za -va -va -ty -bT +KB +KB +KB +KB +KB +tL KJ KB -uB -ju -xr -Ga KB -Gi -iP KB -mI +KB +KB +KB +KB +KB +KB +bq bq Af yO bq -bH +Lc xS -Hs +zS bq XS kk @@ -20467,20 +20229,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(42,1,1) = {" -Lh +(41,1,1) = {" +yi Dj nI nI @@ -20598,16 +20360,16 @@ Ry Ry Ry Ry +OJ +Wo Ry Ry Ry Ry Ry Ry -Ry -Ry -Ry -Ry +dS +UD Ry Ry Ry @@ -20621,46 +20383,46 @@ Az vu vu vu -xl -Sv -xl -vu -vu -vu +AV +DP +AV vu vu +lW +LN +UC vu vu KB -Qi -lD -Ic -uB -KB -tU -KJ -ty +gB +Za va va -Za -gB +ty +bT +KJ KB -qp -Xu -qv -bq +uB +ju +xr +Ga +KB +Gi +iP +KB +mI bq -gv -Gv +Af +yO bq -oN +bH xS -El +Hs +bq +XS +kk bq -Gv -PX bq -Br KB xl IK @@ -20724,20 +20486,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(43,1,1) = {" -Lh +(42,1,1) = {" +yi Dj nI nI @@ -20878,55 +20640,55 @@ Az vu vu vu -xl -Sv -xl -Or -Ka -Ka -Ka -Ka -Ka -Or -KB -KB -KB -KB +AV +DP +AV +vu +vu +vu +vu +vu +vu +vu KB +Qi +lD +Ic +uB KB -tL +tU KJ +ty +va +va +Za +gB KB -KB -KB -KB -KB -KB -KB -KB -KB -bq -bq -bq -bq -bq -wC -bq -bq +qp +Xu +qv bq bq +gv +Gv bq +oN +xS +El bq +Gv +PX bq +Br KB xl IK xl Sv KB -zF +wz cL -JG +aw xl Yv Jv @@ -20981,20 +20743,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(44,1,1) = {" -Lh +(43,1,1) = {" +yi Dj nI nI @@ -21135,43 +20897,43 @@ Az vu vu vu -xl -Sv -xl -hs -hs -eq -TN -eq -hs -hs +AV +DP +AV +Or +Ka +Ka +Ka +Ka +Ka +Or +KB +KB +KB +KB KB -gB -xr -ju -uB KB tL KJ -ty -va -va -Za -gB KB -Gi -Xu -qv +KB +KB +KB +KB +KB +KB +KB +KB +bq +bq +bq bq bq -xG -xG -xG wC -CP bq bq -Gq +bq +bq bq bq bq @@ -21181,9 +20943,9 @@ IK xl Sv KB -wz +zF cL -aw +JG xl Yv Jv @@ -21238,20 +21000,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(45,1,1) = {" -Lh +(44,1,1) = {" +yi Dj nI nI @@ -21392,46 +21154,46 @@ Az vu vu vu -xl -Sv -xl -hs -Pl +AV +DP +AV hs hs +eq +TN +eq hs -Pl hs KB -Qi -Za -va -va -ty -bT -KJ -KB +gB +xr +ju uB -Ic -lD -Qi -KB -qp -iP -KB -KB -KB -Qn -KB -KB -Nq -KB -WA -KB -KB -pO KB +tL +KJ +ty +va +va +Za +gB KB +Gi +Xu +qv +bq +bq +xG +xG +xG +wC +CP +bq +bq +Gq +bq +bq +bq KB xl IK @@ -21495,20 +21257,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(46,1,1) = {" -Lh +(45,1,1) = {" +yi Dj nI nI @@ -21649,46 +21411,46 @@ Az vu vu vu -xl -Sv -xl -xl -xl -xl -Si -xl -xl -xl -KB -KB -KB +AV +DP +AV +hs +Pl +hs +hs +hs +Pl +hs KB +Qi +Za +va +va +ty +bT +KJ KB +uB +Ic +lD +Qi KB -mo -KJ +qp +iP KB KB KB +Qn KB KB +Nq KB +WA KB KB +pO KB -he -xi -OG KB -bq -wC -bq -bq -bq -yL -ay -ay -gx KB xl IK @@ -21752,20 +21514,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} -(47,1,1) = {" -Lh +(46,1,1) = {" +yi Dj nI nI @@ -21906,12 +21668,269 @@ Az vu vu vu +AV +DP +AV +AV +AV +xl +Si +xl +xl +xl +KB +KB +KB +KB +KB +KB +mo +KJ +KB +KB +KB +KB +KB +KB +KB +KB +KB +he +xi +OG +KB +bq +wC +bq +bq +bq +yL +ay +ay +gx +KB +xl +IK xl Sv +KB +wz +cL +aw +xl +Yv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Jv +Yv +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi +"} +(47,1,1) = {" +yi +Dj +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +nI +EJ +bB +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv +Sv Sv Sv Sv xl +vu +vu +vu +Az +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Ry +Az +vu +vu +vu +AV +DP +DP +DP +DP +AV mo Tn Yh @@ -22009,20 +22028,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (48,1,1) = {" -Lh +yi Dj nI nI @@ -22163,12 +22182,12 @@ Az vu vu vu -xl -Sv -Sv -Sv -Sv -xl +AV +DP +DP +DP +DP +AV mo TB sK @@ -22266,20 +22285,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (49,1,1) = {" -Lh +yi Dj nI nI @@ -22420,11 +22439,11 @@ Az vu vu vu -xl -Sv -xl -xl -xl +AV +DP +AV +AV +AV xl bn xl @@ -22523,20 +22542,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (50,1,1) = {" -Lh +yi Dj nI nI @@ -22677,9 +22696,9 @@ wi vu vu vu -xl -Sv -xl +AV +DP +AV Kb rf Kb @@ -22780,20 +22799,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (51,1,1) = {" -Lh +yi Dj nI nI @@ -22934,9 +22953,9 @@ vu vu vu vu -xl -Sv -xl +AV +DP +AV Kb Kb dr @@ -23037,20 +23056,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (52,1,1) = {" -Lh +yi Dj nI nI @@ -23191,9 +23210,9 @@ vu vu vu vu -xl -Sv -xl +AV +DP +AV WP Ka Ka @@ -23294,20 +23313,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (53,1,1) = {" -Lh +yi Dj nI nI @@ -23448,9 +23467,9 @@ vu vu vu vu -xl -Sv -xl +AV +DP +AV vk vk vk @@ -23551,20 +23570,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (54,1,1) = {" -Lh +yi Dj nI nI @@ -23695,19 +23714,19 @@ vu vu vu xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -Sv -xl +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +DP +AV vk vk vk @@ -23808,20 +23827,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (55,1,1) = {" -Lh +yi Dj nI nI @@ -23951,20 +23970,20 @@ vu vu vu vu -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -xl -Sv -xl +AV +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +AV +DP +AV vk vk vk @@ -24065,20 +24084,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (56,1,1) = {" -Lh +yi Dj nI nI @@ -24208,19 +24227,19 @@ vu vu vu vu -xl -Sv -Sv -KB -KB -KB -KB -KB -KB -KB -KB -KB +AV +DP +DP +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa KB +Qa KB KB KB @@ -24322,20 +24341,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (57,1,1) = {" -Lh +yi Dj nI nI @@ -24465,10 +24484,10 @@ Hl Hl vu vu -xl -Sv -Sv -KB +AV +DP +DP +Qa Cm tS tS @@ -24579,20 +24598,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (58,1,1) = {" -Lh +yi Dj nI nI @@ -24723,9 +24742,9 @@ KB KB HR KB -KB -Sv -KB +Qa +DP +Qa tS lV lV @@ -24836,20 +24855,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (59,1,1) = {" -Lh +yi Dj nI nI @@ -24980,9 +24999,9 @@ KB RU bq bq -KB -Sv -KB +Qa +DP +Qa tS lV tS @@ -25093,20 +25112,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (60,1,1) = {" -Lh +yi Dj nI nI @@ -25237,9 +25256,9 @@ KB bq bq bq -KB -Sv -KB +Qa +DP +Qa tS lV tS @@ -25350,20 +25369,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (61,1,1) = {" -Lh +yi Dj nI nI @@ -25494,9 +25513,9 @@ HR bq bq Br -KB -Sv -KB +Qa +DP +Qa tS lV tS @@ -25530,11 +25549,11 @@ KB KB OG KB -KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa +Qa KB KB eg @@ -25607,20 +25626,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DP +DP +DP +DP +DP +DP +yi +yi "} (62,1,1) = {" -Lh +yi Dj nI nI @@ -25751,9 +25770,9 @@ KB bq bq bq -KB -Sv -KB +Qa +DP +Qa tS lV tS @@ -25786,13 +25805,13 @@ Sv Sv KB OG -KB -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +Qa vB ZX vB @@ -25864,20 +25883,20 @@ Jv Jv Jv Yv -xl -Sv -Sv -MV -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DP +DS +DP +DP +DP +DP +DP +yi +yi "} (63,1,1) = {" -Lh +yi Dj nI nI @@ -26009,7 +26028,7 @@ KB KB KB KB -KB +Qa KB KB Kg @@ -26043,13 +26062,13 @@ KB KB KB OG -KB -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +Qa Xx ZX Zv @@ -26121,20 +26140,20 @@ Jv Jv Jv Yv -xl -Sv -MV -MV -Sv -Sv -Sv -Sv -Sv -Lh -Lh +AV +DP +DS +DS +DP +DP +DP +DP +DP +yi +yi "} (64,1,1) = {" -Lh +yi Dj nI nI @@ -26300,20 +26319,20 @@ qL qL fI OG -KB -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +Qa vO ZX Ra KB -xl -xl -xl +AV +AV +AV xl WF dO @@ -26379,19 +26398,19 @@ Jv Jv Yv xl -MV -MV -MV -MV -MV -MV -MV -MV -Lh -Lh +DS +DS +DS +DS +DS +DS +DS +DS +yi +yi "} (65,1,1) = {" -Lh +yi Dj nI nI @@ -26556,22 +26575,22 @@ lV lV tS KB -KB -KB -Sv -Sv -Sv -Sv -Sv -KB +Qa +Uh +DP +DP +DP +DP +DP +Qa Xx ZX Zv -KB -lm -lm -lm -xl +Qa +DP +DP +DP +AV hs hs hs @@ -26645,10 +26664,10 @@ Sv Sv Sv Lh -Lh +yi "} (66,1,1) = {" -Lh +yi Dj nI nI @@ -26812,23 +26831,23 @@ tS tS lV tS -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +DP +Qa vB ZX vB -KB -lm -lm -lm -xl +Qa +DP +DP +DP +AV hs ij Nu @@ -26902,10 +26921,10 @@ Sv Sv Sv Lh -Lh +yi "} (67,1,1) = {" -Lh +yi Dj nI nI @@ -27070,21 +27089,21 @@ bJ lV tS KB -KB -KB -KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa +Qa +Qa +Qa KB KB pP KB KB -KB -KB -KB +Qa +Qa +Qa KB KB KB @@ -27159,10 +27178,10 @@ Sv Sv Sv Lh -Lh +yi "} (68,1,1) = {" -Lh +yi Dj nI nI @@ -27416,10 +27435,10 @@ Sv Sv Sv Lh -Lh +yi "} (69,1,1) = {" -Lh +yi Dj nI nI @@ -27673,10 +27692,10 @@ Sv Sv Sv Lh -Lh +yi "} (70,1,1) = {" -Lh +yi Dj nI nI @@ -27930,10 +27949,10 @@ Sv Sv Sv Lh -Lh +yi "} (71,1,1) = {" -Lh +yi Dj nI nI @@ -28187,10 +28206,10 @@ Sv Sv Sv Lh -Lh +yi "} (72,1,1) = {" -Lh +yi Dj nI nI @@ -28444,10 +28463,10 @@ Sv Sv Sv Lh -Lh +yi "} (73,1,1) = {" -Lh +yi Dj nI nI @@ -28701,10 +28720,10 @@ Sv Sv Sv Lh -Lh +yi "} (74,1,1) = {" -Lh +yi Dj nI nI @@ -28958,10 +28977,10 @@ Sv Sv Sv Lh -Lh +yi "} (75,1,1) = {" -Lh +yi Dj nI nI @@ -29215,10 +29234,10 @@ Sv Sv Sv Lh -Lh +yi "} (76,1,1) = {" -Lh +yi Dj nI nI @@ -29472,10 +29491,10 @@ Sv Sv Sv Lh -Lh +yi "} (77,1,1) = {" -Lh +yi Dj nI nI @@ -29729,10 +29748,10 @@ Sv Sv Sv Lh -Lh +yi "} (78,1,1) = {" -Lh +yi Dj nI nI @@ -29986,10 +30005,10 @@ Sv Sv Sv Lh -Lh +yi "} (79,1,1) = {" -Lh +yi Dj nI nI @@ -30243,10 +30262,10 @@ Sv Sv Sv Lh -Lh +yi "} (80,1,1) = {" -Lh +yi Dj nI nI @@ -30500,10 +30519,10 @@ Sv Sv Sv Lh -Lh +yi "} (81,1,1) = {" -Lh +yi Dj nI nI @@ -30757,10 +30776,10 @@ Sv Sv Sv Lh -Lh +yi "} (82,1,1) = {" -Lh +yi Dj nI nI @@ -30908,15 +30927,15 @@ KB KB KB KB +Qa KB KB KB +Qa KB KB KB -KB -KB -KB +Qa KB KB KB @@ -31014,10 +31033,10 @@ Sv Sv Sv Lh -Lh +yi "} (83,1,1) = {" -Lh +yi Dj nI nI @@ -31271,10 +31290,10 @@ Sv Sv Sv Lh -Lh +yi "} (84,1,1) = {" -Lh +yi Dj nI nI @@ -31528,10 +31547,10 @@ Sv Sv Sv Lh -Lh +yi "} (85,1,1) = {" -Lh +yi Dj nI nI @@ -31785,10 +31804,10 @@ Sv Sv Sv Lh -Lh +yi "} (86,1,1) = {" -Lh +yi Dj nI nI @@ -32042,10 +32061,10 @@ Sv Sv Sv Lh -Lh +yi "} (87,1,1) = {" -Lh +yi Dj nI nI @@ -32299,10 +32318,10 @@ Sv Sv Sv Lh -Lh +yi "} (88,1,1) = {" -Lh +yi Dj nI nI @@ -32556,10 +32575,10 @@ Sv Sv Sv Lh -Lh +yi "} (89,1,1) = {" -Lh +yi Dj nI nI @@ -32813,10 +32832,10 @@ Sv Sv Sv Lh -Lh +yi "} (90,1,1) = {" -Lh +yi Dj nI nI @@ -33070,10 +33089,10 @@ Sv Sv Sv Lh -Lh +yi "} (91,1,1) = {" -Lh +yi Dj nI nI @@ -33327,10 +33346,10 @@ bB bB bB bB -Dj +yi "} (92,1,1) = {" -Lh +yi Dj nI nI @@ -33584,10 +33603,10 @@ vK CS Iz Dj -Dj +yi "} (93,1,1) = {" -Lh +yi Dj nI nI @@ -33778,31 +33797,31 @@ wz cL aw xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl -xl +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV xl xl xl @@ -33841,10 +33860,10 @@ CS jo zK Dj -Dj +yi "} (94,1,1) = {" -Lh +yi Dj nI nI @@ -33992,15 +34011,15 @@ KB KB KB KB +Qa KB KB KB +Qa KB KB KB -KB -KB -KB +Qa KB KB KB @@ -34034,33 +34053,33 @@ KB wz cL aw -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS Sv Sv Sv @@ -34098,10 +34117,10 @@ CS SM rG Dj -Dj +yi "} (95,1,1) = {" -Lh +yi Dj nI nI @@ -34292,32 +34311,32 @@ vb BU mN KB -KB -KB -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV -MV +Qa +Qa +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS +DS MV Sv Sv @@ -34355,10 +34374,10 @@ vK zr WR Dj -Dj +yi "} (96,1,1) = {" -Lh +yi Dj nI nI @@ -34551,30 +34570,30 @@ aw gd xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV -MV -MV +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS +DS +DS MV MV Sv @@ -34612,10 +34631,10 @@ lz CS uf Dj -Dj +yi "} (97,1,1) = {" -Lh +yi Dj nI nI @@ -34808,30 +34827,30 @@ aw gd xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS Sv Sv Sv @@ -34869,10 +34888,10 @@ vK FQ WR Dj -Dj +yi "} (98,1,1) = {" -Lh +yi Dj nI nI @@ -35065,15 +35084,30 @@ aw Es xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS Sv Sv Sv @@ -35082,22 +35116,6 @@ Sv Sv Sv Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Lh Lh Lh Lh @@ -35105,6 +35123,7 @@ Lh Lh Lh Lh +yi Lh Lh Lh @@ -35126,10 +35145,10 @@ SM pC Zd Dj -Dj +yi "} (99,1,1) = {" -Lh +yi Dj nI nI @@ -35322,30 +35341,30 @@ JG ev xQ xQ -KB -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -Sv -MV +Qa +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DP +DS Sv Sv Sv @@ -35363,8 +35382,8 @@ bB bB Lh Lh -Lh -Lh +yi +yi Lh Lh Dj @@ -35383,10 +35402,10 @@ vK uK zK Dj -Dj +yi "} (100,1,1) = {" -Lh +yi Dj nI nI @@ -35580,34 +35599,34 @@ gd xQ xQ KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -KB -Sv +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +Qa +DP +DP +DP +DP +DP +DS Sv Sv Sv -Sv -MV -Sv -Sv -Sv -Lh Lh +yi Lh bB bB @@ -35640,10 +35659,10 @@ CS vK rG Dj -Dj +yi "} (101,1,1) = {" -Lh +yi Dj nI nI @@ -35853,13 +35872,13 @@ HX KB Ag HX -KB -Sv -Sv -Lh -Lh -Lh -Lh +Qa +DP +DP +yi +yi +yi +yi Lh Lh Lh @@ -35897,10 +35916,10 @@ CS CS bB bB -Dj +yi "} (102,1,1) = {" -Lh +yi Dj nI nI @@ -36110,15 +36129,15 @@ tM KB pd tM -KB -Sv -Lh -Lh -Lh -Lh -Lh -Lh -Lh +Qa +DP +yi +yi +yi +yi +yi +yi +yi Lh bB bB @@ -36154,10 +36173,10 @@ CS CS bB Lh -Lh +yi "} (103,1,1) = {" -Lh +yi Dj nI nI @@ -36318,10 +36337,10 @@ IP IP IP KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa KB KB KB @@ -36368,9 +36387,9 @@ KB LL Hb KB -Lh -Lh -Lh +yi +yi +yi Lh Lh Lh @@ -36411,10 +36430,10 @@ CS CS bB Lh -Lh +yi "} (104,1,1) = {" -Lh +yi Dj nI nI @@ -36574,11 +36593,11 @@ KB IP me IP -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa RB FD xb @@ -36625,8 +36644,8 @@ KB KB uJ KB -Lh -Lh +yi +yi Lh bB bB @@ -36668,10 +36687,10 @@ CS CS bB Lh -Lh +yi "} (105,1,1) = {" -Lh +yi Dj nI nI @@ -36831,11 +36850,11 @@ KB IP IP IP -KB -Sv -Sv -Sv -KB +Qa +DP +DP +DP +Qa Jz Wj BN @@ -36882,8 +36901,8 @@ mo mo mo KB -Lh -Lh +yi +yi Lh bB te @@ -36925,10 +36944,10 @@ CS CS bB Lh -Lh +yi "} (106,1,1) = {" -Lh +yi Dj nI nI @@ -37086,13 +37105,13 @@ KB KB KB KB -KB -KB -KB -Sv -Sv -Sv -KB +Qa +Qa +Qa +DP +DP +DP +Qa za Ts PE @@ -37139,8 +37158,8 @@ Jt mo mo KB -Lh -Lh +yi +yi Lh bB te @@ -37182,10 +37201,10 @@ FP CS bB Lh -Lh +yi "} (107,1,1) = {" -Lh +yi Dj nI nI @@ -37342,14 +37361,14 @@ Gi KB AJ Gi -KB -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +Qa Jz Wj yI @@ -37389,14 +37408,14 @@ KB KB KB KB -KB -KB -KB -KB -KB -KB -KB -Lh +Qa +Qa +Qa +Qa +Qa +Qa +Qa +yi Lh bB bB @@ -37439,10 +37458,10 @@ CS CS bB Lh -Lh +yi "} (108,1,1) = {" -Lh +yi Dj nI nI @@ -37599,14 +37618,14 @@ Xu KB Ve Km -KB -Sv -Sv -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +DP +DP +Qa GY dD dD @@ -37645,12 +37664,12 @@ aA JY KR KR -KB -ay -ay -ay -ay -ay +Qa +tT +tT +tT +tT +tT kX KB Lh @@ -37696,10 +37715,10 @@ CS CS bB Lh -Lh +yi "} (109,1,1) = {" -Lh +yi Dj nI nI @@ -37857,12 +37876,12 @@ KB wa KB KB -KB -KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa +Qa +Qa KB KB KB @@ -37903,13 +37922,13 @@ mo mo mo KB -KB -KB -KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa +Qa +Qa +Qa Lh bB nT @@ -37953,10 +37972,10 @@ CS CS bB Lh -Lh +yi "} (110,1,1) = {" -Lh +yi Dj nI nI @@ -38166,7 +38185,7 @@ tZ ay ay KB -Lh +yi Lh bB nT @@ -38210,10 +38229,10 @@ CS CS bB Lh -Lh +yi "} (111,1,1) = {" -Lh +yi Dj nI nI @@ -38423,7 +38442,7 @@ ay ay ay KB -Lh +yi Lh bB HM @@ -38467,10 +38486,10 @@ CS CS bB Lh -Lh +yi "} (112,1,1) = {" -Lh +yi Dj nI nI @@ -38680,7 +38699,7 @@ KB ay IL KB -Lh +yi Lh bB Am @@ -38724,10 +38743,10 @@ CS CS bB Lh -Lh +yi "} (113,1,1) = {" -Lh +yi Dj nI nI @@ -38937,7 +38956,7 @@ KB ay ay KB -Lh +yi Lh bB nT @@ -38981,10 +39000,10 @@ CS CS bB Lh -Lh +yi "} (114,1,1) = {" -Lh +yi Dj nI nI @@ -39194,7 +39213,7 @@ KB ay ay KB -Lh +yi Lh bB LE @@ -39238,10 +39257,10 @@ CS CS bB Lh -Lh +yi "} (115,1,1) = {" -Lh +yi Dj nI nI @@ -39495,10 +39514,10 @@ CS CS bB Lh -Lh +yi "} (116,1,1) = {" -Lh +yi Dj nI nI @@ -39752,10 +39771,10 @@ CS CS bB Lh -Lh +yi "} (117,1,1) = {" -Lh +yi Dj nI nI @@ -40009,10 +40028,10 @@ CS CS bB Lh -Lh +yi "} (118,1,1) = {" -Lh +yi Dj nI nI @@ -40266,10 +40285,10 @@ CS CS bB Lh -Lh +yi "} (119,1,1) = {" -Lh +yi Dj nI nI @@ -40523,10 +40542,10 @@ CS CS bB Lh -Lh +yi "} (120,1,1) = {" -Lh +yi Dj nI nI @@ -40720,10 +40739,10 @@ gd xQ xQ KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa KB Hl Hl @@ -40780,10 +40799,10 @@ CS CS bB Lh -Lh +yi "} (121,1,1) = {" -Lh +yi Dj nI nI @@ -40976,12 +40995,12 @@ aw gd xQ xQ -KB -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +Qa cy xQ xQ @@ -40989,7 +41008,7 @@ xQ xQ Xo KB -Lh +yi Lh bB Ql @@ -41037,10 +41056,10 @@ CS CS bB Lh -Lh +yi "} (122,1,1) = {" -Lh +yi Dj nI nI @@ -41233,12 +41252,12 @@ aw Es xQ xQ -KB -Sv -Sv -Sv -Sv -KB +Qa +DP +DP +DP +DP +Qa YA xQ xQ @@ -41246,7 +41265,7 @@ xQ xQ Tk KB -Lh +yi Lh bB Ql @@ -41294,10 +41313,10 @@ CS CS bB Lh -Lh +yi "} (123,1,1) = {" -Lh +yi Dj nI nI @@ -41491,10 +41510,10 @@ KB KB KB KB -KB -KB -KB -KB +Qa +Qa +Qa +Qa KB sJ OK @@ -41503,7 +41522,7 @@ Lw RY Ww KB -Lh +yi Lh bB Ql @@ -41551,10 +41570,10 @@ CS CS bB Lh -Lh +yi "} (124,1,1) = {" -Lh +yi Dj nI nI @@ -41760,7 +41779,7 @@ KB KB KB KB -Lh +yi Lh bB Ql @@ -41808,10 +41827,10 @@ CS CS bB Lh -Lh +yi "} (125,1,1) = {" -Lh +yi Dj nI nI @@ -42065,10 +42084,10 @@ CS CS bB Lh -Lh +yi "} (126,1,1) = {" -Lh +yi Dj nI nI @@ -42322,10 +42341,10 @@ CS CS bB Lh -Lh +yi "} (127,1,1) = {" -Lh +yi Dj nI nI @@ -42579,10 +42598,10 @@ CS CS bB Lh -Lh +yi "} (128,1,1) = {" -Lh +yi Dj nI nI @@ -42836,10 +42855,10 @@ CS CS bB Lh -Lh +yi "} (129,1,1) = {" -Lh +yi Dj nI nI @@ -43093,10 +43112,10 @@ CS CS bB Lh -Lh +yi "} (130,1,1) = {" -Lh +yi Dj nI nI @@ -43350,10 +43369,10 @@ CS CS bB Lh -Lh +yi "} (131,1,1) = {" -Lh +yi Dj nI nI @@ -43607,10 +43626,10 @@ CS CS bB Lh -Lh +yi "} (132,1,1) = {" -Lh +yi Dj nI nI @@ -43864,10 +43883,10 @@ CS CS bB Lh -Lh +yi "} (133,1,1) = {" -Lh +yi Dj nI nI @@ -44121,10 +44140,10 @@ CS CS bB Lh -Lh +yi "} (134,1,1) = {" -Lh +yi Dj nI nI @@ -44378,10 +44397,10 @@ CS CS bB Lh -Lh +yi "} (135,1,1) = {" -Lh +yi Dj nI nI @@ -44635,10 +44654,10 @@ CS CS bB Lh -Lh +yi "} (136,1,1) = {" -Lh +yi Dj nI nI @@ -44892,10 +44911,10 @@ CS CS bB Lh -Lh +yi "} (137,1,1) = {" -Lh +yi Dj nI nI @@ -45149,10 +45168,10 @@ CS CS bB Lh -Lh +yi "} (138,1,1) = {" -Lh +yi Dj nI nI @@ -45406,10 +45425,10 @@ CS CS bB Lh -Lh +yi "} (139,1,1) = {" -Lh +yi Dj nI nI @@ -45663,10 +45682,10 @@ CS CS bB Lh -Lh +yi "} (140,1,1) = {" -Lh +yi Dj nI nI @@ -45920,10 +45939,10 @@ CS CS bB Lh -Lh +yi "} (141,1,1) = {" -Lh +yi Dj nI nI @@ -46177,10 +46196,10 @@ CS CS bB Lh -Lh +yi "} (142,1,1) = {" -Lh +yi Dj nI nI @@ -46434,10 +46453,10 @@ CS CS bB Lh -Lh +yi "} (143,1,1) = {" -Lh +yi Dj nI nI @@ -46673,7 +46692,7 @@ bB Lh Lh Lh -Lh +yi Lh bB CS @@ -46691,10 +46710,10 @@ CS CS bB Lh -Lh +yi "} (144,1,1) = {" -Lh +yi Dj nI nI @@ -46901,9 +46920,9 @@ Sv Sv Sv Lh -Lh -Lh -Lh +yi +yi +yi Lh bB te @@ -46928,9 +46947,9 @@ nT bB bB Lh -Lh -Lh -Lh +yi +yi +yi Lh bB CS @@ -46948,10 +46967,10 @@ CS CS bB Lh -Lh +yi "} (145,1,1) = {" -Lh +yi Dj nI nI @@ -47159,8 +47178,8 @@ Sv Sv Sv Lh -Lh -Lh +yi +yi Lh bB te @@ -47184,10 +47203,10 @@ nT LE bB Lh -Lh -Lh -Lh -Lh +yi +yi +yi +yi Lh bB CS @@ -47205,10 +47224,10 @@ CS CS bB Lh -Lh +yi "} (146,1,1) = {" -Lh +yi Dj nI nI @@ -47416,8 +47435,8 @@ Sv Sv Sv Lh -Lh -Lh +yi +yi Lh bB te @@ -47441,10 +47460,10 @@ Am nT bB Lh -Lh -Lh -Lh -Lh +yi +yi +yi +yi Lh bB CS @@ -47462,10 +47481,10 @@ CS CS bB Lh -Lh +yi "} (147,1,1) = {" -Lh +yi Dj nI nI @@ -47674,7 +47693,7 @@ Sv Sv Sv Lh -Lh +yi Lh bB te @@ -47698,10 +47717,10 @@ nT nT bB Lh +yi +yi Lh -Lh -Lh -Lh +yi Lh bB CS @@ -47719,10 +47738,10 @@ CS CS bB Lh -Lh +yi "} (148,1,1) = {" -Lh +yi Dj nI nI @@ -47931,7 +47950,7 @@ Sv Sv Sv Lh -Lh +yi Lh bB te @@ -47955,7 +47974,7 @@ nT nT bB Lh -Lh +yi Lh Sv Lh @@ -47976,10 +47995,10 @@ CS CS bB Lh -Lh +yi "} (149,1,1) = {" -Lh +yi Dj nI nI @@ -48188,7 +48207,7 @@ Sv Sv Sv Lh -Lh +yi Lh bB te @@ -48212,7 +48231,7 @@ nT bB bB Lh -Lh +yi Lh Sv Lh @@ -48233,10 +48252,10 @@ CS CS bB Lh -Lh +yi "} (150,1,1) = {" -Lh +yi Dj nI nI @@ -48445,7 +48464,7 @@ Sv Sv Sv Lh -Lh +yi Lh bB te @@ -48468,7 +48487,7 @@ nT LE bB Lh -Lh +yi Lh Sv Sv @@ -48490,10 +48509,10 @@ CS CS bB Lh -Lh +yi "} (151,1,1) = {" -Lh +yi Dj nI nI @@ -48725,7 +48744,7 @@ nT bB bB Lh -Lh +yi Lh Sv Sv @@ -48747,10 +48766,10 @@ CS CS bB Lh -Lh +yi "} (152,1,1) = {" -Lh +yi Dj nI nI @@ -48981,7 +49000,7 @@ bB bB bB Lh -Lh +yi Lh Sv Sv @@ -49004,10 +49023,10 @@ CS CS bB Lh -Lh +yi "} (153,1,1) = {" -Lh +yi Dj nI nI @@ -49261,10 +49280,10 @@ CS CS bB Lh -Lh +yi "} (154,1,1) = {" -Lh +yi Dj nI nI @@ -49492,7 +49511,7 @@ Lh Lh Lh Lh -Lh +yi Lh Sv Sv @@ -49518,10 +49537,10 @@ CS CS bB Lh -Lh +yi "} (155,1,1) = {" -Lh +yi Dj nI nI @@ -49775,10 +49794,10 @@ CS CS bB Lh -Lh +yi "} (156,1,1) = {" -Lh +yi Dj nI nI @@ -50032,10 +50051,10 @@ CS CS bB Lh -Lh +yi "} (157,1,1) = {" -Lh +yi Dj nI nI @@ -50289,10 +50308,10 @@ CS CS bB Lh -Lh +yi "} (158,1,1) = {" -Lh +yi Dj nI nI @@ -50546,10 +50565,10 @@ CS CS bB Lh -Lh +yi "} (159,1,1) = {" -Lh +yi Dj nI nI @@ -50582,7 +50601,7 @@ nI nI nI nI -ao +SY hY Wz xH @@ -50803,10 +50822,10 @@ CS CS bB Lh -Lh +yi "} (160,1,1) = {" -Lh +yi Dj nI nI @@ -51060,10 +51079,10 @@ CS CS bB Lh -Lh +yi "} (161,1,1) = {" -Lh +yi Dj nI nI @@ -51317,10 +51336,10 @@ CS CS bB Lh -Lh +yi "} (162,1,1) = {" -Lh +yi Dj nI nI @@ -51574,10 +51593,10 @@ CS CS bB Lh -Lh +yi "} (163,1,1) = {" -Lh +yi Dj nI nI @@ -51610,7 +51629,7 @@ nI nI nI nI -ao +SY hY Wz xH @@ -51831,10 +51850,10 @@ CS CS bB Lh -Lh +yi "} (164,1,1) = {" -Lh +yi Dj nI nI @@ -52088,10 +52107,10 @@ CS CS bB Lh -Lh +yi "} (165,1,1) = {" -Lh +yi Dj nI nI @@ -52345,10 +52364,10 @@ CS CS bB Lh -Lh +yi "} (166,1,1) = {" -Lh +yi Dj nI nI @@ -52602,10 +52621,10 @@ CS CS bB Lh -Lh +yi "} (167,1,1) = {" -Lh +yi Dj nI nI @@ -52859,10 +52878,10 @@ CS CS bB Lh -Lh +yi "} (168,1,1) = {" -Lh +yi Dj nI nI @@ -53116,10 +53135,10 @@ CS CS bB Lh -Lh +yi "} (169,1,1) = {" -Lh +yi Dj nI nI @@ -53373,10 +53392,10 @@ CS CS bB Lh -Lh +yi "} (170,1,1) = {" -Lh +yi Dj nI nI @@ -53630,10 +53649,10 @@ CS CS bB Lh -Lh +yi "} (171,1,1) = {" -Lh +yi Dj nI nI @@ -53887,10 +53906,10 @@ CS CS bB Lh -Lh +yi "} (172,1,1) = {" -Lh +yi Dj nI nI @@ -54144,10 +54163,10 @@ CS CS bB Lh -Lh +yi "} (173,1,1) = {" -Lh +yi Dj nI nI @@ -54401,10 +54420,10 @@ CS CS bB Lh -Lh +yi "} (174,1,1) = {" -Lh +yi Dj nI nI @@ -54658,10 +54677,10 @@ CS CS bB Lh -Lh +yi "} (175,1,1) = {" -Lh +yi Dj nI nI @@ -54915,10 +54934,10 @@ CS CS bB Lh -Lh +yi "} (176,1,1) = {" -Lh +yi Dj nI nI @@ -55172,10 +55191,10 @@ CS CS bB Lh -Lh +yi "} (177,1,1) = {" -Lh +yi Dj nI nI @@ -55429,10 +55448,10 @@ CS CS bB Lh -Lh +yi "} (178,1,1) = {" -Lh +yi Dj nI nI @@ -55686,10 +55705,10 @@ CS CS bB Lh -Lh +yi "} (179,1,1) = {" -Lh +yi Dj nI nI @@ -55943,10 +55962,10 @@ CS CS bB Lh -Lh +yi "} (180,1,1) = {" -Lh +yi Dj nI nI @@ -56200,10 +56219,10 @@ CS CS bB Lh -Lh +yi "} (181,1,1) = {" -Lh +yi Dj nI nI @@ -56457,10 +56476,10 @@ CS CS bB Lh -Lh +yi "} (182,1,1) = {" -Lh +yi Dj nI nI @@ -56714,10 +56733,10 @@ CS CS bB Lh -Lh +yi "} (183,1,1) = {" -Lh +yi Dj nI nI @@ -56971,10 +56990,10 @@ CS CS bB Lh -Lh +yi "} (184,1,1) = {" -Lh +yi Dj nI nI @@ -57228,10 +57247,10 @@ CS CS bB Lh -Lh +yi "} (185,1,1) = {" -Lh +yi Dj nI nI @@ -57485,10 +57504,10 @@ CS CS bB Lh -Lh +yi "} (186,1,1) = {" -Lh +yi Dj nI nI @@ -57742,10 +57761,10 @@ CS CS bB Lh -Lh +yi "} (187,1,1) = {" -Lh +yi Dj nI nI @@ -57999,10 +58018,10 @@ CS CS bB Lh -Lh +yi "} (188,1,1) = {" -Lh +yi Dj nI nI @@ -58256,10 +58275,10 @@ CS CS bB Lh -Lh +yi "} (189,1,1) = {" -Lh +yi Dj nI nI @@ -58513,10 +58532,10 @@ CS CS bB Lh -Lh +yi "} (190,1,1) = {" -Lh +yi Dj nI nI @@ -58770,10 +58789,10 @@ CS CS bB Lh -Lh +yi "} (191,1,1) = {" -Lh +yi Dj nI nI @@ -59027,10 +59046,10 @@ CS CS bB Lh -Lh +yi "} (192,1,1) = {" -Lh +yi Dj nI nI @@ -59284,10 +59303,10 @@ CS CS bB Lh -Lh +yi "} (193,1,1) = {" -Lh +yi Dj nI nI @@ -59541,10 +59560,10 @@ CS CS bB Lh -Lh +yi "} (194,1,1) = {" -Lh +yi Dj nI nI @@ -59798,10 +59817,10 @@ CS CS bB Lh -Lh +yi "} (195,1,1) = {" -Lh +yi Dj nI nI @@ -60055,10 +60074,10 @@ CS CS bB Lh -Lh +yi "} (196,1,1) = {" -Lh +yi Dj nI nI @@ -60312,10 +60331,10 @@ CS CS bB Lh -Lh +yi "} (197,1,1) = {" -Lh +yi Dj nI nI @@ -60569,10 +60588,10 @@ CS CS bB Lh -Lh +yi "} (198,1,1) = {" -Lh +yi Dj nI nI @@ -60826,10 +60845,10 @@ CS CS bB Lh -Lh +yi "} (199,1,1) = {" -Lh +yi Dj nI nI @@ -61083,10 +61102,10 @@ CS CS bB Lh -Lh +yi "} (200,1,1) = {" -Lh +yi Dj nI nI @@ -61340,10 +61359,10 @@ CS CS bB Lh -Lh +yi "} (201,1,1) = {" -Lh +yi Dj nI nI @@ -61597,10 +61616,10 @@ CS CS bB Lh -Lh +yi "} (202,1,1) = {" -Lh +yi Dj nI nI @@ -61854,10 +61873,10 @@ CS CS bB Lh -Lh +yi "} (203,1,1) = {" -Lh +yi Dj nI nI @@ -62111,10 +62130,10 @@ CS CS bB Lh -Lh +yi "} (204,1,1) = {" -Lh +yi Dj nI nI @@ -62368,10 +62387,10 @@ CS CS bB Lh -Lh +yi "} (205,1,1) = {" -Lh +yi Dj nI nI @@ -62625,10 +62644,10 @@ CS CS bB Lh -Lh +yi "} (206,1,1) = {" -Lh +yi Dj nI nI @@ -62882,10 +62901,10 @@ FP CS bB Lh -Lh +yi "} (207,1,1) = {" -Lh +yi Dj nI nI @@ -63139,10 +63158,10 @@ CS CS bB Lh -Lh +yi "} (208,1,1) = {" -Lh +yi Dj nI nI @@ -63396,10 +63415,10 @@ CS CS bB Lh -Lh +yi "} (209,1,1) = {" -Lh +yi Dj nI nI @@ -63653,10 +63672,10 @@ CS CS bB Lh -Lh +yi "} (210,1,1) = {" -Lh +yi Dj nI nI @@ -63910,10 +63929,10 @@ CS CS bB Lh -Lh +yi "} (211,1,1) = {" -Lh +yi Dj nI nI @@ -64167,10 +64186,10 @@ CS CS bB Lh -Lh +yi "} (212,1,1) = {" -Lh +yi Dj nI nI @@ -64424,10 +64443,10 @@ CS CS bB Lh -Lh +yi "} (213,1,1) = {" -Lh +yi Dj nI nI @@ -64681,10 +64700,10 @@ CS CS bB Lh -Lh +yi "} (214,1,1) = {" -Lh +yi Dj nI nI @@ -64938,10 +64957,10 @@ CS CS bB Lh -Lh +yi "} (215,1,1) = {" -Lh +yi Dj nI nI @@ -65195,10 +65214,10 @@ CS CS bB Lh -Lh +yi "} (216,1,1) = {" -Lh +yi Dj nI nI @@ -65452,10 +65471,10 @@ CS CS bB Lh -Lh +yi "} (217,1,1) = {" -Lh +yi Dj nI nI @@ -65709,10 +65728,10 @@ CS CS bB Lh -Lh +yi "} (218,1,1) = {" -Lh +yi Dj nI nI @@ -65966,10 +65985,10 @@ CS CS bB Lh -Lh +yi "} (219,1,1) = {" -Lh +yi Dj nI nI @@ -66223,10 +66242,10 @@ CS CS bB Lh -Lh +yi "} (220,1,1) = {" -Lh +yi Dj nI nI @@ -66480,10 +66499,10 @@ CS CS bB Lh -Lh +yi "} (221,1,1) = {" -Lh +yi Dj nI nI @@ -66737,10 +66756,10 @@ CS CS bB Lh -Lh +yi "} (222,1,1) = {" -Lh +yi Dj nI nI @@ -66994,10 +67013,10 @@ CS CS bB Lh -Lh +yi "} (223,1,1) = {" -Lh +yi Dj nI nI @@ -67251,10 +67270,10 @@ CS CS bB Lh -Lh +yi "} (224,1,1) = {" -Lh +yi Dj nI nI @@ -67508,10 +67527,10 @@ CS CS bB Lh -Lh +yi "} (225,1,1) = {" -Lh +yi Dj nI nI @@ -67765,10 +67784,10 @@ CS CS bB Lh -Lh +yi "} (226,1,1) = {" -Lh +yi Dj nI nI @@ -68022,10 +68041,10 @@ CS CS bB Lh -Lh +yi "} (227,1,1) = {" -Lh +yi Dj nI nI @@ -68279,10 +68298,10 @@ CS CS bB Lh -Lh +yi "} (228,1,1) = {" -Lh +yi Dj nI nI @@ -68536,10 +68555,10 @@ CS CS bB Lh -Lh +yi "} (229,1,1) = {" -Lh +yi Dj nI nI @@ -68793,10 +68812,10 @@ CS CS bB Lh -Lh +yi "} (230,1,1) = {" -Lh +yi Dj nI nI @@ -69050,10 +69069,10 @@ CS CS bB Lh -Lh +yi "} (231,1,1) = {" -Lh +yi Dj nI nI @@ -69307,10 +69326,10 @@ CS CS bB Lh -Lh +yi "} (232,1,1) = {" -Lh +yi Dj nI nI @@ -69564,10 +69583,10 @@ CS CS bB Lh -Lh +yi "} (233,1,1) = {" -Lh +yi Dj nI nI @@ -69821,10 +69840,10 @@ CS CS bB Lh -Lh +yi "} (234,1,1) = {" -Lh +yi Dj nI nI @@ -70078,10 +70097,10 @@ CS CS bB Lh -Lh +yi "} (235,1,1) = {" -Lh +yi Dj nI nI @@ -70335,10 +70354,10 @@ CS CS bB Lh -Lh +yi "} (236,1,1) = {" -Lh +yi Dj nI nI @@ -70592,10 +70611,10 @@ CS CS bB Lh -Lh +yi "} (237,1,1) = {" -Lh +yi Dj nI nI @@ -70849,10 +70868,10 @@ CS CS bB Lh -Lh +yi "} (238,1,1) = {" -Lh +yi Dj nI nI @@ -71106,10 +71125,10 @@ CS CS bB Lh -Lh +yi "} (239,1,1) = {" -Lh +yi Dj nI nI @@ -71363,10 +71382,10 @@ CS CS bB Lh -Lh +yi "} (240,1,1) = {" -Lh +yi Dj nI nI @@ -71620,10 +71639,10 @@ CS CS bB Lh -Lh +yi "} (241,1,1) = {" -Lh +yi Dj nI nI @@ -71877,10 +71896,10 @@ CS CS bB Lh -Lh +yi "} (242,1,1) = {" -Lh +yi Dj nI nI @@ -72134,10 +72153,10 @@ CS CS bB Lh -Lh +yi "} (243,1,1) = {" -Lh +yi Dj nI nI @@ -72391,10 +72410,10 @@ CS CS bB Lh -Lh +yi "} (244,1,1) = {" -Lh +yi Dj nI nI @@ -72648,10 +72667,10 @@ CS CS bB Lh -Lh +yi "} (245,1,1) = {" -Lh +yi Dj nI nI @@ -72905,10 +72924,10 @@ CS CS bB Lh -Lh +yi "} (246,1,1) = {" -Lh +yi Dj nI nI @@ -73162,10 +73181,10 @@ CS CS bB Lh -Lh +yi "} (247,1,1) = {" -Lh +yi Dj nI nI @@ -73419,10 +73438,10 @@ lz CS bB Lh -Lh +yi "} (248,1,1) = {" -Lh +yi Dj nI nI @@ -73676,10 +73695,10 @@ CS CS bB Lh -Lh +yi "} (249,1,1) = {" -Lh +yi Dj nI nI @@ -73933,10 +73952,10 @@ CS CS bB Lh -Lh +yi "} (250,1,1) = {" -Lh +yi Dj nI nI @@ -74190,10 +74209,10 @@ pC CS bB Lh -Lh +yi "} (251,1,1) = {" -Lh +yi Dj nI nI @@ -74447,10 +74466,10 @@ FP SM bB Lh -Lh +yi "} (252,1,1) = {" -Lh +yi Dj nI nI @@ -74704,10 +74723,10 @@ tm gu bB Lh -Lh +yi "} (253,1,1) = {" -Lh +yi Dj nI nI @@ -74960,11 +74979,12 @@ Dj Dj Dj Dj -Lh -Lh +yi +yi "} (254,1,1) = {" -Lh +yi +yi Dj Dj Dj @@ -75031,24 +75051,6 @@ Dj Dj Dj Dj -Dj -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh Lh Lh Lh @@ -75219,261 +75221,278 @@ Lh Lh Lh Lh +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi "} (255,1,1) = {" -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh -Lh +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi +yi "} diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 377eb6be16fa..232f152d0583 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -4,10 +4,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ac" = ( /turf/closed/mineral/random/labormineral, @@ -15,13 +12,11 @@ "ad" = ( /obj/structure/marker_beacon/burgundy, /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "ae" = ( /turf/closed/indestructible/rock, -/area/awaymission/moonoutpost19/main) +/area/awaymission/inaccessible) "ah" = ( /obj/effect/decal/cleanable/blood/tracks{ desc = "Your instincts say you shouldn't be following these."; @@ -63,10 +58,16 @@ dir = 4 }, /obj/structure/cable, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"am" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/moon, +/area/awaymission/moonoutpost19/arrivals) "ap" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/dark/opposingcorners{ @@ -106,12 +107,19 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"aF" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/white, +/area/awaymission/moonoutpost19/research) "aI" = ( /obj/effect/decal/cleanable/blood/xeno{ desc = "It's green and acidic. Nothing good could come of this..." }, /obj/structure/fluff/meteor/large, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "aJ" = ( /obj/machinery/door/poddoor{ @@ -138,7 +146,7 @@ }, /area/awaymission/moonoutpost19/research) "aL" = ( -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "aM" = ( /obj/structure/closet/emcloset, @@ -192,7 +200,8 @@ /area/awaymission/moonoutpost19/research) "bd" = ( /obj/machinery/vending/cola, -/turf/open/floor/iron/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "bf" = ( /obj/structure/flora/rock/style_random{ @@ -208,9 +217,7 @@ pixel_x = 12; name = "medbay runtimes cap" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "bk" = ( /obj/effect/turf_decal/siding/wood/corner{ @@ -278,23 +285,16 @@ "bJ" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "bK" = ( /obj/item/stack/sheet/mineral/wood, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "bL" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "bU" = ( /obj/machinery/door/airlock/security/glass{ @@ -316,7 +316,7 @@ }, /obj/effect/turf_decal/stripes/end, /obj/effect/turf_decal/stripes/red/end, -/turf/open/floor/iron/half, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "cp" = ( /obj/structure/table/reinforced, @@ -345,9 +345,7 @@ /obj/item/clothing/head/soft/blue{ name = "medbay runtimes cap" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "cv" = ( /obj/effect/decal/cleanable/generic, @@ -355,9 +353,7 @@ desc = "They look like human remains. The skeleton is curled up in fetal position with the hands placed near the throat."; pixel_x = 5 }, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "cy" = ( /obj/effect/decal/cleanable/dirt, @@ -379,15 +375,21 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/turf/open/floor/iron/half, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "cF" = ( /obj/item/stack/tile/iron/base, /obj/effect/decal/cleanable/crayon, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"cG" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/signboard, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/arrivals) "cH" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/closet/l3closet/scientist, @@ -417,42 +419,27 @@ "cS" = ( /mob/living/basic/construct/proteon/hostile, /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "dd" = ( /obj/structure/fluff/minepost, /obj/item/stack/sheet/mineral/plasma/thirty, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "df" = ( /obj/machinery/mineral/stacking_unit_console, /turf/closed/wall, /area/awaymission/moonoutpost19/syndicate) -"dh" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, -/area/awaymission/moonoutpost19/main) "do" = ( /obj/structure/alien/weeds/node, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "dr" = ( /mob/living/basic/construct/proteon/hostile, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "ds" = ( /obj/item/pizzabox{ @@ -460,9 +447,7 @@ pixel_y = -1 }, /obj/effect/decal/cleanable/garbage, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "dt" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -470,10 +455,7 @@ }, /obj/effect/turf_decal/lunar_sand/plating, /obj/structure/closet/crate/trashcart, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "dz" = ( /obj/structure/alien/weeds, @@ -484,19 +466,14 @@ /obj/item/clothing/suit/armor/vest, /obj/item/melee/baton/security/loaded, /obj/item/clothing/head/helmet, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "dA" = ( /turf/closed/mineral/random, /area/awaymission/moonoutpost19/main) "dF" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "dL" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -505,23 +482,21 @@ icon_state = "ltrails_1" }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "dM" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty{ - pixel_x = -5; + pixel_x = -9; pixel_y = 15 }, /obj/item/reagent_containers/cup/glass/colocup{ - pixel_x = -9 + pixel_x = 10; + pixel_y = 3 }, /obj/machinery/button/door{ id = "awaymission19atvs"; - name = "Biohazard Shutter Control"; + name = "Garage Shutter Control"; pixel_y = 8; req_access = "201" }, @@ -531,24 +506,17 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "dU" = ( /obj/structure/fence/cut{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "dV" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "dY" = ( /obj/machinery/door/firedoor, @@ -645,6 +613,18 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/awaymission/moonoutpost19/research) +"ev" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/moonoutpost19/research) "ez" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -658,9 +638,7 @@ /area/awaymission/moonoutpost19/research) "eA" = ( /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "eB" = ( /obj/structure/alien/weeds/node, @@ -715,18 +693,12 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "fb" = ( /obj/effect/turf_decal/stripes/asteroid/line, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "fc" = ( /obj/effect/turf_decal/stripes/line{ @@ -738,9 +710,7 @@ /obj/effect/decal/cleanable/crayon{ icon_state = "line" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "fk" = ( /turf/open/floor/iron/white, @@ -772,10 +742,7 @@ dir = 6 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "fw" = ( /obj/structure/closet/crate/bin, @@ -860,11 +827,7 @@ /obj/effect/turf_decal/bot{ dir = 1 }, -/turf/open/floor/iron{ - dir = 1; - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "fJ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ @@ -908,9 +871,7 @@ /area/awaymission/moonoutpost19/arrivals) "fY" = ( /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "gc" = ( /obj/structure/alien/weeds, @@ -935,10 +896,7 @@ /obj/effect/turf_decal/stripes/asteroid/line, /obj/structure/lattice/catwalk, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "gk" = ( /obj/effect/decal/cleanable/dirt, @@ -949,9 +907,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/awaymission/moonoutpost19/syndicate) -"gm" = ( -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/syndicate) "gu" = ( /obj/structure/disposalpipe/segment{ desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; @@ -980,10 +935,7 @@ c_tag = "Dormitories"; network = list("mo19") }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "gI" = ( /obj/structure/table, @@ -1013,13 +965,11 @@ /area/awaymission/moonoutpost19/research) "gN" = ( /obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "gO" = ( /obj/machinery/light/small/directional/north, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "gW" = ( /obj/structure/filingcabinet/white, @@ -1060,9 +1010,7 @@ /area/awaymission/moonoutpost19/research) "hl" = ( /obj/item/stack/ore/slag, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "hq" = ( /obj/effect/turf_decal/tile/red{ @@ -1074,13 +1022,14 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "hr" = ( /obj/structure/reagent_dispensers/fueltank/large, /turf/open/floor/plastic, /area/awaymission/moonoutpost19/arrivals/shed) "ht" = ( +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/awaymission/moonoutpost19/syndicate) "hB" = ( @@ -1088,7 +1037,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "hC" = ( /obj/effect/decal/cleanable/dirt, @@ -1096,10 +1045,7 @@ dir = 1 }, /obj/item/stack/sheet/mineral/plasma/five, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "hI" = ( /turf/closed/wall/rust, @@ -1112,10 +1058,10 @@ id_tag = "awaydorm5"; name = "Dorm 2" }, -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "hO" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "hR" = ( /obj/item/flashlight/lantern{ @@ -1124,9 +1070,7 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "hT" = ( /obj/structure/alien/weeds, @@ -1134,16 +1078,12 @@ /obj/effect/decal/cleanable/blood/gibs, /obj/item/clothing/mask/facehugger/impregnated, /obj/item/gun/ballistic/automatic/pistol, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "hX" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "hY" = ( /obj/structure/closet/crate, @@ -1153,16 +1093,11 @@ /obj/item/shovel, /obj/item/pickaxe, /obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ib" = ( /obj/item/stack/sheet/mineral/wood, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "ij" = ( /obj/effect/decal/cleanable/dirt, @@ -1211,9 +1146,7 @@ /area/awaymission/moonoutpost19/research) "is" = ( /obj/structure/sign/warning/directional/north, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "iu" = ( /obj/machinery/door/airlock/medical{ @@ -1231,11 +1164,10 @@ }, /obj/item/toy/crayon/white, /obj/item/toy/crayon/white{ - pixel_y = 4 - }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" + pixel_y = 4; + pixel_x = -3 }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "iB" = ( /obj/structure/table, @@ -1265,10 +1197,8 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "iM" = ( /obj/effect/spawner/structure/window/reinforced, @@ -1290,9 +1220,7 @@ /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "iU" = ( /obj/machinery/vending/boozeomat, @@ -1305,10 +1233,7 @@ req_access = "150" }, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "iX" = ( /turf/open/floor/iron/cafeteria{ @@ -1355,17 +1280,9 @@ dir = 5 }, /area/awaymission/moonoutpost19/arrivals) -"jp" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, -/area/awaymission/moonoutpost19/mines) "jx" = ( /obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "jD" = ( /obj/machinery/space_heater, @@ -1379,10 +1296,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "jJ" = ( /obj/structure/cable, @@ -1398,6 +1312,15 @@ }, /turf/open/floor/iron/white/corner, /area/awaymission/moonoutpost19/arrivals) +"jO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/decal/remains/human{ + desc = "They look like human remains. The skeleton is curled up in fetal position with the hands placed near the throat."; + pixel_x = 5 + }, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/arrivals) "jP" = ( /obj/item/cigbutt, /turf/open/floor/plating, @@ -1415,9 +1338,15 @@ /area/awaymission/moonoutpost19/arrivals) "jS" = ( /obj/structure/grille, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" +/turf/open/floor/plating/moon, +/area/awaymission/moonoutpost19/arrivals) +"jW" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) "jZ" = ( /obj/machinery/light/small/directional/north, @@ -1425,10 +1354,7 @@ dir = 6 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "kd" = ( /obj/effect/decal/cleanable/dirt, @@ -1436,26 +1362,21 @@ /area/awaymission/moonoutpost19/research) "ki" = ( /obj/effect/turf_decal/lunar_sand/plating, -/obj/structure/sign/warning/vacuum/directional/west, +/obj/structure/sign/warning/gas_mask/directional/west, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) "kj" = ( /obj/structure/alien/weeds, /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "kk" = ( -/obj/structure/alien/weeds/node, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/structure/sign/warning/biohazard/directional/north, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/structure/alien/weeds, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ko" = ( /obj/effect/decal/cleanable/dirt, @@ -1472,9 +1393,7 @@ /obj/effect/decal/remains/human{ desc = "...the pilot wasn't as lucky as the flag." }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "kq" = ( /obj/structure/table, @@ -1500,7 +1419,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "kC" = ( /obj/structure/sink{ @@ -1533,20 +1452,14 @@ /obj/structure/chair/comfy/black{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "kL" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "kM" = ( /obj/structure/closet/crate/bin, @@ -1570,9 +1483,7 @@ /area/awaymission/moonoutpost19/arrivals) "kX" = ( /obj/effect/decal/cleanable/blood/splatter, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "kZ" = ( /obj/machinery/light/small/directional/east, @@ -1605,10 +1516,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "lg" = ( /obj/effect/mapping_helpers/airlock/locked, @@ -1620,10 +1528,7 @@ /area/awaymission/moonoutpost19/arrivals) "lj" = ( /obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "lk" = ( /obj/effect/turf_decal/tile/red, @@ -1631,40 +1536,29 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ln" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "lq" = ( /obj/structure/alien/weeds/node, /obj/effect/decal/cleanable/blood, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "lu" = ( /obj/structure/chair/comfy/black, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "ly" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "lz" = ( /obj/machinery/computer/operating{ @@ -1679,15 +1573,11 @@ /obj/item/stack/rods{ pixel_x = 3 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "lB" = ( /obj/item/storage/bag/ore, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "lC" = ( /obj/machinery/door/airlock/external/ruin, @@ -1719,7 +1609,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "lL" = ( /obj/structure/chair/stool/directional/south, @@ -1771,10 +1661,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "lW" = ( /obj/structure/table, @@ -1831,6 +1718,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/white/corner, /area/awaymission/moonoutpost19/arrivals) "ml" = ( @@ -1843,10 +1731,7 @@ dir = 10 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "mn" = ( /obj/structure/noticeboard/directional/north, @@ -1858,9 +1743,7 @@ /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) "mo" = ( -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "mp" = ( /obj/structure/table, @@ -1935,7 +1818,7 @@ /area/awaymission/moonoutpost19/arrivals) "mJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/vacuum/directional/north, +/obj/structure/sign/warning/gas_mask/directional/north, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) "mK" = ( @@ -1947,9 +1830,7 @@ "mO" = ( /obj/structure/alien/weeds, /obj/structure/fluff/minepost, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "mS" = ( /obj/structure/chair/stool/directional/west, @@ -1957,7 +1838,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "mV" = ( /obj/structure/table, @@ -2062,9 +1943,7 @@ "nw" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "nx" = ( /obj/structure/alien/weeds, @@ -2075,14 +1954,12 @@ /area/awaymission/moonoutpost19/research) "ny" = ( /obj/machinery/light/small/directional/west, -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "nz" = ( /obj/structure/alien/weeds, /mob/living/basic/alien/sentinel, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "nE" = ( /obj/machinery/door/poddoor/preopen{ @@ -2098,9 +1975,7 @@ /obj/item/shard{ icon_state = "small" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "nL" = ( /obj/structure/table, @@ -2121,10 +1996,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "nS" = ( /obj/machinery/door/airlock/maintenance, @@ -2132,10 +2004,14 @@ /area/awaymission/moonoutpost19/arrivals) "oa" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/limb, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"oe" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/showroomfloor{ + temperature = 273.15 + }, +/area/awaymission/moonoutpost19/arrivals) "of" = ( /obj/machinery/vending/snack, /obj/structure/sign/poster/contraband/eat/directional/north, @@ -2178,9 +2054,7 @@ pixel_x = -2; pixel_y = 3 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "op" = ( /obj/structure/cable, @@ -2217,16 +2091,11 @@ /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/all_access, /obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "ox" = ( /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "oA" = ( /obj/effect/decal/cleanable/dirt, @@ -2259,9 +2128,7 @@ /area/awaymission/moonoutpost19/arrivals) "oY" = ( /obj/structure/fluff/meteor/large, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "pc" = ( /obj/machinery/door/airlock{ @@ -2284,27 +2151,20 @@ dir = 8 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "pj" = ( /obj/item/stack/ore/iron{ pixel_x = -7; pixel_y = -4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "pm" = ( /obj/structure/lattice/catwalk, /obj/item/storage/toolbox/mechanical, /obj/structure/rack, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "px" = ( /obj/effect/decal/cleanable/dirt, @@ -2332,9 +2192,7 @@ pixel_y = 6 }, /obj/item/toy/seashell, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "pE" = ( /obj/effect/decal/cleanable/dirt, @@ -2355,10 +2213,8 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/cafeteria{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "pH" = ( /obj/structure/table, @@ -2392,9 +2248,7 @@ /area/awaymission/moonoutpost19/arrivals) "pS" = ( /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "pT" = ( /obj/item/plate, @@ -2411,10 +2265,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "pX" = ( /obj/structure/chair, @@ -2489,9 +2340,7 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "qk" = ( /obj/effect/decal/cleanable/blood/xeno, @@ -2552,9 +2401,7 @@ "qA" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "qI" = ( /obj/effect/decal/cleanable/dirt, @@ -2598,10 +2445,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "qO" = ( /obj/effect/decal/cleanable/dirt, @@ -2637,10 +2481,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "rc" = ( /obj/structure/table, @@ -2662,25 +2503,17 @@ /area/awaymission/moonoutpost19/research) "rd" = ( /obj/effect/mapping_helpers/burnt_floor, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "ri" = ( /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) -"rk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/syndicate) "rl" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "rm" = ( /obj/machinery/door/airlock{ @@ -2700,9 +2533,7 @@ pixel_x = -7; pixel_y = -4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "rt" = ( /obj/machinery/door/airlock/external/ruin, @@ -2723,9 +2554,7 @@ /obj/item/toy/beach_ball/baseball{ pixel_y = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "rx" = ( /obj/structure/disposaloutlet, @@ -2733,13 +2562,10 @@ dir = 1 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "ry" = ( -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "rA" = ( /obj/machinery/door/firedoor, @@ -2792,9 +2618,7 @@ /obj/structure/marker_beacon/burgundy, /obj/structure/lattice/catwalk, /obj/structure/cable, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "rL" = ( /obj/effect/decal/cleanable/blood/oil, @@ -2841,10 +2665,7 @@ dir = 5 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "rV" = ( /obj/structure/chair/stool/directional/west, @@ -2853,22 +2674,26 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "rW" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/blood/gibs, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "rX" = ( /obj/structure/lattice/catwalk, /obj/item/storage/medkit, /obj/structure/rack, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) +"sg" = ( +/obj/structure/fluff/minepost, +/obj/item/flashlight/lantern/on{ + pixel_x = 8; + pixel_y = -7 }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "si" = ( /obj/structure/alien/weeds, @@ -2881,15 +2706,11 @@ /obj/structure/flora/rock/style_random{ pixel_y = -2 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "sq" = ( /obj/item/ammo_casing/spent, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "sr" = ( /obj/effect/decal/cleanable/dirt, @@ -2898,10 +2719,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "st" = ( /obj/effect/decal/cleanable/dirt, @@ -2934,14 +2752,30 @@ /obj/effect/turf_decal/lunar_sand, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) +"sB" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/white, +/area/awaymission/moonoutpost19/research) "sC" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"sD" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/arrivals) "sI" = ( /obj/item/stack/ore/diamond, /turf/open/misc/asteroid/moon/dug, @@ -2965,10 +2799,7 @@ /obj/item/flashlight/flare{ start_on = 1 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "sO" = ( /obj/machinery/light/small/directional/west, @@ -3008,18 +2839,14 @@ /obj/structure/fluff/tram_rail/end{ dir = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "tb" = ( /turf/closed/mineral/random, /area/awaymission/moonoutpost19/mines) "ti" = ( /obj/structure/fence/corner, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "tk" = ( /obj/machinery/light/small/directional/east, @@ -3036,20 +2863,16 @@ pixel_y = -2 }, /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "to" = ( /obj/machinery/vending/cigarette, /obj/structure/sign/poster/contraband/smoke/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "tv" = ( /obj/item/stack/ore/iron, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "tA" = ( /obj/structure/urinal/directional/north, @@ -3084,9 +2907,7 @@ /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "tQ" = ( /obj/structure/table, @@ -3106,21 +2927,24 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) +"ua" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid/moon, +/turf/open/floor/plating, +/area/awaymission/moonoutpost19/arrivals/shed) "ub" = ( /obj/item/cigbutt, /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "uc" = ( /obj/item/stack/ore/uranium, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "ue" = ( /obj/machinery/power/apc/auto_name/directional/south{ @@ -3133,28 +2957,22 @@ dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ug" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/turf_decal/lunar_sand, +/obj/structure/sign/warning/secure_area/directional/south, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) "ui" = ( /obj/structure/fluff/meteor/sharp, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "um" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "uo" = ( /obj/effect/decal/cleanable/dirt, @@ -3170,17 +2988,12 @@ dir = 8 }, /obj/structure/alien/weeds, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ur" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "us" = ( /obj/item/key/atv{ @@ -3193,13 +3006,14 @@ }, /obj/structure/rack, /obj/item/flashlight, +/obj/item/stack/marker_beacon/ten, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals/shed) "ut" = ( /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "uC" = ( /obj/effect/turf_decal/caution/stand_clear{ @@ -3210,9 +3024,7 @@ /area/awaymission/moonoutpost19/arrivals/shed) "uF" = ( /obj/machinery/light/small/directional/east, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "uH" = ( /obj/structure/alien/weeds, @@ -3222,9 +3034,7 @@ pixel_x = -16; can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "uK" = ( /obj/effect/mapping_helpers/airlock/locked, @@ -3237,9 +3047,7 @@ /obj/item/shard{ icon_state = "small" }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "uM" = ( /obj/structure/closet/secure_closet/personal/cabinet{ @@ -3275,16 +3083,14 @@ pixel_y = -2 }, /obj/item/stack/sheet/mineral/plasma/five, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "uT" = ( /obj/machinery/airalarm/directional/east{ req_access = "150" }, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "uZ" = ( /obj/machinery/power/port_gen/pacman{ @@ -3301,16 +3107,12 @@ /area/awaymission/moonoutpost19/syndicate) "vd" = ( /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/effect/baseturf_helper/asteroid/moon, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "vf" = ( /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "vg" = ( /obj/item/stack/rods{ @@ -3322,9 +3124,7 @@ pixel_x = -7; pixel_y = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "vj" = ( /obj/structure/closet/crate/bin, @@ -3344,16 +3144,11 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "vs" = ( /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "vt" = ( /obj/structure/grille, @@ -3398,9 +3193,7 @@ /area/awaymission/moonoutpost19/research) "vz" = ( /obj/structure/alien/weeds/node, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "vB" = ( /obj/effect/spawner/structure/window/reinforced, @@ -3415,15 +3208,11 @@ /obj/item/ammo_box/magazine/m9mm, /obj/item/ammo_box/magazine/m9mm, /obj/item/suppressor, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "vE" = ( /obj/structure/fluff/minepost, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "vG" = ( /obj/effect/mapping_helpers/broken_floor, @@ -3473,9 +3262,7 @@ "vY" = ( /obj/structure/fluff/minepost, /obj/item/stack/sheet/mineral/plasma/five, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "wc" = ( /obj/structure/table, @@ -3487,9 +3274,7 @@ "wh" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "wi" = ( /obj/machinery/door/firedoor, @@ -3502,28 +3287,23 @@ /area/awaymission/moonoutpost19/research) "wj" = ( /obj/item/stack/ore/glass/basalt, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "wt" = ( /obj/structure/chair/pew{ dir = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "wu" = ( /obj/structure/cable, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "wz" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "wC" = ( /obj/effect/decal/cleanable/blood/gibs/robot_debris, @@ -3550,10 +3330,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "wF" = ( /obj/machinery/door/poddoor/shutters{ @@ -3575,11 +3352,12 @@ req_access = "150" }, /obj/item/stack/spacecash/c50, -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "wV" = ( /obj/structure/closet/emcloset, /obj/item/shovel, +/obj/item/stack/marker_beacon/ten, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) "xa" = ( @@ -3600,10 +3378,7 @@ dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "xj" = ( /obj/machinery/door/airlock{ @@ -3619,13 +3394,11 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "xm" = ( /obj/structure/cable, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "xn" = ( /obj/machinery/light/small/directional/south, @@ -3657,9 +3430,7 @@ /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood/gibs, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "xy" = ( /obj/effect/spawner/random/medical/surgery_tool_advanced, @@ -3667,9 +3438,7 @@ /area/awaymission/moonoutpost19/mines) "xB" = ( /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "xC" = ( /obj/effect/decal/cleanable/dirt, @@ -3678,10 +3447,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "xG" = ( /obj/machinery/firealarm/directional/east, @@ -3708,6 +3474,10 @@ }, /turf/open/floor/iron/dark, /area/awaymission/moonoutpost19/research) +"xP" = ( +/obj/effect/baseturf_helper/asteroid/moon, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/syndicate) "yg" = ( /obj/machinery/door/firedoor/closed, /obj/structure/cable, @@ -3723,10 +3493,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "yj" = ( /obj/structure/chair/comfy/black{ @@ -3759,7 +3526,7 @@ /area/awaymission/moonoutpost19/research) "yq" = ( /obj/structure/fluff/meteor/large, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "yr" = ( /obj/structure/chair{ @@ -3771,6 +3538,11 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"ys" = ( +/obj/structure/cable, +/obj/item/stack/rods, +/turf/open/floor/iron/moon, +/area/awaymission/moonoutpost19/arrivals) "yt" = ( /obj/item/cigbutt, /obj/effect/turf_decal/tile/bar, @@ -3782,6 +3554,14 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"yw" = ( +/obj/structure/cable, +/obj/item/crowbar{ + pixel_x = 4; + pixel_y = -6 + }, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/arrivals) "yx" = ( /obj/machinery/conveyor_switch/oneway{ id = "awaysyndie"; @@ -3791,10 +3571,7 @@ dir = 8 }, /obj/effect/decal/cleanable/fuel_pool, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "yz" = ( /obj/machinery/portable_atmospherics/scrubber, @@ -3815,17 +3592,12 @@ /area/awaymission/moonoutpost19/research) "yJ" = ( /obj/item/stack/ore/slag, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "yK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "yP" = ( /obj/item/pen{ @@ -3849,9 +3621,7 @@ /area/awaymission/moonoutpost19/main) "yY" = ( /obj/machinery/light/small/directional/west, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "yZ" = ( /obj/effect/mapping_helpers/broken_floor, @@ -3881,6 +3651,13 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/iron/dark, /area/awaymission/moonoutpost19/arrivals) +"zh" = ( +/obj/item/wirecutters{ + pixel_y = 9; + pixel_x = -4 + }, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/main) "zi" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 4 @@ -3890,8 +3667,8 @@ /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) "zk" = ( -/turf/closed/indestructible/rock, -/area/awaymission/moonoutpost19/mines) +/turf/closed/mineral/random, +/area/awaymission/inaccessible) "zl" = ( /obj/effect/decal/cleanable/blood/tracks{ desc = "Your instincts say you shouldn't be following these."; @@ -3909,6 +3686,31 @@ /obj/structure/cable, /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) +"zu" = ( +/obj/item/cigbutt{ + pixel_y = 7; + pixel_x = -7 + }, +/obj/item/cigbutt{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/cigbutt{ + pixel_y = 1 + }, +/obj/item/cigbutt{ + pixel_y = 6 + }, +/obj/item/cigbutt{ + pixel_y = 11; + pixel_x = 5 + }, +/obj/item/stack/ore/glass/basalt{ + pixel_x = -8; + pixel_y = -7 + }, +/turf/open/misc/asteroid/moon/dug, +/area/awaymission/moonoutpost19/main) "zx" = ( /obj/structure/table, /obj/item/radio/off, @@ -3979,7 +3781,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "zR" = ( /obj/structure/grille, @@ -3995,15 +3797,11 @@ "zY" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Aj" = ( /obj/item/pickaxe/drill, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Am" = ( /obj/machinery/newscaster/directional/east, @@ -4012,9 +3810,7 @@ "Aq" = ( /obj/structure/flora/lunar_plant, /obj/item/stack/ore/iron, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Au" = ( /turf/closed/wall/mineral/titanium/survival/pod, @@ -4049,13 +3845,12 @@ dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "AD" = ( /obj/item/bodybag/environmental, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "AE" = ( /obj/structure/table, @@ -4080,37 +3875,27 @@ "AO" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "AP" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "AQ" = ( /obj/item/stack/sheet/mineral/plasma, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "AT" = ( /obj/item/stack/sheet/mineral/wood, /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "AY" = ( /obj/structure/fence/cut/large{ dir = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "AZ" = ( /obj/item/trash/raisins, @@ -4141,6 +3926,15 @@ }, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals/shed) +"Bd" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/moonoutpost19/research) "Bf" = ( /obj/effect/decal/cleanable/dirt, /obj/item/ammo_casing/c357{ @@ -4195,15 +3989,13 @@ /area/awaymission/moonoutpost19/arrivals) "Bz" = ( /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "BB" = ( /obj/effect/turf_decal/stripes{ dir = 8 }, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "BC" = ( /obj/effect/decal/cleanable/dirt, @@ -4229,9 +4021,7 @@ /area/awaymission/moonoutpost19/tent) "BG" = ( /obj/effect/decal/cleanable/blood/old, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "BI" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -4299,10 +4089,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Ca" = ( /obj/effect/turf_decal/tile/bar, @@ -4329,12 +4116,11 @@ normaldoorcontrol = 1; specialfunctions = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "Ce" = ( /obj/structure/alien/weeds, /obj/effect/turf_decal/tile/purple, -/obj/structure/cable, /obj/structure/sign/warning/secure_area/directional/east, /turf/open/floor/iron/white, /area/awaymission/moonoutpost19/research) @@ -4424,19 +4210,23 @@ /area/awaymission/moonoutpost19/arrivals) "CL" = ( /obj/structure/fence/door, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "CP" = ( /obj/structure/cable, /turf/open/floor/pod/light, /area/awaymission/moonoutpost19/tent) +"CU" = ( +/obj/structure/fluff/minepost, +/obj/item/flashlight/lantern/on{ + pixel_x = 8; + pixel_y = -7 + }, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/main) "CW" = ( /obj/structure/ore_box, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "CX" = ( /obj/effect/turf_decal/tile/bar, @@ -4470,9 +4260,7 @@ /area/awaymission/moonoutpost19/arrivals) "Db" = ( /obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Dc" = ( /obj/machinery/door/airlock/external/ruin, @@ -4495,13 +4283,11 @@ }, /obj/effect/turf_decal/lunar_sand/plating, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "Dk" = ( /obj/structure/trap/cult, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Dl" = ( /obj/machinery/light/small/directional/north, @@ -4509,18 +4295,12 @@ dir = 10 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "Do" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Dp" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -4531,10 +4311,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Ds" = ( /obj/effect/turf_decal/stripes/line, @@ -4542,9 +4319,7 @@ /area/awaymission/moonoutpost19/research) "Dw" = ( /obj/item/stack/tile/iron/base, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Dx" = ( /obj/machinery/power/apc/auto_name/directional/east, @@ -4557,9 +4332,7 @@ /area/awaymission/moonoutpost19/research) "Dy" = ( /obj/item/stack/cable_coil/cut, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "DH" = ( /obj/structure/grille/broken, @@ -4567,9 +4340,7 @@ /obj/item/stack/rods, /obj/item/shard, /obj/structure/alien/weeds, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "DJ" = ( /obj/effect/turf_decal/tile/purple/anticorner{ @@ -4588,18 +4359,14 @@ /obj/item/shard{ pixel_x = -3 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "DS" = ( /obj/structure/flora/rock/style_random{ pixel_y = -2 }, /obj/structure/sign/warning/directional/north, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "DW" = ( /obj/machinery/shower{ @@ -4653,6 +4420,7 @@ /area/awaymission/moonoutpost19/arrivals/shed) "Ew" = ( /obj/structure/cable, +/obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/plating, /area/awaymission/moonoutpost19/syndicate) "EB" = ( @@ -4664,7 +4432,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "EK" = ( /mob/living/basic/lizard{ @@ -4677,13 +4445,11 @@ calibrated = 0 }, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "EP" = ( /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "EQ" = ( /obj/effect/turf_decal/stripes/line{ @@ -4697,10 +4463,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "EY" = ( /obj/effect/decal/cleanable/dirt, @@ -4714,9 +4477,7 @@ "EZ" = ( /obj/structure/alien/weeds/node, /mob/living/basic/alien, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Fc" = ( /obj/machinery/light/floor, @@ -4730,9 +4491,7 @@ "Ff" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Fi" = ( /obj/machinery/washing_machine, @@ -4742,10 +4501,8 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/cafeteria{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Fw" = ( /obj/item/pickaxe{ @@ -4755,11 +4512,8 @@ /obj/structure/flora/rock/style_random{ pixel_y = -2 }, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) -"FA" = ( -/turf/open/lava/airless, -/area/awaymission/moonoutpost19/mines) "FB" = ( /obj/item/stack/ore/titanium, /turf/open/misc/asteroid/moon/dug, @@ -4783,16 +4537,14 @@ dir = 1 }, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "FF" = ( /obj/structure/table/wood, /obj/item/pen, /obj/item/paper/fluff/awaymissions/moonoutpost19/log/personal_2, /obj/structure/sign/poster/contraband/c20r/directional/south, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "FH" = ( /obj/structure/closet/crate{ @@ -4827,7 +4579,7 @@ dir = 4 }, /obj/effect/turf_decal/stripes, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "FQ" = ( /obj/machinery/light/small/directional/west, @@ -4835,10 +4587,7 @@ dir = 6 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "FY" = ( /obj/structure/window/reinforced/spawner/directional/west, @@ -4857,17 +4606,13 @@ opacity = 0 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "Gd" = ( /obj/structure/fence/corner{ dir = 10 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Gh" = ( /obj/structure/closet/l3closet/scientist, @@ -4881,28 +4626,22 @@ "Gj" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Gm" = ( /obj/structure/fluff/meteor, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Gp" = ( /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) "Gs" = ( /obj/structure/alien/weeds/node, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Gv" = ( /obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "Gw" = ( /obj/structure/grille/broken, @@ -4921,9 +4660,7 @@ /obj/item/clothing/head/soft{ pixel_y = 3 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "GA" = ( /obj/machinery/griddle, @@ -4936,7 +4673,8 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "GH" = ( /obj/structure/table, @@ -4952,7 +4690,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "GK" = ( /obj/structure/table, @@ -4977,9 +4715,7 @@ /area/awaymission/moonoutpost19/arrivals) "GU" = ( /obj/effect/baseturf_helper/asteroid/moon, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "GW" = ( /obj/effect/spawner/structure/window, @@ -4997,9 +4733,7 @@ "Ha" = ( /obj/structure/alien/weeds, /mob/living/basic/alien, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Hd" = ( /obj/item/stack/rods, @@ -5007,9 +4741,7 @@ pixel_x = -6; pixel_y = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Hg" = ( /obj/machinery/power/apc/auto_name/directional/north, @@ -5024,6 +4756,7 @@ /area/awaymission/moonoutpost19/arrivals) "Hk" = ( /obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) "Hl" = ( @@ -5041,14 +4774,12 @@ /obj/effect/turf_decal/stripes{ dir = 4 }, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "Hy" = ( /obj/structure/fluff/minepost, /obj/item/stack/sheet/mineral/uranium/five, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "HD" = ( /obj/machinery/firealarm/directional/south, @@ -5067,19 +4798,14 @@ dir = 4 }, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "HG" = ( /obj/item/pickaxe{ pixel_x = 20; pixel_y = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "HJ" = ( /obj/structure/safe, @@ -5096,9 +4822,7 @@ pixel_y = 5 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "HO" = ( /obj/structure/table, @@ -5113,9 +4837,7 @@ desc = "With survival instincts like these, it's no wonder cats survived to the 26th century."; name = "Jones" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "HS" = ( /obj/structure/chair/stool/directional/east{ @@ -5145,18 +4867,14 @@ /obj/machinery/exoscanner, /obj/structure/cable, /obj/structure/fluff/tram_rail/floor, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Ig" = ( /obj/structure/rack, /obj/structure/lattice/catwalk, /obj/item/pickaxe, /obj/item/emptysandbag, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Ih" = ( /obj/structure/railing{ @@ -5172,14 +4890,14 @@ /obj/effect/turf_decal/stripes/red/end{ dir = 1 }, -/turf/open/floor/iron/half, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Ii" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "Ik" = ( /obj/effect/turf_decal/siding/wood/corner{ @@ -5190,9 +4908,7 @@ /area/awaymission/moonoutpost19/arrivals) "Il" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Im" = ( /obj/machinery/door/puzzle/keycard{ @@ -5219,9 +4935,7 @@ /area/awaymission/moonoutpost19/research) "Io" = ( /obj/structure/barricade/wooden/crude, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Ir" = ( /obj/vehicle/ridden/atv{ @@ -5237,9 +4951,7 @@ /area/awaymission/moonoutpost19/research) "Iv" = ( /obj/effect/decal/cleanable/blood/splatter/xeno, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "IA" = ( /obj/structure/mecha_wreckage/ripley/mk2{ @@ -5251,18 +4963,14 @@ pixel_x = 7; pixel_y = -18 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "IB" = ( /obj/structure/chair/pew/right{ dir = 8 }, /obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "ID" = ( /obj/structure/chair/stool/directional/east{ @@ -5274,8 +4982,8 @@ /turf/open/floor/carpet, /area/awaymission/moonoutpost19/arrivals) "IM" = ( -/turf/open/space/basic, -/area/space) +/turf/cordon/secret, +/area/misc/cordon) "IO" = ( /obj/machinery/door/airlock/survival_pod/glass, /obj/structure/fans/tiny, @@ -5289,19 +4997,14 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "IX" = ( /obj/structure/chair/pew{ dir = 8 }, /obj/item/food/peanuts/salted, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Ja" = ( /obj/structure/alien/weeds, @@ -5309,17 +5012,13 @@ /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Jb" = ( /obj/structure/fence/post{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Jc" = ( /obj/effect/spawner/structure/window/reinforced/shuttle, @@ -5340,6 +5039,13 @@ }, /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) +"Jf" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/white/corner, +/area/awaymission/moonoutpost19/arrivals) "Jl" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -5387,18 +5093,16 @@ /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Jz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "JD" = ( /obj/structure/chair/stool/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "JF" = ( /obj/effect/decal/cleanable/dirt, @@ -5406,17 +5110,12 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "JH" = ( /obj/structure/alien/weeds, /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "JI" = ( /obj/machinery/portable_atmospherics/canister/air, @@ -5431,7 +5130,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "JL" = ( /obj/effect/decal/cleanable/dirt, @@ -5439,19 +5138,14 @@ /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) "JQ" = ( -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "JS" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /obj/structure/sign/warning/secure_area/directional/north, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "JV" = ( /obj/structure/sink{ @@ -5482,9 +5176,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/head/helmet/space/syndicate/orange, /obj/item/clothing/mask/facehugger/impregnated, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Kh" = ( /obj/item/soap/nanotrasen{ @@ -5498,10 +5190,8 @@ "Kk" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Kp" = ( /obj/structure/closet/crate/bin, @@ -5521,9 +5211,7 @@ /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "KF" = ( /obj/item/banner/command/mundane{ @@ -5533,9 +5221,7 @@ pixel_y = 15 }, /obj/structure/stone_tile/surrounding/burnt, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "KL" = ( /obj/structure/table, @@ -5566,16 +5252,13 @@ }, /obj/structure/cable, /obj/structure/lattice/catwalk, -/turf/open/floor/plating, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "Lk" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Ll" = ( /obj/machinery/duct, @@ -5584,9 +5267,7 @@ "Lm" = ( /obj/structure/ore_box, /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Lp" = ( /obj/effect/mapping_helpers/airlock/locked, @@ -5595,16 +5276,24 @@ req_access = "150" }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) +"Lt" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/egg/burst, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) +"Lx" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/research) "LA" = ( /obj/item/stack/ore/iron{ pixel_x = -3; pixel_y = 9 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "LC" = ( /obj/item/stack/rods, @@ -5613,6 +5302,10 @@ }, /turf/open/floor/iron/white, /area/awaymission/moonoutpost19/research) +"LD" = ( +/obj/structure/cable, +/turf/open/floor/iron/moon, +/area/awaymission/moonoutpost19/arrivals) "LG" = ( /turf/closed/mineral/random/high_chance, /area/awaymission/moonoutpost19/main) @@ -5629,15 +5322,14 @@ /area/awaymission/moonoutpost19/arrivals/shed) "LK" = ( /obj/item/stack/ore/iron, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "LL" = ( /obj/structure/sign/poster/official/nanotrasen_logo/directional/south, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/white/corner, /area/awaymission/moonoutpost19/arrivals) "LQ" = ( @@ -5667,16 +5359,12 @@ /obj/item/clothing/mask/facehugger/impregnated, /obj/item/clothing/under/syndicate, /obj/item/clothing/glasses/night, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Mf" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Mh" = ( /obj/structure/window/reinforced/spawner/directional/north, @@ -5686,7 +5374,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Mj" = ( /obj/structure/alien/weeds/node, @@ -5696,22 +5384,16 @@ "Mt" = ( /obj/structure/table, /obj/item/toy/cards/deck, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Mw" = ( /obj/structure/alien/weeds/node, /obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "My" = ( -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "MC" = ( /obj/structure/table, @@ -5729,9 +5411,7 @@ pixel_y = -2 }, /obj/item/trash/peanuts, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "MG" = ( /obj/effect/decal/cleanable/dirt, @@ -5766,12 +5446,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) -"Ng" = ( -/obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, -/area/awaymission/moonoutpost19/main) "Nj" = ( /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) @@ -5787,16 +5461,12 @@ /area/awaymission/moonoutpost19/research) "No" = ( /obj/item/reagent_containers/cup/bowl, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Np" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/blood/gibs/up, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Nq" = ( /obj/machinery/door/poddoor/preopen{ @@ -5847,9 +5517,7 @@ "NG" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "NJ" = ( /obj/machinery/power/shieldwallgen/unlocked, @@ -5882,16 +5550,14 @@ dir = 8 }, /obj/item/clothing/head/soft, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "NQ" = ( /obj/item/shovel{ pixel_x = -7 }, /obj/structure/fluff/meteor, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "NR" = ( /obj/structure/table/reinforced, @@ -5908,24 +5574,18 @@ /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) "NS" = ( -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "NU" = ( /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "NW" = ( /obj/machinery/light/small/directional/east, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "NY" = ( /obj/structure/table/reinforced, @@ -5954,14 +5614,12 @@ /area/awaymission/moonoutpost19/research) "Ob" = ( /obj/item/clothing/head/soft, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Od" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "Oj" = ( /obj/structure/table/rolling, @@ -5976,9 +5634,7 @@ "Oq" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/membrane, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Or" = ( /obj/item/cigbutt, @@ -5992,15 +5648,12 @@ /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/generic, /obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Ot" = ( /obj/structure/lattice/catwalk, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "Ou" = ( /obj/structure/table/wood, @@ -6044,17 +5697,14 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "OK" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 9 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "OL" = ( /obj/effect/turf_decal/tile/blue{ @@ -6085,9 +5735,7 @@ "OQ" = ( /obj/structure/trap/cult, /obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "OR" = ( /obj/machinery/disposal/bin, @@ -6107,23 +5755,18 @@ /obj/structure/lattice/catwalk, /obj/structure/cable, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "OT" = ( /obj/structure/marker_beacon/burgundy, /obj/structure/cable, /obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "OV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "OW" = ( /obj/machinery/light/small/directional/north, @@ -6138,19 +5781,15 @@ "OY" = ( /obj/structure/rack, /obj/structure/lattice/catwalk, -/obj/item/pickaxe, /obj/item/t_scanner, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/obj/item/shovel, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Pf" = ( /obj/item/flashlight/flare{ start_on = 1 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Ph" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -6161,9 +5800,7 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Pk" = ( /obj/structure/closet/crate/freezer, @@ -6174,6 +5811,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) +"Pl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/white, +/area/awaymission/moonoutpost19/research) "Pn" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/table, @@ -6185,7 +5826,7 @@ pixel_x = 2 }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Po" = ( /obj/item/stack/ore/glass{ @@ -6195,9 +5836,7 @@ /obj/item/stack/ore/glass{ pixel_x = -6 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Px" = ( /obj/item/stack/ore/gold{ @@ -6217,9 +5856,7 @@ dir = 9; icon_state = "ltrails_1" }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Pz" = ( /obj/effect/decal/cleanable/dirt, @@ -6231,17 +5868,14 @@ dir = 8 }, /obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "PE" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 8 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "PF" = ( /obj/structure/table, @@ -6268,9 +5902,13 @@ /area/awaymission/moonoutpost19/research) "PI" = ( /obj/structure/ore_box, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/main) +"PJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "PP" = ( /obj/item/stack/ore/silver{ @@ -6282,13 +5920,14 @@ /obj/structure/bed, /obj/item/bedsheet/syndie, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "PS" = ( -/obj/structure/bed/dogbed/runtime, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" +/obj/structure/bed/dogbed/runtime{ + name = "Jone's bed" }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "PU" = ( /turf/closed/indestructible/reinforced, @@ -6302,15 +5941,11 @@ "PY" = ( /obj/structure/alien/weeds, /obj/structure/flora/lunar_plant, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Qa" = ( /obj/item/stack/ore/titanium, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Qe" = ( /turf/closed/mineral/random/high_chance, @@ -6319,9 +5954,7 @@ /obj/machinery/power/shuttle_engine/propulsion/burst/right{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "Qg" = ( /obj/machinery/door/firedoor/closed, @@ -6347,23 +5980,17 @@ icon_state = "line"; rotation = 90 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Qo" = ( /obj/item/stack/ore/diamond, /obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Qp" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Qq" = ( /obj/machinery/door/airlock/medical{ @@ -6380,9 +6007,7 @@ "Qs" = ( /obj/structure/cable, /obj/structure/fluff/tram_rail/floor, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Qx" = ( /obj/effect/turf_decal/lunar_sand/plating, @@ -6392,16 +6017,19 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "QA" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg/burst, /obj/effect/decal/cleanable/blood, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) +"QB" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) "QG" = ( /obj/machinery/door/airlock/maintenance{ req_access = "201" @@ -6424,6 +6052,10 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"QN" = ( +/obj/structure/sign/warning/xeno_mining, +/turf/closed/wall, +/area/awaymission/moonoutpost19/research) "QQ" = ( /obj/structure/chair{ dir = 1 @@ -6463,20 +6095,12 @@ /obj/structure/sign/poster/contraband/hacking_guide/directional/east, /turf/open/floor/plating, /area/awaymission/moonoutpost19/syndicate) -"Re" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/syndicate) "Rk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/thinplating_new/light/corner{ dir = 4 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) "Rl" = ( /obj/structure/table, @@ -6504,10 +6128,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Rz" = ( /obj/effect/decal/cleanable/blood/splatter, @@ -6521,10 +6142,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "RJ" = ( /obj/machinery/disposal/bin, @@ -6536,17 +6154,21 @@ /obj/effect/turf_decal/sand, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"RM" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/research) "RP" = ( /obj/item/melee/baseball_bat, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"RT" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) "RW" = ( /obj/structure/fluff/minepost, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "RX" = ( /obj/item/cigbutt, @@ -6565,16 +6187,11 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/lunar_sand, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Sa" = ( /obj/item/trash/candy, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Sc" = ( /obj/effect/decal/cleanable/dirt, @@ -6602,10 +6219,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Si" = ( /obj/effect/turf_decal/tile/red, @@ -6616,7 +6230,7 @@ dir = 8 }, /obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "Sj" = ( /obj/item/radio/intercom/directional/west, @@ -6637,14 +6251,12 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Sn" = ( /obj/structure/lattice/catwalk, /obj/structure/tank_holder/extinguisher, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "So" = ( /obj/structure/window/reinforced/spawner/directional/north, @@ -6658,7 +6270,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Sp" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/south, @@ -6675,13 +6287,23 @@ dir = 5 }, /area/awaymission/moonoutpost19/research) +"Sq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/awaymission/moonoutpost19/arrivals) "Sv" = ( /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 8 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"Sw" = ( +/obj/structure/alien/weeds, +/mob/living/basic/alien/sentinel, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) "SD" = ( /obj/item/trash/can{ pixel_x = 7; @@ -6715,10 +6337,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area, /obj/structure/alien/weeds, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "SK" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -6729,10 +6348,12 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) +"SO" = ( +/obj/structure/cable, +/turf/open/floor/iron/white/side, +/area/awaymission/moonoutpost19/research) "SX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/purple{ @@ -6747,9 +6368,7 @@ /area/awaymission/moonoutpost19/research) "SZ" = ( /obj/structure/flora/rock/pile, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Td" = ( /obj/effect/turf_decal/stripes/line{ @@ -6772,10 +6391,7 @@ /area/awaymission/moonoutpost19/arrivals) "Th" = ( /obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Ti" = ( /obj/effect/decal/cleanable/dirt, @@ -6815,9 +6431,7 @@ /obj/machinery/power/shuttle_engine/propulsion/burst/left{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "TA" = ( /obj/structure/toilet{ @@ -6828,9 +6442,7 @@ "TB" = ( /obj/item/stack/sheet/mineral/wood, /obj/item/circular_saw, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "TE" = ( /obj/item/kirbyplants{ @@ -6842,10 +6454,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "TH" = ( /obj/structure/table, @@ -6867,7 +6476,7 @@ /area/awaymission/moonoutpost19/arrivals/shed) "TR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "TS" = ( /obj/item/cigbutt, @@ -6884,9 +6493,7 @@ normaldoorcontrol = 1; specialfunctions = 4 }, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) "Ue" = ( /obj/effect/decal/cleanable/dirt, @@ -6902,9 +6509,7 @@ "Uj" = ( /obj/structure/cable, /obj/structure/fluff/tram_rail/end, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Ul" = ( /obj/machinery/space_heater, @@ -6947,10 +6552,7 @@ dir = 4 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "Uw" = ( /obj/machinery/light/cold/directional/east, @@ -6973,16 +6575,18 @@ /mob/living/basic/alien/drone{ can_plant_weeds = 0 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) +"UM" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/main) "UO" = ( /obj/structure/closet/crate/miningcar{ desc = "A mining cart. It's caked with old basalt and lunar debris."; name = "mining car" }, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "US" = ( /turf/open/floor/carpet/orange, @@ -7024,13 +6628,11 @@ pixel_y = 6 }, /obj/item/ammo_casing/spent, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Vj" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/moon, /area/awaymission/moonoutpost19/syndicate) "Vl" = ( /obj/structure/chair/comfy/black{ @@ -7041,10 +6643,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "Vp" = ( /obj/effect/decal/cleanable/dirt, @@ -7078,37 +6677,30 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) +"Vw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/moonoutpost19/arrivals) "VH" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "VJ" = ( /obj/item/stack/ore/iron{ pixel_x = 7; pixel_y = -6 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "VM" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) -"VN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/syndicate) "VR" = ( /obj/machinery/door/airlock/external/ruin, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -7117,9 +6709,7 @@ "VS" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/blood/old, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "VT" = ( /obj/structure/closet/crate, @@ -7130,11 +6720,7 @@ /obj/effect/turf_decal/bot{ dir = 1 }, -/turf/open/floor/iron{ - dir = 1; - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "VU" = ( /obj/effect/decal/cleanable/blood/tracks{ @@ -7148,16 +6734,12 @@ pixel_x = 9; pixel_y = 8 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "VX" = ( /obj/item/stack/ore/iron, /obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "VY" = ( /obj/structure/table, @@ -7174,15 +6756,7 @@ /obj/structure/flora/rock/style_random{ pixel_y = -2 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, -/area/awaymission/moonoutpost19/main) -"Wh" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Wj" = ( /obj/structure/table/wood, @@ -7195,12 +6769,14 @@ }, /turf/open/floor/carpet/red, /area/awaymission/moonoutpost19/arrivals) +"Wo" = ( +/obj/effect/baseturf_helper/asteroid/moon, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/mines) "Ws" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Wu" = ( /obj/effect/decal/cleanable/dirt, @@ -7250,10 +6826,7 @@ /area/awaymission/moonoutpost19/arrivals) "WF" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/arrivals) "WP" = ( /obj/structure/table, @@ -7317,16 +6890,11 @@ /area/awaymission/moonoutpost19/research) "WZ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Xc" = ( /obj/machinery/light/small/directional/south, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/arrivals) "Xf" = ( /obj/machinery/light/small/directional/south, @@ -7368,9 +6936,7 @@ /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "Xw" = ( /obj/item/key/atv{ @@ -7393,12 +6959,14 @@ }, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals/shed) +"XE" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/main) "XH" = ( /obj/structure/lattice/catwalk, /obj/structure/tank_holder/emergency_oxygen, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "XM" = ( /turf/open/floor/iron/showroomfloor{ @@ -7407,9 +6975,7 @@ /area/awaymission/moonoutpost19/arrivals) "XO" = ( /obj/structure/alien/weeds/node, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/hive) "XP" = ( /obj/item/reagent_containers/cup/glass/trophy/gold_cup{ @@ -7417,7 +6983,7 @@ name = "first place trophy" }, /turf/closed/mineral/random, -/area/awaymission/moonoutpost19/mines) +/area/awaymission/inaccessible) "XQ" = ( /obj/effect/decal/cleanable/blood/tracks{ desc = "Your instincts say you shouldn't be following these."; @@ -7425,7 +6991,7 @@ icon_state = "ltrails_2" }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "XR" = ( /obj/effect/mapping_helpers/burnt_floor, @@ -7460,21 +7026,19 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Ye" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) "Yh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "Yk" = ( /obj/effect/turf_decal/sand, @@ -7492,9 +7056,7 @@ icon_state = "line"; rotation = 90 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Yt" = ( /obj/structure/chair/stool/directional/south, @@ -7531,10 +7093,7 @@ dir = 4 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "YJ" = ( /obj/structure/closet/emcloset, @@ -7543,7 +7102,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "YK" = ( /obj/structure/extinguisher_cabinet/directional/south, @@ -7570,9 +7129,7 @@ /obj/item/stack/ore/glass/basalt{ pixel_x = 6 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "YS" = ( /obj/machinery/shower{ @@ -7603,21 +7160,16 @@ /area/awaymission/moonoutpost19/syndicate) "YW" = ( /obj/structure/fence, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "YX" = ( /obj/structure/fence{ dir = 4 }, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/main) "Za" = ( /obj/structure/alien/weeds, -/obj/structure/cable, /turf/open/floor/iron/white/side, /area/awaymission/moonoutpost19/research) "Zg" = ( @@ -7658,14 +7210,12 @@ dir = 8 }, /obj/effect/turf_decal/stripes, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "Zs" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/blood/gibs/body, -/turf/open/misc/asteroid/moon{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/misc/asteroid/moon, /area/awaymission/moonoutpost19/mines) "Zx" = ( /obj/structure/chair/office, @@ -7683,15 +7233,14 @@ pixel_y = 6 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/arrivals) "ZA" = ( /obj/structure/chair{ dir = 1 }, /obj/structure/cable, +/obj/effect/baseturf_helper/asteroid/moon, /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) "ZB" = ( @@ -7701,16 +7250,13 @@ dir = 8 }, /obj/effect/turf_decal/lunar_sand/plating, -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, +/turf/open/floor/plating/moon, /area/awaymission/moonoutpost19/main) "ZC" = ( /obj/machinery/door/airlock/public/glass{ name = "Break Room" }, -/turf/open/floor/iron, +/turf/open/floor/iron/moon, /area/awaymission/moonoutpost19/syndicate) "ZH" = ( /obj/structure/chair{ @@ -7744,10 +7290,13 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airalarm/unlocked, -/turf/open/floor/wood{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" - }, +/turf/open/floor/wood/moon, /area/awaymission/moonoutpost19/syndicate) +"ZS" = ( +/obj/structure/alien/weeds, +/obj/effect/baseturf_helper/asteroid/moon, +/turf/open/misc/asteroid/moon, +/area/awaymission/moonoutpost19/hive) "ZT" = ( /obj/item/storage/box/lights/mixed, /obj/effect/decal/cleanable/dirt, @@ -7767,7 +7316,7 @@ /area/awaymission/moonoutpost19/research) "ZX" = ( /obj/effect/turf_decal/stripes, -/turf/open/misc/asteroid/basalt, +/turf/open/misc/asteroid/basalt/moon_air, /area/awaymission/moonoutpost19/main) "ZY" = ( /obj/structure/table, @@ -13494,76 +13043,76 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -13751,76 +13300,76 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -14008,76 +13557,76 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -14265,76 +13814,76 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -14522,98 +14071,98 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM IM IM IM @@ -14779,11 +14328,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -14842,13 +14391,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -15036,11 +14585,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -15099,13 +14648,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -15293,11 +14842,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -15356,13 +14905,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -15550,11 +15099,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -15613,13 +15162,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -15807,11 +15356,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -15870,13 +15419,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -16064,11 +15613,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -16127,13 +15676,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -16321,11 +15870,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -16384,13 +15933,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -16578,11 +16127,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -16641,13 +16190,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -16835,11 +16384,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb Qe Qe @@ -16898,13 +16447,13 @@ Qe tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -17092,11 +16641,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb Qe Qe @@ -17155,13 +16704,13 @@ Qe Qe tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -17349,11 +16898,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb Qe tb @@ -17412,13 +16961,13 @@ Qe Qe tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -17606,11 +17155,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -17669,13 +17218,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -17863,11 +17412,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -17926,13 +17475,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -18120,11 +17669,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -18183,13 +17732,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -18377,11 +17926,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -18440,13 +17989,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -18634,11 +18183,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -18697,13 +18246,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -18891,11 +18440,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -18954,13 +18503,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -19148,11 +18697,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb Qe @@ -19197,7 +18746,7 @@ BG tb tb tb -jp +RT mo tb tb @@ -19211,13 +18760,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -19405,11 +18954,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -19447,7 +18996,7 @@ tb tb tb tb -vE +sg tb tb tb @@ -19468,13 +19017,13 @@ Qe Qe Qe tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -19662,11 +19211,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -19725,13 +19274,13 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -19919,11 +19468,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -19982,13 +19531,13 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -20176,11 +19725,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -20239,13 +19788,13 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -20433,11 +19982,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -20496,13 +20045,13 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -20690,11 +20239,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -20729,7 +20278,7 @@ tv mo mo mo -jp +RT mo Dk mo @@ -20754,12 +20303,12 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -20947,11 +20496,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -21011,12 +20560,12 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -21204,11 +20753,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -21269,11 +20818,11 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -21461,11 +21010,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -21526,11 +21075,11 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -21718,11 +21267,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -21783,11 +21332,11 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -21975,11 +21524,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -22040,11 +21589,11 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -22232,11 +21781,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -22271,7 +21820,7 @@ tb tb tb mo -jp +RT tb Qe Qe @@ -22297,11 +21846,11 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -22489,11 +22038,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -22554,11 +22103,11 @@ tb tb Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -22746,11 +22295,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -22811,11 +22360,11 @@ tb tb Qe Qe -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae IM IM IM @@ -23003,11 +22552,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -23067,12 +22616,12 @@ tb tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -23260,11 +22809,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -23324,12 +22873,12 @@ tb tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -23517,11 +23066,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -23555,7 +23104,7 @@ Qe Qe vY mo -jp +RT mo mo tv @@ -23581,12 +23130,12 @@ tb tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -23774,11 +23323,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -23838,12 +23387,12 @@ tb tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae IM IM IM @@ -24031,11 +23580,11 @@ IM IM IM IM -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -24095,12 +23644,12 @@ tb tb Qe Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -24288,11 +23837,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -24352,12 +23901,12 @@ tb Qe Qe Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -24545,11 +24094,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -24587,7 +24136,7 @@ tb tb tb tb -jp +RT FB tb tb @@ -24609,12 +24158,12 @@ Qe Qe tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -24802,11 +24351,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -24866,12 +24415,12 @@ Qe tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -25059,11 +24608,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -25122,13 +24671,13 @@ Qe tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -25316,11 +24865,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -25379,13 +24928,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -25573,11 +25122,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -25616,7 +25165,7 @@ tb tb tb vE -jp +RT tb Qe Qe @@ -25636,13 +25185,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -25830,11 +25379,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -25893,13 +25442,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -26087,11 +25636,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -26150,13 +25699,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -26344,11 +25893,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -26407,13 +25956,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -26601,11 +26150,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -26644,7 +26193,7 @@ tb tb tb tb -jp +RT mo tv tb @@ -26664,13 +26213,13 @@ tb tb tb tb -zk -Qe -zk -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -26858,11 +26407,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -26921,13 +26470,13 @@ Qe tb tb tb -zk -Qe -Qe -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -27115,11 +26664,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -27178,13 +26727,13 @@ tb Qe Qe tb -zk -zk -Qe -Qe -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -27372,11 +26921,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -27435,13 +26984,13 @@ tb tb Qe Qe -zk -zk -zk -Qe -Qe -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -27629,11 +27178,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -27693,12 +27242,12 @@ tb tb Qe Qe -zk -zk -zk -zk -Qe -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -27886,11 +27435,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -27949,13 +27498,13 @@ tb tb tb tb -zk -Qe -zk -zk -zk -Qe -Qe +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -28143,11 +27692,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -28161,9 +27710,9 @@ tb tb tb tb -FA -FA -FA +tb +tb +tb tb tb tb @@ -28206,13 +27755,13 @@ Qe tb tb tb -zk -Qe -Qe -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae ae ae ae @@ -28400,11 +27949,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -28417,9 +27966,9 @@ tb tb tb tb -FA tb -FA +tb +tb tb tb tb @@ -28443,7 +27992,7 @@ tb tb tb eA -jp +RT tb tb tb @@ -28463,13 +28012,13 @@ tb Qe Qe tb -zk -zk -Qe -zk -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae dA dA dA @@ -28483,10 +28032,10 @@ dA dA dA dA -My +yV dA Wg -My +yV dA dA dA @@ -28657,11 +28206,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb Qe Qe @@ -28674,11 +28223,11 @@ tb tb tb tb -FA -FA -FA -FA -FA +tb +tb +tb +tb +tb tb tb tb @@ -28700,7 +28249,7 @@ tb tb tb tb -mo +Wo tb tb tb @@ -28720,13 +28269,13 @@ tb tb tb Qe -zk -zk -Qe -Qe -zk -zk -zk +tb +ae +ae +ae +ae +ae +ae dA dA dA @@ -28739,12 +28288,12 @@ dA dA dA Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA dA @@ -28754,7 +28303,7 @@ ac dA ac No -My +yV PS ac dA @@ -28914,11 +28463,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb Qe Qe @@ -28933,9 +28482,9 @@ tb tb tb tb -FA -FA -FA +tb +tb +tb tb tb tb @@ -28978,12 +28527,12 @@ tb tb Qe Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae dA dA dA @@ -28993,15 +28542,15 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -29010,10 +28559,10 @@ dA ac ac pB -My -My -My -My +yV +yV +yV +yV ac ac ac @@ -29171,11 +28720,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae Qe Qe Qe @@ -29189,14 +28738,14 @@ tb tb tb tb -FA -FA -FA tb tb tb tb -zk +tb +tb +tb +tb tb tb tb @@ -29235,12 +28784,12 @@ tb tb tb Qe -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae dA dA dA @@ -29248,29 +28797,29 @@ dA dA dA dA -My +yV Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ac ac -My -My +yV +yV HP -My -My -My +yV +yV +yV ac ac dA @@ -29452,8 +29001,8 @@ tb tb tb tb -zk -zk +tb +tb mo sn mo @@ -29491,10 +29040,10 @@ tb tb tb tb -zk -Qe -zk -zk +tb +ae +ae +ae tb tb tb @@ -29503,30 +29052,30 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ac ac -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV ac dA dA @@ -29684,31 +29233,31 @@ dA dA dA dA -My +yV Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Qe Qe -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb vE mo Aq @@ -29720,69 +29269,69 @@ mo mo sn mo -jp +RT mo mo mo mo mo -jp +RT mo mo -zk -zk -zk -zk -Qe -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb Qe -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb Qe -zk -zk +tb +tb +tb +tb +tb +tb +tb +ae +ae +ae tb tb dA dA dA dA -My +yV dA Wg -My -My -My -My +yV +yV +yV +yV Wg dA -My +yV Wg ac Wg -My -My -My -My +yV +yV +yV +yV Wg dA ac -My -My -My -My -My +yV +yV +yV +yV +yV ac ac dA @@ -29939,114 +29488,114 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb sn oC -zk -zk -zk +tb +tb +tb Qe -zk -zk -zk -zk +tb +tb +tb +tb vE mo mo -zk -zk -zk -zk -zk -zk -zk -zk -zk -Qe -Qe -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb Qe Qe -zk -zk +tb +tb +tb +tb +tb +tb Qe -zk -zk -zk -zk -zk Qe -zk +tb +tb +tb +tb +tb +tb +tb +ae +ae +ae tb tb dA dA dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA ac -My +yV ac dA ac Wg -My -My -My -My +yV +yV +yV +yV dA ac ac Po -My -My +yV +yV ac ac dA dA dA Wg -My -My +yV +yV dA dA dA @@ -30194,103 +29743,103 @@ dA dA dA dA -My +yV Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg +yV +yV My -My -dh -My -My -My +yV +yV +yV dA dA tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb mo mo -zk -zk -zk -zk +tb +tb +tb +tb Qe -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb mo mo -zk -zk -zk -zk -zk -zk -zk -zk -Qe +tb +tb +tb +tb +tb +tb +tb +tb Qe Qe -zk -zk -zk -zk -zk -zk -zk Qe +tb +tb +tb +tb +tb +tb +tb Qe -zk -zk -zk -zk -zk -zk -zk Qe -zk +tb +tb +tb +tb +tb +tb +ae +ae +ae tb tb dA dA dA Wg -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV ac dA ac ac dA ac -My -My -My -My +yV +yV +yV +yV dA dA ac @@ -30300,19 +29849,19 @@ dA dA dA dA -My -My -My -My -My +yV +yV +yV +yV +yV dA dA dA dA dA Wg -My -My +yV +yV dA dA dA @@ -30450,93 +29999,93 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV NU -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA dA tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb sn mo -zk -zk -zk -zk +tb +tb +tb +tb Qe -zk -zk -zk -zk +tb +tb +tb +tb mo mo -zk -zk -zk -zk -zk -zk -zk -zk -Qe +tb +tb +tb +tb +tb +tb +tb +tb Qe Qe -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk Qe -zk +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb Qe -zk -zk -zk -zk +tb Qe -zk +tb +tb +tb +tb +tb +tb tb dA dA dA -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Wg ac -My +yV ac dA ac @@ -30545,9 +30094,9 @@ ac ac ac Wg -My -My -My +yV +yV +yV Wg dA dA @@ -30556,20 +30105,20 @@ ac dA dA dA -My +yV Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV Wg dA dA @@ -30707,22 +30256,22 @@ ac dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -30730,67 +30279,67 @@ dA tb tb tb -zk -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb mo tv -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -mo -zk -zk -zk -zk -zk -zk -zk -zk -Qe +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +mo +tb +tb +tb +tb +tb +tb +tb +tb Qe -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk Qe +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb Qe Qe Qe -zk -zk -zk -zk Qe -zk +tb +tb +tb +tb +tb +tb tb dA dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV ac ac ac @@ -30800,33 +30349,33 @@ dA ac ac Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +XE dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -30963,33 +30512,33 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA tb tb -zk -zk -zk +tb +tb +tb tb tb tb @@ -31018,37 +30567,37 @@ Qe Qe tb tb -zk -zk -zk -zk -zk -zk -zk tb tb tb -zk -Qe -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb +tb +tb Qe tb tb +tb +tb +tb +tb +tb +tb dA dA dA Wg -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Wg dA ac @@ -31056,35 +30605,35 @@ dA ac dA Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg Wg +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My +yV +yV +yV Wg -My -My -My -My -My +yV +yV +yV +yV +yV dA dA dA @@ -31219,34 +30768,34 @@ ac dA dA dA -My +yV Wg +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -dh -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA dA dA tb -zk -zk +tb +tb tb tb tb @@ -31276,12 +30825,12 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb +tb tb tb tb @@ -31297,50 +30846,50 @@ tb dA dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV sZ dA dA @@ -31475,35 +31024,35 @@ ac ac dA dA -My +yV NU Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA -zk -zk +tb +tb tb tb tb @@ -31553,51 +31102,51 @@ tb tb dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ac dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV lc Jc Jc Jc lc -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Ia PU Bu @@ -31733,39 +31282,39 @@ dA dA dA Wg -My -My -My -My -My +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA dA -zk tb tb tb tb -zk +tb +tb mo tb tb @@ -31811,37 +31360,37 @@ tb dA dA Wg -My +yV GU -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV lc lc mp @@ -31849,12 +31398,12 @@ mG mV lc lc -My -My +yV +yV Wg -My -My -My +yV +yV +yV Qs PU Cz @@ -31989,35 +31538,35 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +dA dA dA dA -ae tb tb tb @@ -32066,39 +31615,39 @@ tb tb tb dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg +yV +yV +yV +yV My +yV +yV +yV +yV My +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV ld lW mb @@ -32106,12 +31655,12 @@ mc mb nf ld -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Ia PU wQ @@ -32246,52 +31795,52 @@ dA dA Qp vs -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV NU -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My +yV +yV +yV Wg dA dA dA tb -zk -zk tb -zk +tb +tb +tb mo tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -32299,11 +31848,11 @@ mo mo mo mo -zk -zk -zk -zk -zk +tb +tb +tb +tb +tb tb tb tb @@ -32323,28 +31872,28 @@ tb tb tb dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV eI eJ eJ @@ -32354,8 +31903,8 @@ eI eI eJ eI -My -My +yV +yV ld lX mq @@ -32363,12 +31912,12 @@ mr mW lX ld +yV +yV My -My -My -My +yV Wg -My +yV Qs PU us @@ -32503,74 +32052,74 @@ dA Qp Qp vs -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA -zk -zk +tb +tb tb eA tv tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae mo mo -zk -zk -zk +ae +ae +ae mo mo mo -zk -zk -zk +tb +tb +tb sn tb -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -32581,17 +32130,17 @@ tb dA dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI eI eI @@ -32599,9 +32148,9 @@ eJ eI eJ eJ -My -My -My +yV +yV +yV eJ WX op @@ -32611,8 +32160,8 @@ op rL op eI -My -My +yV +yV ld ld ld @@ -32620,12 +32169,12 @@ mH ld ld ld -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Qs PU Xw @@ -32748,7 +32297,7 @@ bl bl um um -fY +ZS fY fY fY @@ -32760,74 +32309,74 @@ Qp NG PY vs -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +dA +dA dA dA dA dA -ae -ae dA Wg Wg +dA +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk vE -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae vE mo eA mo mo -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -32837,18 +32386,18 @@ tb dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI uZ Nj @@ -32868,8 +32417,8 @@ dZ dZ op eJ -My -My +yV +yV ld lZ mr @@ -32877,19 +32426,19 @@ mr mr lZ ld -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Qs PU CY cy iJ Qj -cy +ua Bu dA dA @@ -33017,41 +32566,67 @@ vs Mf vs vs -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +dA +dA dA dA dA +dA +dA +My +dA +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae -dA ae -My ae ae ae @@ -33059,32 +32634,6 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk tb tb tb @@ -33094,18 +32643,18 @@ dA dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eJ pM jQ @@ -33126,7 +32675,7 @@ dZ zB eJ hI -My +yV ld ma mc @@ -33134,12 +32683,12 @@ mr mc ng ld -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Uj PU Bn @@ -33274,41 +32823,64 @@ vs vs vs vs -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV HG dA dA dA +dA +dA +dA +dA +Wg +dA +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae -dA ae -Wg ae ae ae @@ -33319,50 +32891,27 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk tb tb tb -dA +tb ae ae ae dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My +yV eJ Uh Nj @@ -33383,7 +32932,7 @@ ea Cs Kp hI -My +yV Jc mb ms @@ -33391,12 +32940,12 @@ mI ms mb Jc -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV xm PU wF @@ -33531,42 +33080,42 @@ NG vs vs vs -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV +dA +dA +dA dA dA -ae -ae dA -ae yJ -ae +dA ae ae ae @@ -33600,26 +33149,26 @@ ae ae ae ae -dA -dA -dA +tb +tb +tb ae ae ae dA dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eJ vK Nj @@ -33632,15 +33181,15 @@ ea qM rO rO -rO +ev rO oA ea YD lG -oq +Jf iM -My +yV ld mc mt @@ -33648,12 +33197,12 @@ mI mt mc ld +yV +yV +yV +yV My -My -My -My -My -My +yV Dy OT rl @@ -33661,10 +33210,10 @@ Ot Ot Ot Ot -Ng +XE dA Wg -My +yV dA dA ac @@ -33787,43 +33336,43 @@ dA Qp PY vs -dh -My -My -My -My -My -My -My -My My +yV +yV +yV +yV +yV +yV +yV +yV +yV NU -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +dA +dA dA dA -ae -ae dA RW -My -ae +yV +dA ae ae ae @@ -33842,7 +33391,7 @@ ae dA dA dA -My +yV dA dA ds @@ -33857,26 +33406,26 @@ ae ae ae ae -dA -dA -dA +tb +tb +tb ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI OO op @@ -33894,10 +33443,10 @@ on aq dZ bn -lG +yw jN iM -My +yV ld md ms @@ -33905,22 +33454,22 @@ mI ms nh ld -My -My -My +yV +yV +yV Wg -My -My -My +yV +yV +yV ur +yV My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA dA @@ -34044,43 +33593,43 @@ dA Qp vs vs -My -My -My +yV +yV +yV NU -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV QS dA dA -ae -ae dA -My +CU +dA +yV Wg -ae +dA ae ae ae @@ -34096,16 +33645,16 @@ dA dA dA dA -My +yV Wg -My -My +yV +yV Wg dA -My -My +yV +yV dA -My +yV dA ae ae @@ -34114,26 +33663,26 @@ ae ae ae ae -dA -dA -dA +tb +tb +tb ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eJ eI eJ @@ -34144,17 +33693,17 @@ eI op ea In -Nt +Bd yp yF zI Sp ea eD -qh +jO oq iM -My +yV Jc mc mc @@ -34162,22 +33711,22 @@ mr mc mc Jc -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV rK -My -My -My -My -My -Ng -My -My +yV +yV +yV +yV +yV +XE +yV +yV dA dA dA @@ -34300,44 +33849,44 @@ dA Qp Qp vs -My -My -My -My +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Il oa -My -My +yV +yV Iv Io yJ -ae +yV vf -My -My -ae +yV +yV +dA ae ae ae @@ -34348,20 +33897,20 @@ ae dA dA dA -My +yV Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV SZ -My -My -My +yV +yV +yV dA dA LG @@ -34377,20 +33926,20 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI op op @@ -34420,22 +33969,22 @@ mb me ld lc -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV ur -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My +yV +yV dA dA dA @@ -34555,46 +34104,46 @@ ac dA dA Qp -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV SZ -ae -My -My +dA +yV +yV LK Wg -ae -ae +dA +dA ae ae ae @@ -34602,28 +34151,28 @@ ae ae dA dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV SZ -My -My -My -My +yV +yV +yV +yV Wg dA dA LG -My +yV jx -My +yV dA dA LG @@ -34634,20 +34183,20 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI MQ ea @@ -34677,21 +34226,21 @@ mY lD lD ld -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV ur -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -34811,79 +34360,79 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV QS -My -My -My +yV +yV +yV +dA +dA +dA +dA dA -ae -ae dA -ae -ae ae ae ae ae ae dA -My +yV Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Gm -My -My -My -My +yV +yV +yV +yV dA Wg -My -My -My -My -My +yV +yV +yV +yV +yV LG -My +yV Wg LG ae @@ -34891,20 +34440,20 @@ ae ae dA Wg -My -My -My -My yV -My yV -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV eI op ea @@ -34934,22 +34483,22 @@ ld Qf Tz lc -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV ur -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -35069,40 +34618,40 @@ ac dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -ae +dA ae ae ae @@ -35114,65 +34663,65 @@ ae ae dA Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV SZ -My -My +yV +yV SZ -My -My +yV +yV dA LG -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My -My +yV +yV +yV LG dA ae dA dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV eJ ZU dZ NL -Ov +RM Rz Zx pH Rq ik -OC +aF aJ tE PG @@ -35182,31 +34731,31 @@ Hk qh jN iM -My -My -My +yV +yV +yV iM BK iM -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV ur -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -35325,40 +34874,40 @@ ac ac dA dA +yV +yV +yV +yV My -My -My -My -dh -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV NU -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My +yV +yV +yV +yV +yV ae ae ae @@ -35369,53 +34918,53 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG -My +yV dA dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dZ dZ ea @@ -35428,7 +34977,7 @@ WD nL iB Rq -ik +sB OC aJ Um @@ -35439,32 +34988,32 @@ of TS oq hI -My -My -My +yV +yV +yV iM mJ iM -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV ur -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA dA @@ -35582,40 +35131,40 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -35625,54 +35174,54 @@ ae ae ae dA -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV QS -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV SZ dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG dA -My +yV dA -My -My +yV +yV Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea ed et @@ -35709,18 +35258,18 @@ hI hI hI Dl -My -My +yV +yV ur -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -35838,41 +35387,41 @@ ac ac dA dA -My -My -My -My -My +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -35881,65 +35430,65 @@ ae ae ae dA -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV QS QS QS -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA -My +yV YX -My +yV dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV os kd -Ov -Ky +Lx +SO ah aQ nx zl fo -OC +aF OC OC fk @@ -35969,16 +35518,16 @@ gg Bz Bz ur -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -36095,39 +35644,39 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA -My +yV Wg dA dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg dA ae @@ -36138,54 +35687,54 @@ ae ae dA Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV QS -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Lf -My -My -My +yV +yV +yV dA LG -My -My -My -My +yV +yV +yV +yV QS -My -My -My -My +yV +yV +yV +yV dA -My -My +yV +yV dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm os ZA @@ -36198,7 +35747,7 @@ Xp Dx cb fk -fk +Pl fk fP ge @@ -36225,18 +35774,18 @@ sx OS ur ur -ur -My -My -My -My -My -My -My -My -My +PJ +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA ac @@ -36353,59 +35902,59 @@ ac dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -ae -ae -ae -ae -ae -ae +yV +yV +yV +yV +yV +yV +yV +yV +ae +ae +ae +ae +ae +ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm xm @@ -36414,35 +35963,35 @@ xm xm Ff Ff -My -My +yV +yV Wg dA -My -My -My +yV +yV +yV QS QS QS -My -My +yV +yV LG dA -My -My +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ZJ ea ea @@ -36480,18 +36029,18 @@ wV ug hI jZ -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -36609,39 +36158,39 @@ ac ac dA dA -My -My -My -My -My +yV +yV +yV +yV +yV NU Wg -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg Gd YW LG -My +yV Wg LG LG -My +yV Wg Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg dA ae @@ -36650,19 +36199,19 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm IP IP @@ -36672,20 +36221,20 @@ IP Au Ff xm -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV QS -My -My -My +yV +yV +yV dA -My -My +yV +yV xm al xm @@ -36701,9 +36250,9 @@ xm xm xm xm -My -My -My +yV +yV +yV ea OA Ti @@ -36727,30 +36276,30 @@ hJ hJ hJ iM -My +yV yY -My -My -My +yV +yV +yV hI hI hI hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ac @@ -36866,25 +36415,25 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV LG ti -My +yV ti YW YW @@ -36895,10 +36444,10 @@ dA dA dA dA -My -My -My -My +yV +yV +yV +yV dA ae ae @@ -36907,19 +36456,19 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm IP aO @@ -36930,37 +36479,37 @@ Au Bz xm xm -My -My -My +yV +yV +yV dA Wg -My -My -My +yV +yV +yV Wg dA -My -My +yV +yV xm xm dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea tQ Ti @@ -36975,38 +36524,38 @@ fk fk qz dZ -My -My +yV +yV hJ yg ij hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV Wg -My -My -My +yV +yV +yV Wg dA dA @@ -37123,39 +36672,39 @@ ac ac dA dA +yV +yV +yV +yV My -My -My -My -dh -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Gd LG LG -My -My -My -My -My +yV +yV +yV +yV +yV Wg -My -My +yV +yV Wg -My +yV LG dA -My -My -My -My +yV +yV +yV +yV dA ae ae @@ -37163,19 +36712,19 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Lf xm IP @@ -37185,7 +36734,7 @@ CP Bq Au Bz -My +yV xm xm xm @@ -37200,71 +36749,71 @@ xm xm xm xm -My +yV dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -dZ -pL -cL -kd -fc -fk -lz -dZ -lP -fk -fk -fk +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +dZ +pL +cL +kd +fc +fk +lz +dZ +lP +fk +fk +fk Xm dZ -My -My +yV +yV iM -lG -qm +LD +NS vB -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -37380,33 +36929,33 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My +yV +yV Wg -My +yV YX -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg LG dA @@ -37420,21 +36969,21 @@ ae ae dA Wg -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm Ff -My +yV IP wc ZY @@ -37442,36 +36991,36 @@ CP qY Au Bz -My -My -My -My +yV +yV +yV +yV Bz -My -My +yV +yV xm -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV xm xm dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV dZ dZ ea @@ -37489,39 +37038,39 @@ fk fP kD ea -My -My +yV +yV iM -lG +LD xB HN -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My +yV +yV +yV +yV +yV dA dA dA @@ -37637,34 +37186,34 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA LG ti -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG LG dA @@ -37676,22 +37225,22 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm Bz -My +yV IP VY Uw @@ -37699,36 +37248,36 @@ Qx vj Au XH -My -My -My -My +yV +yV +yV +yV Bz -My -My +yV +yV xm -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea zi zi @@ -37737,7 +37286,7 @@ wi dY kH eJ -eI +QN eJ ea TH @@ -37746,38 +37295,38 @@ FI GX rD ea -My -My +yV +yV iM vr cv Zz vg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +UM +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My +yV +yV Wg dA dA @@ -37894,61 +37443,61 @@ ac ac dA dA +yV +yV +yV +yV My -My -My -My -dh -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV LG LG -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA -My +yV ae ae ae dA -My -My -My -My -My -My -My -oY -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +oY +yV +yV +yV +yV xm xm -My +yV Bz -My +yV IP IP IP @@ -37956,36 +37505,36 @@ IO Au Au Sn -My -My -My -My +yV +yV +yV +yV Bz -My -My +yV +yV xm -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dZ BI BI @@ -38003,38 +37552,38 @@ ea ea dZ ea -My +yV Xc hI Lk vd hI gO -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -38152,34 +37701,34 @@ ac dA dA Wg -My -My -My -My -My +yV +yV +yV +yV +yV NU -My -My -My -My -My +yV +yV +yV +yV +yV LG LG -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV kp -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg LG dA @@ -38189,17 +37738,17 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm hX @@ -38221,28 +37770,28 @@ Bz Bz Bz Ff -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm dA dA -My -My -My yV -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dZ ei Bg @@ -38250,47 +37799,47 @@ vU fl fC fk -fk +Pl fk gX dZ -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV vB -lG +LD dF iM -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV uF -My +yV Py Hd -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -38408,98 +37957,98 @@ ac ac dA dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My -My -My +yV +yV +yV +yV Wg LG -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV IA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV LG -My -My +yV +yV dA ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Gm -My +yV aL -My -My +yV +yV aL -My +yV Bz -My -My -My +yV +yV +yV Ff -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm Lf YX +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV ea ef cp @@ -38511,25 +38060,25 @@ OR NR EY MM -My -My -My -My -My +yV +yV +yV +yV +yV DQ -My +yV lA jS wu -qm +NS iM -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV hI vB Df @@ -38537,19 +38086,19 @@ vB vB vB vB -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA dA @@ -38665,36 +38214,36 @@ ac ac dA dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My +yV +yV +yV +yV +yV CL -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV KF -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -38702,38 +38251,38 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My -My +yV +yV aL -My +yV aL aL aL aL aL aL -My -My -My +yV +yV +yV Bz -My -My -My +yV +yV +yV Ff Bz Bz @@ -38745,18 +38294,18 @@ Bz Bz ur CL +yV My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dZ NJ Nq @@ -38768,25 +38317,25 @@ SE Nq Jd ea -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV vB -lG +ys yK iM -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV hI Fi XQ @@ -38794,18 +38343,18 @@ Vl Mt kI vB -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My +yV +yV +yV dA dA dA @@ -38923,60 +38472,60 @@ ac dA dA dA +yV +yV +yV +yV My -My -My -My -dh -My -My -My -My -My +yV +yV +yV +yV +yV Wg YX -My -My -My -My -My -My -My -Ng -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +XE +yV +yV +yV +yV +yV +yV +yV +yV Wg LG -My -My +yV +yV dA ae ae dA Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Lf Bz Bz -My -My -My +yV +yV +yV wj aL aL @@ -38985,35 +38534,35 @@ aL aL wj aL -My -My +yV +yV Bz -My -My -My +yV +yV +yV Lf -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Lf YX -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea ea ea @@ -39025,12 +38574,12 @@ gu ea ea ea -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV hJ hI hI @@ -39052,16 +38601,16 @@ WF xB vB vB -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -39180,35 +38729,35 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG dA dA @@ -39216,22 +38765,22 @@ dA ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My +yV aL aL ZX @@ -39245,32 +38794,32 @@ aL aL aL Bz -My -My -My +yV +yV +yV xm -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea el er @@ -39282,11 +38831,11 @@ gv gM ha ea -My -My -My -My -My +yV +yV +yV +yV +yV Xc hJ AG @@ -39296,7 +38845,7 @@ iD zc iK eT -nN +am nN yi Dp @@ -39309,17 +38858,17 @@ dF Do lu vB -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -39439,57 +38988,57 @@ dA dA dA Wg -My -My -My -My -My -My -My -My -Wg -LG -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg LG -ae -ae -ae -ae -ae -dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg +LG +ae +ae +ae +ae +ae +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My -My +yV +yV UO ZX aL @@ -39500,34 +39049,34 @@ aL ZX aL aL -My +yV Bz -My -My -My +yV +yV +yV xm +yV +yV +yV +yV My -My -My -My -My -My -My -My +yV +yV +yV YX -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea em eB @@ -39539,12 +39088,12 @@ en Mj eq ea -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV iM GK MG @@ -39566,18 +39115,18 @@ qN Os TE vB -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -39695,58 +39244,58 @@ aU aU dA dA +yV +yV +yV My -My -My -dh -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV LG -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA -My +yV ae ae ae dA -My -My -My -My -My +yV +yV +yV +yV +yV ui -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz aL -My +yV aL ZX aL @@ -39757,34 +39306,34 @@ wj ZX aL aL -My +yV Bz -My -My -My +yV +yV +yV xm -My -My -My +yV +yV +yV QS -My -My -My -My +yV +yV +yV +yV Jb is -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea en en @@ -39796,12 +39345,12 @@ eq en eq vG -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV iM yj MG @@ -39824,16 +39373,16 @@ hI hI hJ gO -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -39951,33 +39500,33 @@ bv ak aU OM -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV Wg LG -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg LG dA @@ -39986,24 +39535,24 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My -My +yV +yV aL ZX aL @@ -40016,32 +39565,32 @@ aL aL aL Bz -My -My -My +yV +yV +yV xm -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV YX -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ec eo eq @@ -40053,12 +39602,12 @@ eq en FC ec -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV hJ YO qm @@ -40078,18 +39627,18 @@ vR yP YF hI -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg Wg dA @@ -40208,59 +39757,59 @@ pE pA sU Yu -Wh -My -My -My -My -My -My -My -My -My -My -My +UM +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA LG -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV LG LG -My +yV dA dA ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm -My +yV Bz -My -My +yV +yV aL ZX aL @@ -40271,34 +39820,34 @@ aL ZX aL aL -My +yV Bz -My -My -My +yV +yV +yV xm My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea ep eq @@ -40310,8 +39859,8 @@ eq eQ hc ea -My -My +yV +yV hI hI hJ @@ -40335,19 +39884,19 @@ xb EK Am hJ -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -40464,20 +40013,20 @@ aU pZ ns aU -dA -My -My -My -My -My -My +xP +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg LG LG @@ -40500,23 +40049,23 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV QS -My -My +yV +yV xm -My +yV Bz -My +yV aL aL ZX @@ -40530,32 +40079,32 @@ aL aL aL Bz -My -My -My +yV +yV +yV xm -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Jb -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea eq eF @@ -40567,8 +40116,8 @@ eq en eq ea -My -My +yV +yV hI qK hJ @@ -40592,19 +40141,19 @@ hJ hJ hJ hJ -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -40723,59 +40272,59 @@ aU aU dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA Wg -My -My +yV +yV Wg Wg Wg -My -My -My +yV +yV +yV Wg LG dA Wg -My +yV NU dA ae ae dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV QS QS QS -My +yV xm -My +yV Bz -My -My -My +yV +yV +yV aL aL aL @@ -40785,34 +40334,34 @@ aL aL aL aL -My +yV Bz -My -My +yV +yV xm xm -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea er em @@ -40824,8 +40373,8 @@ en eB eq ea -My -My +yV +yV hJ pP hI @@ -40849,19 +40398,19 @@ je xu hI dt -My -My -My +yV +yV +yV OK PE mm nJ -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg dA dA @@ -40981,26 +40530,26 @@ dA dA dA Wg +yV My -dh -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA -My +yV Wg -My +yV LG LG dA @@ -41009,31 +40558,31 @@ dA dA dA dA -My +yV dA ae ae ae dA Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV QS -My -My +yV +yV xm -My +yV Bz -My -My -My -My +yV +yV +yV +yV aL aL aL @@ -41041,35 +40590,35 @@ aL aL aL ui -My -My +yV +yV Bz -My +yV My xm QS -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA Wg -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea el eH @@ -41081,8 +40630,8 @@ eH eq eq ea -My -My +yV +yV hI tA sJ @@ -41094,7 +40643,7 @@ Ll HD hJ hJ -Gp +Sq jh aM yz @@ -41112,14 +40661,14 @@ pg Uv rx fb -My +yV AQ -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA ac @@ -41237,96 +40786,96 @@ ac ac dA dA -My -My -My -My -My -My -My -My -Wg -My -My -My -My -My -My -My -My -My -My -My -Wh -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +UM +yV +yV +yV +yV +yV dA dA -My -My +yV +yV dA ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm Bz -My +yV oY -My -My +yV +yV aL aL Bz Bz Bz aL -My -My -My +yV +yV +yV Bz -My +yV xm xm -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ea ea ea @@ -41338,8 +40887,8 @@ vp ea ea ea -My -My +yV +yV hI kC Ur @@ -41363,19 +40912,19 @@ GR pf hJ fs -My -My -My +yV +yV +yV rU YI fs -My +yV Sa -My -My -My -My -My +yV +yV +yV +yV +yV Wg dA dA @@ -41478,8 +41027,8 @@ TR TR ut So -rk -VN +WZ +JF at kk WZ @@ -41494,35 +41043,35 @@ ac ac dA dA +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My +yV +yV +yV +yV dA dA ae @@ -41530,73 +41079,73 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Lf Ff -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Bz XV Bz -My -My -My +yV +yV +yV aL Bz Ff Lf -My +yV dA -My -My +yV +yV Wg dA -My -My -My -My +yV +yV +yV +yV ti dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI hI hI @@ -41610,8 +41159,8 @@ rB hI Ue hI -My -My +yV +yV hI zK Gp @@ -41619,19 +41168,19 @@ hI hJ hJ hJ -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -41735,8 +41284,8 @@ EN Jz Vj AC -Re -Re +Yh +Yh Lp xd EP @@ -41752,54 +41301,54 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My +yV dA -My +yV dA ae ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ln Ff Bz @@ -41816,7 +41365,7 @@ Bz Bz ln xm -My +yV Wg dA dA @@ -41824,36 +41373,36 @@ dA dA dA dA -My -My -My -My +yV +yV +yV +yV Jb -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI qi Kh @@ -41867,43 +41416,43 @@ uN hJ Gp hI -My -My +yV +yV hI lC hI hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -Wg -dA -dA -ac -ac -ac -ac -ac -ac -ae -ae -ae -ae -ae +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg +dA +dA +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae ae ae IM @@ -41992,7 +41541,7 @@ TR OV Od Mh -gm +JQ YJ at JS @@ -42009,34 +41558,34 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ae @@ -42044,36 +41593,36 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm -My +yV Bz -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV xm xm -My -My +yV +yV dA LG dA @@ -42082,35 +41631,35 @@ LG LG dA dA -My -My -My +yV +yV +yV YX -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI YS Qr @@ -42122,32 +41671,32 @@ BC mf uo hJ -Gp +Sq hJ -My -My +yV +yV rU YI FQ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ac @@ -42267,33 +41816,33 @@ ac dA dA Wg +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV Wg -My +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ae @@ -42302,72 +41851,72 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV xm xm Bz -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV xm xm My -My +yV dA dA dA -My +yV Wg -My -My +yV +yV LG Wg dA -My -My +yV +yV dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI hI Qm @@ -42383,27 +41932,27 @@ nS hJ hJ hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -42523,115 +42072,115 @@ ac ac dA dA -dh -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -Wh -My My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +UM +yV +yV ae ae ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -xm -Lf -xm -xm -xm -xm -xm -xm -xm -xm -My -My -Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +xm +Lf +xm +xm +xm +xm +xm +xm +xm +xm +yV +yV +Wg dA LG -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI hJ hJ hJ fw -sL +cG Vt Ca eG @@ -42640,27 +42189,27 @@ sL Yt Rm hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA dA @@ -42780,36 +42329,36 @@ ac ac dA RW -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -42818,72 +42367,72 @@ ae ae dA Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV dA LG Wg -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV YX -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV iM pT yr @@ -42897,27 +42446,27 @@ eG sL Rm hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA ac @@ -43036,37 +42585,37 @@ ac ac ac ac -dh +My dA Wg -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV Wg +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -43075,105 +42624,105 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA -My -My -My -My -My +yV +yV +yV +yV +yV aL -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -iM -RX -mZ -eG -sL -sL -yo +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +iM +RX +mZ +eG sL +jW +yo sL +jW sL eG kP hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -43292,37 +42841,37 @@ ac ac ac ac -My -My +yV +yV dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg ae ae @@ -43332,76 +42881,76 @@ ae ae ae dA -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA LG -My -My -My -My +yV +yV +yV +yV aL yq aL -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV iM AZ QQ -xs +sD yt xs qk @@ -43411,26 +42960,26 @@ Bb Te hI hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -43549,40 +43098,40 @@ ac ac ac ac -My +yV ac dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -43590,70 +43139,70 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My -My +yV +yV dA dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg dA LG Wg QS -My -My -My +yV +yV +yV aL -My +yV QS -My -My -My -My +yV +yV +yV +yV Wg dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Xc hJ hJ @@ -43667,28 +43216,28 @@ hJ zf hJ hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA ac @@ -43805,41 +43354,41 @@ ac ac ac ac -My -My +yV +yV ac dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My +yV +yV +yV ae ae ae @@ -43848,71 +43397,71 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA -My +yV dA dA dA dA +yV +yV +yV +yV My -My -My -My -My -My +yV dA dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV QS QS QS -My -My +yV +yV LG dA dA Gd -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hJ hJ Jl @@ -43925,26 +43474,26 @@ lR lR hJ hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -44061,42 +43610,42 @@ ac ac ac ac +yV My -dh ac ac ac dA dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ae ae ae @@ -44106,14 +43655,14 @@ ae ae ae dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -44121,55 +43670,55 @@ dA dA dA dA -My -My -My -My -My +yV +yV +yV +yV +yV dA dA LG -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV QS -My -My -My +yV +yV +yV LG dA -My +yV YX -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA Wg -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hJ iU iX @@ -44182,25 +43731,25 @@ lR lS mD iM -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -44317,8 +43866,8 @@ ac ac ac ac -My -My +yV +yV ac ac ac @@ -44326,35 +43875,35 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -44363,14 +43912,14 @@ ae ae ae dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -44378,85 +43927,85 @@ dA dA dA dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA LG -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA -My +yV dA Gd -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA dA -My -My -My -My -My -My -My -My -My -My -hI -GH -jn -BL -MC -GA -iX +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +hI +GH +jn +BL +MC +GA +Vw es lS lR mE iM -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -44573,8 +44122,8 @@ ac ac ac ac -My -My +yV +yV ac ac ac @@ -44583,35 +44132,35 @@ ac ac dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -44621,72 +44170,72 @@ ae ae ae dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA XR dA -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV Wg dA dA LG Wg -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV LG dA -My -My -My +yV +yV +yV YX DS -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV hI GH -iX +Vw AE kq Sc @@ -44696,25 +44245,25 @@ lR lR mF iM -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA ac @@ -44830,7 +44379,7 @@ ac ac ac ac -dh +My ac ac ac @@ -44841,34 +44390,34 @@ ac dA dA dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -44880,67 +44429,67 @@ ae ae dA Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA LG -My -My -My +yV +yV +yV Wg LG dA dA cr -My +yV Wg dA dA dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA dA dA Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV hJ iX iX @@ -44954,22 +44503,22 @@ ml hI hI gO -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -45087,7 +44636,7 @@ ac ac ac RW -My +yV ac ac ac @@ -45099,33 +44648,33 @@ ac dA dA Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -45137,67 +44686,67 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My +yV +yV +yV Wg dA -My -My -My +yV +yV +yV LG LG dA dA bf -My +yV RP dA -My -My +yV +yV YX -My -My -My -My -My -My -My -My -My -Wg -dA -dA -dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg dA dA dA -My -My -My -My -My -My -My -My +dA +dA +dA +yV +yV +yV +yV +yV +yV +yV +yV hI iY jo @@ -45209,25 +44758,25 @@ su hJ hJ hI -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My +yV dA dA ac @@ -45338,14 +44887,14 @@ ac ac ac ac +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -dh ac ac ac @@ -45356,32 +44905,32 @@ ac dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA ae @@ -45395,66 +44944,66 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA -My +yV dA dA dA -My -My -My -My -My +yV +yV +yV +yV +yV ru dA dA dA dA -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hJ hJ hI @@ -45462,26 +45011,26 @@ iM hJ hJ hJ -XM +oe XM Co hJ -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -45598,8 +45147,8 @@ ac ac ac ac -My -My +yV +yV ac ac YR @@ -45614,33 +45163,33 @@ ac dA dA dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA ae ae @@ -45653,28 +45202,28 @@ ae ae ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -45685,60 +45234,60 @@ fi fi fi cF -My -My +yV +yV Wg dA dA dA Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV hI rP XM rM hJ -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV SD Wg -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV dA dA dA @@ -45854,8 +45403,8 @@ ac ac ac ac -My -My +yV +yV ac ac ac @@ -45872,32 +45421,32 @@ dA dA dA Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -45912,92 +45461,349 @@ ae ae dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV YX Gz -My +yV Ym -My -My -My -My +yV +yV +yV +yV Qn -My +yV dA dA dA dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +hI +FH +tk +WS +hI +yV +yV +yV +yV +yV +yV +yV +dA +dA +dA +yV +yV +yV +yV +yV +Wg +dA +dA +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ae +ae +ae +ae +ae +ae +ae +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +"} +(150,1,1) = {" +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +ae +ae +ae +ae +ac +ac +ac +ac +ac +ac +ac +ac +ac +yV +ac +ac +ac +ac +ac +ac +ac +RW +yV +yV +ac +ac +ac +ac +VU +ac +ac +ac +ac +ac +ac +ac +ac +ac +dA +dA +dA +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +dA +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +QS +YX +Ob +yV +Ym +yV +yV +yV +yV +Ym +yV +iA +TB +dA +dA +dA +yV +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +hJ +hJ +hJ hI -FH -tk -WS hI -My -My -My -My -My -My -My -dA +yV +yV +yV +yV +yV +yV +Wg dA dA -My -My -My -My -My +yV +yV +yV +yV Wg dA dA +dA +dA ac ac ac @@ -46074,7 +45880,7 @@ IM IM IM "} -(150,1,1) = {" +(151,1,1) = {" IM IM IM @@ -46100,23 +45906,24 @@ ac ac ac ac +VJ +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV ac -My -ac -ac -ac -ac -ac -ac -ac -RW -My -My ac ac ac +QS +LQ ac -VU ac ac ac @@ -46130,31 +45937,30 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -46169,88 +45975,87 @@ ae ae ae ae +ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -QS +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV YX Ob -My +yV Ym -My -My -My -My +yV +yV +yV +yV Ym -My -iA -TB +yV +yV +yV +ib +Wg +dA dA dA dA -My -Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -hJ -hJ -hJ -hI -hI -My -My -My -My -My -My Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA +yV +yV +yV +yV +yV dA -My -My -My -My -Wg dA dA dA @@ -46268,6 +46073,7 @@ ac ac ac ac +ac ae ae ae @@ -46331,7 +46137,7 @@ IM IM IM "} -(151,1,1) = {" +(152,1,1) = {" IM IM IM @@ -46357,23 +46163,23 @@ ac ac ac ac -VJ -My -My -My -My -My -My -My -My -My -My +ac +ac +ac +ac +ac +ac +yV +ac +ac +ac +ac ac ac ac ac QS -LQ +SK ac ac ac @@ -46389,29 +46195,30 @@ dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA ae ae @@ -46427,85 +46234,82 @@ ae ae ae ae +ae dA -dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV YX -Ob -My +yV +yV Ym -My -My -My -My +yV +yV +yV +yV Ym -My -My -My +yV +yV +yV ib -Wg dA dA dA dA -Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My dA -My -My -My -My -My +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg dA dA dA @@ -46525,6 +46329,8 @@ ac ac ac ac +ac +ac ae ae ae @@ -46588,7 +46394,7 @@ IM IM IM "} -(152,1,1) = {" +(153,1,1) = {" IM IM IM @@ -46620,56 +46426,56 @@ ac ac ac ac -My -ac -ac -ac -ac -ac -ac -ac -ac -QS -SK -ac -ac -ac -ac +RW ac ac ac ac ac ac -dA -dA -dA -dA -dA -dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +ac +ac +QS +Ph +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +dA +dA +dA +dA +dA +dA +dA +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg +yV +yV +yV +yV +yV +yV +yV My +yV +yV +yV dA ae ae @@ -46686,80 +46492,78 @@ ae ae ae ae +ae dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +dA +yV +yV +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV YX -My -My -Ym -My -My -My -My -Ym -My -My -My +yV +yV +Dw +fi +fi +fi +fi +Dw +yV +yV +yV ib dA dA +ac dA dA dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +Wg +yV +Wg +yV +yV +yV +yV +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg dA dA @@ -46782,6 +46586,8 @@ ac ac ac ac +ac +ac ae ae ae @@ -46845,7 +46651,7 @@ IM IM IM "} -(153,1,1) = {" +(154,1,1) = {" IM IM IM @@ -46877,7 +46683,7 @@ ac ac ac ac -RW +yV ac ac ac @@ -46887,7 +46693,8 @@ ac ac ac QS -Ph +sC +yV ac ac ac @@ -46898,35 +46705,34 @@ ac ac ac ac +ac +ae dA dA dA dA dA -dA -dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My dA ae ae @@ -46944,36 +46750,35 @@ ae ae ae ae +ae +ae dA dA +dA +yV +yV +yV +Bz My -My -Wg -My -My -My -My -My -My -My -My -My -My -My -My -YX -My -My -Dw -fi -fi -fi -fi -Dw -My -My -My -ib +Bz +Bz +Bz +Bz +yV +yV +yV +dU +yV +yV +yV +yV +yV +yV +yV +yV +yV +MF +dA dA dA ac @@ -46981,41 +46786,40 @@ dA dA dA dA -Wg -My -Wg -My -My -My -My -Wg -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -Wg +dA +dA +yV +dA +yV +yV +yV +yV +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV dA dA dA @@ -47039,6 +46843,8 @@ ac ac ac ac +ac +ac ae ae ae @@ -47102,7 +46908,7 @@ IM IM IM "} -(154,1,1) = {" +(155,1,1) = {" IM IM IM @@ -47134,7 +46940,7 @@ ac ac ac ac -My +yV ac ac ac @@ -47143,10 +46949,10 @@ ac ac ac ac -QS +yV sC -My -ac +yV +pj ac ac ac @@ -47158,33 +46964,36 @@ ac ac ac ae +ae +ae +ae dA dA -dA -dA -dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -Wg -My -My -My -Wg -dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +mo +pm +tb +ae +ae ae ae ae @@ -47206,76 +47015,73 @@ ae dA dA dA -My -My -My -Bz -My -Bz -Bz -Bz +ad +ri +ad +ri +yV Bz -My -My -My -dU -My -My -My -My -My -My -My -My -My -MF +yV +yV +yV +AY +yV +yV +NM +IX +wt +wt +IB +yV dA dA dA ac +ac +ac +ac +ac dA dA dA dA dA dA -My dA -My -My -My -My +Wg +yV dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +dA +yV +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +Wg +yV +yV +yV +yV +yV +yV +yV +Wg +yV +yV +Wg dA dA dA dA dA +dA +ac ac ac ac @@ -47359,7 +47165,7 @@ IM IM IM "} -(155,1,1) = {" +(156,1,1) = {" IM IM IM @@ -47391,7 +47197,6 @@ ac ac ac ac -My ac ac ac @@ -47400,11 +47205,12 @@ ac ac ac ac -My +RW +yV sC -My -pj -ac +yV +yV +yV ac ac ac @@ -47418,33 +47224,33 @@ ae ae ae ae +ae dA dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +dA +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV mo -pm +Db +rX tb -zk -zk +ae +ae ae ae ae @@ -47465,25 +47271,23 @@ ae ae dA dA -dA -ad -ri -ad -ri -My -Bz -My -My -My -AY -My -My -NM -IX -wt -wt -IB -My +mo +tb +mo +tb +AT +Ig +OY +Wg +yV +yV +YX +zh +yV +yV +yV +yV +Wg dA dA dA @@ -47492,6 +47296,10 @@ ac ac ac ac +ac +ac +ac +ac dA dA dA @@ -47499,32 +47307,21 @@ dA dA dA dA -Wg -My dA dA -My -Wg -My -My -My -My -My -My -My -My -My +dA +dA +yV +yV Wg -My -My -My -My -My -My -My +yV +dA Wg -My -My +dA +yV +yV +dA +yV Wg dA dA @@ -47532,6 +47329,15 @@ dA dA dA dA +dA +dA +dA +dA +dA +dA +dA +ac +ac ac ac ac @@ -47616,7 +47422,7 @@ IM IM IM "} -(156,1,1) = {" +(157,1,1) = {" IM IM IM @@ -47656,12 +47462,12 @@ ac ac ac ac -RW -My +yV +yV sC -My -My -My +PI +yV +yV ac ac ac @@ -47676,32 +47482,30 @@ ae ae ae ae +ae dA dA dA -dA -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My -My +Wg +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +yV +Lm +ri +ad +mo mo Db -rX tb -zk -zk ae ae ae @@ -47720,25 +47524,24 @@ ae ae ae ae -dA -dA -mo +ae +ae +tb +tb tb +sn +mo mo tb -AT -Ig -OY -Wg -My -My +tb +tb +tb +tb +tb YX -My -My -My -My -My +yV Wg +zu dA dA dA @@ -47751,6 +47554,14 @@ ac ac ac ac +ac +ac +ac +ac +ac +ac +ac +dA dA dA dA @@ -47762,18 +47573,9 @@ dA dA dA dA -My -My -Wg -My dA -Wg dA -My -My dA -My -Wg dA dA dA @@ -47787,6 +47589,10 @@ dA dA dA dA +dA +ac +ac +ac ac ac ac @@ -47873,7 +47679,7 @@ IM IM IM "} -(157,1,1) = {" +(158,1,1) = {" IM IM IM @@ -47913,12 +47719,12 @@ ac ac ac ac -My -My -sC -PI -My -My +ro +yV +qj +yV +yV +yV ac ac ac @@ -47934,65 +47740,63 @@ ae ae ae ae +ae +ae dA dA dA +dA +yV +yV +yV +yV +yV +yV +yV +yV +yV Wg -My -My -My -My -My -My -My -My -My -My -My -My -Lm -ri -ad +tb +tb +tb +Db +RT mo mo -Db tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb +ae tb -sn +mo +mo mo mo tb tb tb tb -tb -tb -YX -My -Wg -My +dA +dA dA dA dA @@ -48012,6 +47816,14 @@ ac ac ac ac +ac +ac +ac +ac +ac +ac +ac +ac dA dA dA @@ -48030,17 +47842,11 @@ dA dA dA dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA +ac +ac +ac +ac +ac ac ac ac @@ -48130,7 +47936,7 @@ IM IM IM "} -(158,1,1) = {" +(159,1,1) = {" IM IM IM @@ -48170,12 +47976,12 @@ ac ac ac ac -ro -My -qj -My -My -My +ac +LA +hR +lB +AD +yV ac ac ac @@ -48193,56 +47999,56 @@ ae ae ae ae +ae dA dA dA dA -My -My -My -My -My -My -My -My -My +yV +yV Wg +yV +yV +yV +yV +dA +dA tb tb tb -Db +mo mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae +tb tb mo mo mo -mo -tb +sn tb tb tb @@ -48275,24 +48081,24 @@ ac ac ac ac -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA -dA +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -48387,7 +48193,7 @@ IM IM IM "} -(159,1,1) = {" +(160,1,1) = {" IM IM IM @@ -48428,11 +48234,11 @@ ac ac ac ac -LA -hR -lB -AD -My +ac +kX +Aj +ac +ac ac ac ac @@ -48451,69 +48257,69 @@ ae ae ae ae +ae +ae +ae +dA +dA +dA +dA dA dA dA dA -My -My -Wg -My -My -My -My dA dA tb tb tb -mo +tb mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae tb tb mo mo +RT mo -sn tb tb tb -dA -dA -dA -dA -dA -ac -ac -ac -ac -ac -ac +tb +tb +tb +tb +tb +Ep +Ep +Ep +Ep +Ep +Ep ac ac ac @@ -48644,7 +48450,7 @@ IM IM IM "} -(160,1,1) = {" +(161,1,1) = {" IM IM IM @@ -48686,8 +48492,8 @@ ac ac ac ac -kX -Aj +ac +ac ac ac ac @@ -48711,7 +48517,7 @@ ae ae ae ae -dA +ae dA dA dA @@ -48723,41 +48529,41 @@ dA dA tb tb +ae tb -tb -mo +vE mo mo +vE tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae tb tb +tb +tb +vE mo mo -mo -mo -tb tb tb tb @@ -48901,7 +48707,7 @@ IM IM IM "} -(161,1,1) = {" +(162,1,1) = {" IM IM IM @@ -48969,53 +48775,53 @@ ae ae ae ae +ae +ae +ae dA dA dA dA dA -dA -dA -dA -dA +ae tb +ae +ae tb -zk tb -vE mo mo -vE +mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae tb tb tb +ae tb -vE mo mo -tb +JH tb tb tb @@ -49158,7 +48964,7 @@ IM IM IM "} -(162,1,1) = {" +(163,1,1) = {" IM IM IM @@ -49229,51 +49035,51 @@ ae ae ae ae -dA -dA -dA -dA -dA ae -tb -zk -zk -tb +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo +RT mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae tb tb tb -zk +ae +tb tb mo mo -JH -tb +mo tb tb tb @@ -49415,7 +49221,7 @@ IM IM IM "} -(163,1,1) = {" +(164,1,1) = {" IM IM IM @@ -49492,267 +49298,10 @@ ae ae ae ae -zk -zk -zk -zk -tb -mo -mo -mo -mo -tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -tb -tb -zk -tb -tb -tb -zk -tb -tb -mo -mo -mo -tb -tb -tb -tb -tb -Ep -Ep -Ep -Ep -Ep -Ep -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 -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 -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ae -ae -ae -ae -ae -ae -ae -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -"} -(164,1,1) = {" -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -ae -ae -ae -ae -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 -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae ae ae ae ae -ae -ae -ae -ae -ae -ae -ae -zk -zk -zk -zk tb tb mo @@ -49760,34 +49309,34 @@ mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb -zk +ae tb tb tb -zk +ae tb -zk +ae tb sn -mo +RT vE tb tb @@ -50006,11 +49555,11 @@ ae ae ae ae -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb sn @@ -50018,30 +49567,30 @@ mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb -zk +ae tb tb tb -zk +ae tb -zk +ae tb tb mo @@ -50263,42 +49812,42 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae vE mo mo mo vE tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb -zk +ae tb tb tb -zk +ae tb -zk +ae tb tb mo @@ -50520,42 +50069,42 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae tb tb mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb -zk +ae tb -zk +ae tb tb tb @@ -50777,49 +50326,49 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo -mo +RT mo tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb -zk +ae tb -zk +ae tb tb tb tb vE mo -mo +RT mo tb Ep @@ -51034,15 +50583,15 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -51050,26 +50599,26 @@ mo mo sn tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb -zk +ae tb tb tb @@ -51090,8 +50639,8 @@ Ep Ep Ep Ep -zk -zk +ae +ae ae ae ae @@ -51291,16 +50840,16 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -51309,24 +50858,24 @@ mo mo tb tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb tb tb tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb -zk +ae tb tb tb @@ -51347,8 +50896,8 @@ Ep Ep Ep Ep -zk -zk +ae +ae ae ae ae @@ -51548,16 +51097,16 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb vE @@ -51566,24 +51115,24 @@ mo mo vE tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tm pS tb tb tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb -zk +ae tb tb tb @@ -51604,12 +51153,12 @@ Ep Ep Ep Ep -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -51805,42 +51354,42 @@ ae ae ae ae -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo -mo +RT mo mo tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb mO pS tb tb tb -zk +ae tb tb -zk -zk +ae +ae tb -zk +ae tb tb tb @@ -51861,12 +51410,12 @@ Ep Ep Ep Ep -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -52062,18 +51611,18 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -52081,7 +51630,7 @@ mo mo mo tb -zk +ae tb tb tb @@ -52091,13 +51640,13 @@ pS tb tb tb -zk +ae tb tb -zk -zk +ae +ae tb -zk +ae tb tb tb @@ -52118,12 +51667,12 @@ Ep Ep Ep Ep -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae ae ae ae @@ -52319,26 +51868,26 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo mo mo tb -zk +ae tb JH pS @@ -52348,14 +51897,14 @@ pS tm tb tb -zk +ae tb tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -52375,29 +51924,29 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -52576,19 +52125,19 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb vE @@ -52605,14 +52154,14 @@ pS JH tb tb -zk +ae tb tb tb -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -52632,29 +52181,29 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae ae ae ae @@ -52833,20 +52382,20 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -52862,16 +52411,16 @@ tb pS tb tb -zk +ae tb tb tb -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae tb tb tb @@ -52879,7 +52428,7 @@ tb tb tb mo -mo +RT FK tb tb @@ -52889,29 +52438,29 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -53090,21 +52639,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo sn @@ -53123,12 +52672,12 @@ tb tb tb tb +ae zk -tb -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -53146,29 +52695,29 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -53347,29 +52896,29 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo +RT mo mo -mo -mo +tb tb JH mo @@ -53380,12 +52929,12 @@ mo tb tb tb -zk +ae XP -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -53403,29 +52952,29 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -53604,30 +53153,30 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo mo mo mo -mo +tb tb tb tm @@ -53637,12 +53186,12 @@ mo mo tb tb +ae zk -tb -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -53668,21 +53217,21 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -53861,24 +53410,24 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -53895,11 +53444,11 @@ pS sn tb tb -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae tb tb tb @@ -53927,19 +53476,19 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -54118,31 +53667,31 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb vE mo mo mo -mo +RT vE tb tb @@ -54154,10 +53703,10 @@ pS CW tb tb -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -54185,18 +53734,18 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -54375,25 +53924,25 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -54413,8 +53962,8 @@ tb tb tb tb -zk -zk +ae +ae tb tb tb @@ -54422,7 +53971,7 @@ tb tb tb sn -mo +Wo mo pS tb @@ -54445,15 +53994,15 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -54632,27 +54181,27 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -54670,8 +54219,8 @@ tb tb tb tb -zk -zk +ae +ae tb tb tb @@ -54681,7 +54230,7 @@ tb tb mo sq -mo +RT FK tb tb @@ -54693,9 +54242,9 @@ zY pS vz nw -pS +Sw nw -pS +Lt zY tb tb @@ -54703,14 +54252,14 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -54889,27 +54438,27 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -54927,10 +54476,10 @@ tb tb tb tb -zk -zk -zk -zk +ae +ae +ae +ae tb tb tb @@ -54960,14 +54509,14 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -55146,28 +54695,28 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -55185,9 +54734,9 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -55218,13 +54767,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -55403,35 +54952,35 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb tb mo -mo +RT mo mo tb @@ -55442,9 +54991,9 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -55475,13 +55024,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -55660,30 +55209,30 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -55699,9 +55248,9 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -55724,21 +55273,21 @@ nw nw nw nw -KA pS pS pS +QB zY tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -55917,29 +55466,29 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb @@ -55958,7 +55507,7 @@ tb tb tb tb -zk +ae tb tb tb @@ -55977,7 +55526,7 @@ pS pS pS pS -pS +Lt nw JH pS @@ -55989,13 +55538,13 @@ zY tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -56174,28 +55723,28 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -56215,7 +55764,7 @@ tb tb tb tb -zk +ae tb tb tb @@ -56223,7 +55772,7 @@ tb tb vE pS -mo +RT Vi mo tb @@ -56246,13 +55795,13 @@ zY tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -56431,27 +55980,27 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb vE @@ -56472,7 +56021,7 @@ tb tb tb tb -zk +ae tb tb tb @@ -56489,7 +56038,7 @@ zY pS pS nw -pS +QB nw pS nw @@ -56499,17 +56048,17 @@ pS JH pS pS -pS +Lt zY tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -56688,26 +56237,26 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -56727,9 +56276,9 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -56760,13 +56309,13 @@ KA pS zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -56945,25 +56494,25 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -56972,7 +56521,7 @@ mo mo mo mo -mo +RT mo mo mo @@ -56984,9 +56533,9 @@ tb tb tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -57017,13 +56566,13 @@ pS pS zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -57202,25 +56751,25 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -57238,16 +56787,16 @@ mo mo tb tb -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae tb tb FK -mo +RT mo tb tb @@ -57274,13 +56823,13 @@ nw pS zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -57459,29 +57008,29 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo FK -mo +RT mo tb tb @@ -57489,15 +57038,15 @@ eA mo mo mo -mo +sn tb mo mo tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -57525,19 +57074,19 @@ pS pS pS pS -pS +QB nw JH pS zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -57716,23 +57265,23 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb vE @@ -57746,15 +57295,15 @@ mo mo mo mo -sn +tb tb mo FK tb tb -zk -zk -zk +ae +ae +ae tb tb tb @@ -57788,13 +57337,13 @@ pS pS zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -57973,23 +57522,23 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -58008,14 +57557,14 @@ vE mo mo tb -zk -zk +ae +ae tb tb tb tb tb -mo +RT mo mo tb @@ -58045,13 +57594,13 @@ pS vz zY tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -58230,22 +57779,22 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -58265,8 +57814,8 @@ mo mo tb tb -zk -zk +ae +ae tb tb tb @@ -58296,19 +57845,19 @@ pS pS pS pS -pS +QB nw pS zY tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -58487,22 +58036,22 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb sn mo @@ -58522,8 +58071,8 @@ mo sn tb tb -zk -zk +ae +ae tb tb FK @@ -58559,13 +58108,13 @@ zY tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -58744,149 +58293,149 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -tb -mo -mo -mo -mo -tb -tb -tb -tb -FK -mo -mo -uc -tb -FK -mo -mo -tb -zk -tb -tb -tb -mo -mo -mo -tb -tb -tb -tb -tb -tb -tb -tb -tb -tb -tb -eA -mo -mo -mo -mo -mo -mo -mo -mo -mo -pS -pS -zY -tb -tb -tb -tb -tb -tb -tb -zk -zk -zk -zk -zk -zk -zk -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM -IM +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tb +mo +mo +mo +mo +tb +tb +tb +tb +FK +mo +mo +uc +tb +FK +mo +mo +tb +ae +tb +tb +tb +mo +mo +mo +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +tb +eA +mo +mo +mo +mo +mo +mo +mo +mo +mo +pS +pS +zY +tb +tb +tb +tb +tb +tb +tb +ae +ae +ae +ae +ae +ae +ae +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM +IM IM IM IM @@ -59001,21 +58550,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -59035,7 +58584,7 @@ mo mo eA tb -zk +ae tb tb CW @@ -59073,13 +58622,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -59258,26 +58807,26 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb sn mo mo -mo +RT mo tb tb @@ -59295,7 +58844,7 @@ tb tb mo mo -mo +RT mo mo tb @@ -59330,13 +58879,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -59515,21 +59064,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -59587,13 +59136,13 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -59772,21 +59321,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb FK mo @@ -59804,7 +59353,7 @@ tb tb mo mo -mo +RT mo mo mo @@ -59843,14 +59392,14 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -60029,21 +59578,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -60067,47 +59616,47 @@ mo tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -60286,21 +59835,21 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -60324,47 +59873,47 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -60543,35 +60092,35 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb vE mo mo mo -mo +RT CW tb tb tb tb eA -mo +RT mo mo tb @@ -60581,47 +60130,47 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -60800,22 +60349,22 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -60826,7 +60375,7 @@ mo mo mo mo -mo +RT mo mo sn @@ -60838,47 +60387,47 @@ tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -61057,23 +60606,23 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb mo mo @@ -61088,54 +60637,54 @@ mo mo tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -61314,23 +60863,23 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -61344,55 +60893,55 @@ mo mo FK tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -61571,24 +61120,24 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb mo @@ -61600,56 +61149,56 @@ tb mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -61828,25 +61377,25 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb FK @@ -61857,56 +61406,56 @@ mo mo mo tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -62085,94 +61634,94 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -tb -tb -vE -mo -mo -mo -mo -tb -tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -IM -IM -IM -IM -IM -IM -IM -IM -IM +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +tb +tb +vE +mo +mo +mo +mo +tb +tb +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +IM +IM +IM +IM +IM +IM +IM +IM +IM IM IM IM @@ -62342,85 +61891,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae tb tb tb tb tb tb -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -62599,85 +62148,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -62856,85 +62405,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -63113,85 +62662,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -63370,85 +62919,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM @@ -63627,85 +63176,85 @@ IM IM IM IM -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk -zk +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae IM IM IM diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm index 8ed5f7f5fcb5..f480983e5806 100644 --- a/_maps/RandomZLevels/museum.dmm +++ b/_maps/RandomZLevels/museum.dmm @@ -21,6 +21,9 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/cafeteria, /area/awaymission/museum/cafeteria) +"ag" = ( +/turf/closed/indestructible/fakeglass, +/area/awaymission/museum/inaccessible) "ai" = ( /obj/structure/railing{ dir = 8 @@ -40,7 +43,7 @@ /area/awaymission/museum) "ap" = ( /turf/cordon, -/area/awaymission/museum) +/area/misc/cordon) "as" = ( /obj/machinery/conveyor{ dir = 1 @@ -82,7 +85,7 @@ }, /obj/machinery/light/small/dim/directional/south, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "aK" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/preopen, @@ -118,12 +121,16 @@ /obj/structure/closet/crate/bin, /turf/open/floor/wood/large, /area/awaymission/museum) +"aZ" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced, +/area/awaymission/museum) "bg" = ( /obj/structure/signpost{ name = "if youre reading this you stink and also made by jimmyl" }, /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "bi" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/dark_blue{ @@ -224,6 +231,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark/textured_large, /area/awaymission/museum) +"bP" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/rock, +/area/awaymission/museum) "bQ" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/effect/decal/cleanable/dirt, @@ -370,7 +381,7 @@ }, /obj/machinery/light/floor, /turf/open/floor/iron, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "cW" = ( /obj/machinery/computer/old, /turf/open/floor/circuit/green, @@ -446,7 +457,7 @@ range = 2; target_turf_y = -4 }, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "dL" = ( /obj/structure/sink/directional/west, /turf/open/floor/wood/tile, @@ -482,7 +493,7 @@ hat = /obj/item/clothing/head/helmet/space }, /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "dZ" = ( /obj/structure/lattice/catwalk/mining, /turf/open/chasm/true/no_smooth, @@ -610,7 +621,7 @@ id = "nothing" }, /turf/open/floor/iron, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "eO" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral/opposingcorners, @@ -685,7 +696,7 @@ /area/awaymission/museum/cafeteria) "fn" = ( /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "fo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -698,7 +709,7 @@ force = -200 }, /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "fy" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/dark_blue{ @@ -812,7 +823,7 @@ }, /obj/machinery/light/small/dim/directional/south, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "gE" = ( /obj/item/clothing/suit/caution, /turf/open/floor/iron/white/small, @@ -942,7 +953,7 @@ "hE" = ( /obj/machinery/light/floor, /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "hM" = ( /turf/closed/wall/rock/porous, /area/awaymission/museum) @@ -1093,7 +1104,7 @@ "iU" = ( /obj/machinery/telecomms/relay/preset/auto, /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "iV" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing{ @@ -1122,7 +1133,7 @@ facedir = 1 }, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "jf" = ( /mob/living/basic/mothroach, /turf/open/floor/wood/large, @@ -1345,7 +1356,7 @@ "kQ" = ( /obj/structure/fluff/meteor, /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "kX" = ( /obj/structure/girder/displaced, /obj/structure/railing{ @@ -1510,11 +1521,12 @@ /turf/open/floor/iron/dark, /area/awaymission/museum) "mj" = ( +/obj/effect/mapping_helpers/no_tele_turf, /turf/open/mirage{ range = 2; target_turf_y = 4 }, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "ml" = ( /obj/structure/table/wood, /obj/item/food/hotcrossbun, @@ -1527,6 +1539,10 @@ }, /turf/open/chasm/true/no_smooth, /area/awaymission/museum) +"mo" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced/titanium/nodiagonal, +/area/awaymission/museum) "ms" = ( /turf/open/floor/iron, /area/awaymission/museum/cafeteria) @@ -1610,6 +1626,10 @@ }, /turf/open/floor/engine, /area/awaymission/museum) +"no" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/reinforced, +/area/awaymission/museum/cafeteria) "nq" = ( /obj/structure/table/wood, /obj/item/paper/fluff/jobs/security/court_judgement, @@ -1693,7 +1713,7 @@ facedir = 1 }, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "nH" = ( /obj/structure/fluff/minepost, /obj/effect/turf_decal/siding{ @@ -1968,6 +1988,10 @@ /obj/item/pickaxe/drill/diamonddrill, /turf/open/misc/grass, /area/awaymission/museum/mothroachvoid) +"qf" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron, +/area/awaymission/museum/inaccessible) "qj" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -2099,7 +2123,7 @@ /area/awaymission/museum) "re" = ( /turf/cordon/secret, -/area/awaymission/museum) +/area/misc/cordon) "rm" = ( /turf/open/indestructible/plating, /area/awaymission/museum) @@ -2171,7 +2195,7 @@ "rP" = ( /obj/item/clothing/mask/gas/clown_hat, /turf/open/floor/iron, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "rQ" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/dark_blue{ @@ -2235,7 +2259,7 @@ sentience_type = 2 }, /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "sm" = ( /obj/effect/turf_decal/siding/dark_blue{ dir = 8 @@ -2591,7 +2615,7 @@ "uT" = ( /obj/effect/spawner/structure/window/reinforced/shuttle/indestructible, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "uY" = ( /turf/open/floor/iron, /area/awaymission/museum) @@ -2704,6 +2728,9 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/dark, /area/awaymission/museum) +"vX" = ( +/turf/closed/indestructible/reinforced/titanium/nodiagonal, +/area/awaymission/museum/inaccessible) "vZ" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/entertainment/toy, @@ -2910,7 +2937,7 @@ }, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "xB" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt/dust, @@ -3016,11 +3043,11 @@ dir = 10 }, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "yq" = ( /obj/structure/fluff/meteor/large, /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "yr" = ( /mob/living/basic/mothroach, /obj/structure/chair/comfy, @@ -3075,7 +3102,7 @@ }, /obj/structure/fluff/fokoff_sign, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "yM" = ( /obj/machinery/door/poddoor{ id = "gatewayfake" @@ -3096,7 +3123,7 @@ /area/awaymission/museum) "yS" = ( /turf/closed/wall/space, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "zc" = ( /obj/structure/railing, /obj/effect/turf_decal/stripes, @@ -3121,7 +3148,7 @@ dir = 9 }, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "zr" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing{ @@ -3137,14 +3164,14 @@ "zA" = ( /obj/effect/mapping_helpers/ztrait_injector/museum, /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "zC" = ( /obj/machinery/vending/boozeomat, /turf/open/floor/wood/tile, /area/awaymission/museum) "zE" = ( -/turf/closed/indestructible/rock, -/area/awaymission/museum) +/turf/closed/indestructible/reinforced, +/area/awaymission/museum/inaccessible) "zG" = ( /mob/living/basic/statue/mannequin{ dir = 8; @@ -3413,6 +3440,12 @@ }, /turf/open/floor/mineral/titanium/blue, /area/awaymission/museum) +"BB" = ( +/obj/machinery/door/poddoor{ + id = "gatewayfake" + }, +/turf/open/indestructible/plating, +/area/awaymission/museum/inaccessible) "BF" = ( /turf/open/misc/beach/coast{ dir = 6 @@ -3648,7 +3681,7 @@ /area/awaymission/museum) "DD" = ( /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "DE" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/dark_blue{ @@ -3684,7 +3717,7 @@ "DT" = ( /obj/structure/broken_flooring/side/always_floorplane/directional/south, /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "DU" = ( /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ dir = 1 @@ -4033,6 +4066,12 @@ }, /turf/open/floor/iron/cafeteria, /area/awaymission/museum/cafeteria) +"GD" = ( +/turf/open/mirage{ + range = 2; + target_turf_y = 4 + }, +/area/awaymission/museum/inaccessible) "GE" = ( /obj/structure/plaque/static_plaque/golden/commission/meta, /turf/open/floor/mineral/gold, @@ -4144,7 +4183,7 @@ id = "nothing" }, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Hw" = ( /obj/machinery/computer/terminal/museum{ content = list("Early 1970s, 1978 - With the introduction of the microprocessor in the early 1970s, the world of computers became accessible to the masses via the introduction of the personal computer. Seizing on the opportunity to expand their horizons, Trasen-Knox would introduce their first personal computer, the TKC Personal Computer, in 1978, becoming a household name as well as the favourite computer producer of scientific groups in North America.") @@ -4275,6 +4314,9 @@ }, /turf/open/floor/grass, /area/awaymission/museum) +"ID" = ( +/turf/open/chasm, +/area/awaymission/museum/inaccessible) "IF" = ( /obj/structure/table/wood, /obj/effect/spawner/random/food_or_drink/refreshing_beverage, @@ -4442,7 +4484,7 @@ dir = 8 }, /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "JY" = ( /turf/open/floor/iron/stairs{ dir = 8 @@ -4536,7 +4578,7 @@ /area/awaymission/museum) "Lm" = ( /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Lp" = ( /obj/machinery/status_display/random_message{ firstline_to_secondline = list(NO="LITTERING", "YOU ARE"="BEING WATCHED", "DO NOT TOUCH"="THE EXHIBITS") @@ -4998,7 +5040,7 @@ dir = 1 }, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "PN" = ( /obj/structure/girder/bronze, /turf/open/floor/bronze/flat, @@ -5069,7 +5111,7 @@ dir = 4 }, /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Qf" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/decal/cleanable/dirt/dust, @@ -5081,7 +5123,7 @@ "Qi" = ( /obj/effect/spawner/structure/window/reinforced/indestructible, /turf/open/indestructible/plating, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Qj" = ( /obj/structure/hedge, /obj/effect/turf_decal/siding/wood, @@ -5167,11 +5209,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark/textured_large, /area/awaymission/museum) +"QO" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/wood, +/area/awaymission/museum) "QP" = ( /obj/effect/playeronly_barrier, /obj/machinery/door/airlock/public/glass, /turf/open/floor/iron, -/area/awaymission/museum) +/area/awaymission/museum/mothroachvoid) "QU" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/broken_flooring/side/always_floorplane{ @@ -5221,6 +5267,12 @@ dir = 4 }, /area/awaymission/museum) +"Rn" = ( +/obj/machinery/conveyor{ + dir = 1 + }, +/turf/open/indestructible/plating, +/area/awaymission/museum/inaccessible) "Rq" = ( /obj/structure/fluff/fake_camera{ dir = 5 @@ -5296,7 +5348,7 @@ baseturf = /turf/open/indestructible/plating }, /turf/open/floor/bluespace, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Se" = ( /mob/living/basic/mothroach, /obj/structure/chair/comfy/beige, @@ -5487,6 +5539,10 @@ /obj/structure/sign/warning/directional/west, /turf/open/chasm/true/no_smooth, /area/awaymission/museum) +"Ui" = ( +/obj/effect/mapping_helpers/no_tele_turf, +/turf/closed/indestructible/rock, +/area/awaymission/museum/mothroachvoid) "Um" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/dark_blue{ @@ -5521,14 +5577,14 @@ "Uq" = ( /obj/effect/smooths_with_walls, /turf/cordon/secret, -/area/awaymission/museum) +/area/misc/cordon) "Ut" = ( /mob/living/basic/statue/mannequin{ held_item = /obj/item/banner/command; hat = /obj/item/clothing/head/helmet/space }, /turf/open/floor/holofloor/hyperspace/ns, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Uu" = ( /turf/open/floor/mineral/titanium/white, /area/awaymission/museum) @@ -5670,7 +5726,7 @@ }, /obj/structure/fluff/fokoff_sign, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "Vz" = ( /obj/structure/grille/broken, /obj/structure/window/reinforced/spawner/directional/west, @@ -5762,7 +5818,7 @@ id = "nothing" }, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "We" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -5800,7 +5856,7 @@ set_cap = 1 }, /turf/closed/indestructible/rock, -/area/awaymission/museum) +/area/awaymission/museum/mothroachvoid) "Wt" = ( /obj/machinery/computer/old{ name = "replica computer"; @@ -5826,7 +5882,7 @@ dir = 5 }, /turf/open/floor/iron/dark, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "WB" = ( /obj/structure/chair/stool/bar/directional/east, /turf/open/floor/wood/large, @@ -6102,7 +6158,7 @@ dir = 1 }, /turf/open/floor/black, -/area/awaymission/museum) +/area/awaymission/museum/inaccessible) "YY" = ( /turf/open/floor/iron/stairs/left{ dir = 8 @@ -26970,20 +27026,20 @@ re re re re -FK +zE DT DT DT -FK +zE re re re re +aZ FK +aZ FK -FK -FK -FK +aZ Uq re re @@ -27221,17 +27277,17 @@ re re re re +aZ FK FK FK -FK -FK +aZ re -FK +zE xx -TM +qf Wy -FK +zE re re re @@ -27476,7 +27532,7 @@ yS re re re -FK +aZ FK FK IP @@ -27484,14 +27540,14 @@ Zg fJ FK FK -FK +zE Hs eN Wc -FK +zE re re -FK +aZ FO FK ta @@ -28005,7 +28061,7 @@ tD FK re re -FK +aZ FK FO IG @@ -28238,11 +28294,11 @@ re re re yS -fe +vX uT uT uT -fe +vX yS re re @@ -28462,6 +28518,7 @@ re re re re +QO MF MF MF @@ -28471,8 +28528,7 @@ MF MF MF MF -MF -MF +QO re re re @@ -28494,7 +28550,7 @@ re re re re -fe +mo fe Mx Ni @@ -28748,7 +28804,7 @@ re re re re -fe +mo fe fe fe @@ -29228,7 +29284,7 @@ re re re re -MF +QO MF MF MF @@ -29307,9 +29363,9 @@ re re re re -FK -yM -FK +zE +BB +zE FK FK FK @@ -29556,17 +29612,17 @@ FK FK FK FK +aZ FK FK FK FK FK FK -FK -FK -FK +zE +zE aG -FK +zE Gv ek Gv @@ -29821,9 +29877,9 @@ Ma Ma as PK -EK +Rn yo -Kh +ag Gv sN Gv @@ -30015,7 +30071,7 @@ gM gM rA MF -MF +QO re re DS @@ -30077,10 +30133,10 @@ Ma Ma Ma FK -FK -FK -Kh -Kh +zE +zE +ag +ag ix ix ix @@ -30511,7 +30567,7 @@ re re re re -MF +QO MF MF MF @@ -30591,14 +30647,14 @@ Ma Ma Ma FK -FK -FK -Kh -Kh -FK +zE +zE +ag +ag FK FK FK +aZ Uq re re @@ -30849,10 +30905,10 @@ Ma Ma kA PK -EK -EK +Rn +Rn zh -FK +zE re re re @@ -31061,7 +31117,7 @@ re re re re -fe +mo fe fe fe @@ -31106,10 +31162,10 @@ Ma Ma VM PK -EK +Rn zh gC -FK +zE re re re @@ -31364,9 +31420,9 @@ FK FK FK FK -yM -yM -FK +BB +BB +zE re re re @@ -31571,12 +31627,12 @@ re re re re +aZ FK FK FK FK -FK -FK +aZ re fe qY @@ -32080,7 +32136,7 @@ MF MF MF MF -MF +QO re re re @@ -32092,7 +32148,7 @@ Ov tB FK re -FK +aZ FK iT FK @@ -32138,7 +32194,7 @@ lU lU FK FK -FK +aZ Uq re re @@ -32567,7 +32623,7 @@ re re re re -MF +QO MF MF MF @@ -32599,12 +32655,12 @@ re re re re +aZ FK FK FK FK -FK -FK +aZ re FK IH @@ -32830,7 +32886,7 @@ re re re re -zE +Ui xu eP xm @@ -33086,8 +33142,8 @@ re re re re -xu -xu +Ui +Ui xu dx xm @@ -33343,7 +33399,7 @@ re re re re -xu +Ui xu mV eP @@ -33377,7 +33433,7 @@ re re re re -FK +aZ FK FK FK @@ -33406,7 +33462,7 @@ re re re re -FK +aZ FK FK FK @@ -33423,7 +33479,7 @@ PB PB FK FK -FK +aZ Uq re re @@ -33600,7 +33656,7 @@ re re re re -xu +Ui xu mV eP @@ -33611,18 +33667,18 @@ Ar wZ gu eP -zE +xu Wr -zE -zE -zE -zE -zE -MF +xu +xu +xu +xu +xu MF MF MF MF +QO re re re @@ -33856,8 +33912,8 @@ re re re re -zE -xu +Ui +Ui xu mV eP @@ -33868,14 +33924,14 @@ Ar wZ eP NB -zE +xu FK Fv re re re re -zE +bP re re re @@ -33952,9 +34008,9 @@ FK FK FK FK -FK -FK -FK +zE +zE +zE re re re @@ -34113,7 +34169,7 @@ re re re re -zE +Ui xu mV mV @@ -34211,7 +34267,7 @@ hV hV iZ Vq -FK +zE re re re @@ -34370,7 +34426,7 @@ re re re re -zE +Ui xu mV mV @@ -34468,7 +34524,7 @@ uY uY cS rP -FK +zE re re re @@ -34627,8 +34683,8 @@ re re re re -zE -xu +Ui +Ui xu mV dx @@ -34725,7 +34781,7 @@ bV bV nF yK -FK +zE re re re @@ -34884,7 +34940,7 @@ re re re re -zE +Ui xu mV mV @@ -34896,15 +34952,15 @@ Ar wZ dx dR -zE +xu FK Fv re re re re -zE -zE +Ui +Ui re re re @@ -34980,9 +35036,9 @@ FK FK FK FK -FK -FK -FK +zE +zE +zE re re re @@ -35141,7 +35197,7 @@ re re re re -zE +Ui xu JY iV @@ -35153,16 +35209,16 @@ Ar wZ eP eP -zE +xu Wr -zE -zE -zE -zE -zE -zE -zE -zE +xu +xu +xu +xu +xu +xu +Ui +Ui re re re @@ -35239,11 +35295,11 @@ re re re re +aZ FK FK FK -FK -FK +aZ re re re @@ -35398,7 +35454,7 @@ re re re re -zE +Ui xu hj tc @@ -35419,7 +35475,7 @@ mV mV mV xu -zE +Ui re re re @@ -35432,7 +35488,7 @@ re re re re -FK +aZ FK FK Xh @@ -35464,7 +35520,7 @@ FK FK FK FK -FK +aZ FK FK FK @@ -35505,7 +35561,7 @@ FK tG tG FK -FK +aZ Uq re re @@ -35655,8 +35711,8 @@ re re re re -zE -xu +Ui +Ui xu mV eP @@ -35676,8 +35732,8 @@ jm bs bs xu -zE -zE +Ui +Ui re re re @@ -35912,8 +35968,8 @@ re re re re -zE -zE +Ui +Ui xu mV eP @@ -35933,8 +35989,8 @@ xE eM bs xu -xu -zE +Ui +Ui re re re @@ -35946,7 +36002,7 @@ re re re re -FK +aZ FK YD Vz @@ -36170,7 +36226,7 @@ re re re re -zE +Ui xu mV eP @@ -36191,7 +36247,7 @@ xE bs mV xu -zE +Ui re re re @@ -36427,7 +36483,7 @@ re re re re -zE +Ui xu mV oC @@ -36448,7 +36504,7 @@ xE mV mV xu -zE +Ui re re re @@ -36536,7 +36592,7 @@ FK FK FK FK -FK +aZ Uq re re @@ -36684,7 +36740,7 @@ re re re re -zE +Ui xu mV eP @@ -36704,8 +36760,8 @@ xE Cq mV xu -xu -zE +Ui +Ui re re re @@ -36718,7 +36774,7 @@ re re re re -FK +aZ FK vg bF @@ -36941,7 +36997,7 @@ re re re re -zE +Ui xu mV gu @@ -36961,8 +37017,8 @@ mV mV mV xu -zE -zE +Ui +Ui re re re @@ -37050,7 +37106,7 @@ ns FK FK FK -FK +aZ re re re @@ -37198,7 +37254,7 @@ re re re re -zE +Ui xu mV eP @@ -37218,7 +37274,7 @@ Tt Tt Tt xu -zE +Ui re re re @@ -37455,8 +37511,8 @@ re re re re -zE -xu +Ui +Ui xu eP xm @@ -37475,7 +37531,7 @@ yE mV pY xu -zE +Ui re re re @@ -37561,7 +37617,7 @@ LN Nc FK FK -FK +aZ re re re @@ -37712,8 +37768,8 @@ re re re re -zE -xu +Ui +Ui xu xn ul @@ -37724,15 +37780,15 @@ De xn xn xu -zE -zE -zE -xu +Ui +Ui +Ui +Ui xu xu xu -xu -zE +Ui +Ui re re re @@ -37970,7 +38026,7 @@ re re re re -zE +Ui xu gu xm @@ -37981,15 +38037,15 @@ wZ gu oC xu -zE +Ui re -zE -zE -zE -zE -zE -zE -zE +Ui +Ui +Ui +Ui +Ui +Ui +Ui re re re @@ -38227,7 +38283,7 @@ re re re re -zE +Ui xu eP xm @@ -38238,7 +38294,7 @@ wZ eP eP xu -zE +Ui re re re @@ -38288,7 +38344,7 @@ HA re re re -FK +aZ re re re @@ -38484,7 +38540,7 @@ re re re re -zE +Ui xu eP xm @@ -38495,7 +38551,7 @@ wZ eP eP xu -zE +Ui re re re @@ -38551,7 +38607,7 @@ re re re re -FK +aZ LQ LQ LQ @@ -38589,7 +38645,7 @@ FK tG tG FK -FK +aZ Uq re re @@ -38741,7 +38797,7 @@ re re re re -zE +Ui xu eP xm @@ -38752,7 +38808,7 @@ wZ eP eP xu -zE +Ui re re re @@ -38998,7 +39054,7 @@ re re re re -zE +Ui xu gu xm @@ -39009,7 +39065,7 @@ wZ gu oC xu -zE +Ui re re re @@ -39094,11 +39150,11 @@ re re re re +aZ FK FK FK -FK -FK +aZ re re re @@ -39255,7 +39311,7 @@ re re re re -zE +Ui xu eP xm @@ -39266,7 +39322,7 @@ wZ eP eP xu -zE +Ui re re re @@ -39512,7 +39568,7 @@ re re re re -zE +Ui xu eP xm @@ -39523,7 +39579,7 @@ wZ eP eP xu -zE +Ui re re re @@ -39769,7 +39825,7 @@ re re re re -zE +Ui xu eP xm @@ -39780,7 +39836,7 @@ wZ eP eP xu -zE +Ui re re re @@ -39826,7 +39882,7 @@ FK FK FK FK -FK +aZ re re re @@ -40026,7 +40082,7 @@ re re re re -zE +Ui xu gu xm @@ -40037,7 +40093,7 @@ wZ gu oC xu -zE +Ui re re re @@ -40283,7 +40339,7 @@ re re re re -zE +Ui xu eP xm @@ -40294,7 +40350,7 @@ wZ eP eP xu -zE +Ui re re re @@ -40540,7 +40596,8 @@ re re re re -zE +Ui +Ui xu xu xu @@ -40549,9 +40606,8 @@ xu xu xu xu -xu -xu -zE +Ui +Ui re re re @@ -40593,7 +40649,7 @@ jt WH AE FK -FK +aZ re re re @@ -40797,18 +40853,18 @@ re re re re -zE -zE -zE -zE -zE -zE -zE -zE -zE -zE -zE -zE +Ui +Ui +Ui +Ui +Ui +Ui +Ui +Ui +Ui +Ui +Ui +Ui re re re @@ -41352,19 +41408,19 @@ re re re re -FK -FK -FK -FK +zE +zE +zE +zE FK eW uY rQ FK -FK -FK -FK -FK +zE +zE +zE +zE re re re @@ -41609,7 +41665,7 @@ re re re re -FK +zE re re dK @@ -41621,7 +41677,7 @@ Qi mj re re -FK +zE re re re @@ -41866,7 +41922,7 @@ re re re re -FK +zE re re dK @@ -41878,7 +41934,7 @@ Qi mj re re -FK +zE re re re @@ -42123,7 +42179,7 @@ re re re re -FK +zE re re dK @@ -42135,7 +42191,7 @@ Qi mj re re -FK +zE re re re @@ -42380,7 +42436,7 @@ re re re re -FK +zE re re dK @@ -42392,7 +42448,7 @@ Qi mj re re -FK +zE re re re @@ -42637,7 +42693,7 @@ re re re re -FK +zE re re dK @@ -42649,7 +42705,7 @@ Qi mj re re -FK +zE re re re @@ -42894,7 +42950,7 @@ re re re re -FK +zE re re dK @@ -42903,10 +42959,10 @@ lb uY tD Qi -mj +GD re re -FK +zE re re re @@ -43151,19 +43207,19 @@ re re re re -FK -FK -FK -FK +zE +zE +zE +zE FK lb uY RQ FK -FK -FK -FK -FK +zE +zE +zE +zE re re re @@ -43661,13 +43717,13 @@ re re re re +no Ph +no Ph +no Ph -Ph -Ph -Ph -Ph +no re Ph PI @@ -45203,7 +45259,7 @@ re re re re -Ph +no Ph Ph Ph @@ -45725,7 +45781,7 @@ re re re re -Ph +no Ph pz kL @@ -45979,7 +46035,7 @@ re re re re -Ph +no Ph Ph Ph @@ -45988,7 +46044,7 @@ ms TC Ph Ph -Ph +no re re re @@ -48035,6 +48091,7 @@ re re re re +no Ph Ph Ph @@ -48043,8 +48100,7 @@ Ph Ph Ph Ph -Ph -Ph +no re re re @@ -71266,7 +71322,7 @@ re re re DD -Ov +ID zA re "} diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 0b5d881f3d55..9703869ce2b3 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -1,10 +1,10 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/open/space/basic, -/area/space) +/turf/cordon/secret, +/area/misc/cordon) "ab" = ( /turf/closed/indestructible/riveted, -/area/awaymission/undergroundoutpost45/caves) +/area/awaymission/inaccessible) "ad" = ( /turf/closed/mineral/random/labormineral, /area/awaymission/undergroundoutpost45/caves) diff --git a/_maps/kilostation.json b/_maps/kilostation.json new file mode 100644 index 000000000000..1190ec364c96 --- /dev/null +++ b/_maps/kilostation.json @@ -0,0 +1,29 @@ +{ + "exclude_from_ci": true, + "version": 1, + "map_name": "Kilo Station", + "map_path": "map_files/KiloStation", + "map_file": "KiloStation.dmm", + "shuttles": { + "emergency": "emergency_kilo", + "ferry": "ferry_kilo", + "cargo": "cargo_kilo", + "whiteship": "whiteship_kilo" + }, + "traits": [ + { + "Linkage": "Cross" + } + ], + "job_changes": { + "Cook": { + "additional_cqc_areas": ["/area/station/service/bar/atrium"] + }, + "Captain": { + "special_charter": "asteroid" + }, + "Chaplain": { + "has_monastery": 1 + } + } +} diff --git a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm index d8ca28b7b004..a24c14cf07aa 100644 --- a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm +++ b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm @@ -6144,15 +6144,6 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/construction) -"bCC" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain/private) "bCH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6444,6 +6435,7 @@ pixel_x = -3; pixel_y = -4 }, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/dark/textured_large, /area/station/medical/virology) "bGm" = ( @@ -6862,6 +6854,12 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/engine/hull/air, /area/station/maintenance/starboard/upper) +"bMJ" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/structure/table/wood, +/obj/machinery/fax/heads/captain, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain/private) "bMR" = ( /obj/machinery/power/emitter{ dir = 4 @@ -8071,7 +8069,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/upload/ai{ +/obj/machinery/computer/upload/ai/no_lock{ dir = 4 }, /obj/machinery/door/window/left/directional/east{ @@ -11028,7 +11026,7 @@ /turf/open/floor/iron/dark, /area/station/commons/vacant_room/office) "cQi" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos/office) "cQu" = ( @@ -14144,8 +14142,8 @@ /obj/item/food/grown/wheat, /obj/item/food/grown/grapes, /obj/item/food/grown/citrus/orange, -/obj/item/food/grown/watermelon, -/obj/item/food/grown/carrot, +/obj/item/food/grown/melonlike/watermelon, +/obj/item/food/grown/carrotlike/carrot, /obj/item/grown/corncob, /obj/item/food/grown/pumpkin{ pixel_y = 5 @@ -14328,7 +14326,7 @@ "dMp" = ( /obj/structure/table, /obj/item/food/grown/banana/bunch, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot{ pixel_x = -1; pixel_y = 3 }, @@ -18000,7 +17998,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/item/radio/intercom/directional/north, +/obj/item/radio/intercom/interrogation/outside/directional/north, /turf/open/floor/iron/grimy, /area/station/security/interrogation) "eMm" = ( @@ -18299,7 +18297,7 @@ /area/station/hallway/primary/central) "eQC" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/iron/cafeteria, /area/station/maintenance/starboard) "eQF" = ( @@ -18487,10 +18485,6 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/security/prison/rec) -"eTi" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos/hfr_room) "eTm" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -18903,18 +18897,6 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/command) -"eXT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "eYe" = ( /obj/item/kirbyplants/random, /turf/open/floor/wood/large, @@ -21404,7 +21386,7 @@ codes_txt = "delivery;dir=4"; location = "Cargo Storage4" }, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ name = "Old Yeller" }, /turf/open/floor/iron/recharge_floor, @@ -22045,7 +22027,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 1 }, -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos/upper) "fPy" = ( @@ -24242,17 +24224,6 @@ }, /turf/open/floor/iron/checker, /area/station/service/janitor) -"gqc" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/effect/turf_decal/siding/yellow/end{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/ce) "gqj" = ( /obj/machinery/door/airlock/wood{ name = "Curator Office" @@ -29011,15 +28982,6 @@ }, /turf/open/floor/wood, /area/station/command/corporate_showroom) -"hIg" = ( -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/hop) "hIj" = ( /obj/machinery/camera/autoname/directional/east{ network = list("aicore") @@ -33958,7 +33920,7 @@ codes_txt = "delivery;dir=4"; location = "Cargo Storage-2" }, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ name = "Parcel Pete" }, /obj/item/radio/intercom/directional/west, @@ -34431,7 +34393,7 @@ name = "Cyborg Upload Console Window"; req_access = list("ai_upload") }, -/obj/machinery/computer/upload/borg{ +/obj/machinery/computer/upload/borg/no_lock{ dir = 4 }, /turf/open/floor/circuit/green, @@ -37905,7 +37867,6 @@ /turf/open/floor/iron/dark, /area/station/science/lobby) "kbu" = ( -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos/upper) "kbA" = ( @@ -42092,7 +42053,7 @@ /turf/open/floor/iron, /area/station/engineering/storage_shared) "lhw" = ( -/turf/open/floor/glass/reinforced, +/turf/open/floor/glass/reinforced/plasma, /area/station/science/ordnance) "lhy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44475,6 +44436,14 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"lOb" = ( +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/siding/yellow/end{ + dir = 8 + }, +/obj/machinery/fax/heads/ce, +/turf/open/floor/engine, +/area/station/command/heads_quarters/ce) "lOd" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, @@ -46190,6 +46159,15 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/rd) +"mmG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/firealarm/directional/west, +/obj/machinery/fax/heads/qm, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "mmO" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46257,12 +46235,9 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "mnf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/upper) +/obj/machinery/atmospherics/components/unary/thermomachine, +/turf/open/floor/engine, +/area/station/engineering/atmos/hfr_room) "mnn" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/effect/mapping_helpers/airlock/welded, @@ -46782,10 +46757,6 @@ }, /turf/open/floor/plating, /area/station/ai/satellite/maintenance/storage) -"mtC" = ( -/obj/structure/closet/crate/goldcrate, -/turf/open/floor/glass/reinforced, -/area/station/command/vault) "mtM" = ( /obj/effect/landmark/start/atmospheric_technician, /obj/machinery/holopad, @@ -51530,6 +51501,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_recreation) +"nIQ" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/machinery/fax/heads/rd, +/turf/open/floor/wood, +/area/station/command/heads_quarters/rd) "nIW" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -51578,7 +51555,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "nJy" = ( -/obj/item/radio/intercom/directional/east, +/obj/item/radio/intercom/interrogation/inside/directional/east, /obj/effect/turf_decal/trimline/red/warning{ dir = 8 }, @@ -63248,14 +63225,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"qPq" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) "qPs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -66173,11 +66142,11 @@ /turf/open/floor/grass, /area/station/science/cytology) "rFj" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "rdordnance"; name = "Ordnance Lab Shutters" }, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/science/ordnance) "rFk" = ( @@ -69347,27 +69316,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/supermatter/room) -"sxZ" = ( -/obj/machinery/requests_console/directional/north{ - department = "Chief Medical Officer's Desk"; - name = "Chief Medical Officer's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/information, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) "syb" = ( /obj/machinery/camera/autoname/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -69981,6 +69929,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/small, /area/station/ai/satellite/exterior) +"sHP" = ( +/obj/machinery/requests_console/directional/north{ + department = "Chief Medical Officer's Desk"; + name = "Chief Medical Officer's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/holofloor/dark, +/area/station/command/heads_quarters/cmo) "sHR" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Custodial" @@ -70113,6 +70079,12 @@ /obj/structure/window/reinforced/plasma/spawner/directional/south, /turf/open/space/basic, /area/space/nearstation) +"sJY" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/east, +/obj/machinery/fax/heads/hop, +/turf/open/floor/wood/tile, +/area/station/command/heads_quarters/hop) "sKe" = ( /obj/item/wirecutters, /obj/effect/decal/cleanable/blood/footprints{ @@ -72530,6 +72502,10 @@ /obj/structure/cable, /turf/open/openspace, /area/station/security/checkpoint/supply) +"tpL" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/engine, +/area/station/engineering/atmos/hfr_room) "tpR" = ( /obj/effect/landmark/blobstart, /obj/effect/landmark/generic_maintenance_landmark, @@ -74162,8 +74138,8 @@ /turf/open/floor/iron, /area/station/engineering/storage_shared) "tMN" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) "tMY" = ( @@ -79210,6 +79186,11 @@ /obj/structure/table, /turf/open/floor/iron, /area/station/maintenance/starboard) +"var" = ( +/obj/structure/table, +/obj/machinery/fax/heads/hos, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) "vav" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/stairs/medium, @@ -79340,8 +79321,8 @@ /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) "vcX" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) "vcY" = ( @@ -79656,7 +79637,7 @@ /turf/open/floor/plating, /area/station/construction/storage_wing) "vhl" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /obj/structure/table/wood, /obj/item/stack/package_wrap{ pixel_x = -2; @@ -80523,7 +80504,7 @@ /area/station/commons/lounge) "vsT" = ( /obj/machinery/holopad, -/turf/open/floor/glass/reinforced, +/turf/open/floor/glass/reinforced/plasma, /area/station/science/ordnance) "vsW" = ( /obj/machinery/flasher/directional/west, @@ -81331,6 +81312,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore/upper) +"vDw" = ( +/obj/structure/closet/crate/goldcrate/stocked, +/turf/open/floor/glass/reinforced, +/area/station/command/vault) "vDM" = ( /obj/structure/table, /obj/item/reagent_containers/cup/soda_cans/thirteenloko{ @@ -83443,15 +83428,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) -"wha" = ( -/obj/structure/cable, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/obj/structure/table, -/turf/open/floor/wood, -/area/station/command/heads_quarters/rd) "whi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -85093,7 +85069,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -85895,7 +85870,7 @@ /turf/open/floor/carpet, /area/station/commons/storage/tools) "wNN" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) "wNO" = ( @@ -88397,7 +88372,7 @@ /area/station/science/robotics) "xwF" = ( /obj/effect/landmark/event_spawn, -/turf/open/floor/glass/reinforced, +/turf/open/floor/glass/reinforced/plasma, /area/station/science/ordnance) "xwJ" = ( /obj/effect/spawner/structure/window/reinforced/tinted, @@ -125650,7 +125625,7 @@ gyq wXk rTR aWV -bCC +bMJ lZn vFZ opj @@ -138001,7 +137976,7 @@ vLx tas tsl vgN -eXT +mmG tuF qgr lAR @@ -180659,7 +180634,7 @@ ykf jad xjZ bpK -qPq +var osC fPR qov @@ -188388,7 +188363,7 @@ nRE lUJ sJt aSg -sxZ +sHP kVZ cBT lXD @@ -189378,7 +189353,7 @@ dUb dUb fDE vuO -hIg +sJY bwg vzB vzB @@ -191417,7 +191392,7 @@ dDL jph etm ghb -mtC +vDw jph dDL pRO @@ -191979,7 +191954,7 @@ jzM eRE hhu noz -wha +nIQ lAu mmq iHy @@ -197053,7 +197028,7 @@ nlm nlm nlm xrx -kbu +yau txF jya eSI @@ -197310,7 +197285,7 @@ nlm nlm nlm xrx -kbu +yau psU dyM rVb @@ -197567,7 +197542,7 @@ slL dDL xtW xrx -kbu +yau orR dyM edC @@ -198079,7 +198054,7 @@ nlm dDL nlm nlm -kbu +yau pcM uMG jOm @@ -198336,7 +198311,7 @@ aDw aDw aDw aDw -kbu +yau aNP bLx rvv @@ -198593,7 +198568,7 @@ mDG mDG mDG mDG -kbu +yau rSP uMG czx @@ -199138,7 +199113,7 @@ kMg dwU uBo adr -gqc +lOb isr eXJ vcz @@ -200146,8 +200121,8 @@ tiN nWX xMJ unl -kbu -kbu +yau +yau gmD raE kPC @@ -200650,7 +200625,7 @@ nKW mDG mDG mDG -kbu +yau qWr rPR lnX @@ -201413,15 +201388,15 @@ bNX bNX bNX dKM -bNX -bNX -bNX +mnf +mnf +mnf sey bxd mDG mDG mDG -kbu +yau qWr gfi lrZ @@ -201678,7 +201653,7 @@ bxd mDG mDG mDG -kbu +yau qWr iOi jfl @@ -201932,9 +201907,9 @@ cZP bNX hTs bxd -eTi +ydS bxd -eTi +ydS unl tDq gfi @@ -202960,9 +202935,9 @@ tVS bNX syi bxd -eTi +ydS bxd -eTi +ydS unl fGn wyz @@ -203220,7 +203195,7 @@ bxd mDG mDG mDG -kbu +yau gfi gfi gfi @@ -203469,7 +203444,7 @@ bNX bNX bNX lGE -bNX +tpL lmH lmH sUR @@ -203477,7 +203452,7 @@ bxd mDG mDG mDG -kbu +yau gfi gfi lrZ @@ -203998,7 +203973,7 @@ asE jkM dsZ wXQ -kbu +yau pqc gtC gtC @@ -204248,14 +204223,14 @@ nKW mDG mDG mDG -kbu +yau gfi gfi gfi iUz ucy hSg -kbu +yau rqs nlm nlm @@ -204505,7 +204480,7 @@ pGP pGP gjd fPv -mnf +fPv fHb wIi wkX @@ -204761,7 +204736,7 @@ xst iqF lhP swS -kbu +yau ugA voO gfi @@ -204769,7 +204744,7 @@ gfi klh yfx hSg -kbu +yau rqs nlm dDL @@ -205018,7 +204993,7 @@ asM tBB kCh mDG -kbu +yau gMn gfi eDZ @@ -205026,7 +205001,7 @@ ouD jkM gfi kHD -kbu +yau rqs nlm dDL @@ -205275,7 +205250,7 @@ xst liE lhP qSj -kbu +yau qHW kbH gfi @@ -205532,15 +205507,15 @@ pGP pGP pGP xKo -mnf -mnf +fPv +fPv tbE wIi kbA xGS gfi gfi -kbu +yau rqs nlm dDL @@ -205797,7 +205772,7 @@ eaU oTi owk owk -kbu +yau rqs nlm dDL @@ -206048,12 +206023,12 @@ dDL nlm msd unl -kbu -kbu +yau +yau unl unl -kbu -kbu +yau +yau unl roM nlm diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 1cb51bb30c0d..4d95af7df73f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -7395,12 +7395,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"bMI" = ( -/obj/structure/closet/crate/goldcrate, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/vault) "bMV" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -9966,10 +9960,7 @@ /area/station/command/corporate_showroom) "csD" = ( /obj/structure/chair/office, -/obj/item/radio/intercom/directional/north{ - frequency = 1423; - name = "Interrogation Intercom" - }, +/obj/item/radio/intercom/interrogation/outside/directional/north, /obj/effect/turf_decal/siding/dark_red{ dir = 4 }, @@ -12829,17 +12820,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/department/eva/abandoned) -"deW" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) "deX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -13313,6 +13293,14 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron/grimy, /area/station/maintenance/port/fore) +"dlA" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/fax/heads/qm, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "dlC" = ( /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/neutral, @@ -14878,19 +14866,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood/large, /area/station/service/library) -"dGp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "dGs" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/dresser, @@ -16744,16 +16719,6 @@ /obj/effect/turf_decal/bot/left, /turf/open/floor/iron, /area/station/maintenance/department/electrical) -"edS" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "edW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22766,7 +22731,7 @@ name = "warehouse shutters control" }, /obj/structure/window/reinforced/spawner/directional/north, -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; location = "QM #1" @@ -23381,6 +23346,10 @@ pixel_x = 3; pixel_y = 3 }, +/obj/item/storage/pill_bottle/sepsisillin{ + pixel_x = -6; + pixel_y = 2 + }, /obj/item/storage/box/syringes, /turf/open/floor/iron, /area/station/medical/virology) @@ -25393,7 +25362,7 @@ /turf/open/floor/iron, /area/station/security/checkpoint/escape) "gjl" = ( -/obj/machinery/computer/upload/borg{ +/obj/machinery/computer/upload/borg/no_lock{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28963,17 +28932,6 @@ /obj/item/tail_pin, /turf/open/space/basic, /area/space/nearstation) -"haq" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "haw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -38299,16 +38257,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library/lounge) -"jst" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/nanotrasen/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) "jsL" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/tile/neutral{ @@ -42612,6 +42560,16 @@ }, /turf/open/floor/wood, /area/station/service/theater/abandoned) +"kve" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/fax/heads/rd, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "kvo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -44898,15 +44856,6 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/diagonal, /area/station/science/breakroom) -"lbt" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/east, -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) "lbu" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -48594,7 +48543,7 @@ /turf/open/floor/iron, /area/station/maintenance/port/aft) "lUm" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; location = "QM #4" @@ -48987,6 +48936,12 @@ /obj/effect/mapping_helpers/airlock/access/all/service/general, /turf/open/floor/wood, /area/station/hallway/secondary/service) +"mbh" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/east, +/obj/machinery/fax/heads/hop, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "mbk" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -51950,7 +51905,7 @@ /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) "mMd" = ( -/obj/machinery/computer/upload/ai{ +/obj/machinery/computer/upload/ai/no_lock{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53800,6 +53755,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science) +"nno" = ( +/obj/structure/closet/crate/goldcrate/stocked, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/vault) "nnv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55228,6 +55189,13 @@ "nGk" = ( /turf/closed/wall, /area/station/medical/coldroom) +"nGl" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/sign/nanotrasen/directional/north, +/obj/machinery/fax/heads/hos, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) "nGm" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel Office" @@ -67586,6 +67554,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"qGg" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/fax/heads/ce, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "qGm" = ( /turf/open/floor/iron/dark, /area/station/service/theater) @@ -74911,15 +74886,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark/side, /area/station/security/checkpoint/medical/medsci) -"swj" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/sign/nanotrasen/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "swn" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -78235,12 +78201,7 @@ c_tag = "Security - Interrogation"; network = list("ss13","interrogation") }, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1423; - listening = 0; - name = "Interrogation Intercom" - }, +/obj/item/radio/intercom/interrogation/inside/directional/south, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/interrogation) @@ -89191,7 +89152,7 @@ /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) "vXK" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /turf/open/floor/iron/checker, /area/station/service/bar/backroom) "vXP" = ( @@ -92466,6 +92427,12 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) +"wNN" = ( +/obj/structure/table/wood, +/obj/structure/sign/nanotrasen/directional/west, +/obj/machinery/fax/heads/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "wNP" = ( /obj/machinery/portable_atmospherics/pump, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -96110,6 +96077,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) +"xIV" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/cold/directional/north, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/cmo) "xJa" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -121856,7 +121831,7 @@ tgq tgq coj hbB -edS +qGg gAw xXA dNr @@ -128575,7 +128550,7 @@ bCc pML uzo tud -dGp +kve czL crS urt @@ -135225,7 +135200,7 @@ nAz xYf lZx pgs -lbt +mbh dNK nuY njs @@ -135268,7 +135243,7 @@ qfi fLd uws dQT -deW +xIV pMF uZm aBf @@ -139068,7 +139043,7 @@ pnV bog jlZ gOU -swj +wNN aby aby igb @@ -143432,7 +143407,7 @@ fAB qKc uYm sJr -bMI +nno lhY aaa mjz @@ -143667,7 +143642,7 @@ apY awl ivt krp -haq +dlA cxJ jmp iWR @@ -153958,7 +153933,7 @@ qYo qYo qYo bRF -jst +nGl cLX lPv hHt diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 51b0e5c781cf..386dc7e02d4f 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -862,17 +862,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"anP" = ( -/obj/structure/table, -/obj/machinery/light_switch/directional/north, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/command/heads_quarters/rd) "anW" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -1955,17 +1944,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"aBi" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/obj/machinery/light/cold/directional/south, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "aBE" = ( /obj/machinery/door/airlock{ name = "Custodial Closet" @@ -5588,14 +5566,6 @@ dir = 1 }, /area/station/service/chapel) -"bAT" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "bAX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -11209,6 +11179,13 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/fore) +"ddl" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate/stocked, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/vault) "ddm" = ( /mob/living/basic/pet/penguin/emperor{ name = "Club" @@ -11483,7 +11460,7 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) "dhL" = ( -/obj/machinery/computer/upload/ai{ +/obj/machinery/computer/upload/ai/no_lock{ dir = 1 }, /obj/machinery/flasher/directional/south{ @@ -11830,6 +11807,17 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"dmb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/structure/table, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/fax/heads/qm, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "dmk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ @@ -11912,6 +11900,11 @@ }, /turf/open/floor/wood, /area/station/commons/lounge) +"dnp" = ( +/obj/structure/table/wood, +/obj/machinery/fax/heads/hos, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/hos) "dnq" = ( /turf/open/floor/iron, /area/station/hallway/primary/central) @@ -14537,13 +14530,6 @@ /obj/structure/sign/departments/medbay/alt/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central) -"ebL" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/structure/closet/crate/goldcrate, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/vault) "ebO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -17422,14 +17408,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"eUn" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hos) "eUx" = ( /obj/machinery/light_switch/directional/east, /obj/structure/table, @@ -22623,6 +22601,14 @@ "gti" = ( /turf/open/openspace, /area/station/maintenance/starboard/aft) +"gtn" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/fax/heads/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "gtw" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/kitchen/diagonal, @@ -30069,8 +30055,8 @@ /area/station/maintenance/port/fore) "iBi" = ( /obj/structure/table, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot{ pixel_x = -2; pixel_y = 4 }, @@ -30358,6 +30344,15 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"iGu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/upper) "iGH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -35149,6 +35144,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"jZB" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax/heads/ce, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "jZD" = ( /obj/structure/chair/office{ dir = 1 @@ -41883,6 +41883,16 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron, /area/mine/laborcamp) +"lTz" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/fax/heads/hop, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) "lTC" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -47805,6 +47815,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"nDf" = ( +/obj/structure/table, +/obj/machinery/light_switch/directional/north, +/obj/machinery/fax/heads/rd, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/command/heads_quarters/rd) "nDp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58346,7 +58364,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "qvx" = ( -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /turf/open/misc/asteroid/snow/standard_air, /area/station/science/cytology) "qvE" = ( @@ -60486,7 +60504,7 @@ /area/station/medical/chemistry) "qZg" = ( /obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, /turf/open/floor/iron/grimy, @@ -60776,17 +60794,6 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) -"rdf" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "rdg" = ( /obj/structure/sign/warning/secure_area/directional/south, /turf/open/misc/asteroid/snow/icemoon, @@ -63561,7 +63568,7 @@ /turf/open/floor/glass/reinforced, /area/station/engineering/lobby) "rSN" = ( -/obj/machinery/computer/upload/borg{ +/obj/machinery/computer/upload/borg/no_lock{ dir = 1 }, /obj/item/radio/intercom/directional/south{ @@ -63657,7 +63664,7 @@ }, /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/east, -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/machinery/status_display/supply{ pixel_x = 32 }, @@ -65089,6 +65096,7 @@ pixel_y = 2 }, /obj/effect/turf_decal/trimline/green/filled/corner, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/white, /area/station/medical/virology) "soE" = ( @@ -77475,6 +77483,14 @@ }, /turf/open/floor/iron/dark, /area/station/medical/storage) +"vSZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/table/glass, +/obj/machinery/light/cold/directional/south, +/obj/machinery/firealarm/directional/south, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "vTb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -77877,19 +77893,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel) -"vYm" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/hop) "vYq" = ( /obj/structure/barricade/wooden/snowed, /turf/open/misc/asteroid/snow/icemoon, @@ -81435,7 +81438,7 @@ location = "QM #1" }, /obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /turf/open/floor/iron, /area/station/cargo/storage) "xaH" = ( @@ -81687,20 +81690,6 @@ /obj/effect/turf_decal/weather/snow/corner, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/less_spawns) -"xem" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "xen" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/shutters/preopen{ @@ -237412,7 +237401,7 @@ sDl ybQ gGZ lye -ebL +ddl edn ybQ sCK @@ -237689,7 +237678,7 @@ wSL fOs dsf xjF -xem +dmb dwY ikO bji @@ -243863,7 +243852,7 @@ wzk sKz jle jfc -vYm +lTz qBt xMQ iTR @@ -246630,7 +246619,7 @@ bln hIO hIO rtg -eUn +dnp foc foc foc @@ -246987,7 +246976,7 @@ uwp sCA guz ojv -bAT +jZB eri pvE qKQ @@ -249250,7 +249239,7 @@ hZf rYE xUg lpM -rdf +gtn tpN nKT gjQ @@ -249980,7 +249969,7 @@ krp jAc oKK dAp -tDk +iGu hdk pVL bOs @@ -257742,7 +257731,7 @@ oeM vBG rjt wLY -aBi +vSZ vBG oEF bZb @@ -262379,7 +262368,7 @@ ubc nta ooe jbU -anP +nDf cRK uMK rep diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm similarity index 50% rename from _maps/map_files/wawastation/wawastation.dmm rename to _maps/map_files/KiloStation/KiloStation.dmm index cf1b7a136a7d..859999fbc45b 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -1,201892 +1,142476 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aam" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/open/floor/plating, -/area/station/science/ordnance) -"aas" = ( -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/obj/effect/landmark/start/lawyer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/office) -"aaB" = ( +"aaa" = ( +/turf/open/space/basic, +/area/space) +"aac" = ( +/obj/structure/cable, +/obj/machinery/power/smes/full, +/turf/open/floor/circuit/green, +/area/station/ai/satellite/chamber) +"aak" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"aaR" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"aaV" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"aaW" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"abb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 1 }, -/obj/structure/cable, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"abc" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"abh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 6 - }, -/obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/sorting/mail/flip, -/obj/effect/mapping_helpers/mail_sorting/science/ordnance, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"abi" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/command/eva) -"abm" = ( -/obj/structure/railing{ - dir = 1 +/area/station/ai/satellite/atmos) +"aap" = ( +/turf/closed/mineral/random/low_chance, +/area/space/nearstation) +"aat" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/preopen{ + id = "prisonblast"; + name = "Prison Blast Door" }, -/obj/structure/railing, -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"abn" = ( +/obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P11.5-Central-Primary"; - location = "P11-Central-Primary" +/obj/machinery/button/door/directional/south{ + id = "prisonblast"; + name = "Prison Lockdown"; + req_access = list("brig") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"abo" = ( /obj/machinery/duct, -/obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"abw" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"aau" = ( +/obj/machinery/light/directional/east, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/east{ + c_tag = "Cargo Office"; + name = "cargo camera"; + network = list("ss13","qm") }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"abx" = ( -/obj/structure/railing/corner{ +/obj/machinery/fax{ + fax_name = "Cargo Office"; + name = "Cargo Office Fax Machine" + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"aaw" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, +/obj/structure/cable/multilayer/connected, +/turf/open/floor/engine, /area/station/ai/satellite/chamber) -"abC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +"aay" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"aaA" = ( +/obj/machinery/door/window/right/directional/north{ + name = "Ordnance Freezer Chamber Access"; + req_access = list("ordnance") + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{ dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"abF" = ( -/obj/machinery/power/smes/engineering, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"aaB" = ( +/obj/effect/landmark/carpspawn, +/turf/open/space/basic, +/area/space) +"aaI" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, /obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"aaO" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"aaQ" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) +"aaT" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/main) -"abK" = ( +/area/station/hallway/primary/starboard) +"aba" = ( +/obj/structure/transit_tube/diagonal/crossing/topleft, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"abg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/gateway) -"abX" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Library" +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/landmark/navigate_destination/library, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/library) -"acc" = ( -/turf/closed/wall, -/area/station/maintenance/central/lesser) -"acA" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/ai/satellite/chamber) +"abj" = ( +/obj/structure/table, +/obj/item/storage/medkit/regular, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"acB" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"acG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"abq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"acN" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/holosign_creator/atmos, +"abB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"acY" = ( +/area/station/security/warden) +"abC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/chamber) +"abD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/structure/cable, -/obj/structure/railing/corner{ +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"abF" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"adc" = ( -/obj/machinery/power/emitter/welded{ +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"abJ" = ( +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"abM" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"adg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood/fancy/orange, -/obj/item/stamp/granted{ - pixel_x = 7; - pixel_y = 9 - }, -/obj/item/stamp/denied{ - pixel_x = 7; - pixel_y = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/item/stamp/head/qm{ - pixel_x = 7; - pixel_y = -2 +/obj/structure/cable, +/obj/machinery/holopad/secure, +/obj/machinery/door/window/brigdoor/right/directional/east{ + name = "Tertiary AI Core Access"; + req_access = list("ai_upload"); + pixel_x = 4 }, -/obj/item/clipboard{ - pixel_x = -6; - pixel_y = 4 +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"aca" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 }, -/obj/machinery/firealarm/directional/east, -/obj/item/disk/computer/quartermaster{ - pixel_x = -6; - pixel_y = 4 +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"acj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/blue/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"adK" = ( +/turf/open/floor/iron, +/area/station/service/hydroponics) +"acm" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"acn" = ( +/obj/structure/transit_tube/diagonal/topleft, /obj/structure/lattice/catwalk, -/obj/structure/railing{ +/turf/open/space/basic, +/area/space/nearstation) +"acs" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/openspace, -/area/station/maintenance/port/greater) -"adV" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"adW" = ( -/obj/structure/closet/secure_closet{ - req_access = list("brig") - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/security/brig) -"aem" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/box/syringes{ - pixel_y = 4 - }, -/obj/item/storage/box/syringes, -/obj/item/gun/syringe{ - pixel_y = 3 - }, -/obj/item/gun/syringe, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"aep" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"aeq" = ( -/obj/structure/cable, +/area/station/maintenance/aft) +"acu" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"acx" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aex" = ( -/mob/living/basic/sloth/citrus, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aeC" = ( -/obj/effect/turf_decal/trimline/yellow/corner{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"aeD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"aeI" = ( -/obj/machinery/door/window/brigdoor/left/directional/west{ - name = "Security Post Desk"; - req_access = list("security") +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"acD" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/west, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = -3; - pixel_y = 2 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "medsecprivacy"; - name = "Privacy Shutter" +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"acF" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"acJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/security/checkpoint/medical) -"aeJ" = ( -/obj/structure/table/reinforced, -/obj/item/phone, +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"acK" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"acM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"acT" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"acW" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"acZ" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"afe" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"afp" = ( -/obj/structure/cable, +/area/station/hallway/secondary/exit/departure_lounge) +"add" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"adf" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"adg" = ( +/turf/closed/wall/r_wall, +/area/station/ai/satellite/interior) +"adi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"afz" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/kirbyplants/organic/plant16, +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"afC" = ( +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central) +"adp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"adI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"afF" = ( -/obj/effect/spawner/random/structure/chair_flipped, -/obj/effect/turf_decal/siding/white/corner, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"afJ" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"afR" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"adR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"adT" = ( /obj/structure/cable, +/turf/closed/wall, +/area/station/maintenance/department/electrical) +"aed" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad/secure, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"aek" = ( +/obj/item/kirbyplants/organic/plant3, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/security) -"afV" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"afW" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/light/small/dim/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"agq" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/area/station/hallway/primary/aft) +"aeo" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) +"aes" = ( +/obj/machinery/door/airlock/grunge{ + name = "Cell 1" }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"agr" = ( -/obj/structure/table, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"agu" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"agw" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 +/area/station/security/prison/safe) +"aeu" = ( +/turf/closed/mineral/random/labormineral, +/area/space/nearstation) +"aew" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light_switch/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Xenobiology Closet"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/paper_bin/carbon, -/obj/item/pen, -/obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"agA" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, /area/station/science/xenobiology) -"agO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/pile/directional/east, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"agP" = ( -/obj/structure/lattice/catwalk, -/obj/structure/disposaloutlet, -/obj/structure/disposalpipe/trunk{ - dir = 8 +"aeG" = ( +/turf/closed/wall/rust, +/area/station/service/lawoffice) +"aeH" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "chemistry_shutters"; + name = "Chemistry Lobby Shutters" }, -/turf/open/space/openspace, -/area/space/nearstation) -"ahb" = ( -/obj/machinery/light_switch/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"ahl" = ( -/turf/open/floor/iron/stairs/right{ +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/medical/pharmacy) +"aeJ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/computer/rdconsole/unlocked{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"aeL" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"aeS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/area/station/engineering/main) -"ahp" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aeU" = ( +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"aeX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"aeZ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/paper_bin, -/obj/machinery/door/firedoor, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"ahq" = ( -/turf/closed/wall/r_wall, -/area/station/medical/psychology) -"ahv" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"afw" = ( +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"afB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"afH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/cargo/lobby) -"ahw" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/area/station/engineering/main) +"afL" = ( +/turf/closed/wall, +/area/station/command/heads_quarters/hos) +"afQ" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"ahz" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/hallway/primary/port) +"afU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"agc" = ( +/obj/structure/table/wood, /obj/structure/cable, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"ahE" = ( -/turf/closed/wall, -/area/station/commons/toilet/restrooms) -"ahI" = ( -/obj/machinery/computer/warrant{ - dir = 1 +/obj/item/pen/fountain, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"agt" = ( +/turf/closed/wall/rust, +/area/space/nearstation) +"agx" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"ahV" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/north{ + c_tag = "Prison Botany"; + network = list("ss13","prison") }, -/obj/item/radio/intercom/directional/north, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/cargo/storage) -"ahX" = ( -/obj/structure/sign/warning/directional/west, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/asteroid) -"aic" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/security/prison/garden) +"agy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/flasher/directional/east{ + id = "visitorflash" }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aie" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "visitation"; + name = "Visitation Shutters" }, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal) -"aih" = ( -/obj/structure/chair/stool/directional/north, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"aip" = ( -/obj/machinery/light/small/directional/north, /turf/open/floor/plating, -/area/station/cargo/storage) -"aiE" = ( -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"aiN" = ( +/area/station/security/execution/transfer) +"agz" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" +/obj/machinery/door/poddoor/preopen{ + id = "xeno6"; + name = "Creature Cell 6" }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aiZ" = ( -/obj/effect/turf_decal/stripes/corner{ +/area/station/science/xenobiology) +"ahz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ajh" = ( -/obj/machinery/vending/wardrobe/chem_wardrobe, +/area/station/commons/storage/primary) +"ahJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 4 }, -/turf/open/floor/iron/textured_large, -/area/station/medical/treatment_center) -"ajs" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 1; - id = "ordauxgarage" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 +/obj/effect/turf_decal/tile/purple, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/science/ordnance) -"aju" = ( -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"aia" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 9 }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"ajK" = ( -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination/bar, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Bar" +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, /turf/open/floor/wood, -/area/station/commons/lounge) -"ajQ" = ( +/area/station/service/lawoffice) +"aig" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"aiB" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/sunny/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/generic/style_random, +/obj/structure/flora/grass/jungle/a/style_random, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) +"aiI" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"ajS" = ( -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"ajU" = ( -/obj/machinery/telecomms/server/presets/engineering, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"akl" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/area/station/maintenance/port/greater) +"aiL" = ( +/turf/closed/wall/r_wall, +/area/station/security/execution/education) +"aiN" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, /turf/open/floor/iron, -/area/station/commons/locker) -"ako" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/station/service/theater) -"aks" = ( -/obj/machinery/light/directional/north, -/obj/structure/stairs/east, -/obj/structure/railing, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"aku" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"akB" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/area/station/security/office) +"ajb" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"akU" = ( -/turf/open/floor/iron/dark/side, -/area/station/command/corporate_dock) -"alc" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/machinery/door/airlock/command{ - name = "Bridge" +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"aji" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ajo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"ajs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sink/directional/east, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"alf" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"alg" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge"; - security_level = 6 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"alu" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater, -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"alx" = ( -/obj/item/flashlight/flare{ - icon_state = "flare-on"; - start_on = 1 +/area/station/science/auxlab) +"ajt" = ( +/obj/structure/rack, +/obj/item/controller{ + pixel_x = -7 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"aly" = ( +/obj/item/compact_remote{ + pixel_x = -7 + }, +/obj/item/compact_remote{ + pixel_x = -7 + }, +/obj/machinery/airalarm/directional/north, +/obj/item/integrated_circuit/loaded/speech_relay{ + pixel_x = 7 + }, +/obj/item/integrated_circuit/loaded/hello_world{ + pixel_x = 7 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"ajv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"alA" = ( -/obj/machinery/disposal/bin, -/obj/machinery/button/door/directional/north{ - id = "rndlab2"; - name = "Shutter Control" +/area/station/engineering/atmos) +"ajw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white, -/area/station/science/lab) -"alI" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/delivery, /turf/open/floor/iron, -/area/station/command/eva) -"alJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/security/prison) +"ajH" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/machinery/wall_healer/directional/east, /turf/open/floor/iron, -/area/station/engineering/lobby) -"alP" = ( -/obj/machinery/newscaster/directional/north, -/obj/item/radio/intercom/directional/south, -/obj/machinery/duct, -/obj/structure/cable, +/area/station/hallway/primary/aft) +"ajZ" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/station/science/auxlab) +"aka" = ( +/turf/closed/wall/r_wall, +/area/station/security/armory) +"ake" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"alW" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/obj/effect/turf_decal/siding/purple{ + dir = 4 }, -/obj/effect/decal/cleanable/glass, -/obj/structure/broken_flooring/pile, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"akC" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"akD" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 +/obj/item/circuitboard/machine/exoscanner{ + pixel_y = 3 }, -/obj/item/storage/box/masks{ - pixel_y = 4 +/obj/item/circuitboard/machine/exoscanner, +/obj/item/circuitboard/machine/exoscanner{ + pixel_y = -3 }, -/obj/item/storage/box/bodybags, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"alX" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/machinery/light_switch/directional/north{ + pixel_x = 12 }, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"amh" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/theater) -"amJ" = ( -/obj/machinery/iv_drip, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"amK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"akH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 5 }, -/obj/machinery/disposal/delivery_chute{ - dir = 8 - }, -/obj/machinery/door/window/left/directional/west{ - name = "Corpse Chute"; - req_access = list("morgue") +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"akV" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall/rust, +/area/station/security/execution/transfer) +"ala" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "foreport"; + name = "Fore-Port Solar Array" }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/disposalpipe/trunk{ +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/space/nearstation) +"alr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"amZ" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"anb" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"and" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 5 +/area/station/service/chapel/funeral) +"als" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/east, -/mob/living/basic/bot/secbot/pingsky, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"anf" = ( -/obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "gib3-old" - }, -/mob/living/basic/mimic/crate, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"anu" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/room) -"anx" = ( -/obj/effect/turf_decal/stripes/asteroid/line, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"any" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/grille/broken, -/turf/open/floor/plating/reinforced/airless, -/area/station/asteroid) -"anz" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/maintenance/department/science) -"anJ" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"anN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"anT" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"alv" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"anZ" = ( -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/spawner/random/armory/riot_armor, +/obj/effect/spawner/random/armory/riot_helmet, +/obj/effect/spawner/random/armory/riot_shield, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"alz" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"aod" = ( -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"aof" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/cargo/storage) -"aor" = ( -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/five, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"alL" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aou" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "execution" - }, -/obj/machinery/flasher/directional/north{ - id = "executionflash" +/area/station/maintenance/starboard/aft) +"alP" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"aoy" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/hallway/primary/starboard) -"aoz" = ( -/obj/structure/stairs/east, -/obj/structure/railing{ +/area/station/security/armory) +"alQ" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"aoA" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aoL" = ( -/obj/machinery/door/airlock/external/glass{ - name = "Supply Door Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/turf/open/floor/plating, -/area/station/cargo/storage) -"aoP" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_edge{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/area/station/science/xenobiology) -"apb" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"ape" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"alV" = ( +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/interior) +"ami" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/requests_console/auto_name/directional/south, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/engineering/main) -"apk" = ( -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"apt" = ( -/obj/structure/rack, -/obj/item/stack/sheet/glass{ - amount = 20; - pixel_x = -3; - pixel_y = 6 +/area/station/hallway/primary/fore) +"amn" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/newscaster/directional/east, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/commons/locker) +"amq" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/item/stack/sheet/iron/twenty, -/turf/open/floor/glass/reinforced, -/area/station/engineering/lobby) -"apH" = ( -/obj/structure/chair/comfy/beige{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/camera/directional/west{ + name = "engineering camera"; + network = list("ss13","engine"); + c_tag = "SMES Room" + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/engineering/supermatter/room) +"amr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"apQ" = ( -/turf/closed/wall, -/area/station/service/library) -"apW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/item/stock_parts/power_store/cell, -/obj/structure/broken_flooring, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"aqa" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"aqh" = ( -/obj/machinery/shower/directional/west, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"aqr" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Robotics Lab" +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"ams" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"amv" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"aqu" = ( -/obj/machinery/light/directional/east, -/obj/structure/railing/corner{ - dir = 1 +/obj/item/folder{ + pixel_x = 6 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/pen{ + pixel_x = 6 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"aqw" = ( -/obj/structure/table/wood/fancy/orange, -/obj/effect/spawner/random/contraband/qm_rocket{ - pixel_x = -7 +/obj/machinery/door/window/left/directional/north{ + name = "Robotics Desk"; + req_access = list("robotics") }, -/obj/item/storage/fancy/cigarettes/cigars/cohiba{ - pixel_x = 12; - pixel_y = 7 +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 8 }, -/obj/item/lighter, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"aqM" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/computer/records/medical, -/turf/open/floor/glass/reinforced, -/area/station/science/genetics) -"aqR" = ( -/obj/structure/chair/stool/directional/east, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/commons/lounge) -"aqT" = ( -/mob/living/basic/bot/cleanbot, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"arl" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"arq" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Room" +/area/station/science/robotics/lab) +"amG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/girder, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"amU" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"amX" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/armory) +"and" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/landmark/navigate_destination, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"anr" = ( +/obj/machinery/power/tracker, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/space/nearstation) +"anz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"arr" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"arB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Port To Distro Staging" - }, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"anF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, /area/station/engineering/atmos) -"arS" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 +"anG" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/r_wall/rust, +/area/station/security/armory) +"anH" = ( +/turf/closed/wall, +/area/space/nearstation) +"anI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/item/radio/intercom/directional/west, -/turf/open/openspace, -/area/station/science/xenobiology) -"asb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"asd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"anN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"asl" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"asn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 +/area/station/hallway/primary/starboard) +"aoe" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aof" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/space/nearstation) +"aoi" = ( +/obj/structure/table/wood/fancy, +/obj/machinery/light/directional/west, +/obj/item/food/grown/harebell, +/obj/item/food/grown/harebell{ + pixel_x = 3; + pixel_y = 3 }, -/area/station/science/xenobiology) -"aso" = ( +/obj/item/food/grown/harebell{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"aor" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/south{ + c_tag = "Prison Wing Lockers"; + name = "prison camera"; + network = list("ss13","prison") }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"aot" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, /obj/structure/cable, /turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"aov" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable, +/turf/open/floor/circuit/red, +/area/station/engineering/supermatter/room) +"aoz" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"aoE" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) -"asp" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input{ - dir = 8 +"aoL" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel/monastery) +"aoX" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"api" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"apl" = ( +/obj/machinery/light/directional/south, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"asr" = ( -/obj/machinery/medical_kiosk{ - pixel_x = -2 +/obj/item/pen, +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = 6 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"asz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"asP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/item/stamp/granted{ + pixel_x = 8; + pixel_y = 2 }, /obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"asZ" = ( -/turf/open/floor/glass/airless, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"apm" = ( +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/misc/asteroid/lowpressure, /area/space/nearstation) -"ata" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +"app" = ( +/turf/closed/wall/rust, +/area/station/science/robotics/lab) +"apu" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{ + name = "Burn Chamber Exterior Airlock" }, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"atb" = ( -/obj/structure/railing{ +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) +"apv" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"apw" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/spawner/random/vending/colavend, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"ath" = ( -/obj/machinery/door/window/left/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"atl" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"atv" = ( -/obj/structure/railing/corner/end{ +"apx" = ( +/obj/machinery/teleport/hub, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"atw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"apC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"atB" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/misc/asteroid, -/area/station/asteroid) -"atK" = ( -/obj/machinery/light/small/directional/south, +/area/station/maintenance/starboard/fore) +"apL" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "justiceshutter"; + name = "Justice Shutter" + }, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"atT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"atV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/area/station/security/execution/education) +"aqe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 }, -/turf/open/floor/glass/reinforced, -/area/station/science/genetics) -"atX" = ( -/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"auj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"aum" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"auB" = ( -/turf/open/floor/engine, -/area/station/medical/chemistry) -"auD" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space/basic, -/area/space/nearstation) -"auE" = ( -/obj/item/stack/sheet/cardboard, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"auM" = ( -/obj/machinery/flasher/directional/west{ - id = "hopflash" +/area/station/hallway/secondary/entry) +"aqq" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"auW" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/prison) -"ava" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/button/door{ - id = "secentrylock2"; - name = "Security Exit Lock"; - normaldoorcontrol = 1; - pixel_x = -7; - req_access = list("security"); - specialfunctions = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"aqt" = ( +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Connector" }, -/obj/machinery/button/door{ - id = "secentrylock"; - name = "Security Entrance Lock"; - normaldoorcontrol = 1; - pixel_x = -7; - pixel_y = 7; - req_access = list("security"); - specialfunctions = 4 +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/machinery/button/flasher{ - id = "secentry"; - pixel_x = 2 +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"aqv" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/transit_tube/horizontal{ + dir = 1 }, -/obj/machinery/button/door{ - id = "secentrylock"; - name = "Security Entrance Doors"; - normaldoorcontrol = 1; - pixel_x = 2; - pixel_y = 7 +/turf/open/space/basic, +/area/space/nearstation) +"aqQ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aqY" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Freight Power Control" }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"avu" = ( -/obj/effect/turf_decal/siding/white/corner{ +/obj/structure/cable, +/obj/structure/barricade/wooden/crude, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"ari" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"arl" = ( +/turf/closed/wall/r_wall, +/area/station/ai/upload/chamber) +"aru" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"avx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"avA" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"avC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/structure/table, +/obj/machinery/fax/heads/qm, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"avL" = ( -/obj/machinery/light/small/dim/directional/north, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/command/heads_quarters/qm) +"arz" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/tank/internals/emergency_oxygen/empty, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"arU" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"avQ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ - dir = 8 - }, -/turf/open/openspace/airless, -/area/station/asteroid) -"avU" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 9 - }, +/area/station/maintenance/disposal/incinerator) +"arX" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/drinkingglass, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"awb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"awd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"awf" = ( -/obj/machinery/igniter/incinerator_ordmix, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"awi" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"awj" = ( -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"awq" = ( -/obj/structure/sign/chalkboard_menu, -/turf/closed/wall, -/area/station/service/cafeteria) -"awy" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"awB" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/effect/spawner/random/engineering/toolbox, -/obj/machinery/newscaster/directional/west, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"awC" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/area/station/security/prison/mess) +"asj" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/electrical) +"asu" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"awF" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P4-Central-Primary"; - location = "P3-Central-Primary" - }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"awM" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, +/area/station/hallway/primary/starboard) +"asU" = ( +/obj/structure/plaque/static_plaque/golden/commission/kilo, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"awW" = ( -/obj/effect/decal/cleanable/glass, +/area/station/hallway/primary/starboard) +"asY" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"axa" = ( -/turf/open/floor/iron/stairs/left{ - dir = 8 - }, -/area/station/service/theater) -"axi" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"axk" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Warden Requisition Desk"; - req_access = list("armory") +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"asZ" = ( +/turf/closed/wall/r_wall, +/area/station/ai/satellite/chamber) +"atc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/door/window/right/directional/south, -/turf/open/floor/iron, -/area/station/security/warden) -"axt" = ( -/obj/structure/lattice/catwalk, -/obj/item/clothing/glasses/nightmare_vision, -/turf/open/space/basic, -/area/space/nearstation) -"axB" = ( -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("xenobiology") - }, -/obj/machinery/door/window/brigdoor/right/directional/west{ - req_access = list("xenobiology") - }, -/obj/effect/turf_decal/caution/stand_clear{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"axD" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/captain/private) -"axI" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"ate" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"axQ" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4; - name = "Mix Bypass" - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"axV" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ayf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ayw" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/deck, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"ayx" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"ayy" = ( -/obj/structure/chair/office{ - dir = 1 +/area/station/security/evidence) +"atf" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"ayA" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/item/folder/documents, /turf/open/floor/iron/dark, -/area/station/command/vault) -"ayC" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"ayE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Service" +/area/station/science/auxlab) +"ath" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate/engineering, +/obj/item/hand_tele, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"atu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "qmprivacy"; + name = "Privacy Shutters" }, -/obj/machinery/door/firedoor, -/turf/open/floor/wood, -/area/station/service/bar) -"ayG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aza" = ( -/obj/effect/spawner/random/trash/janitor_supplies, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"azb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/security) -"aze" = ( -/obj/machinery/disposal/delivery_chute{ - dir = 4; - name = "mail chute" +/turf/open/floor/plating, +/area/station/command/heads_quarters/qm) +"atB" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 }, -/obj/structure/window/spawner/directional/south, -/obj/machinery/conveyor{ - dir = 8; - id = "sorter" +/obj/effect/turf_decal/box/red, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/area/station/ai/satellite/chamber) +"atT" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"azg" = ( -/turf/closed/wall, -/area/station/service/chapel/funeral) -"azk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/asteroid) -"azt" = ( +/obj/machinery/meter/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"auf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"aux" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"auN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/west, +/obj/machinery/status_display/ai/directional/north, /turf/open/floor/engine, -/area/station/command/corporate_dock) -"azu" = ( +/area/station/engineering/storage/tech) +"auR" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/wrench, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"azv" = ( -/turf/closed/wall/r_wall, -/area/station/science/robotics/lab) -"azx" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"azB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"azK" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"azQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"azV" = ( -/obj/machinery/door/airlock/maintenance_hatch, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"auS" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/north, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"aAg" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"aAk" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"aAl" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aAn" = ( -/obj/structure/railing/corner{ +/area/station/maintenance/department/crew_quarters/bar) +"avo" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"avs" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 +/obj/effect/spawner/random/contraband/prison, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/turf/open/floor/plating, +/area/station/security/prison) +"avy" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, +/obj/item/flashlight/lamp/green, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"avT" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"aBb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/security/prison/mess) +"awb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/horizontal{ dir = 1 }, -/obj/machinery/light/cold/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) +"awi" = ( +/obj/machinery/computer/security/labor, +/obj/machinery/light_switch/directional/north{ + pixel_x = -7 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"aBM" = ( -/obj/structure/table/wood, -/obj/item/food/carneburrito{ - pixel_x = -2; - pixel_y = 5 +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/toy/talking/ai{ - pixel_x = 9; - pixel_y = -6 +/turf/open/floor/iron/dark, +/area/station/security/processing) +"awn" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/port/aft) +"awq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"awt" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Holding Area" }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"aBU" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"awv" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/area/station/command/emergency_closet) -"aBY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"awG" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aCb" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/obj/machinery/meter, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos) +"awR" = ( +/obj/structure/table/wood, +/obj/machinery/firealarm/directional/north, +/obj/structure/statue/bronze/marx, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"awT" = ( +/obj/machinery/computer/dna_console{ dir = 4 }, -/turf/open/openspace, -/area/station/security/prison/shower) -"aCk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"aCp" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/light/directional/north, -/obj/machinery/computer/security, -/turf/open/floor/iron, -/area/station/security/office) -"aCr" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"awW" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Restrooms"; + name = "recreation camera" }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"aCs" = ( /obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"aCv" = ( -/turf/closed/wall/rock/porous, -/area/station/maintenance/department/medical) -"aCx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"awX" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "Research Division" + }, +/obj/machinery/door/window/left/directional/south{ + name = "Research Division Delivery Access"; + req_access = list("research") + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"axd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"aCB" = ( -/obj/structure/closet/wardrobe/orange, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/hallway/secondary/entry) +"axk" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/crossing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) +"axp" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/brig) -"aCL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"aCP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/landmark/start/coroner, +/obj/structure/chair/office/tactical{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"axt" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/displaycase/trophy, -/turf/open/floor/wood, -/area/station/service/library) -"aDd" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + name = "Privacy Shutters" }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aDk" = ( +/area/station/command/heads_quarters/hop) +"axE" = ( +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"axT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/landmark/blobstart, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"aDm" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 1 +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"ayc" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 10 }, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"aDE" = ( -/obj/structure/sign/departments/holy/directional/east, -/obj/effect/turf_decal/tile/neutral, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aDI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"ayh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"aDW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/plastic, -/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"aEd" = ( +/area/station/hallway/primary/central/fore) +"ayo" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/item/storage/toolbox/fishing, -/obj/item/storage/toolbox/fishing, -/obj/item/fishing_rod, -/obj/item/fishing_rod, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"aEh" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"aEj" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect3"; - name = "Security Shutters" - }, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"aEr" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"aED" = ( -/obj/effect/turf_decal/stripes{ +/obj/machinery/space_heater, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"ayC" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"ayY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/computer/quantum_console{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/circuit, -/area/station/cargo/bitrunning/den) -"aEL" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/table/reinforced, -/obj/item/stack/sheet/iron/fifty, -/obj/item/storage/toolbox/mechanical, -/obj/item/clothing/head/utility/welding, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"aEP" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" +/area/station/hallway/primary/aft) +"azg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"azo" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/armory/bulletproof_armor, +/obj/effect/spawner/random/armory/bulletproof_helmet, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"azv" = ( +/turf/closed/wall, +/area/station/ai/satellite/interior) +"azw" = ( +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"aAg" = ( +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/chamber) +"aAq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"aFb" = ( -/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/mapping_helpers/apc/cell_5k, -/obj/effect/mapping_helpers/apc/full_charge, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"aAu" = ( +/turf/closed/wall/rust, +/area/station/medical/office) +"aAy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"aFp" = ( -/obj/machinery/light/directional/south, -/obj/structure/dresser, -/obj/item/food/pie/cream{ - pixel_y = 12 - }, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"aFz" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "holodeck" +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"aFD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"aAP" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/structure/sign/poster/official/safety_eye_protection/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"aAQ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/landmark/start/station_engineer, -/obj/structure/chair/office{ +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"aFJ" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aFL" = ( -/obj/structure/lattice, -/obj/machinery/camera/autoname/directional/west, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"aGa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 - }, -/obj/effect/mapping_helpers/mail_sorting/service/law_office, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"aGm" = ( -/obj/structure/railing/corner{ +/area/station/engineering/atmos) +"aAR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/prison) -"aGu" = ( -/obj/machinery/door/poddoor/massdriver_trash, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal) -"aGz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/structure/sign/warning/no_smoking{ + pixel_y = 30 }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"aGA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"aAT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/pods/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"aAU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/lounge) -"aGC" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"aGL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"aGQ" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/starboard/aft) +"aBi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/disposalpipe/trunk, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/lobby) -"aHc" = ( -/obj/machinery/door/poddoor/lift{ - transport_linked_id = "cargo" - }, -/obj/effect/turf_decal/stripes{ - dir = 8 +/area/station/engineering/atmos) +"aBB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/robot_debris, +/obj/effect/decal/cleanable/blood/splatter/oil, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"aBF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Locker Room" }, -/obj/effect/turf_decal/stripes{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination/dorms, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"aBN" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_y = 5 }, -/area/station/cargo/storage) -"aHe" = ( -/obj/structure/closet/crate/science, -/obj/effect/spawner/random/maintenance/four, -/turf/open/misc/asteroid, -/area/station/asteroid) -"aHh" = ( -/turf/open/floor/iron, -/area/station/cargo/lobby) -"aHj" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/item/pen, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"aCi" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"aHl" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/courtroom) -"aHp" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"aHs" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"aHt" = ( -/obj/effect/turf_decal/siding/purple, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"aHx" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"aHG" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 6 +"aCp" = ( +/obj/effect/turf_decal/box, +/obj/structure/toilet{ + dir = 8 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 +/obj/structure/mirror/directional/west, +/obj/machinery/newscaster/directional/south{ + pixel_x = -28 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/east{ + id = "Unit_3Privacy"; + name = "Unit 3 Privacy Toggle"; + pixel_y = -8 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 8 +/obj/machinery/button/door/directional/east{ + id = "Unit_3"; + name = "Unit 3 Privacy Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"aCs" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aDo" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Recovery Room"; + name = "medical camera"; + network = list("ss13","medical") }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"aHM" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron, -/area/station/security/prison) -"aHZ" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aIc" = ( -/obj/structure/table, -/obj/effect/spawner/random/bureaucracy/paper, -/obj/effect/spawner/random/bureaucracy/stamp, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"aDD" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/structure/closet/secure_closet/paramedic, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/directional/east, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"aDF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"aIo" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 24; - name = "SS13: Auxiliary Dock, Station-Port"; - shuttle_id = "whiteship_home"; - width = 35 +/obj/effect/turf_decal/tile/purple/opposingcorners{ + dir = 1 }, -/turf/open/space/openspace, -/area/space) -"aIz" = ( -/obj/structure/closet/crate/coffin, -/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"aDL" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chemistry_shutters"; + name = "Chemistry Lobby Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/service/chapel/funeral) -"aIB" = ( -/obj/structure/chair/stool/directional/west, +/area/station/medical/pharmacy) +"aDO" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"aDQ" = ( /turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"aIR" = ( -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/security/execution/education) -"aIU" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 +/area/space/nearstation) +"aDS" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aDT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aDU" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aIX" = ( -/obj/structure/chair/office/light{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aDV" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"aJa" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aDY" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"aDZ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"aJr" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ +/turf/open/space/basic, +/area/space/nearstation) +"aEa" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/obj/effect/mapping_helpers/mail_sorting/security/hos_office, -/turf/open/floor/iron/white, -/area/station/security/medical) -"aJv" = ( -/obj/structure/reagent_dispensers/cooking_oil, -/obj/machinery/camera/autoname/directional/south, +/turf/open/space/basic, +/area/space/nearstation) +"aEd" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"aJA" = ( -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("xenobiology") +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"aEe" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/mob/living/basic/slime, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"aJL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"aJP" = ( -/obj/machinery/door/airlock/external/glass{ - name = "Mining Dock Airlock" +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"aEf" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"aEg" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEi" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/obj/effect/turf_decal/stripes/end{ +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"aEj" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) +"aEk" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"aEl" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEm" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"aJQ" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Antechamber" +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"aEn" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"aJX" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"aKg" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"aEo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"aKj" = ( -/obj/machinery/computer/station_alert{ - dir = 1 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEp" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"aKl" = ( -/obj/structure/chair, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 +/turf/open/space/basic, +/area/space/nearstation) +"aEq" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 }, -/area/station/maintenance/radshelter/medical) -"aKB" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/space/basic, +/area/space/nearstation) +"aEr" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"aEs" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"aKJ" = ( -/obj/structure/sign/directions/command/directional/north{ - dir = 4; - pixel_y = -10 +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/structure/sign/directions/engineering/directional/north{ - dir = 4; - pixel_y = 10 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEt" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 }, -/obj/structure/sign/directions/science/directional/north{ - dir = 4; - pixel_y = 0 +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEu" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 }, -/turf/closed/wall, -/area/station/security/courtroom) -"aKP" = ( -/turf/open/floor/iron/half, -/area/station/service/hydroponics/garden) -"aKS" = ( -/obj/machinery/light/small/dim/directional/north, -/obj/item/storage/box, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aKU" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Tertiary AI Core Access"; - pixel_y = 3; - req_access = list("ai_upload") +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEv" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 }, -/obj/item/radio/intercom/directional/south{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_x = -27 +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/item/radio/intercom/directional/south{ - freerange = 1; - frequency = 1447; - listening = 0; - name = "Private Channel"; - pixel_x = 27 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aEC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/obj/machinery/flasher/directional/east{ - id = "AI"; - pixel_y = 8 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/turf/open/floor/circuit/green, -/area/station/ai/satellite/chamber) -"aLz" = ( +/turf/open/floor/iron, +/area/station/cargo/office) +"aEF" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall, +/area/station/maintenance/aft) +"aEO" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/security/glass{ + name = "Brig" }, -/obj/effect/turf_decal/delivery, /obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"aEU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"aFn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/tcommsat/computer) +"aGd" = ( +/obj/structure/table, +/obj/machinery/camera/directional/west{ + c_tag = "Incinerator Construction Area"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"aGn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/command/eva) -"aLA" = ( -/obj/machinery/door/poddoor/massdriver_chapel, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/atmos_shield_gen/active{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"aGs" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/meter, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos) +"aGu" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Connector" }, -/obj/machinery/atmos_shield_gen/active{ +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"aGC" = ( +/obj/structure/railing{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"aLE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"aLH" = ( +/area/station/service/chapel) +"aGK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aLK" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 + dir = 6 }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"aLN" = ( -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"aMa" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"aMf" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/chapel/dock) +"aGM" = ( +/obj/structure/chair/stool/directional/south, +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"aGQ" = ( +/obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"aMg" = ( -/obj/machinery/light/cold/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/electronics/apc, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"aMx" = ( -/obj/structure/cable, -/obj/machinery/camera/autoname/motion/directional/south{ - network = list("minisat") +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable/layer3, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance/no_decals/three, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"aME" = ( -/obj/structure/cable/multilayer/multiz, +/area/station/engineering/supermatter/room) +"aGR" = ( /obj/effect/turf_decal/stripes/line{ - dir = 10 + dir = 9 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/main) +"aGZ" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aMF" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/corporate_showroom) -"aMG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/area/station/hallway/primary/central) +"aHq" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"aML" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/wood, -/area/station/service/library) -"aMR" = ( +/area/station/security/courtroom) +"aHz" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"aHB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/commons/lounge) -"aMU" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/fullgrass/style_random, -/turf/open/floor/grass, -/area/station/science/research) -"aNe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"aHC" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Cryogenics"; + name = "medical camera"; + network = list("ss13","medical") }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/light/directional/north, +/obj/structure/bed/medical{ dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"aNv" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"aHD" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"aHQ" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/secure_closet/chief_medical, +/obj/machinery/firealarm/directional/south, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/gun/energy/e_gun/mini, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"aIl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"aNH" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "secentrylock2"; - name = "Security Entry" +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"aIq" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/tcommsat/computer) +"aIv" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"aIw" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/north{ + c_tag = "Security Office Lockers" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance" +/obj/structure/noticeboard/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"aIH" = ( +/obj/structure/transit_tube/crossing, +/obj/effect/turf_decal/sand/plating, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aII" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wardrobe/cargo_wardrobe, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"aJh" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage"; + name = "trash belt" + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"aNQ" = ( -/obj/machinery/computer/security/qm, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"aJm" = ( /obj/effect/turf_decal/siding/wood{ - dir = 9 + dir = 1 }, -/obj/machinery/computer/security/telescreen/vault/directional/north, -/obj/machinery/button/door/directional/west{ - id = "qmprivacy"; - name = "Privacy Shutters Control"; - pixel_x = -32; - pixel_y = 2 +/obj/structure/table/wood/fancy/blue, +/obj/item/food/cracker{ + pixel_x = -3; + pixel_y = 3 }, -/obj/machinery/keycard_auth/wall_mounted/directional/west{ - pixel_y = 12 +/obj/item/food/cracker{ + pixel_x = 3; + pixel_y = 3 }, -/obj/machinery/button/door/directional/west{ - pixel_y = -8; - name = "Cargo Lockdown"; - id = "cargolockdown"; - req_access = list("cargo") +/obj/item/food/cracker, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"aJF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/red{ + dir = 5 }, -/obj/machinery/button/door/directional/west{ - pixel_y = -8; - name = "Cargo Lobby Lockdown"; - id = "cargolobbylockdown"; - req_access = list("cargo"); - pixel_x = -39 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"aNR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"aNV" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"aJH" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "Atmospherics"; + name = "navigation beacon (Atmospherics Delivery)" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aOi" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/cargo/storage) -"aOm" = ( -/turf/closed/wall/r_wall, -/area/station/medical/morgue) -"aOp" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 6 +/obj/machinery/door/window/left/directional/west{ + name = "Atmospherics Delivery Access"; + req_access = list("atmospherics") }, -/turf/open/openspace, -/area/station/security/prison) -"aOK" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" }, -/obj/machinery/light/directional/north, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"aOQ" = ( -/turf/closed/wall/r_wall/rust, -/area/station/ai/upload/foyer) -"aOY" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/mapping_helpers/mail_sorting/service/kitchen, -/turf/open/floor/iron, -/area/station/commons/lounge) -"aPt" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics Tank - Oxygen" +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"aJM" = ( +/obj/machinery/hydroponics/soil, +/obj/item/shovel/spade, +/obj/item/cultivator{ + pixel_x = 9 }, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"aPw" = ( -/obj/structure/railing/corner, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"aPC" = ( -/obj/effect/spawner/structure/window/plasma, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"aPI" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 8 +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"aKe" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"aPJ" = ( -/obj/machinery/door_buttons/access_button{ - idDoor = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - pixel_x = 29; - pixel_y = -8; - req_access = list("xenobiology") +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, -/obj/machinery/shower/directional/south, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"aKr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"aPL" = ( -/obj/structure/railing/corner{ - dir = 4 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aKA" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/box/corners, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron, +/area/station/security/courtroom) +"aKI" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/layer3, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"aKY" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/security/prison/mess) +"aLg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/security/execution/education) +"aLi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"aLp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"aPO" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "maintbridge" +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aPR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"aLC" = ( +/obj/machinery/computer/pandemic, +/obj/effect/turf_decal/delivery, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"aLI" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"aLK" = ( +/obj/structure/closet/crate, +/obj/item/hand_labeler, +/obj/item/storage/crayons, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"aLP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"aMa" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"aMb" = ( +/turf/closed/wall, +/area/station/science/ordnance/freezerchamber) +"aMe" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/hydroponics) +"aMj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"aQg" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"aMp" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance" }, -/obj/machinery/light/dim/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-maint-passthrough" }, -/area/station/engineering/atmos/upper) -"aQm" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"aQo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"aQD" = ( -/obj/item/toy/plush/lizard_plushie/green{ - name = "ashwalker" - }, -/turf/open/floor/fakebasalt, -/area/station/maintenance/department/medical) -"aQL" = ( -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" +/area/station/maintenance/starboard) +"aMy" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/area/station/holodeck/rec_center) -"aQS" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"aRf" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aRn" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/asteroid) -"aRs" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"aRt" = ( -/obj/structure/chair/pew/left{ - dir = 4 +/area/station/hallway/primary/starboard) +"aMJ" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Engineering"; + name = "navigation beacon (Engineering Delivery)" }, -/turf/open/floor/iron/chapel{ - dir = 4 +/obj/machinery/door/window/right/directional/east{ + name = "Engineering Delivery Access"; + req_access = list("engineering") }, -/area/station/service/chapel) -"aRE" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"aRM" = ( -/obj/structure/closet/secure_closet/detective, -/obj/machinery/button/door/directional/north{ - id = "detective_shutters"; - name = "detective's office shutters control"; - req_access = list("detective") +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Blast Doors" }, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/storage/briefcase, -/obj/item/flashlight/seclite, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"aRN" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/virology) -"aRW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"aRZ" = ( -/obj/effect/turf_decal/stripes/red/line, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"aSd" = ( -/obj/machinery/light/warm/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"aSx" = ( -/obj/machinery/door/airlock/atmos{ - name = "Incinerator" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"aSE" = ( -/obj/structure/bodycontainer/morgue{ - dir = 2 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"aSG" = ( -/obj/machinery/computer/records/medical{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"aSM" = ( -/obj/machinery/porta_turret/ai{ +/area/station/engineering/lobby) +"aMK" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"aSS" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"aSZ" = ( -/turf/closed/wall, -/area/station/hallway/primary/fore) -"aTd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"aTi" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/obj/effect/spawner/random/vending/snackvend, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/security/office) -"aTr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/sign/departments/morgue/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"aTv" = ( -/obj/machinery/door/poddoor{ - id = "Secure Storage"; - name = "Secure Storage" +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/station/engineering/storage) -"aTD" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"aMU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/openspace, -/area/station/engineering/main) -"aTE" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"aTJ" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"aTM" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aTU" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/siding, -/obj/item/kirbyplants/random, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/textured, -/area/station/science/lobby) -"aUf" = ( -/turf/closed/wall/r_wall/rust, -/area/station/medical/chemistry/minisat) -"aUl" = ( -/obj/structure/rack, -/obj/effect/spawner/random/decoration/paint, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"aUo" = ( -/obj/structure/chair/sofa/bench/right{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"aUx" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/components/unary/passive_vent{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"aNa" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"aUy" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/stairs/left, -/area/station/hallway/primary/central) -"aUB" = ( -/obj/structure/closet/wardrobe/black, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"aUD" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"aNg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/electric_shock/directional/north, /obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Relay Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"aUG" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/fore) +"aNp" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/structure/table, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"aNt" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/processor/slime, +/obj/machinery/button/door/directional/south{ + id = "xeno4"; + name = "Creature Cell 4 Toggle"; + pixel_x = 24; + req_access = list("xenobiology") }, -/area/station/engineering/atmos/upper) -"aUM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"aVc" = ( -/obj/machinery/door/airlock/multi_tile/public, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, +/area/station/science/xenobiology) +"aNw" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/item/surgical_drapes, +/obj/item/clothing/mask/surgical, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"aVm" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/fore) +"aND" = ( +/turf/closed/wall/r_wall, +/area/station/science/lab) +"aNH" = ( +/obj/structure/chair/pew{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aVp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/office{ - dir = 4 +/obj/machinery/light/directional/west, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"aOc" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L1" }, -/turf/open/floor/iron, -/area/station/command/gateway) -"aVY" = ( -/obj/item/flashlight/flare{ - icon_state = "flare-on"; - start_on = 1 +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 32 }, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"aVZ" = ( -/obj/machinery/computer/atmos_control/nitrogen_tank{ - dir = 8 +/obj/structure/sign/directions/medical{ + dir = 8; + pixel_y = 40 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/sign/directions/command{ + dir = 8; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"aWi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"aWD" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/main) -"aWJ" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"aWM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"aXg" = ( -/obj/structure/railing{ - dir = 10 +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"aOf" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor{ + id = "justiceblast"; + name = "Justice Blast Door" }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"aXl" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/server) -"aXt" = ( -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"aXz" = ( -/obj/structure/chair/sofa/bench/left, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" +/area/station/security/execution/education) +"aOg" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"aXA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"aXD" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical/central) -"aXH" = ( -/obj/machinery/light/small/directional/north, -/turf/open/misc/asteroid, -/area/station/asteroid) -"aYf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/engineering/storage) -"aYj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/openspace, -/area/station/security/prison) -"aYu" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"aYx" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"aYD" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/maintenance/radshelter/medical) -"aYG" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/maintenance/aft) +"aOG" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"aYQ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"aZg" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 8 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aZk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/secondary/service) -"aZn" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"aZs" = ( -/obj/structure/cable, +/area/station/command/gateway) +"aOS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 2 +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "virology sorting disposal pipe" }, -/turf/open/floor/iron/white, -/area/station/science/research) -"aZt" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-6" +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"aPg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"aPj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"aZw" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"aZK" = ( +/obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/machinery/duct, -/obj/machinery/light/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"aZR" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/area/station/engineering/atmos) -"bag" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"ban" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, -/obj/structure/railing{ - dir = 8 +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"aPr" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/structure/railing{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"bay" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/cargo/miningdock) +"aPx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"baH" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/safe) -"baO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/security/medical) -"baP" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"baW" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "HoP sorting disposal pipe" }, +/obj/effect/mapping_helpers/mail_sorting/service/hop_office, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"aPF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"aPJ" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/office) -"baY" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"aPK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/atmos) -"bbf" = ( -/obj/structure/table/reinforced, +/area/station/security/courtroom) +"aPR" = ( +/obj/structure/table/wood, +/obj/effect/landmark/event_spawn, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/wood/tile, +/area/station/service/library) +"aPT" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, /obj/machinery/door/poddoor/shutters/preopen{ dir = 4; - id = "hopdesk" + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" }, -/obj/effect/landmark/navigate_destination/hop, -/obj/machinery/door/firedoor, -/obj/item/paper_bin, -/obj/item/pen, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/medical/office) +"aQl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"aQs" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, -/obj/machinery/door/window/brigdoor/left/directional/west{ - req_access = list("hop") - }, -/obj/machinery/door/window/left/directional/east, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/heads_quarters/hop) -"bbh" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/disposal/bin, +/area/station/hallway/primary/central) +"aQB" = ( +/obj/machinery/computer/message_monitor, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"aQQ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"bbq" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 2 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"aRa" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/right/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"aRB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/space/basic, -/area/space) -"bbx" = ( -/obj/structure/closet/secure_closet/security/engine, -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"aRH" = ( +/obj/structure/chair{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"bca" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/landmark/start/bartender, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"bcg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"bcj" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" +/area/station/security/prison/mess) +"aRS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/box, -/obj/machinery/byteforge, -/turf/open/floor/iron/dark/textured, -/area/station/cargo/bitrunning/den) -"bcm" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"bco" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/solars/port) -"bcr" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"bcu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"bcX" = ( -/obj/machinery/duct, /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"bdk" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"aSa" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/ai/satellite/foyer) +"aSo" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"bdu" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"bdv" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"aSr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/old, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bdz" = ( -/obj/structure/railing{ - dir = 4 +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"aSu" = ( +/obj/structure/chair/pew{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/iron/chapel{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"bdC" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage" - }, +/area/station/service/chapel) +"aSv" = ( +/obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"aSX" = ( /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/turf/open/floor/iron/dark/textured_half, -/area/station/engineering/storage/tech) -"bdG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, /area/station/hallway/primary/fore) -"bdR" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_secure_all, -/turf/open/floor/circuit, -/area/station/engineering/storage/tech) -"bef" = ( -/obj/structure/railing/corner{ +"aSZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/item/trash/shrimp_chips, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"bej" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"beA" = ( -/obj/machinery/door/airlock/research{ - name = "Restroom" +/area/station/cargo/storage) +"aTb" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"aTe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron/showroomfloor, -/area/station/science/research) -"beE" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"beK" = ( -/obj/machinery/power/shieldwallgen, -/obj/structure/window/spawner/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/area/station/command/emergency_closet) -"beN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/delivery, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - location = "QM #2" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"aTg" = ( +/obj/structure/chair/office/light{ + dir = 8 }, -/mob/living/simple_animal/bot/mulebot, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"beO" = ( -/obj/machinery/light/small/broken/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/chief_medical_officer, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/machinery/computer/security/telescreen/cmo/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"aTm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"beR" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue Office" - }, -/obj/effect/turf_decal/stripes/red/end{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"aTo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock_note_placer{ - note_path = /obj/item/paper/guides/jobs/medical/morgue - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"beW" = ( -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"bfc" = ( -/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"bfe" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"bfl" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/basic, -/area/station/solars/port/aft) -"bfp" = ( -/obj/effect/decal/cleanable/rubble, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"aTx" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"bfD" = ( +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron, +/area/station/cargo/storage) +"aTR" = ( /obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"bfN" = ( -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"bfX" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ +/turf/open/floor/iron/recharge_floor, +/area/station/science/robotics/mechbay) +"aUn" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/footprints{ +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"aUw" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"bga" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"bgm" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 6 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/turf/open/floor/iron/goonplaque, +/area/station/security/brig) +"aUz" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"aUU" = ( /obj/structure/table, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"bgp" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"bgv" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "QMLoad2" - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bgx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/steam_vent, +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bgC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/fore) +"aUW" = ( +/turf/open/floor/iron/stairs/medium{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ - dir = 8 +/area/station/hallway/primary/fore) +"aVl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/engineering/atmos) -"bgU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/commons/locker) -"bgY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"bhk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"aVn" = ( +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -5; + pixel_y = 6 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"bhB" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Aft Solar Access" +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 5; + pixel_y = -4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/clothing/mask/gas{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/solars/port) -"bhD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "bridgespace" +/area/station/maintenance/starboard/fore) +"aVt" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 }, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/bridge) -"bhG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"bhL" = ( -/obj/effect/turf_decal/siding/dark, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/corporate_showroom) -"bhS" = ( +/area/station/security/prison/garden) +"aVx" = ( +/obj/effect/spawner/random/structure/tank_holder, /obj/structure/cable, -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/siding/purple/corner{ +/turf/open/floor/plating, +/area/station/maintenance/central) +"aVC" = ( +/obj/structure/sink/directional/west, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/loading_area, +/obj/machinery/door/window/right/directional/south{ + name = "Trash Chute"; + req_access = list("janitor") + }, +/obj/item/reagent_containers/cup/bucket, +/obj/item/mop, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"bhU" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"bhV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/structure/steam_vent, +/area/station/service/janitor) +"aVG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bhY" = ( -/obj/machinery/computer/shuttle/labor{ +/area/station/maintenance/starboard) +"aVH" = ( +/obj/structure/bed{ dir = 4 }, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"bhZ" = ( -/obj/effect/turf_decal/trimline/red/filled/end{ +/obj/item/bedsheet/captain{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"biC" = ( -/obj/machinery/telecomms/broadcaster/preset_left, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"biG" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/landmark/start/captain, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) +"aVI" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"biS" = ( -/turf/closed/wall/r_wall/rust, -/area/station/ai/upload/chamber) -"bjb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/kirbyplants/random/dead, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"bjc" = ( -/obj/machinery/power/turbine/inlet_compressor{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"bjl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"bjn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"bjo" = ( -/obj/structure/closet/secure_closet/medical2, -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/broken_flooring/pile{ - dir = 1 +/area/station/security/office) +"aWD" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/storage/gas) +"aWF" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bjp" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Research Testing Chamber"; - req_access = list("science") +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/science/explab) -"bjv" = ( -/obj/machinery/photocopier/prebuilt, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"bjy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"bjM" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/area/station/maintenance/disposal/incinerator) +"aWI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/obj/machinery/light_switch/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"bka" = ( +/area/station/hallway/primary/fore) +"aXf" = ( +/obj/machinery/atmospherics/components/binary/valve, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel/monastery) +"aXA" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bkb" = ( -/obj/structure/closet/crate/preopen, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/red{ dir = 8 }, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/storage/box/coffeepack, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"bkk" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/port/greater) -"bky" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/warm/dim/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"aXJ" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"bkW" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/food/grown/melonlike/watermelon, +/obj/item/food/grown/wheat, +/obj/item/food/grown/whitebeet, +/obj/item/food/grown/apple, +/obj/item/food/grown/tomato, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/west{ + name = "Hydroponics Desk"; + req_access = list("hydroponics") + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"aYd" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"aYu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, +/turf/closed/wall, +/area/station/engineering/atmos) +"aYv" = ( +/obj/structure/chair/comfy/brown{ dir = 8 }, -/turf/open/openspace, -/area/station/engineering/main) -"blh" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"blz" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"aYz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/window/spawner/directional/north, -/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"aYE" = ( +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"aYI" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"blE" = ( -/obj/vehicle/sealed/mecha/ripley/paddy/preset, -/obj/effect/turf_decal/stripes/line{ +/area/station/maintenance/starboard) +"aYN" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/recharge_floor, -/area/station/security/mechbay) -"blM" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bmf" = ( -/obj/effect/turf_decal/siding/white{ +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"aYU" = ( +/obj/machinery/rnd/production/techfab/department/security, +/obj/effect/turf_decal/stripes/box, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"bmj" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/bananalamp{ - pixel_x = 4; - pixel_y = 18 - }, -/obj/item/toy/figure/clown, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/office) +"aYW" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/service/theater) -"bmp" = ( -/turf/closed/wall, -/area/station/service/theater) -"bmr" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"bmu" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bmy" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Fore Primary Hallway" +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"aYX" = ( +/obj/machinery/button/door/directional/north{ + id = "Biohazard"; + name = "Emergency Research Lockdown"; + pixel_x = -8; + req_access = list("research") }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"bmz" = ( -/obj/machinery/vending/wardrobe/law_wardrobe, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"bmL" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/carpet, -/area/station/service/theater) -"bmO" = ( -/obj/machinery/vending/clothing, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"bmV" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/white{ +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"bnb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/valve{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"bnn" = ( -/obj/effect/turf_decal/tile/purple/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/xenobiology) -"bnr" = ( -/obj/structure/table, -/obj/item/key/security, -/turf/open/floor/iron, -/area/station/security/warden) -"bnv" = ( -/obj/machinery/disposal/delivery_chute{ - dir = 1 - }, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/east, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"aZe" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/obj/structure/window/spawner/directional/south, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"aZh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"bnG" = ( -/obj/structure/railing{ - dir = 9 +/area/station/maintenance/fore) +"aZi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access = list("library") }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/library) +"aZw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 9 +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"bax" = ( +/turf/closed/wall, +/area/station/commons/storage/primary) +"baz" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/area/station/command/meeting_room) -"bnK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/item/radio/intercom/directional/north, /turf/open/floor/iron, -/area/station/engineering/lobby) -"bnP" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/structure/chair/office{ - dir = 4 +/area/station/hallway/primary/central/fore) +"baC" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/directional/north{ + c_tag = "Atmospherics Lockers"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bon" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"bos" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"baE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"baF" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"boy" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"boQ" = ( -/obj/machinery/power/solar_control{ - dir = 4; - id = "foreport"; - name = "Port Bow Solar Control" - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"boT" = ( -/obj/machinery/atmospherics/components/unary/thermomachine, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"bpy" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"bpN" = ( +/area/station/maintenance/starboard/aft) +"baG" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"bpW" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"bqj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "commissaryshutter"; + name = "Vacant Commissary Shutter" }, +/obj/structure/table/reinforced, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"baK" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"baS" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"bqm" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"bqr" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/security/interrogation) -"bqz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"bqA" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 9 +"bbl" = ( +/obj/machinery/door/airlock/external{ + name = "Abandoned External Airlock" }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"bqE" = ( -/obj/machinery/computer/mech_bay_power_console, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/broken/directional/north, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/hallway/primary/central) -"bqR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"bqT" = ( -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 1; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"bbA" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"bqX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridgespace" - }, +/area/station/maintenance/starboard/fore) +"bbC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/book/manual/wiki/engineering_hacking, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/command/bridge) -"brc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"brw" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"brx" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/port/lesser) +"bbO" = ( +/turf/closed/wall/r_wall, +/area/station/service/chapel/storage) +"bcs" = ( +/obj/structure/sign/warning/explosives, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/bomb) +"bcE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"brN" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/conveyor{ - dir = 5; - id = "QMLoad2" - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"brP" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor/auto{ - dir = 8; - id = "bridgedeliver" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"brS" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/effect/turf_decal/box/red, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"bcQ" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/closet/secure_closet/atmospherics, /turf/open/floor/iron/dark, -/area/station/service/bar) -"brV" = ( -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"bsw" = ( -/obj/structure/disposalpipe/segment{ +/area/station/engineering/atmos) +"bcY" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/stack/sheet/mineral/plasma, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"bdk" = ( +/obj/machinery/modular_computer/preset/curator{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"bsG" = ( -/obj/machinery/door/window/right/directional/west{ - req_access = list("library") - }, -/turf/open/floor/carpet/royalblue, -/area/station/service/library) -"bsM" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/command/heads_quarters/cmo) -"bsX" = ( -/obj/structure/rack, -/obj/item/electronics/airalarm, -/obj/item/electronics/airlock, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"bsZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/pai_card, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/bot_white, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"btl" = ( -/obj/structure/cable, +/area/station/service/library) +"bdo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"btJ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"btM" = ( /obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/chapel{ - dir = 8 +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" }, -/area/station/service/chapel) -"btU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/siding/white/end{ - dir = 4 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bdF" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"btZ" = ( -/obj/machinery/computer/atmos_control/nocontrol/master, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"bue" = ( +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"bdH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"bdM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/structure/reagent_dispensers/wall/peppertank/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"bui" = ( -/obj/machinery/door/poddoor/lift/preopen{ - transport_linked_id = "medbay1" +/area/station/security/checkpoint/medical) +"bdU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) -"buk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"bup" = ( -/obj/effect/turf_decal/stripes{ +/area/station/engineering/atmos) +"bdX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"buu" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"buw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"bed" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/biohazard/directional/east, /obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"buH" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"buI" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"beo" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/checkpoint/customs) +"beK" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"buK" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/stasis{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"beN" = ( +/obj/item/kirbyplants/organic/plant10, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/defibrillator_mount/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bvj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/button/door/directional/north{ + id = "transittube_ai"; + name = "Transit Tube Lockdown Toggle"; + req_access = list("command") + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/corner{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/area/station/service/hydroponics/garden) -"bvl" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"bfA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"bvm" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/siding/white/end{ +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"bvD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bvM" = ( +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"bfI" = ( +/obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, /turf/open/floor/iron, /area/station/cargo/storage) -"bvP" = ( -/obj/effect/decal/cleanable/blood/tracks, +"bgl" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/hop) +"bhk" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Command Maintenance" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/teleporter, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"bhm" = ( +/obj/machinery/computer/monitor{ + dir = 1; + name = "backup power monitoring console" + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/noticeboard/directional/south, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bvT" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 4 +/area/station/maintenance/department/electrical) +"bhr" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "rdgene"; + name = "Genetics Lab Shutters" }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ - dir = 4 +/turf/open/floor/plating, +/area/station/science/genetics) +"bht" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"bhB" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small/directional/north, +/obj/machinery/light_switch/directional/west, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/server) +"bhH" = ( +/obj/machinery/button/massdriver{ + id = "trash"; + pixel_x = -26; + pixel_y = -6 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/button/door/directional/west{ + id = "Disposal Exit"; + name = "Disposal Vent Control"; + pixel_y = 4; + req_access = list("maint_tunnels") }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"bvX" = ( +/area/station/maintenance/disposal) +"bhJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"bhR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Freight Mining Airlock" }, -/area/station/science/xenobiology) -"bwj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 1 +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"bib" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"bwt" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/table/wood, -/obj/item/camera/detective, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"bwu" = ( -/obj/structure/sign/departments/aisat/directional/east, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/photobooth, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"bwQ" = ( -/obj/structure/cable, +/area/station/cargo/storage) +"biq" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"bis" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/mail_sorting/science/robotics, -/obj/structure/disposalpipe/sorting/mail, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"biP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"bxi" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ +/area/station/maintenance/aft) +"biR" = ( +/obj/effect/turf_decal/stripes/white/line{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"bxn" = ( -/obj/machinery/door/airlock/hatch{ - name = "Telecomms Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "antesat" - }, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"bxq" = ( -/obj/machinery/computer/dna_console, -/obj/item/toy/figure/geneticist{ - pixel_y = 18 - }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"bxs" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"bxx" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/chair/sofa/bench{ +/turf/closed/wall/r_wall/rust, +/area/station/security/execution/transfer) +"bjb" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/structure/sign/warning/radiation/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"bji" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"bjz" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"bjB" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"bjJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"bjN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"bxC" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay" +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"bxG" = ( -/obj/structure/railing/corner{ +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"bjR" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"bkn" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"bks" = ( +/obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible, +/obj/effect/turf_decal/tile/green/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/command/meeting_room) -"bxH" = ( -/obj/effect/spawner/structure/window/hollow/end{ +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos/pumproom) +"bkK" = ( +/obj/machinery/rnd/server/master, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/science/server) +"bkN" = ( +/obj/machinery/telecomms/bus/preset_two, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"bkT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/north{ + c_tag = "Locker Room"; + name = "recreation camera" + }, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/turf/open/floor/plating, -/area/station/security/courtroom) -"bxN" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/camera/autoname/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/command/bridge) -"byb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 1 +/area/station/commons/locker) +"bla" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"byf" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"byj" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"byk" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"byB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"byC" = ( -/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"bln" = ( +/obj/structure/table/reinforced, /obj/machinery/door/firedoor, -/obj/structure/sign/warning/biohazard, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, +/obj/item/pen, +/turf/open/floor/iron, +/area/station/service/kitchen) +"bls" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/station/science/xenobiology) -"byT" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north, +/area/station/maintenance/starboard) +"blw" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"blx" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Warden Requisition Desk"; - req_access = list("armory") +/obj/machinery/door/airlock/public/glass{ + name = "Arrivals Dock" }, +/obj/effect/landmark/navigate_destination/dockarrival, /turf/open/floor/iron/dark, -/area/station/security/warden) -"bzj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/broken/directional/north, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/textured_edge, -/area/station/maintenance/department/medical/central) -"bzo" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/hallway/secondary/entry) +"blA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bzu" = ( -/obj/item/pickaxe/improvised, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"bzB" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/recharger, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"bzC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"blU" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"blX" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/turf/closed/wall, +/area/station/engineering/atmos) +"blZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bzE" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"bmn" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/potato, /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ +/turf/open/floor/grass, +/area/station/security/prison/garden) +"bmu" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/reagent_containers/cup/bucket, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"bmB" = ( +/obj/machinery/door/poddoor/incinerator_ordmix, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"bmX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"bzH" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"bzI" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"bnl" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/sign/poster/random/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/syndicatebomb/training, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"bzN" = ( -/obj/machinery/restaurant_portal/bar, -/turf/open/floor/wood, -/area/station/commons/lounge) -"bzQ" = ( +/area/station/hallway/secondary/service) +"bnn" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) -"bzV" = ( -/obj/machinery/light_switch/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/door/firedoor/border_only, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/stairs{ + dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/area/station/service/chapel) +"bnB" = ( +/obj/structure/frame/computer, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/chapel/storage) +"bnT" = ( +/obj/effect/turf_decal/stripes/end{ dir = 1 }, -/area/station/engineering/atmos/upper) -"bzX" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"bnY" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/security/detectives_office) +"bod" = ( +/obj/structure/lattice/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"bAe" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/space/basic, +/area/space/nearstation) +"boo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/window/left/directional/north{ + name = "Maximum Security Test Chamber"; + req_access = list("xenobiology") + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"boq" = ( +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"bAn" = ( -/obj/effect/spawner/random/engineering/vending_restock, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bAr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bAw" = ( -/turf/closed/wall/r_wall, -/area/station/command/gateway) -"bAE" = ( +/area/station/command/heads_quarters/hop) +"bot" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/maintenance/starboard/fore) +"boE" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"bAF" = ( -/obj/machinery/door/morgue{ - name = "Private Study"; - req_access = list("library") +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"boG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine/cult, -/area/station/service/library) -"bAJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ - icon = 'icons/obj/stairs.dmi'; - icon_state = "stairs_wood" +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"boO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/area/station/service/chapel) -"bAP" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/station/service/library) -"bAS" = ( -/obj/structure/table/wood, -/obj/machinery/coffeemaker/impressa, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"bAV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"bAW" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/loading_area, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"bpg" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/item/grenade/flashbang, -/obj/item/coin/iron, /turf/open/floor/iron/dark, /area/station/security/lockers) -"bBb" = ( -/obj/machinery/door/window/left/directional/east{ - name = "Library Desk Door"; - req_access = list("library") +"bpj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"bpn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Mailroom" }, -/obj/effect/turf_decal/siding/wood/end{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/library) -"bBm" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-mailroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/shipping, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"bpp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/structure/lattice, -/turf/open/openspace, -/area/station/command/meeting_room) -"bBr" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/engineering/atmospherics_engine) -"bBs" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"bBH" = ( +/area/station/maintenance/fore) +"bps" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"bBI" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/west{ - name = "Outer Window" +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" }, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Security Desk"; - req_access = list("security") +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/folder/red, -/obj/item/pen, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"bBX" = ( -/obj/structure/window/spawner/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"bCg" = ( -/obj/structure/reagent_dispensers/plumbed/storage{ - dir = 8; - reagent_id = /datum/reagent/clf3 +/area/station/maintenance/port/aft) +"bpz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/sign/warning/fire/directional/south, -/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/asteroid) -"bCm" = ( -/obj/structure/girder/displaced, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"bCr" = ( -/obj/machinery/computer/security/mining{ - dir = 8 +/area/station/maintenance/starboard/fore) +"bpI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"bpK" = ( +/obj/item/target/clown, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"bpR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/keycard_auth/wall_mounted/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"bCv" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/restraints/handcuffs, -/turf/open/floor/iron/white/herringbone, -/area/station/maintenance/department/medical/central) -"bCw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"bCD" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"bCJ" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"bpU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/plaque{ - icon_state = "L1" +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"bDk" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"bpV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"bDq" = ( -/obj/structure/punching_bag, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/security/prison) -"bDs" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security E.V.A. Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"bDy" = ( -/obj/structure/chair/sofa/bench{ +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"bqd" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"bDA" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/structure/table/wood/fancy/orange, -/obj/item/plate, -/obj/item/food/spaghetti/pastatomato{ - pixel_y = 5 +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/item/kitchen/fork, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"bDK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bDN" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"bDX" = ( -/obj/structure/rack, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/obj/machinery/door/window/right/directional/west{ - name = "Jetpack Storage"; - req_access = list("eva") +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/machinery/door/window/left/directional/east{ - name = "Jetpack Storage"; - req_access = list("eva") +/area/station/hallway/primary/central/fore) +"bqi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/meter, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/item/tank/jetpack/carbondioxide{ - pixel_y = 2 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/item/tank/jetpack/carbondioxide{ - pixel_y = -2 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"bqy" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Bridge Access"; + name = "command camera" }, -/obj/item/tank/jetpack/carbondioxide{ - pixel_y = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, -/area/station/command/eva) -"bEd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 +/area/station/command/bridge) +"brg" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/engineering_all, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/south{ + c_tag = "Tech storage"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, -/area/station/security/prison) -"bEn" = ( -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/hos) -"bEo" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/circuitboard/computer/operating, -/obj/effect/decal/cleanable/glass, -/obj/structure/broken_flooring/side/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bEq" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"bEu" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"brz" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"bEz" = ( -/obj/structure/closet/crate/science, -/obj/item/wrench, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/firealarm/directional/west, -/obj/effect/spawner/random/maintenance, +/area/station/hallway/secondary/exit/departure_lounge) +"brA" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"bEW" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/decoration/microwave{ - dir = 1; - pixel_y = 2 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/light/warm/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"bFa" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"bFe" = ( -/obj/machinery/suit_storage_unit/hos, -/obj/machinery/keycard_auth/wall_mounted/directional/east{ - pixel_y = -12 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"bFw" = ( -/obj/machinery/door/window/right/directional/east{ - name = "Delivery Door"; - req_access = list("cargo") - }, -/obj/structure/plasticflaps, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - location = "Disposals" - }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"bFI" = ( -/obj/machinery/button/door/directional/west{ - id = "commissaryshutter"; - name = "Commissary Shutter Control" - }, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/neck/tie/black, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"bFS" = ( -/turf/open/openspace, -/area/station/ai/satellite/foyer) -"bGc" = ( -/obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap{ - pixel_y = 3 - }, -/obj/item/stack/package_wrap{ - pixel_y = 6 - }, -/obj/effect/spawner/random/bureaucracy/birthday_wrap{ - pixel_y = 9 - }, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"bGe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, /turf/open/floor/iron, -/area/station/cargo/storage) -"bGg" = ( -/obj/structure/rack, -/obj/item/electronics/firealarm, -/obj/item/electronics/firelock, -/obj/machinery/light/cold/dim/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"bGk" = ( -/turf/closed/wall/r_wall, -/area/station/medical/chemistry) -"bGl" = ( -/obj/structure/chair/sofa/corp/left{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - name = "couch" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/construction/mining/aux_base) +"brE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 5 }, -/obj/machinery/newscaster/directional/east, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"bGu" = ( -/obj/structure/chair/sofa/bench/right{ +/obj/machinery/meter, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"bGD" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"bGF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/chair{ - dir = 1; - name = "Prosecution" - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/security/courtroom) -"bGL" = ( -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 6; - pixel_y = -2; - req_access = list("xenobiology") - }, -/obj/machinery/button/ignition{ - id = "Xenobio"; - pixel_x = -6 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"brK" = ( +/obj/machinery/gulag_teleporter, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"brW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/grass, +/area/station/science/auxlab) +"bsa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"bsc" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/multitool, +/obj/machinery/camera/directional/west{ + c_tag = "Telecomms Monitoring"; + name = "telecomms camera"; + network = list("ss13","tcomms") }, -/area/station/science/xenobiology) -"bGU" = ( -/obj/machinery/computer/atmos_alert/station_only{ - dir = 4 +/obj/machinery/requests_console/directional/west{ + department = "Telecomms Admin"; + name = "Telecomms Requests Console" }, -/obj/machinery/camera/autoname/directional/south, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"bGW" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/command/bridge) -"bGX" = ( -/obj/structure/chair/sofa/bench/right, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"bGZ" = ( -/obj/structure/chair/office{ +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"bHa" = ( -/obj/machinery/air_sensor/air_tank, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"bHb" = ( -/obj/machinery/door/window/left/directional/east{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/structure/table/reinforced, -/obj/item/paper, -/obj/item/pen, -/obj/effect/turf_decal/stripes/box, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"bso" = ( /obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters"; - dir = 8 + dir = 1; + id = "ordnancestorage"; + name = "Ordnance Storage Shutters" }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"bHc" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"bHg" = ( -/obj/structure/railing/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"bHj" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"bHy" = ( -/obj/machinery/door/airlock/research, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"bHH" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"bsy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bHI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"bsB" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/storage/box/lights/mixed{ + pixel_y = 6 + }, +/obj/machinery/door/window/right/directional/east{ + name = "Cargo Desk"; + req_access = list("shipping") + }, +/obj/item/flashlight, +/obj/effect/spawner/random/bureaucracy/birthday_wrap, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"bIe" = ( -/obj/structure/table, -/obj/item/stamp/granted{ - pixel_x = -3; - pixel_y = 3 +/area/station/cargo/office) +"bsJ" = ( +/obj/structure/destructible/cult/item_dispenser/archives/library, +/obj/item/book/codex_gigas{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/stamp/denied{ +/obj/item/storage/fancy/candle_box{ pixel_x = 4; - pixel_y = -2 - }, -/obj/item/dest_tagger{ - pixel_x = 9; - pixel_y = 10 + pixel_y = 4 }, -/obj/item/pen/red{ - pixel_y = 10 +/obj/item/flashlight/lantern{ + pixel_x = 4 }, /obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"bIi" = ( -/obj/structure/cable, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/central/lesser) -"bIE" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"bsT" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/effect/turf_decal/delivery, +/obj/machinery/newscaster/directional/north, +/obj/item/pickaxe/mini, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"bsZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bII" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"btb" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/obj/machinery/firealarm/directional/west, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/pharmacy) -"bIJ" = ( -/obj/machinery/duct, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, /turf/open/floor/iron, -/area/station/commons/locker) -"bIN" = ( -/obj/machinery/door/window/right/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"bIS" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/area/station/hallway/secondary/exit/departure_lounge) +"btg" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/area/station/maintenance/port/greater) -"bJo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"bJr" = ( -/obj/structure/rack, -/obj/item/storage/box, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"btt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bJQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/area/ruin/space/has_grav/abandoned_warehouse) +"bty" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/plasma, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"btI" = ( +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 }, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 1 +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/area/station/service/chapel) -"bJX" = ( -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"bKK" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, /area/station/hallway/primary/central) -"bKL" = ( -/obj/item/flashlight/glowstick/cyan{ - pixel_y = 7; - start_on = 1 +"btK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"buk" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Atmospherics Tank - O2"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"bKQ" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"bKV" = ( -/obj/structure/table, -/obj/effect/spawner/random/entertainment/dice, -/turf/open/floor/iron, -/area/station/security/prison) -"bKX" = ( -/obj/machinery/computer/telecomms/server{ - dir = 1; - network = "tcommsat" +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"bum" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"bLa" = ( -/obj/structure/chair/sofa/bench/left{ +/turf/open/floor/iron/dark, +/area/station/security/processing) +"buq" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"buu" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, +/obj/effect/turf_decal/tile/blue/fourcorners, /obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"buJ" = ( +/obj/structure/bed/dogbed/runtime, +/mob/living/basic/pet/cat/runtime, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"bLu" = ( -/obj/effect/turf_decal/sand/plating, +/area/station/command/heads_quarters/cmo) +"buS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"bvk" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/north, /obj/machinery/light/small/directional/north, -/turf/open/misc/asteroid, -/area/station/cargo/miningoffice) -"bLI" = ( -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/processor/slime, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"bMb" = ( -/obj/structure/lattice/catwalk, -/obj/structure/ladder, -/obj/machinery/light/directional/north, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"bMk" = ( -/obj/structure/closet/l3closet/janitor, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/turf/open/floor/iron, -/area/station/service/janitor) -"bMl" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bMm" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - location = "Medical" - }, -/obj/machinery/door/window/left/directional/north{ - name = "MuleBot Access"; - req_access = list("shipping") - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bMx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"bvA" = ( +/obj/structure/chair/comfy/brown{ + color = "#c45c57"; + dir = 4 }, -/obj/structure/broken_flooring/corner, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bMP" = ( +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"bvB" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 4 - }, -/turf/open/floor/iron/edge{ - dir = 4 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" }, -/area/station/hallway/secondary/exit/departure_lounge) -"bMZ" = ( -/obj/machinery/ore_silo, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/machinery/status_display/ai/directional/north, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/command/vault) -"bNp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/security/execution/transfer) +"bvN" = ( +/obj/structure/railing, /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"bNu" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"bvR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"bwc" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"bNz" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"bwk" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"bwA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/ordnance) +"bwB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, -/obj/effect/spawner/random/maintenance, -/obj/item/clothing/suit/hazardvest, -/obj/item/multitool, -/obj/item/clothing/gloves/color/fyellow, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"bwN" = ( +/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/arrows/white{ + color = "#0000FF"; + pixel_y = 15 + }, /turf/open/floor/iron, -/area/station/commons/storage/tools) -"bNA" = ( -/obj/machinery/door/airlock/security{ - name = "Auxilliary Brig" +/area/station/maintenance/disposal/incinerator) +"bwW" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/medical/central) +"bxj" = ( /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/security/brig) -"bND" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bNG" = ( -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_interior"; - name = "Xenobiology Lab Internal Airlock" +/area/station/security/prison) +"bxs" = ( +/obj/effect/turf_decal/box, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"bxx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"bxE" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"bNI" = ( -/obj/structure/showcase/cyborg/old{ - dir = 8; - pixel_x = 9; - pixel_y = 2 +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"bNL" = ( -/turf/closed/wall, -/area/station/cargo/bitrunning/den) -"bNS" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bOg" = ( -/obj/effect/spawner/random/maintenance/three, -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/ethereal, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"bOi" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/hallway) +"bxG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, /obj/effect/mapping_helpers/burnt_floor, -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/fore) +"byb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"bys" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"bOl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"bOr" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/area/station/command/bridge) +"byy" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"bOw" = ( -/obj/machinery/door/airlock/research, -/obj/effect/turf_decal/siding/purple{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/command/gateway) +"byD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"byK" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "geneshut" - }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"bOO" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"byS" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"bOT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"bPc" = ( -/obj/effect/turf_decal/box/corners{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"bza" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"bPu" = ( -/obj/effect/decal/cleanable/rubble, +/area/station/hallway/primary/aft) +"bzb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"bPP" = ( -/obj/machinery/conveyor_switch/oneway{ - dir = 8; - id = "garbage"; - name = "disposal conveyor" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bzc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"bzo" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"bPS" = ( -/obj/structure/stairs/east, -/obj/structure/railing{ +/area/station/maintenance/port/aft) +"bzp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"bPY" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"bzu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, -/area/station/security/office) -"bPZ" = ( -/obj/structure/table, -/obj/machinery/light/directional/south, -/obj/item/cigbutt/cigarbutt, +/area/station/service/chapel/dock) +"bzy" = ( +/obj/structure/closet/radiation, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"bzS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/south, +/obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"bQc" = ( -/turf/open/floor/iron/stairs/left{ - dir = 1 +/area/station/hallway/secondary/exit/departure_lounge) +"bAc" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 }, -/area/station/command/bridge) -"bQf" = ( -/obj/machinery/door/poddoor/shutters{ - id = "aux_base_shutters"; - name = "Auxiliary Base Shutters" +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"bQl" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"bAi" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/maintenance/fore) +"bAs" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/food/grown/poppy/geranium{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/geranium{ + pixel_x = 6; + pixel_y = 6 }, +/obj/item/food/grown/poppy/geranium, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"bQT" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/station/service/chapel) +"bAQ" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/shower/directional/east{ + name = "emergency shower" }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"bQY" = ( -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/fishing_portal_generator, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"bRD" = ( -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"bRI" = ( -/obj/machinery/rnd/production/techfab/department/medical, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/digital_clock/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"bRN" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"bRU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"bSr" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 4 +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_edge{ +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, -/area/station/science/research) -"bSz" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"bAS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"bAX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bSC" = ( -/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"bBe" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/blood, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"bBr" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/gateway) -"bSE" = ( -/obj/machinery/porta_turret/ai{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"bBE" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"bSH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"bBF" = ( +/turf/closed/wall/r_wall, +/area/station/science/robotics/lab) +"bBK" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, -/area/station/engineering/main) -"bSI" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/area/station/cargo/miningoffice) +"bBS" = ( +/turf/closed/wall/r_wall, +/area/station/command/teleporter) +"bBV" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/cargo/storage) +"bBY" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/watermelon, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"bCz" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/clipboard{ + pixel_x = 3 }, -/obj/machinery/recharge_station, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"bSX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/pile{ - dir = 1 +/obj/item/folder/yellow{ + pixel_x = 3 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bSY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/door/window/left/directional/east{ + name = "Mailroom Desk"; + req_access = list("shipping") }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"bTm" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/cloth/fancy/mechanical{ - id = "chapelc" +/obj/effect/landmark/start/hangover, +/obj/structure/desk_bell{ + pixel_x = -8; + pixel_y = 10 }, -/turf/open/floor/plating, -/area/station/service/chapel) -"bTt" = ( -/obj/structure/cable, -/obj/structure/plasticflaps/opaque, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/window/right/directional/south{ - name = "MuleBot Access"; - req_access = list("shipping") +/turf/open/floor/iron, +/area/station/cargo/sorting) +"bCO" = ( +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"bTB" = ( -/obj/machinery/mineral/stacking_machine{ - input_dir = 8; - output_dir = 2 +/obj/item/lipstick/random{ + pixel_x = 6; + pixel_y = 6 }, -/obj/machinery/conveyor{ - id = "garbage" +/obj/item/lipstick/random{ + pixel_x = 6; + pixel_y = 3 }, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"bTI" = ( -/obj/structure/table/wood, +/obj/item/lipstick/random{ + pixel_x = 6 + }, +/obj/item/pen, +/obj/structure/table, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/commons/locker) +"bDj" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/vending/colavend, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"bDp" = ( +/obj/effect/turf_decal/bot, +/obj/structure/tank_dispenser/oxygen, /obj/effect/decal/cleanable/dirt, -/obj/item/toy/crayon/spraycan/mimecan, -/obj/item/food/baguette, -/obj/machinery/camera/autoname/directional/south, /turf/open/floor/plating, -/area/station/service/theater) -"bTJ" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/security/prison) -"bTN" = ( +/area/station/maintenance/port/lesser) +"bDr" = ( /obj/structure/cable, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bTO" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"bTP" = ( -/obj/machinery/door/airlock/security{ - name = "Upper Security" - }, -/obj/effect/mapping_helpers/airlock/access/all/security, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron, -/area/station/security) -"bTY" = ( -/obj/effect/turf_decal/siding/green{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/storage/art) -"bUh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bUj" = ( -/obj/machinery/vending/cart{ - req_access = list("hop") +/obj/machinery/duct, +/obj/machinery/door/airlock{ + name = "Kitchen" }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/navigate_destination/kitchen, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"bDu" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"bUl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_half{ +/area/station/security/interrogation) +"bDF" = ( +/obj/structure/table/wood/fancy/red, +/obj/machinery/door/window/right/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"bDP" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/area/station/science/xenobiology) -"bUu" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell, -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"bDQ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"bUx" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/holopad, +/obj/structure/fireaxecabinet/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Atmospherics Scrubbers"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"bUA" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bUJ" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"bUM" = ( -/obj/effect/mapping_helpers/ianbirthday, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 9 +/area/station/engineering/atmos) +"bDV" = ( +/obj/structure/sink/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"bEa" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"bUS" = ( -/obj/structure/chair/office{ - dir = 1; - name = "grimy chair" +/turf/open/space/basic, +/area/space/nearstation) +"bEd" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Chamber" }, -/obj/effect/landmark/start/station_engineer, -/obj/effect/turf_decal/trimline/purple/filled/line{ +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"bUZ" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/flora/tree/palm/style_random, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"bVg" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/landmark/start/clown, -/turf/open/floor/carpet, -/area/station/service/theater) -"bVl" = ( -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"bVs" = ( -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"bEe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/structure/barricade, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/plating/rust, +/area/station/maintenance/department/crew_quarters/bar) +"bEv" = ( +/obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"bVA" = ( /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "capshut" +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"bFm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/command/heads_quarters/captain/private) -"bVY" = ( -/obj/machinery/holopad{ - pixel_x = 1 - }, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"bWi" = ( +/area/station/maintenance/department/cargo) +"bFu" = ( +/obj/structure/cable, +/turf/closed/wall/rust, +/area/station/maintenance/department/electrical) +"bFv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"bWl" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"bFw" = ( /obj/structure/cable, -/obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"bWn" = ( -/obj/structure/barricade/wooden/crude, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bWp" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/item/taperecorder{ - pixel_x = -3 +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"bFI" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/reagent_containers/spray/pepper{ - pixel_x = 6 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bGj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"bWv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/obj/machinery/power/terminal{ dir = 4 }, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"bWI" = ( -/obj/structure/broken_flooring/singular, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bWJ" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/structure/cable, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security) -"bWO" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bWW" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"bXe" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"bXx" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/airalarm/directional/south, -/obj/effect/spawner/random/entertainment/slot_machine{ - pixel_y = 2 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"bXD" = ( -/obj/structure/filingcabinet/security, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"bXJ" = ( +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/engineering/supermatter/room) +"bGx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/security/office) -"bXK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"bGE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bYa" = ( -/obj/structure/filingcabinet/employment, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"bYc" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"bYl" = ( +/obj/machinery/flasher/directional/west{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"bHj" = ( /obj/structure/table, -/obj/item/storage/lockbox/loyalty{ - pixel_y = 7 +/obj/item/paper_bin/construction{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 +/obj/item/hand_labeler{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/vending_refill/security, -/obj/machinery/firealarm/directional/west, +/obj/item/hand_labeler{ + pixel_x = 5 + }, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/art) +"bHl" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"bHv" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/security/lockers) -"bYo" = ( -/obj/machinery/mecha_part_fabricator{ - drop_direction = 1 +"bHB" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/delivery, -/obj/structure/sign/poster/contraband/borg_fancy_1/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"bYy" = ( -/obj/structure/ladder, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"bHK" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"bYF" = ( -/obj/effect/turf_decal/arrows, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"bYP" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/structure/chair{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/radio/intercom/directional/east, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"bZa" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"bZf" = ( -/obj/machinery/vending/wardrobe/sec_wardrobe, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/camera/autoname/directional/south, +/area/station/command/gateway) +"bHL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"bZi" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/shovel/spade, -/obj/item/wrench, +/area/station/hallway/secondary/exit/departure_lounge) +"bHM" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/sink/directional/west, /obj/item/reagent_containers/cup/watering_can, -/obj/item/cultivator, -/obj/item/wirecutters, -/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"bHP" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/chair, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"bHR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/office, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"bId" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"bZj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"bIm" = ( +/obj/structure/table, +/obj/item/transfer_valve{ + pixel_x = 5 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"bZq" = ( -/obj/structure/railing/corner{ - dir = 1 +/obj/item/transfer_valve, +/obj/item/transfer_valve{ + pixel_x = -5 }, -/turf/open/floor/carpet, -/area/station/service/theater) -"bZr" = ( -/turf/closed/wall/rock, -/area/space/nearstation) -"bZH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/item/transfer_valve{ + pixel_x = 5 }, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"bZI" = ( -/obj/effect/turf_decal/bot, -/mob/living/basic/bot/secbot/beepsky/armsky, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/armory) -"caq" = ( -/obj/effect/spawner/surgery_tray/full/deployed, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white/textured, -/area/station/medical/surgery/theatre) -"cas" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/obj/item/transfer_valve, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"bIq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"cax" = ( -/turf/closed/wall/rock/porous, -/area/station/maintenance/department/cargo) -"caz" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"bIR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"bJi" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Airlock" }, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"caB" = ( -/obj/machinery/light/directional/west, -/obj/structure/table/glass, -/obj/item/pai_card, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"caP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"caW" = ( -/obj/item/book/granter/action/spell/blind/wgw, -/obj/effect/turf_decal/stripes{ +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/structure/closet/crate/secure{ - name = "HoPs top secret reading stash" - }, -/obj/item/book/random, -/obj/item/book/random, -/obj/item/book/random, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/east, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"cbc" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" +/area/station/engineering/supermatter/room) +"bJm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aiupload" +/turf/open/floor/iron, +/area/station/security/brig) +"bJv" = ( +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/area/station/holodeck/rec_center) +"bJM" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"cbr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"bJR" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 1 + }, +/obj/effect/landmark/start/captain, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"bJU" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall, +/area/station/commons/locker) +"bJV" = ( +/obj/effect/spawner/structure/window/bronze, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel) +"bKc" = ( +/turf/closed/wall, +/area/station/maintenance/department/medical/central) +"bKj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cbv" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/area/station/security/prison/mess) +"bKl" = ( +/obj/machinery/door/airlock/virology{ + name = "Virology Isolation B" }, -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"bKM" = ( +/obj/machinery/light/directional/west, +/obj/machinery/power/emitter/welded{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"bKU" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/north, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"bLf" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"bLF" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"cby" = ( -/obj/machinery/door/poddoor/massdriver_trash, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/stripes/end{ - dir = 8 +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/atmos_shield_gen/active{ +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"bLN" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmos_shield_gen/active, -/turf/open/floor/engine, -/area/station/maintenance/disposal) -"cbJ" = ( -/turf/closed/wall, -/area/station/engineering/atmos/pumproom) -"cbO" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/gibs/up, +/obj/structure/sign/poster/official/wtf_is_co2/directional/north, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"cca" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/machinery/light/small/directional/north, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"ccc" = ( -/obj/structure/chair/office/tactical{ +/area/station/security/execution/education) +"bLR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/effect/landmark/start/warden, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/security/office) -"cct" = ( -/obj/effect/turf_decal/siding/purple/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/hallway/primary/aft) +"bMe" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/right{ dir = 4 }, -/turf/open/floor/iron/white/smooth_edge{ +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/area/station/science/research) -"ccI" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/area/station/hallway/primary/fore) +"bMw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/basketball, +/turf/open/floor/iron, +/area/station/security/prison) +"bMH" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/delivery, +/obj/machinery/module_duplicator, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"bMN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"ccT" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"cda" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/railing/corner{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"bMY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"bNl" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"cdi" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 +/turf/open/space/basic, +/area/space) +"bNv" = ( +/obj/machinery/telecomms/server/presets/common, +/obj/machinery/light/directional/west, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"bNz" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/obj/structure/table, -/obj/item/reagent_containers/cup/soda_cans/cola{ - pixel_x = -6; - pixel_y = 12 +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 }, -/obj/item/screwdriver, /turf/open/floor/iron, -/area/station/engineering/lobby) -"cdk" = ( -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"cdl" = ( -/obj/machinery/duct, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/cytology) -"cdo" = ( -/obj/machinery/elevator_control_panel/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = 8; - pixel_y = -34 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = -6; - pixel_y = -40 +/area/station/security/courtroom) +"bNM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"bNO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/machinery/light/small/dim/directional/north, -/obj/structure/cable/layer3, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"cdI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"cdQ" = ( /obj/structure/cable, -/obj/effect/landmark/blobstart, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"bOD" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cdW" = ( -/obj/structure/table/wood, -/obj/machinery/fax/auto_name, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"cdX" = ( -/obj/machinery/computer/accounting{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/warm/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"cef" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"ceg" = ( -/obj/effect/landmark/start/roboticist, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"cem" = ( -/turf/closed/wall, -/area/station/security/prison/safe) -"ceu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 8 +/area/station/maintenance/starboard) +"bOR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "xeno5"; + name = "Creature Cell 5" }, -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"ceD" = ( -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood, -/area/station/service/library) -"ceN" = ( -/obj/item/wallframe/apc, -/turf/open/misc/asteroid, -/area/station/asteroid) -"ceZ" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cfv" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"cfG" = ( +/turf/open/floor/plating, +/area/station/science/xenobiology) +"bPH" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/power/terminal, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"cfJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, +/area/station/maintenance/port/lesser) +"bPK" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/engineering/main) -"cfM" = ( -/obj/machinery/door/airlock/grunge{ - name = "Cell 3" +/area/station/hallway/secondary/exit/departure_lounge) +"bPP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/flora/grass/jungle/b/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bPR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/flora/bush/pale/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bPX" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bPY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Unit_2Privacy"; + name = "Unit 2 Privacy Shutter" }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"bPZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"cfO" = ( -/obj/machinery/power/smes{ - charge = 5e+006 +/area/station/service/chapel) +"bQb" = ( +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"bQn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"cgj" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"bQD" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"bQE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, /obj/effect/landmark/event_spawn, -/turf/open/floor/iron/textured, -/area/station/medical/pharmacy) -"cgo" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/machinery/door/airlock/command{ - name = "Bridge" +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"bQN" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/obj/item/pickaxe, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"bQR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/structure/table, +/obj/structure/sign/warning/electric_shock/directional/north, +/obj/item/storage/toolbox/electrical, +/obj/item/assembly/flash/handheld, /obj/structure/cable, -/obj/effect/landmark/navigate_destination/bridge, -/obj/machinery/door/firedoor, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"bRb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/left/directional/south{ + name = "Kitchen Access"; + req_access = list("kitchen") }, -/turf/open/floor/iron, -/area/station/command/bridge) -"cgr" = ( -/obj/effect/turf_decal/siding/white{ +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"bRh" = ( +/obj/structure/transit_tube/diagonal/topleft, +/turf/open/space/basic, +/area/space/nearstation) +"bRo" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"cgu" = ( -/obj/machinery/duct, -/turf/open/misc/asteroid, -/area/station/asteroid) -"cgw" = ( -/obj/machinery/disposal/bin{ - desc = "A pneumatic waste disposal unit. This one leads into space!"; - name = "deathsposal unit" +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"bRv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"bRx" = ( +/obj/structure/railing{ + dir = 9 }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/item/pickaxe/mini, +/obj/item/toy/plush/lizard_plushie/green{ + name = "Refines-The-Boulders" }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"cgB" = ( -/obj/structure/closet/l3closet, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"bRy" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"bRJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"bRO" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/machinery/chem_dispenser, +/turf/open/floor/iron/dark, +/area/station/medical/chemistry) +"bSg" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/door/airlock/atmos/glass{ + name = "Distribution Loop" }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"cgK" = ( -/obj/structure/railing/corner/end, /obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"bSi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/command/eva) +"bSt" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/station/solars/port/aft) +"bSw" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"chm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"cho" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"bSA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"bSM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/lobby) -"chF" = ( -/obj/machinery/newscaster/directional/east, +/area/station/hallway/primary/fore) +"bSX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"chU" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"bTe" = ( +/obj/machinery/computer/communications{ + dir = 1 + }, +/obj/structure/plaque/static_plaque/golden/captain{ + pixel_y = -32 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/warden) -"chV" = ( -/obj/structure/stairs/west, -/turf/open/floor/iron/stairs/right{ - dir = 4 +/area/station/command/heads_quarters/captain) +"bUd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/engineering/main) -"chW" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/structure/flora/grass/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/white, +/obj/structure/flora/grass/jungle/b/style_random, +/turf/open/misc/asteroid/airless, /area/station/hallway/secondary/entry) -"cie" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"cik" = ( -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/light_switch/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"bUk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"cis" = ( -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"ciw" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ dir = 4 }, -/obj/machinery/light/small/directional/east, -/obj/effect/landmark/start/depsec/supply, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"ciy" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/machinery/airalarm/directional/east, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/warden) -"ciA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"bUp" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/security) -"ciE" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) -"ciR" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-8" +/obj/structure/flora/bush/pale/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUx" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"ciV" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/bot, +/obj/machinery/vending/coffee, +/turf/open/floor/iron/dark, +/area/station/science/research) +"bUy" = ( +/obj/structure/flora/bush/pale/style_random, /obj/effect/turf_decal/stripes/line{ - dir = 10 + dir = 1 }, -/turf/open/floor/iron/white/textured_corner{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/science/xenobiology) -"ciY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUD" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ciZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/grass/jungle/a/style_random, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUE" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUF" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"bUI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"bUJ" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"cjp" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"cjK" = ( -/obj/structure/lattice, +/obj/machinery/door/airlock/security{ + name = "Evidence" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/structure/cable, -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/command/meeting_room) -"cjV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"ckb" = ( -/obj/effect/turf_decal/siding/dark_blue, -/obj/machinery/holopad, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"ckc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"ckn" = ( -/obj/machinery/light/warm/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"cku" = ( +/area/station/security/evidence) +"bUN" = ( +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"bUO" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"bUV" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, +/obj/effect/landmark/start/hangover, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"ckH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/turf/open/floor/iron, +/area/station/security/courtroom) +"bVp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ckK" = ( /obj/effect/landmark/start/depsec/engineering, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/security/checkpoint/engineering) -"ckZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +"bVv" = ( +/turf/closed/mineral/random/high_chance, +/area/space/nearstation) +"bVR" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/hallway/primary/central) -"clb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"bWx" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Air to Mix" }, -/obj/item/radio/intercom/directional/west, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"clx" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"clA" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/spawner/surgery_tray/full/deployed, -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"clG" = ( -/obj/machinery/duct, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Restrooms" +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"clH" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"bWE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/room) +"bWI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/suit_storage_unit/atmos, -/obj/machinery/light/small/dim/directional/south, +/obj/machinery/atmospherics/components/unary/airlock_pump, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"clM" = ( +/area/station/maintenance/fore) +"bWP" = ( /obj/structure/table, -/obj/item/storage/box/hug/medical, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"clQ" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" +/obj/item/clothing/shoes/sneakers/orange{ + pixel_x = -6; + pixel_y = 10 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) -"clY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cmf" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/railing/corner/end, -/obj/effect/turf_decal/trimline/purple/arrow_cw{ - dir = 5 +/obj/item/clothing/shoes/sneakers/orange{ + pixel_x = -6; + pixel_y = -2 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"cmn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"cmw" = ( -/obj/machinery/fax{ - fax_name = "Service Hallway"; - name = "Service Fax Machine" +/obj/item/clothing/shoes/sneakers/orange{ + pixel_x = -6; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"cmB" = ( -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"cmZ" = ( +/obj/item/clothing/shoes/sneakers/orange{ + pixel_x = -6; + pixel_y = -8 + }, +/obj/item/clothing/under/rank/prisoner{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Prison Visitation"; + network = list("ss13","prison") + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"bWZ" = ( /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cnm" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"bXa" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"bXb" = ( +/obj/structure/table, +/obj/machinery/light/directional/north, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Lockdown Toggle"; + pixel_x = 6; + pixel_y = 8; + req_access = list("command") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/theater) -"cno" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/machinery/button/door{ + id = "bridge-maint"; + name = "Bridge Maintenance Lockdown Toggle"; + pixel_x = 6; + pixel_y = -2; + req_access = list("command") }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"cnt" = ( -/obj/machinery/requests_console/directional/east{ - department = "Xenobiology"; - name = "Xenobiology Requests Console" +/obj/machinery/button/door{ + id = "teleshutter"; + name = "Teleporter Shutter Toggle"; + pixel_x = -6; + pixel_y = 8; + req_access = list("teleporter") }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"cnS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 8 +/obj/machinery/button/door{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Toggle"; + pixel_x = -6; + pixel_y = -2; + req_access = list("command") }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cnT" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/green/opposingcorners{ +/obj/machinery/camera/directional/north{ + c_tag = "Bridge Control"; + name = "command camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"cnZ" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bXe" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, -/area/station/command/corporate_dock) -"com" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/loading_area{ dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"bXf" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/engineering/atmos) -"cor" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "Supply Dock Loading Door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, +/area/station/service/janitor) +"bXj" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bXz" = ( +/turf/closed/wall, +/area/station/service/kitchen/coldroom) +"bXA" = ( /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 8 }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"coF" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/light/small/directional/north, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/iron, -/area/station/science/ordnance) -"coQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/locker) -"cpd" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/storage) -"cpw" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"cpB" = ( -/turf/closed/wall/r_wall, -/area/station/security/medical) -"cpF" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cpG" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/storage) -"cpJ" = ( -/obj/machinery/air_sensor/ordnance_freezer_chamber, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/structure/disposalpipe/sorting/mail/flip{ dir = 8 }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"cpO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/office) -"cpQ" = ( -/obj/effect/landmark/start/geneticist, -/obj/structure/chair/office{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/science/genetics) -"cpZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"cqd" = ( -/obj/structure/sign/departments/holy/directional/east, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"bXS" = ( +/obj/machinery/door/airlock/external{ + name = "Prison External Airlock" }, -/turf/open/floor/iron/edge{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/area/station/hallway/secondary/exit/departure_lounge) -"cqm" = ( /obj/structure/cable, -/obj/machinery/camera/autoname/directional/south{ - network = list("minisat") +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"cqH" = ( -/obj/structure/transit_tube, -/obj/structure/lattice, +/area/station/maintenance/port/lesser) +"bXX" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"cqJ" = ( -/obj/structure/table, -/obj/item/healthanalyzer, -/obj/item/reagent_containers/hypospray/medipen, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white/smooth_corner, -/area/station/medical/exam_room) -"cqQ" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"cqU" = ( -/obj/effect/landmark/navigate_destination/disposals, -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/maintenance/department/bridge) +"bYe" = ( +/obj/machinery/door/poddoor{ + id = "Arrival Shuttle Bay"; + name = "Arrival Shuttle Bay" }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"crb" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "armory"; - name = "Armory Shutters" +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"bYK" = ( +/obj/machinery/button/flasher{ + id = "visitorflash"; + pixel_x = -6; + pixel_y = 24; + req_access = list("brig") }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/obj/machinery/holopad, +/obj/machinery/button/door/directional/north{ + id = "visitation"; + name = "Visitation Shutters"; + pixel_x = 8; + req_access = list("brig") }, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"crg" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"bZg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"cro" = ( -/obj/structure/girder/reinforced, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"crq" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/north{ - req_access = list("pharmacy") +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/structure/desk_bell{ - pixel_x = -8 +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"bZt" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bZE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"bZQ" = ( +/obj/structure/railing{ + dir = 8 }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"crr" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"bZY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"caj" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/effect/spawner/random/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 8 +/obj/structure/extinguisher_cabinet/directional/east, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"crz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"crD" = ( +/turf/open/floor/iron, +/area/station/security/courtroom) +"cau" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P6-Central-Primary"; - location = "P5-Central-Primary" +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"crU" = ( -/turf/closed/wall, -/area/station/maintenance/port/lesser) -"csf" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"caB" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 }, -/turf/open/floor/iron/white/textured_half, -/area/station/science/xenobiology) -"csj" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/station/service/chapel/monastery) +"caN" = ( +/obj/structure/sign/warning/fire/directional/west, +/obj/machinery/firealarm/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, +/obj/structure/table, +/obj/item/crowbar/red, +/obj/item/radio{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"csl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ +/area/station/ai/satellite/atmos) +"caO" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"csq" = ( -/obj/structure/chair/sofa/bench, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"csr" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/light_switch/directional/west, -/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"csu" = ( -/obj/structure/cable, -/obj/structure/closet/l3closet/scientist, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"csB" = ( -/obj/structure/cable, -/obj/effect/landmark/start/station_engineer, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"csQ" = ( -/obj/machinery/light_switch/directional/south, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"csW" = ( -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"cts" = ( -/turf/closed/wall/rock/porous, -/area/station/medical/chemistry/minisat) -"ctv" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"caP" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"caS" = ( +/obj/machinery/computer/security{ dir = 8 }, -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"ctE" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"cbp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"cbF" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) -"ctL" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/cable, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"ctP" = ( -/obj/effect/spawner/random/entertainment/slot_machine, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"cuj" = ( -/obj/item/trash/shrimp_chips, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cuq" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/closet/secure_closet/bar, -/obj/item/storage/photo_album/bar, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"cut" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/chair/office, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"cuz" = ( -/obj/machinery/power/terminal{ +/area/ruin/space/has_grav/abandoned_warehouse) +"cbJ" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"cuE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/plastic{ +/obj/machinery/camera/autoname/directional/south{ + network = list("ss13","monastery") + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/stairs/left{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/area/station/service/chapel) +"cbL" = ( +/turf/closed/wall/rust, +/area/station/science) +"ccd" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"ccf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"cuH" = ( -/mob/living/basic/mouse/brown/tom, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/security/prison/safe) -"cuW" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/circuit_workshop) -"cvn" = ( -/obj/structure/closet/emcloset, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cvL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"cvT" = ( -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"cvZ" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/station/maintenance/port/lesser) +"ccr" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"cwb" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/dark{ +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"cwc" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"cwk" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"ccz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/grille/broken, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"cwq" = ( -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"cwt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/area/station/maintenance/port/fore) +"ccQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/theater) -"cwB" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"cwD" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"cwR" = ( -/obj/structure/sign/warning/yes_smoking/circle/directional/west, -/obj/item/cigbutt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/engineering/atmos) +"ccR" = ( +/obj/structure/sign/warning/engine_safety/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/area/station/science/breakroom) -"cxg" = ( -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"cxr" = ( +/turf/open/floor/iron, +/area/station/engineering/main) +"ccW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/interrogation) -"cxz" = ( -/obj/machinery/door/poddoor/incinerator_atmos_main, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"cxD" = ( -/mob/living/basic/cow{ - name = "Betsy"; - real_name = "Betsy" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"cxH" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect3"; - name = "Security Shutters" - }, -/obj/machinery/button/door/directional/north{ - id = "xbprotect3"; - name = "shutter control" - }, -/obj/effect/turf_decal/caution/stand_clear{ +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"ccY" = ( +/turf/closed/wall, +/area/station/medical/treatment_center) +"cdd" = ( +/obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"cxN" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Atmospherics Tank - Mixing" - }, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"cxP" = ( -/obj/structure/table, -/obj/machinery/light_switch/directional/east, -/obj/item/flashlight/lamp, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"cya" = ( -/obj/machinery/computer/operating{ +/obj/machinery/status_display/evac/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"cye" = ( -/obj/effect/turf_decal/tile/brown{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"cdf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"cyp" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/corner{ +/obj/machinery/requests_console/directional/west, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"cdi" = ( +/obj/structure/closet/crate/engineering, +/obj/item/wrench, +/obj/item/crowbar, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/area/station/service/hydroponics/garden) -"cyw" = ( +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"cdl" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/light/small/dim/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"cyF" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/box, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"cyS" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, +/area/station/hallway/secondary/exit/departure_lounge) +"cdt" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/light/very_dim/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/security/brig) -"cyT" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/effect/spawner/random/decoration/ornament, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"czh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"czC" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/button/door/directional/east{ - id = "ordauxgarage"; - name = "shutter control" - }, -/obj/structure/closet/firecloset, -/turf/open/floor/plating, -/area/station/science/ordnance) -"czD" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +"cdu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"czO" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"czT" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"czW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"czY" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"cAa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"cAg" = ( -/obj/machinery/duct, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"cAq" = ( +"cdD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/medical_doctor, /obj/structure/cable, -/obj/machinery/button/door/directional/east{ - id = "xbprotect"; - name = "shutter control" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"cAv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"cAy" = ( -/obj/structure/table/glass, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/item/multitool{ - pixel_x = 8 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"cAC" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"cdF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"cAG" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"cdH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"cAQ" = ( -/obj/vehicle/sealed/mecha/ripley/cargo, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/brown{ - dir = 10 +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"cdI" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/rack, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"cdV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron/recharge_floor, -/area/station/cargo/storage) -"cBb" = ( -/turf/closed/wall, -/area/station/medical/paramedic) -"cBj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/commons/lounge) -"cBt" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/ai/satellite/chamber) +"cdX" = ( +/obj/machinery/ai_slipper{ + uses = 10 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"cBz" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"cBD" = ( -/obj/machinery/door/airlock/grunge{ - name = "Prison Forestry" - }, -/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"cdY" = ( +/turf/closed/wall, +/area/station/ai/satellite/chamber) +"cdZ" = ( +/turf/closed/wall/rust, +/area/station/ai/satellite/chamber) +"cec" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "East Ports to West Ports" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/security/prison/garden) -"cCj" = ( -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/area/station/engineering/atmos) +"cee" = ( +/obj/structure/sign/poster/contraband/revolver, +/turf/closed/wall, +/area/station/commons/locker) +"ceg" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/holopad/secure, +/obj/structure/cable/layer3, +/obj/machinery/door/window/brigdoor/left/directional/west{ + name = "Secondary AI Core Access"; + req_access = list("ai_upload"); + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"ceh" = ( +/obj/structure/table, +/obj/item/storage/box/prisoner{ + pixel_x = 5; + pixel_y = 5 }, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/crowbar/red, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/noticeboard/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/engineering/main) -"cCo" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/engineering/transit_tube) -"cCr" = ( +/area/station/security/execution/transfer) +"cel" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"ceq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/turf/open/floor/plating, +/area/station/ai/satellite/chamber) +"ces" = ( /obj/machinery/light/directional/north, /obj/structure/table, -/obj/item/pen{ - pixel_x = 9; - pixel_y = 4 +/obj/item/food/ready_donk/donkrange_chicken, +/obj/item/food/ready_donk/donkhiladas{ + pixel_y = 5 }, -/obj/item/hand_labeler{ - pixel_x = -13; +/obj/item/food/ready_donk/country_chicken{ pixel_y = 10 }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"cCv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/white{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"cev" = ( +/obj/structure/transit_tube/diagonal/topleft, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"cez" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"ceD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"cCI" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/extinguisher, -/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/chamber) +"ceE" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"cCP" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cDl" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"ceF" = ( +/turf/closed/wall/r_wall, +/area/station/ai/satellite/atmos) +"ceG" = ( +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/atmos) +"ceM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"cDD" = ( -/turf/closed/wall, -/area/station/medical/psychology) -"cDM" = ( -/obj/structure/table, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/mask/surgical, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/white, -/area/station/security/medical) -"cDQ" = ( -/obj/effect/turf_decal/siding/purple{ +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"ceT" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"cDV" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/stripes/red/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"cEc" = ( -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"cEf" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"cEh" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"cEr" = ( -/obj/structure/chair/sofa/bench/right{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"ceW" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron, -/area/station/security/prison) -"cEt" = ( -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"cEy" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/recharge_station, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"cEG" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/engineering/storage_shared) +"cfm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"cES" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/robotics_cyborgs, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"cEU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/maintenance/starboard) +"cfs" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Supermatter Waste Line"; + name = "engineering camera"; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/button/door/directional/east{ + id = "engineaccess"; + name = "Engine Access Lockdown"; + req_access = list("engineering") }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"cEV" = ( -/obj/machinery/light_switch/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"cFc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"cfu" = ( +/obj/structure/sign/warning/xeno_mining, +/turf/closed/wall, +/area/station/maintenance/fore) +"cfC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"cFq" = ( -/obj/effect/turf_decal/box/white{ - color = "#EFB341" +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"cFF" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"cfK" = ( /obj/structure/table, /obj/structure/cable, -/obj/item/healthanalyzer/simple, -/obj/effect/mapping_helpers/apc/full_charge, -/turf/open/floor/iron, -/area/station/cargo/storage) -"cFH" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"cFK" = ( -/obj/machinery/door/airlock/security, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/turf/open/floor/iron, -/area/station/security/warden) -"cGl" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/misc/asteroid, -/area/station/asteroid) -"cGr" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 +/obj/effect/spawner/random/aimodule/harmless, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/area/station/medical/pharmacy) -"cGs" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"cGu" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/area/station/ai/upload/chamber) +"cfL" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/aft) +"cfN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"cGP" = ( -/obj/structure/closet/secure_closet/medical1, -/obj/effect/turf_decal/bot{ - dir = 1 +/area/station/maintenance/port/greater) +"cfR" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/blue, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + name = "Privacy Shutters" }, -/turf/open/floor/iron, -/area/station/command/gateway) -"cGU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"cHe" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Head of Personnel's Desk"; + req_access = list("hop") }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"cHh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/door/window/right/directional/south{ + name = "Reception Desk" }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) +"cgb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, +/obj/machinery/status_display/evac/directional/north, /turf/open/floor/engine, -/area/station/command/corporate_dock) -"cHn" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/area/station/engineering/supermatter/room) +"cgj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"cgp" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"cHp" = ( -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"cHs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"cHt" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, /turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"cHP" = ( -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"cHV" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"cIa" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"cIh" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cIi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/area/station/ai/satellite/interior) +"cgH" = ( +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"cIr" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot, -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/mix) -"cIx" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input{ - dir = 4 +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 }, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"cIE" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 6 +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/fire{ + pixel_x = -3; + pixel_y = -3 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"cIM" = ( -/obj/effect/turf_decal/siding, -/obj/structure/table, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"cIN" = ( -/obj/structure/barricade/wooden/crude, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"cIV" = ( -/obj/machinery/computer/security/labor{ - dir = 8 +/obj/structure/table/glass, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/status_display/evac/directional/west, +/obj/structure/sign/warning/no_smoking/directional/north, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"cgJ" = ( +/obj/machinery/ai_slipper{ + uses = 10 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/item/radio/intercom/directional/east, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"cJh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"cJx" = ( -/obj/structure/closet/crate/preopen, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/obj/item/storage/toolbox/emergency, -/obj/item/stack/medical/bruise_pack, -/obj/item/storage/belt/utility, -/obj/effect/turf_decal/bot{ +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"cgT" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron, -/area/station/command/gateway) -"cJC" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/department/crew_quarters/bar) +"cgU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/railing{ +/obj/vehicle/sealed/mecha/ripley/paddy/preset, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"cJL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"cJO" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/turf/open/floor/circuit/red, +/area/station/security/mechbay) +"chc" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"cJT" = ( -/obj/structure/closet/firecloset, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cJZ" = ( -/obj/structure/railing, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/starboard) +"chg" = ( +/obj/structure/chair{ dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/security) -"cKc" = ( -/turf/closed/wall, -/area/station/maintenance/aft/upper) -"cKn" = ( -/turf/closed/wall, -/area/station/security/prison/garden) -"cKo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cKD" = ( -/mob/living/basic/mining/basilisk, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"cLd" = ( -/obj/machinery/oven/range, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"cLf" = ( -/turf/open/space/basic, -/area/space) -"cLm" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"cLs" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"cLx" = ( -/obj/machinery/door/airlock/security{ - aiControlDisabled = 1; - id_tag = "prisonereducation"; - name = "Prisoner Education Chamber" +/area/station/hallway/secondary/exit/departure_lounge) +"chh" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/mineral/plastitanium, +/area/station/maintenance/starboard) +"chj" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"cLA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/medical/paramedic) +"chD" = ( +/turf/closed/wall, +/area/station/ai/satellite/foyer) +"chH" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"cLD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/item/pen, +/obj/machinery/button/door/directional/west{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_y = 6; + req_access = list("atmospherics") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"cLI" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"cLS" = ( -/obj/item/stack/cable_coil/five, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"cLW" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/machinery/button/door/directional/west{ + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_y = -6; + req_access = list("engineering") }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cMI" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "N2 to Airmix" +/obj/item/toy/figure/ce{ + pixel_x = 8; + pixel_y = 6 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/item/disk/computer/engineering{ + pixel_x = 10; + pixel_y = -8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"cMJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"cMK" = ( -/obj/structure/cable, +/obj/item/disk/computer/engineering{ + pixel_x = 10; + pixel_y = -8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"chI" = ( +/turf/closed/wall/r_wall, +/area/station/ai/satellite/foyer) +"chM" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Paramedic Dispatch Room" + }, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) +"chO" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/station/ai/satellite/atmos) +"chS" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"cMR" = ( -/obj/structure/safe/floor, -/obj/item/stack/spacecash/c1000, -/obj/item/stack/spacecash/c1000, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"cMZ" = ( -/obj/machinery/computer/dna_console{ - dir = 1 +/area/station/security/checkpoint/engineering) +"chT" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"cNc" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"chV" = ( +/obj/structure/cable/layer3, +/turf/closed/wall/rust, +/area/station/ai/satellite/interior) +"cic" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"cNh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_corner{ +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"cij" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/area/station/science/xenobiology) -"cNk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"cio" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "virology_airlock_exterior"; - idInterior = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Console"; - pixel_x = -26; - pixel_y = 28; - req_access = list("virology") +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"cit" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"cNr" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north{ - pixel_y = 35 +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"civ" = ( +/obj/effect/spawner/random/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central) +"ciA" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"cNG" = ( -/obj/effect/turf_decal/stripes/red/line{ +/area/station/medical/office) +"ciI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ciK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"cNM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"cNQ" = ( -/obj/machinery/computer/crew, -/obj/effect/turf_decal/tile/green/half/contrasted, /obj/structure/cable, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"cNX" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/desk_bell, -/obj/machinery/door/firedoor, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"cOb" = ( -/obj/item/food/grown/banana, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"cOp" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"ciM" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall, +/area/station/ai/satellite/foyer) +"ciR" = ( /obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/locker) -"cOC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/turf/open/floor/iron/large, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"ciT" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/wrench, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/obj/item/tank/internals/oxygen, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"ciW" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark, +/turf/open/floor/grass, /area/station/service/hydroponics/garden) -"cOD" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/five, -/turf/open/misc/asteroid, -/area/station/asteroid) -"cOG" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +"ciY" = ( +/turf/closed/wall/rust, +/area/station/security/warden) +"cjl" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"cOR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/rack, -/obj/item/radio, +/turf/open/floor/iron/dark, +/area/station/engineering/hallway) +"cjp" = ( +/obj/effect/spawner/random/clothing/costume, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"cjq" = ( +/obj/structure/table/reinforced, /obj/item/radio{ - pixel_x = 2 + pixel_y = 6 }, -/obj/item/radio{ - pixel_x = 5 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/bot{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"cjv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/gateway) -"cOT" = ( -/obj/machinery/light/warm/directional/south, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"cPc" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/window/brigdoor/right/directional/west{ - req_access = list("command") +/area/station/engineering/atmos) +"cjx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron/recharge_floor, -/area/station/command/bridge) -"cPl" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 4 +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"cjI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/space/basic, -/area/space) -"cPo" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"cjN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/area/station/science/research) -"cPt" = ( -/turf/closed/wall/r_wall, -/area/station/science/lab) -"cPz" = ( -/mob/living/basic/axolotl, -/turf/open/water/no_planet_atmos, -/area/station/service/hydroponics/garden) -"cPE" = ( -/obj/machinery/light/small/directional/west, -/turf/open/misc/asteroid, -/area/station/asteroid) -"cPG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"cPP" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"cPQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +/turf/open/floor/iron, +/area/station/security/office) +"cjR" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"cPR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"cPT" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lobby Lockdown Shutters"; - id = "cargolobbylockdown" - }, -/turf/open/floor/plating, -/area/station/cargo/lobby) -"cPZ" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"cQa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/mail_sorting/supply/qm_office, -/turf/open/floor/iron, -/area/station/cargo/storage) -"cQg" = ( -/obj/structure/easel, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"cQm" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"cQr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"cQu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"cjS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"cQE" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/table, +/obj/item/soap/nanotrasen, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/crystallizer{ +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"cka" = ( +/obj/structure/railing{ dir = 1 }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/gps, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"cke" = ( +/obj/structure/sign/warning, +/turf/closed/wall, +/area/space/nearstation) +"ckf" = ( +/obj/structure/grille, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/mix) -"cQK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ckg" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "atmos_end_big_lad" + }, +/turf/open/floor/plating/airless, +/area/station/maintenance/disposal/incinerator) +"ckm" = ( +/mob/living/carbon/human/species/monkey, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/grass, +/area/station/science/auxlab) +"ckn" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/space/nearstation) +"cko" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ckp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cQP" = ( -/obj/machinery/computer/records/medical, -/obj/effect/turf_decal/tile/green/anticorner/contrasted, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"cQT" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/half{ - dir = 8 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"ckr" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ckA" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"ckJ" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"ckQ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"cld" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/service/hydroponics/garden) -"cQU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"clm" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Satellite Storage" }, -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"cln" = ( +/obj/structure/railing/corner{ dir = 8 }, +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"clt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"cRa" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/chair/office{ - dir = 8 +/area/station/engineering/atmos/pumproom) +"clw" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 9 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"cRg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/machinery/airalarm/directional/west, -/obj/item/wrench{ - pixel_y = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"clz" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"cRM" = ( -/obj/machinery/button/curtain{ - id = "chapelc"; - pixel_y = 26; +/turf/open/floor/plating/airless, +/area/space/nearstation) +"clH" = ( +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/area/station/service/chapel) -"cRT" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"cRV" = ( -/obj/structure/table/glass, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/signaler, -/obj/item/electronics/airlock{ - pixel_x = -14 - }, -/obj/effect/turf_decal/tile/purple{ +/obj/machinery/iv_drip, +/obj/machinery/light/directional/north, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/loading_area{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/item/assembly/igniter, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cSa" = ( -/obj/machinery/power/smes/full, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"cSb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"cSd" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"clL" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 9 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"cSp" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/machinery/meter, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/wood, -/area/station/service/theater) -"cSy" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/open/floor/iron/half, -/area/station/service/hydroponics/garden) -"cSC" = ( -/obj/machinery/pdapainter/engineering, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"cSJ" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"cTa" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/station/maintenance/disposal/incinerator) +"clN" = ( +/obj/structure/chair/office{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"cTb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"cTc" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "hopdesk" - }, -/obj/machinery/door/firedoor, -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"clQ" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"cTm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/medical/central) -"cTH" = ( -/obj/structure/table/wood, -/obj/item/storage/box/evidence, -/obj/item/taperecorder, -/obj/machinery/light/small/dim/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"cTI" = ( -/obj/structure/bookcase/random/fiction, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/wood, -/area/station/service/library) -"cTK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/railing{ dir = 4 }, -/obj/machinery/light_switch/directional/east, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"clR" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Prison Recreation"; + network = list("ss13","prison") + }, +/turf/open/floor/iron, +/area/station/security/prison) +"clV" = ( +/obj/effect/turf_decal/arrows, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"cTX" = ( -/obj/machinery/computer/crew{ - dir = 1 +/area/station/cargo/warehouse) +"clX" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"cUe" = ( -/obj/machinery/rnd/production/protolathe/department/science, -/turf/open/floor/iron/white, -/area/station/science/lab) -"cUf" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plating/airless, +/area/space/nearstation) +"clY" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 5 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"cUk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cUm" = ( -/obj/effect/turf_decal/stripes/red/corner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/medical/morgue) -"cUn" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/modular_computer/preset/cargochat/medical{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"cUv" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"cUD" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/sign/warning/engine_safety/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"cUN" = ( -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 1 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cmc" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance" }, -/obj/structure/table/wood, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/wood/parquet, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"cml" = ( +/turf/closed/wall/rust, /area/station/service/library) -"cUP" = ( -/obj/structure/closet/wardrobe/orange, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +"cmG" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/structure/railing{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security) -"cVb" = ( +/obj/effect/landmark/start/assistant, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/cargo/bitrunning/den) -"cVh" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/chair/sofa/bench/left{ - dir = 1 + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"cVi" = ( -/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"cmQ" = ( +/turf/open/floor/cult, +/area/station/service/chapel/office) +"cmU" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cnc" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/structure/chair_flipped, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"cVs" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Xenobiology Maintenance" +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"cne" = ( +/obj/structure/railing, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"cVt" = ( -/obj/structure/chair{ +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron/stairs/left{ dir = 4 }, -/obj/item/ammo_casing/c357/spent, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"cVF" = ( -/obj/machinery/disposal/bin{ - desc = "A pneumatic waste disposal unit. This one leads into space!"; - name = "deathsposal unit" +/area/station/service/chapel) +"cnf" = ( +/obj/structure/grille, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"cnn" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/stripes/end{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/light/directional/south, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"cVL" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/starboard) -"cVN" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"cnq" = ( +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"cVW" = ( -/obj/structure/railing/corner, -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, +/area/ruin/space/has_grav/abandoned_warehouse) +"cnM" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/asteroid) -"cVX" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/neutral, +/area/space/nearstation) +"cnQ" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"cnR" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"cnW" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"cWb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"cWc" = ( -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/white/smooth_half{ +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"cog" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"cok" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) +"cop" = ( +/obj/structure/railing{ dir = 8 }, -/area/station/science/xenobiology) -"cWi" = ( -/obj/structure/toiletbong, -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"cWr" = ( -/obj/machinery/holopad/secure{ - pixel_x = 1 +/obj/structure/table/wood/fancy/black, +/obj/item/book/bible{ + pixel_x = 6; + pixel_y = 6 }, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/event_spawn, +/obj/item/book/bible{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/book/bible, /turf/open/floor/iron/dark, -/area/station/ai/upload/chamber) -"cWv" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cWz" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"cWD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ +/area/station/service/chapel) +"cos" = ( +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/newscaster/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"cow" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/space/nearstation) +"cox" = ( +/mob/living/basic/sloth/citrus, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"cWL" = ( -/turf/open/floor/iron/white/textured_corner{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/area/station/science/xenobiology) -"cWX" = ( -/obj/effect/turf_decal/arrows, -/obj/machinery/firealarm/directional/west, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"cXd" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, +/area/station/cargo/sorting) +"coy" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"coz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cXe" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"cXh" = ( -/obj/effect/spawner/random/trash/caution_sign, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"cXn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"cpi" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Auxiliary Dock" + }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron/dark, -/area/station/service/chapel) -"cXo" = ( -/obj/structure/barricade/wooden/crude, -/obj/structure/holosign/barrier/atmos, -/turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"cXr" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/computer/pod/old/mass_driver_controller/chapelgun{ - pixel_x = 24; - pixel_y = -32 +/area/station/hallway/secondary/exit/departure_lounge) +"cpC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"cpY" = ( +/obj/item/pickaxe, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cpZ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"cqc" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"cXy" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, /area/station/engineering/supermatter/room) -"cXL" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airalarm/tlv_kitchen, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"cXP" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +"cqm" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = -6 }, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/medical/central) -"cYe" = ( -/obj/effect/turf_decal/loading_area{ - dir = 1 +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 6 }, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/trimline/purple/filled/line{ +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/experi_scanner{ + pixel_x = -4 + }, +/obj/item/experi_scanner, +/obj/item/experi_scanner{ + pixel_x = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"cYq" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" +/area/station/science/lab) +"cqr" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/ordnance/storage) +"cqA" = ( +/obj/machinery/atmospherics/components/tank/plasma{ + dir = 4 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"cqE" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"cqO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"cYs" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/science) -"cYw" = ( -/obj/machinery/light/directional/south, -/turf/open/openspace, -/area/station/engineering/main) -"cYC" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"cYD" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 +/turf/open/floor/iron, +/area/station/command/bridge) +"cqQ" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/seeds/onion, +/obj/item/seeds/garlic, +/obj/item/seeds/potato, +/obj/item/seeds/tomato, +/obj/item/seeds/carrot, +/obj/item/seeds/grass, +/obj/item/seeds/ambrosia, +/obj/item/seeds/wheat, +/obj/item/seeds/pumpkin, +/obj/effect/spawner/random/contraband/prison, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"cYG" = ( -/obj/structure/bed{ - dir = 4 +/area/station/security/prison/garden) +"cqT" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 }, -/obj/item/bedsheet/brown{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"cYH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/mob/living/basic/goat/pete, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +/obj/structure/sign/poster/contraband/the_griffin/directional/north, +/obj/structure/rack, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"cre" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"cYP" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"cYS" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/security/warden) -"cZb" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Teleport Access" - }, -/obj/effect/turf_decal/delivery, +/area/station/engineering/atmos) +"crh" = ( /obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/command/teleporter) -"cZf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{ - dir = 4 +/obj/machinery/holopad/secure, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"crk" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"cZi" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"cZp" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/reinforced/airless, +/area/station/security/brig) +"cry" = ( +/turf/open/space/basic, /area/space/nearstation) -"cZs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"crz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"crG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"crH" = ( +/obj/effect/turf_decal/box/corners, +/turf/open/floor/plating, +/area/station/hallway/primary/fore) +"crI" = ( +/obj/machinery/door/window/left/directional/north{ + req_access = list("chapel_office") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/service/chapel/funeral) +"crK" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"crR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"csa" = ( +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"csj" = ( +/obj/structure/table, +/obj/item/radio/intercom, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"cZE" = ( -/turf/open/openspace, -/area/station/command/meeting_room) -"cZZ" = ( -/obj/effect/landmark/navigate_destination, +/area/station/command/bridge) +"csk" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dai" = ( -/obj/machinery/power/port_gen/pacman, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"daz" = ( +/area/station/maintenance/aft) +"cso" = ( /obj/structure/table, -/obj/item/ai_module/core/full/paladin_devotion, +/obj/item/kitchen/fork/plastic, /obj/structure/cable, -/obj/machinery/flasher/directional/south, -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"daK" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"csL" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/food/grown/poppy/lily{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/lily{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/lily, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"csM" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/effect/turf_decal/siding/red/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"dba" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) -"dbl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dbn" = ( -/obj/structure/cable, -/obj/effect/spawner/random/trash/grime, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"dbw" = ( -/obj/structure/cable, +"csW" = ( +/obj/structure/sign/warning/no_smoking, +/turf/closed/wall, +/area/station/maintenance/aft) +"ctf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/lounge) -"dby" = ( -/obj/structure/chair/comfy/brown{ - dir = 8; - name = "Head Of Personnel" - }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"dbJ" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"ctg" = ( +/obj/machinery/modular_computer/preset/engineering{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/bot, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"dbN" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"ctt" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dca" = ( -/obj/structure/railing{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"ctu" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"ctv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"ctx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"dcc" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"dcf" = ( -/obj/structure/table/wood, -/obj/structure/railing{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"ctZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"cua" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"cud" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/item/radio/intercom{ - broadcasting = 1; - dir = 8; - listening = 0; - name = "Station Intercom (Court)" +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"cup" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"dcg" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "brm" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"cuD" = ( +/obj/structure/sign/departments/security/directional/south, +/obj/structure/flora/grass/jungle/b/style_random, +/obj/machinery/light/directional/south, /obj/effect/turf_decal/sand/plating, -/obj/structure/railing/corner{ - dir = 4 - }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"dcl" = ( -/obj/effect/turf_decal/sand/plating, -/obj/item/pickaxe, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"dcm" = ( -/obj/structure/cable/layer3, -/obj/effect/turf_decal/tile/blue, +/area/station/maintenance/port/lesser) +"cuR" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/port/aft) +"cuS" = ( +/obj/machinery/light/small/directional/north, +/obj/item/radio/intercom/directional/north, +/obj/machinery/vending/games, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"cuU" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"dco" = ( /obj/structure/cable, +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Break Room" + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) +"cuV" = ( +/turf/closed/wall, +/area/station/maintenance/starboard/aft) +"cuW" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"dct" = ( +/area/station/hallway/primary/central/fore) +"cvi" = ( +/obj/effect/turf_decal/siding/thinplating/light{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"cvm" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/requests_console/directional/south{ + department = "Law Office"; + name = "Law Office Requests Console" + }, +/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"cvr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"dcv" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 +"cvF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"cvI" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/power/emitter, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"cvL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/button/door/directional/south{ + id = "medbay_front_door"; + name = "Medbay Doors Toggle"; + normaldoorcontrol = 1; + req_access = list("medical") }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"dcw" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/computer/crew{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_edge{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/area/station/science/xenobiology) -"dcx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/item/radio/intercom/directional/south{ + pixel_y = -34 + }, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"cvM" = ( +/obj/structure/sign/warning/secure_area{ + name = "EMERGENCY STORAGE" }, +/turf/closed/wall, +/area/station/hallway/secondary/entry) +"cvT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"cwj" = ( +/obj/machinery/modular_computer/preset/id, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/telescreen/ce/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"cwl" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"cxO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"dcH" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"dcI" = ( +/area/station/command/teleporter) +"cxP" = ( +/obj/effect/turf_decal/stripes/corner, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"cxR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"cyc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"dcO" = ( -/obj/machinery/vending/wardrobe/science_wardrobe, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/purple{ - dir = 10 +/area/station/hallway/secondary/entry) +"cyp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"dcS" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"dcU" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"dda" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance, +/area/station/hallway/primary/central/fore) +"cyv" = ( +/obj/structure/displaycase/trophy, +/turf/open/floor/wood, +/area/station/service/library) +"cyP" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "greylair"; + name = "Lair Privacy Shutter" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"cyT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"ddb" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/security/execution/transfer) +"cyZ" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/ambrosia, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"czj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"czv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"ddF" = ( -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"ddO" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"ddZ" = ( -/obj/machinery/door/window/right/directional/south{ - name = "Research Test Chamber"; - req_access = list("science") +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"czy" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Supply Door Airlock" }, -/turf/open/floor/engine, -/area/station/science/explab) -"des" = ( -/obj/structure/closet/lasertag/blue, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"deW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"deY" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dfc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"dfd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"dfk" = ( -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"dfr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"czz" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/airalarm/directional/east, +/obj/effect/landmark/start/assistant, +/obj/effect/spawner/random/bedsheet, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/north{ + id = "Cabin_2"; + name = "Cabin 2 Privacy Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"dfM" = ( -/turf/open/floor/iron/white, -/area/station/science/research) -"dfW" = ( -/obj/structure/sign/warning/electric_shock/directional/west, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/stripes/asteroid/corner{ +/obj/effect/mapping_helpers/broken_floor, +/obj/item/pillow/random, +/turf/open/floor/wood, +/area/station/commons/locker) +"czH" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"dfY" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/airalarm/directional/east, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"czT" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" }, -/obj/machinery/light_switch/directional/south{ - pixel_y = -10; - dir = 4; - pixel_x = 20 +/turf/open/floor/plating, +/area/station/command/bridge) +"czX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"dga" = ( -/obj/structure/toilet{ - dir = 4 +/area/station/hallway/primary/starboard) +"cAl" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"cAp" = ( +/obj/structure/closet/emcloset/anchored, /obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"cAq" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/rust, +/area/station/maintenance/starboard/aft) +"cAu" = ( +/obj/effect/landmark/start/botanist, /turf/open/floor/iron, -/area/station/service/theater) -"dge" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/service/hydroponics) +"cAz" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"dgm" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "O2 to Airmix" - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"dgp" = ( -/turf/closed/wall, -/area/station/medical/exam_room) -"dgw" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"dgy" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/door/window/right/directional/south{ - name = "Medical Deliveries"; - req_access = list("medical") +/area/station/science/xenobiology) +"cAU" = ( +/obj/structure/sign/departments/chemistry/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/medical/storage) -"dgG" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"dgS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"dgX" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 +/area/station/hallway/primary/port) +"cBc" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/labor, +/obj/machinery/requests_console/directional/north{ + department = "Security"; + name = "Security Requests Console" }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"cBD" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"cBG" = ( +/obj/machinery/telecomms/processor/preset_two, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"cBJ" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"cBN" = ( +/obj/structure/flora/bush/pale/style_random, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"cBO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/item/stack/package_wrap, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"cBW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"dgY" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 +/area/station/command/bridge) +"cCe" = ( +/obj/structure/sign/warning/fire, +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"cCJ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port Mix to East Ports" }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"dhb" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"dhg" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"dhj" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, +/area/station/engineering/atmos) +"cCS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"dhl" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"cDf" = ( /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"dhn" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"cDH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/machinery/light/directional/east, +/area/station/hallway/primary/central/fore) +"cDJ" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/smartfridge/organ, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"dht" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/medical/surgery/theatre) +"cDZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "Test Chamber Blast Door" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"dhv" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"dhN" = ( -/obj/structure/rack, -/obj/item/circuitboard/machine/exoscanner{ - pixel_y = 3 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" }, -/obj/item/circuitboard/machine/exoscanner, -/obj/item/circuitboard/machine/exoscanner{ - pixel_y = -3 +/turf/open/floor/plating, +/area/station/science/robotics/lab) +"cEa" = ( +/obj/machinery/pdapainter/engineering, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"dhO" = ( +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"cEr" = ( +/turf/closed/wall, +/area/station/command/bridge) +"cEu" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"dhR" = ( -/obj/structure/rack, -/obj/item/wrench, -/obj/item/knife/kitchen{ - pixel_x = 6; - pixel_y = 2 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"cES" = ( +/obj/structure/bookcase/random/fiction, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"cFq" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-maint-passthrough" }, -/obj/item/soap{ - pixel_y = -2 +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/effect/mapping_helpers/airlock/access/any/service/janitor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"cFA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"dic" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"dij" = ( -/obj/machinery/light/small/dim/directional/west, -/turf/open/misc/asteroid, -/area/station/hallway/secondary/entry) -"diz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/port/fore) +"cFO" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"diD" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"diI" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/computer/security, -/obj/structure/detectiveboard/directional/north, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"diN" = ( -/obj/structure/railing{ +/area/station/command/heads_quarters/hos) +"cGl" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/box, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/upper) -"diZ" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"cGm" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet, +/obj/structure/grille/broken, +/obj/item/analyzer, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"cGo" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/construction/plumbing, +/obj/item/construction/plumbing, +/obj/machinery/light_switch/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/meter/layer2, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"dje" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"djo" = ( -/obj/item/dice/d2, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"djU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"cGr" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 8 + }, +/obj/machinery/air_sensor/ordnance_freezer_chamber, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"cGF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, +/obj/machinery/light_switch/directional/west, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"djW" = ( -/obj/structure/chair/office{ +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/components/tank/air/layer4{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"dkj" = ( +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"cGP" = ( +/turf/closed/wall/r_wall, +/area/station/service/chapel/monastery) +"cGQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"dkm" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"dko" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"dkq" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/button/door{ - id = "secentrylock2"; - name = "Security Exit Lock"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = -1; - req_access = list("security"); - specialfunctions = 4 - }, -/obj/machinery/button/door{ - id = "secentrylock"; - name = "Security Entrance Lock"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = 6; - req_access = list("security"); - specialfunctions = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/button/flasher{ - id = "secentry"; - name = "entrance flasher button"; - pixel_x = 5; - pixel_y = -1 +/obj/machinery/camera/directional/north{ + c_tag = "Central Hallway Courtroom"; + name = "central camera" }, -/obj/machinery/button/door{ - id = "secentrylock"; - name = "Security Entrance Doors"; - normaldoorcontrol = 1; - pixel_x = 5; - pixel_y = 6 +/obj/structure/sign/departments/lawyer/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"dkr" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"dkt" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"cHg" = ( +/obj/structure/chair/pew{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"dkv" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/chapel{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/service/chapel) +"cHu" = ( +/obj/structure/lattice/catwalk, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cHz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, /area/station/medical/medbay/central) -"dkC" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/obj/machinery/door/airlock{ - name = "Clown's Backstage Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"dkN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"cHG" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" }, -/obj/machinery/computer/cargo, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"dkZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Delivery Office"; + name = "cargo camera"; + network = list("ss13","qm") }, -/obj/item/storage/toolbox/emergency, -/obj/structure/table, -/obj/machinery/light_switch/directional/west, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"dla" = ( -/turf/open/floor/iron/stairs/right{ - dir = 1 +/area/station/cargo/sorting) +"cHI" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 6 }, -/area/station/command/bridge) -"dlg" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/flora/bush/lavendergrass, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"dlp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/item/pen/fourcolor, +/obj/item/stamp/head/hop{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"dlE" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"dlQ" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/area/station/command/heads_quarters/hop) +"cHL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron/stairs/right{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"cHN" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/medical/storage) -"dlX" = ( -/obj/effect/turf_decal/loading_area{ - dir = 1 +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cHO" = ( +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"cHZ" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "xeno_blastdoor"; + name = "Xenobiology Containment Blast Door" }, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/science) +"cIb" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"dlY" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"dlZ" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/gambling, -/turf/open/floor/wood, -/area/station/commons/lounge) -"dmj" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/machinery/flasher/directional/north{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"cIf" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/generic/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"cIg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/light/directional/north, -/obj/machinery/computer/records/security, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"dmo" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/commons/fitness/recreation) -"dmx" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"cIk" = ( +/obj/machinery/disposal/bin/tagger, +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dmE" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"cIC" = ( +/obj/structure/cable, +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"cIU" = ( +/turf/closed/wall/rust, +/area/station/construction/mining/aux_base) +"cIV" = ( +/turf/closed/wall, +/area/station/construction/mining/aux_base) +"cIW" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light_switch/directional/south{ + pixel_x = 10 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/reagent_dispensers/wall/peppertank/directional/west, +/obj/item/screwdriver, +/obj/machinery/firealarm/directional/south{ + pixel_x = -3 }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) -"dmH" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 +/obj/machinery/camera/directional/south{ + c_tag = "Cargo Checkpoint Post"; + name = "cargo camera"; + network = list("ss13","qm") }, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"dmM" = ( -/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"cIX" = ( +/turf/open/floor/plating, +/area/station/construction/mining/aux_base) +"cIY" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science) +"cJe" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/roboticist, /obj/effect/turf_decal/siding/purple{ - dir = 9 + dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"dmT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"cJf" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"cJh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/machinery/microwave, +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dni" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"cJk" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"dnt" = ( -/obj/effect/turf_decal/trimline/dark_red/end{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/button/crematorium{ - id = "crematoriumChapel"; - pixel_x = 26 - }, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"dnv" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/circuit_workshop) -"dnw" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"dnB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"cJv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/station/command/corporate_dock) -"dnO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dnP" = ( -/obj/structure/filingcabinet/medical, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"dnW" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/lobby) -"dog" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"doh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"cJx" = ( +/obj/structure/girder, +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cKd" = ( +/obj/effect/turf_decal/box/corners, +/obj/structure/sign/warning/electric_shock/directional/south, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"cKz" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"cKR" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"cKY" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"dor" = ( +/obj/machinery/fax{ + fax_name = "Research Division"; + name = "Research Division Fax Machine"; + pixel_x = 1 + }, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/science/research) +"cLq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"dow" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Port To Filter" - }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos) -"doH" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/aft) +"cLu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"doO" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"doZ" = ( -/obj/item/pickaxe/improvised, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"dpb" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/command/corporate_showroom) -"dpc" = ( -/obj/structure/table/wood, -/obj/structure/railing{ - dir = 10 +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 }, -/obj/item/gavelblock, -/obj/item/gavelhammer, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"dpe" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/machinery/door/airlock/virology, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"dpf" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) -"dpj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"cLx" = ( +/obj/structure/chair/office/light, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/start/chief_engineer, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"dpo" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/command/heads_quarters/ce) +"cLG" = ( +/obj/structure/chair{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction, -/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/security) -"dpp" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/auxlab/firing_range) -"dpu" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"dpz" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/hallway/secondary/exit/departure_lounge) +"cLL" = ( +/obj/effect/turf_decal/box/corners{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, /turf/open/floor/iron, -/area/station/security/interrogation) -"dpA" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"dpH" = ( +/area/station/security/courtroom) +"cLV" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"cMj" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"cMr" = ( +/obj/machinery/power/shieldwallgen, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/cargo/bitrunning/den) -"dpT" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"cMD" = ( +/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver{ + pixel_x = 24 }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/machinery/door/window/left/directional/south{ + name = "Mass Driver Door"; + req_access = list("ordnance") }, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"cMT" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"dpU" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/pumproom) -"dqr" = ( -/obj/structure/table, -/obj/effect/spawner/random/entertainment/dice, -/obj/effect/turf_decal/siding, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"dqA" = ( -/obj/machinery/camera/autoname/motion/directional/north{ - network = list("minisat") +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"dqK" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, -/turf/open/space/basic, -/area/space/nearstation) -"dqU" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"cMV" = ( +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/computer/turbine_computer{ + dir = 1; + mapping_id = "main_turbine" + }, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"cNP" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/smooth_edge{ +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/warning/vacuum/external/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/science/research) -"dqW" = ( +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"cNZ" = ( +/obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 +/turf/open/floor/plating/lowpressure, +/area/space/nearstation) +"cOf" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/box/corners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"cOl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "rdgene2"; + name = "Genetics Lab Shutters" }, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"dra" = ( -/obj/structure/sign/warning/directional/west, -/turf/open/misc/asteroid, -/area/station/asteroid) -"drb" = ( -/obj/machinery/newscaster/directional/west, -/obj/machinery/vending/wardrobe/curator_wardrobe, -/turf/open/floor/engine/cult, -/area/station/service/library) -"drj" = ( -/turf/closed/wall/rock, -/area/station/engineering/supermatter/room) -"drl" = ( -/obj/structure/chair/sofa/corp/right{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - dir = 1; - name = "couch" +/area/station/science/genetics) +"cOp" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/space/nearstation) +"cOt" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 8 }, -/obj/structure/sign/poster/contraband/blood_geometer/directional/east, -/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"cON" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"dro" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) -"drz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"drJ" = ( -/obj/machinery/duct, +"cOR" = ( /obj/structure/cable, -/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"drO" = ( -/obj/item/retractor, -/obj/item/hemostat{ - pixel_x = -10 +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"cOT" = ( +/obj/effect/landmark/navigate_destination/research, +/obj/machinery/door/airlock/public/glass{ + name = "Research Lobby" }, -/obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"cOY" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/medical/virology) +"cPp" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/green/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"cPu" = ( +/obj/machinery/light/directional/west, +/obj/machinery/computer/records/security{ dir = 4 }, -/turf/open/floor/iron/white/smooth_half{ - dir = 8 +/obj/machinery/requests_console/directional/north{ + department = "Security"; + name = "Security Requests Console" }, -/area/station/science/robotics/lab) -"drZ" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 }, -/obj/structure/chair{ - name = "Defense" +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"cPw" = ( +/obj/effect/turf_decal/bot, /turf/open/floor/iron, -/area/station/security/courtroom) -"dsa" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/disposal/incinerator) +"cPM" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"cPR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/security/office) -"dse" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/barricade/wooden, +/obj/machinery/camera/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"cPZ" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"dsi" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/research) -"dss" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/machinery/door/airlock/security/glass{ + name = "Security Customs Checkpoint" }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dsy" = ( -/turf/open/floor/iron/dark/textured_large, -/area/station/security/interrogation) -"dsB" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect1"; - name = "Security Shutters" +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/customs) +"cQb" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/trimline/yellow, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"cQc" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Cargo"; + location = "Arrivals"; + name = "arrivals navigation beacon" }, -/obj/structure/cable, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"cQt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"dsF" = ( -/obj/item/flashlight/lantern, -/turf/open/misc/asteroid, -/area/station/asteroid) -"dsG" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/reinforced/airless, -/area/station/asteroid) -"dsJ" = ( -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"dsL" = ( -/obj/effect/spawner/random/maintenance/three, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"dsP" = ( -/turf/closed/wall/rock, -/area/station/maintenance/disposal/incinerator) -"dsR" = ( -/obj/vehicle/ridden/janicart, -/obj/item/key/janitor, +/area/station/engineering/supermatter/room) +"cQJ" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"dsY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"dtc" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"cQR" = ( +/turf/closed/wall, +/area/station/maintenance/department/cargo) +"cQV" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/office) -"dtm" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 +/area/station/hallway/primary/central/fore) +"cRq" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"dtp" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/area/station/hallway/primary/central) +"cRu" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"cRv" = ( +/turf/closed/wall, +/area/station/service/chapel/monastery) +"cRG" = ( +/obj/machinery/light/directional/east, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/components/tank/air/layer4{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"dtt" = ( -/turf/open/misc/asteroid, -/area/station/hallway/secondary/entry) -"dtx" = ( -/obj/structure/mannequin/plastic{ - dir = 4 +/turf/open/floor/iron, +/area/station/security/processing) +"cRO" = ( +/obj/item/toy/figure/qm{ + pixel_x = -17 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"dtI" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/modular_computer/preset/id{ dir = 1 }, -/obj/structure/table, -/obj/machinery/light/directional/south, -/obj/item/radio/intercom/directional/south, -/obj/item/storage/box/bandages, -/turf/open/floor/iron, -/area/station/command/gateway) -"dtQ" = ( -/obj/structure/cable, -/turf/open/misc/asteroid, -/area/station/asteroid) -"dtY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"duf" = ( -/obj/item/stack/tile/iron/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"dum" = ( -/obj/structure/table/wood, -/obj/item/clothing/head/helmet/toggleable/justice/escape{ - name = "justice helmet" +/obj/machinery/button/door/directional/east{ + id = "qmprivacy"; + name = "Privacy Shutters Control"; + pixel_y = 38; + req_access = list("qm") }, -/obj/item/clothing/suit/costume/justice, -/obj/effect/decal/cleanable/blood/old, +/obj/machinery/keycard_auth/wall_mounted/directional/east{ + pixel_y = 26 + }, +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) +"cRW" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chemistry_shutters_2"; + name = "Chemistry Hall Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"duo" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"dus" = ( -/obj/effect/spawner/random/entertainment/arcade, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/siding/purple{ +/area/station/medical/pharmacy) +"cSl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/north, +/obj/machinery/chem_mass_spec, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"duy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"duB" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) -"duM" = ( -/obj/machinery/incident_display/delam/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"cSq" = ( +/obj/structure/flora/rock/pile/style_random{ + pixel_x = 8; + pixel_y = 3 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"duS" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/misc/asteroid, +/area/space/nearstation) +"cSJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"duU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"dvo" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"cSU" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"dvz" = ( -/obj/structure/sign/directions/medical/directional/east{ - dir = 8; - pixel_y = 8; - pixel_x = 0 - }, -/obj/structure/sign/directions/evac/directional/east{ - dir = 8; - pixel_x = 0 +/obj/machinery/atmospherics/components/binary/pump{ + name = "Pure to Fuel Pipe" }, -/obj/structure/sign/directions/science/directional/east{ - dir = 1; - pixel_y = -8; - pixel_x = 0 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/closed/wall, -/area/station/maintenance/port/lesser) -"dvC" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"dvO" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dvX" = ( -/obj/machinery/light/directional/west, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"dwv" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 4 +/area/station/engineering/atmos) +"cSX" = ( +/obj/machinery/computer/records/security{ + dir = 8 }, -/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"dwz" = ( -/obj/structure/table/wood, -/obj/item/toy/beach_ball/branded{ - pixel_y = 7 +/area/station/security/warden) +"cTh" = ( +/obj/machinery/porta_turret/ai{ + dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 5 +/obj/machinery/flasher/directional/west{ + id = "AI"; + name = "Meatbag Pacifier" }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"dwF" = ( -/obj/structure/lattice, -/obj/structure/cable, -/obj/structure/transit_tube/crossing/horizontal, +/turf/open/floor/circuit, +/area/station/ai/upload/chamber) +"cTi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"dwH" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"dwI" = ( -/turf/open/openspace, -/area/station/maintenance/department/medical/central) -"dxx" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/item/kirbyplants/potty, -/turf/open/floor/wood, -/area/station/commons/lounge) -"dxA" = ( -/obj/machinery/telecomms/receiver/preset_left, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"dxD" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/rubble, -/obj/effect/spawner/random/maintenance/no_decals/two, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/asteroid) -"dxH" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 +/area/station/hallway/primary/aft) +"cTk" = ( +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"cTz" = ( +/obj/machinery/computer/pod/old/mass_driver_controller/chapelgun{ + pixel_x = 30 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"dxT" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dyb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"cTI" = ( +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"dyd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 +/obj/machinery/door/airlock/medical/glass{ + id_tag = "medbay_front_door"; + name = "Medbay" }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/machinery/door/firedoor, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"dyv" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/medical/medbay/central) +"cTN" = ( +/turf/closed/wall/rust, +/area/station/cargo/warehouse) +"cTX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dyA" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/service/chapel) -"dyD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/commons/locker) -"dyS" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{ - id_tag = "ordmix_airlock_interior"; - name = "Burn Chamber Interior Airlock" +/area/station/cargo/storage) +"cTY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/airlock_controller/incinerator_ordmix{ - pixel_y = -26 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/button/ignition/incinerator/ordmix{ - pixel_x = -6; - pixel_y = 24 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/machinery/button/door/incinerator_vent_ordmix{ - pixel_x = 8; - pixel_y = 24 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"cUc" = ( +/obj/structure/transit_tube, +/turf/open/space/basic, +/area/space/nearstation) +"cUk" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"cUw" = ( +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/iron, +/area/station/security/prison) +"cUA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 6 }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"dyV" = ( -/obj/structure/railing{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"cUD" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"cUM" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"cUR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/cyborg, +/obj/structure/cable/layer3, +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"cUY" = ( +/obj/machinery/door/airlock/external{ + name = "Prison External Airlock" + }, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "kilo-maint-1" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"cVb" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"dyX" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 4 +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"cVg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"cVn" = ( +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron, -/area/station/hallway/secondary/service) -"dzb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/hallway/primary/fore) +"cVr" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/station/hallway/secondary/entry) +"cVH" = ( +/obj/structure/closet/secure_closet/hop, +/obj/effect/turf_decal/bot, +/obj/item/storage/lockbox/loyalty, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"cVI" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/item/storage/backpack, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/machinery/light/small/directional/north, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"cVS" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/interrogation) -"dzm" = ( -/obj/machinery/door/airlock/multi_tile/public/glass{ - dir = 4 +/area/station/hallway/primary/starboard) +"cWb" = ( +/obj/structure/table, +/obj/item/radio{ + pixel_x = -4; + pixel_y = 6 }, -/obj/effect/landmark/navigate_destination/chapel, -/obj/machinery/door/firedoor, +/obj/item/radio{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"cWi" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "NTMSLoad2"; + name = "on ramp" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"cWl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"cWu" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/chapel{ - dir = 8 +/obj/machinery/camera/directional/east{ + c_tag = "Aft Hallway tech_storage"; + name = "aft camera" }, -/area/station/service/chapel) -"dzq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"dzr" = ( -/obj/machinery/conveyor{ - id = "garbage" +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/machinery/door/window/left/directional/east{ - name = "Danger: Conveyor Access"; - req_access = list("maint_tunnels") +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"cWy" = ( +/obj/structure/railing/corner{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"dzu" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/siding/green{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"dzv" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"dzA" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"dzC" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/chair/sofa/bench/left{ +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"cWN" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"dzF" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"cWQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/red{ dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"cWS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P13-Central-Primary"; - location = "P12-Central-Primary" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dzL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"dzN" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dzQ" = ( -/obj/structure/bed, -/obj/effect/spawner/random/bedsheet/any, -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/cult, -/area/station/service/library) -"dzU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"dzX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/biohazard, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"dzY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"dAe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/main) -"dAq" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Permabrig" - }, -/turf/open/floor/plating, -/area/station/security/prison/shower) -"dAr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/commons/storage/primary) +"cWV" = ( +/obj/effect/turf_decal/loading_area, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"dAu" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/effect/turf_decal/siding, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"dAv" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"dAx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"dAC" = ( -/obj/machinery/door/airlock/mining{ - name = "Bitrunning Den" +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"cXd" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/obj/machinery/door/firedoor, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"dAG" = ( -/obj/structure/grille/broken, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"dAS" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"dBj" = ( -/obj/structure/cable/multilayer/multiz, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"dBn" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/incident_display/bridge/directional/south, -/turf/open/floor/iron, -/area/station/command/bridge) -"dBu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"dBF" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "zaza" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/window/right, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"dBK" = ( -/turf/open/floor/fakebasalt, -/area/station/maintenance/department/medical) -"dBM" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/cold/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/surgery/theatre) -"dBS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/green/anticorner/contrasted, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron, -/area/station/security/courtroom) -"dBU" = ( -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "SapMaster XP" - }, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron, +/area/station/cargo/storage) +"cXg" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/structure/railing, +/obj/item/reagent_containers/cup/watering_can, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/service/hydroponics) -"dCh" = ( -/obj/machinery/gibber, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"dCi" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/storage/backpack/duffelbag/sec, -/obj/item/storage/backpack/duffelbag/sec{ - pixel_y = 7 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +"cXh" = ( +/turf/closed/wall, +/area/station/security/brig) +"cXv" = ( +/obj/structure/table, +/obj/item/food/energybar, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"cXH" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"dCo" = ( -/obj/effect/turf_decal/siding/wood/end{ +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/machinery/door/airlock/grunge{ - name = "Chapel Office" +/obj/structure/sign/departments/vault/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"cXQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"dCu" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/plasteel{ - amount = 10 + dir = 5 }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 14 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"cXT" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/crew_quarters/bar) +"cXX" = ( +/obj/machinery/light/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/requests_console/directional/east{ - department = "EVA"; - name = "EVA Requests Console" +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"dCv" = ( -/obj/structure/railing, -/obj/structure/dresser, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"dCG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"cXZ" = ( +/turf/closed/wall, +/area/station/hallway/primary/fore) +"cYc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"cYk" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/extinguisher/mini, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/clothing/mask/gas, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/trunk/multiz{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"dCI" = ( -/obj/structure/disposalpipe/segment{ +/area/station/command/heads_quarters/ce) +"cYt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/siding/purple/corner{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"cYv" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/commons/locker) +"cYy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"dCM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"cYA" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/south{ + name = "Genetics Access"; + req_access = list("genetics") }, -/turf/open/floor/iron, -/area/station/engineering/main) -"dDb" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 1 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "rdgene"; + name = "Genetics Lab Shutters" }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"dDc" = ( -/obj/structure/cable/multilayer/connected, -/turf/open/floor/iron, -/area/station/engineering/main) -"dDm" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"cYG" = ( /obj/structure/cable, +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"cYN" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"dDG" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"cYZ" = ( +/obj/effect/spawner/random/structure/furniture_parts, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"cZh" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"dDK" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"dDZ" = ( -/obj/structure/fluff/minepost, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"dEn" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/sign/warning/fire/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"dEG" = ( -/turf/open/floor/grass, -/area/station/security/prison/garden) -"dES" = ( -/obj/machinery/light/directional/north, -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/storage/toolbox/mechanical, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"dFb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"dFc" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/light/directional/south, -/obj/structure/railing/corner, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"dFi" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 + dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, /area/station/maintenance/port/lesser) -"dFk" = ( -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, +"cZo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"cZT" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"dFm" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dFB" = ( +"cZW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"dFM" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"dFY" = ( -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dGc" = ( +/obj/effect/landmark/start/detective, /obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Floor Electrical Relay" - }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/turf/open/floor/wood, +/area/station/security/detectives_office) +"daG" = ( +/obj/machinery/door/airlock/maintenance/external{ + name = "Mass Driver Intersection" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/central/lesser) -"dGh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"dGq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"dGs" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"daL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/hand_labeler{ - pixel_x = 3; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ + dir = 1 }, -/obj/item/storage/pill_bottle/epinephrine{ - pixel_x = -9; - pixel_y = 1 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"dbi" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -5 }, -/obj/item/stack/sheet/mineral/plasma{ - pixel_x = 3; - pixel_y = 14 +/obj/item/pen{ + pixel_x = -5 }, -/obj/item/hand_labeler_refill{ - pixel_x = 10; - pixel_y = -2 +/obj/machinery/light/directional/east, +/obj/machinery/flasher/directional/east{ + id = "hopflash"; + name = "Crowd Pacifier" }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/area/station/medical/pharmacy) -"dGt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/status_display/evac/directional/north, +/obj/structure/desk_bell{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dGw" = ( +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"dbp" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"dGB" = ( -/obj/machinery/disposal/delivery_chute{ - dir = 1 +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/obj/effect/turf_decal/bot_red, -/obj/structure/disposalpipe/trunk{ +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"dbu" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/security) +"dbK" = ( +/obj/effect/turf_decal/stripes/white/line{ dir = 4 }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"dGG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"dGO" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"dbR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"dch" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"dGR" = ( -/obj/structure/fluff/minepost, -/obj/machinery/light/small/dim/directional/north, +/obj/effect/decal/cleanable/dirt, /turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"dHa" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"dHk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/space/nearstation) +"dcl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"dHy" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 +/area/station/hallway/primary/fore) +"dcq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/cargo_technician, +/obj/structure/chair/office{ + dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"dHL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"dHS" = ( -/obj/structure/chair/office{ - dir = 8 +/area/station/cargo/office) +"dcr" = ( +/obj/machinery/vending/wardrobe/curator_wardrobe, +/obj/effect/turf_decal/delivery/white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"dcD" = ( +/obj/structure/table, +/obj/item/surgical_drapes, +/obj/item/retractor, +/obj/item/cautery, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 }, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"dcF" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/green, /turf/open/floor/iron, /area/station/service/hydroponics) -"dHU" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) -"dHW" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/cable, +"dcS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"dIe" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/dark{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"dIn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/security/office) -"dIr" = ( -/obj/effect/mapping_helpers/mail_sorting/science/research, -/obj/structure/disposalpipe/sorting/mail/flip, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, +/obj/structure/disposalpipe/junction/flip, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) -"dIv" = ( -/obj/structure/broken_flooring/pile/directional/north, -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/table_frame, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"dIG" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +"ddb" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Atmospherics Tank - N2"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"dIR" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"ddp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"dIT" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, -/area/station/service/lawoffice) -"dIW" = ( +/area/station/service/bar/atrium) +"ddw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"dIZ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "abrobo" - }, -/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"dJa" = ( -/obj/structure/closet/mini_fridge/grimy, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"dJg" = ( +/area/station/security/brig) +"ddI" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/locker) -"dJJ" = ( -/obj/structure/plasticflaps, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "Bridge" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"dJK" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "execution" +/obj/machinery/door/airlock/public/glass{ + name = "Engineering Foyer" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"dJM" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"dKo" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Secure Pen" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/area/station/engineering/hallway) +"ddQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/closed/wall, +/area/station/maintenance/starboard) +"ddS" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"dKp" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) +"ddT" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 }, -/turf/open/space/openspace, -/area/space/nearstation) -"dKw" = ( -/turf/closed/wall, -/area/station/medical/treatment_center) -"dKA" = ( -/obj/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"dKH" = ( -/obj/structure/railing, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/vacuum/external/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"dLf" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Atmospherics Tank - Plasma" - }, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"dLi" = ( -/obj/machinery/telecomms/server/presets/common, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"dLk" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"ddW" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"dea" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"dLx" = ( -/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"dLI" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/command/emergency_closet) -"dLR" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/storage) -"dLY" = ( -/obj/structure/broken_flooring/singular/directional/east, -/turf/open/space/openspace, -/area/space/nearstation) -"dMa" = ( -/obj/structure/chair/office, -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/effect/landmark/start/cargo_technician, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"dMC" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 8 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"dek" = ( +/obj/machinery/door/airlock/research{ + name = "Monkey Pen" }, -/turf/open/floor/iron, -/area/station/service/bar) -"dMD" = ( -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/warning/electric_shock/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dMF" = ( -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/structure/closet/crate, -/obj/effect/spawner/random/contraband/prison, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/security/prison/work) -"dMU" = ( -/obj/structure/chair/sofa/bench/right{ +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"dez" = ( +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 - }, -/turf/open/floor/iron/edge{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"dNh" = ( -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/locker) -"dNn" = ( -/obj/structure/chair{ - dir = 8 +/area/station/cargo/miningdock) +"deG" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = -4; + pixel_y = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"dNp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, +/obj/item/storage/toolbox/electrical, +/obj/machinery/light/directional/west, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"deI" = ( +/obj/effect/turf_decal/bot, +/obj/structure/grille, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dNr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, +/area/station/maintenance/aft) +"deZ" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/engineering/atmos) -"dNu" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"dNW" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/requests_console/auto_name/directional/west, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/structure/table/wood/fancy/orange, -/obj/effect/spawner/random/entertainment/coin, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"dOg" = ( -/obj/structure/table, -/obj/item/petri_dish{ - pixel_x = -5; - pixel_y = 2 +/area/station/commons/fitness/recreation) +"dfi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge Access" }, -/obj/item/food/pizzaslice/moldy/bacteria{ - pixel_x = 3; - pixel_y = 15 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge" }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"dOl" = ( -/obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/science/research) -"dOv" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"dfk" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/chair/sofa/bench, -/obj/effect/spawner/random/trash/cigbutt{ - spawn_random_offset = 4; - spawn_scatter_radius = 1 - }, +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"dOw" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 +/area/station/maintenance/disposal/incinerator) +"dfv" = ( +/obj/machinery/rnd/production/circuit_imprinter/department/science, +/obj/effect/turf_decal/bot, +/obj/machinery/requests_console/directional/east{ + department = "Research Lab"; + name = "Research Requests Console" }, -/obj/machinery/status_display/supply{ - pixel_y = 32 +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/computer/cargo/request, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"dOC" = ( -/obj/effect/turf_decal/siding/purple/corner, -/obj/effect/turf_decal/stripes/corner{ +/turf/open/floor/iron/dark, +/area/station/science/lab) +"dfD" = ( +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"dfK" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/button/door/directional/north{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"dOD" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/plaque{ - icon_state = "L11" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dOG" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/hos) -"dOJ" = ( -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"dOZ" = ( -/obj/effect/turf_decal/siding/purple{ +/area/station/maintenance/port/lesser) +"dfS" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"dfU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"dfV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"dfW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/chief_medical_officer, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/science/genetics) -"dPf" = ( -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/tcommsat/server) -"dPg" = ( -/obj/machinery/computer/crew{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/button/door/directional/west{ - id = "medsecprivacy"; - name = "Privacy Control"; - normaldoorcontrol = 1; - pixel_y = -9 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"dPk" = ( -/obj/machinery/button/elevator/directional/east{ - id = "cargo" - }, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "cargo" +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"dfY" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"dgd" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "atmos_end_big_lad" }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"dPq" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"dPt" = ( -/obj/effect/landmark/start/medical_doctor, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/exam_room) -"dPv" = ( -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/security/breakroom) -"dPw" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/area/station/maintenance/disposal/incinerator) +"dgg" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/pipedispenser/disposal, +/obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron/dark, -/area/station/service/chapel) -"dPF" = ( -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"dPG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/engineering/atmos) +"dgi" = ( +/obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"dPH" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"dPN" = ( -/obj/structure/chair, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"dPO" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dQr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"dQv" = ( /obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"dQL" = ( -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"dQQ" = ( +/area/station/maintenance/port/greater) +"dgo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/camera/directional/north{ + c_tag = "Supermatter Engine"; + name = "supermatter camera"; + network = list("engine") }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"dRh" = ( -/obj/structure/closet/secure_closet/cytology, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"dRi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "detective_shutters"; - name = "Detective's Office Shutters" +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"dgu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/detectives_office) -"dRq" = ( -/obj/item/paper/pamphlet/radstorm, -/obj/item/paper/pamphlet/radstorm, -/obj/structure/rack, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"dRr" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"dgw" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/abandoned_warehouse) +"dgD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/conveyor_switch/oneway{ + id = "NTMSLoad2"; + name = "on ramp"; + pixel_x = 8; + pixel_y = -5 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"dRs" = ( -/obj/machinery/light/directional/north, -/turf/open/openspace, -/area/station/engineering/lobby) -"dRu" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/ruin/space/has_grav/abandoned_warehouse) +"dgE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/machinery/atmospherics/components/trinary/mixer/airmix, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/area/station/medical/pharmacy) -"dRy" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron, +/area/station/engineering/atmos) +"dgP" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/nitrous_tank{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"dRM" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"dgW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/effect/spawner/random/engineering/tank, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/effect/spawner/random/vending/colavend, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/security/office) -"dRZ" = ( -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"dhe" = ( /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"dSl" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"dSn" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 8 +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 24 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/mix) -"dSp" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"dSB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"dhz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/engineering/atmos) -"dSG" = ( -/obj/item/radio/intercom/directional/east, +/area/station/maintenance/port/greater) +"dhL" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 7; + name = "Cargo Bay"; + shuttle_id = "cargo_home"; + width = 12 + }, +/turf/open/space/basic, +/area/space) +"dhT" = ( /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 5 +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"dhY" = ( +/obj/machinery/door/airlock/external{ + name = "Auxiliary Airlock" }, -/area/station/command/corporate_showroom) -"dSQ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ferry-dock" }, -/obj/machinery/button/door/directional/west{ - id = "Cabin2"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"die" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 3 + }, +/obj/item/multitool{ + pixel_x = -4; + pixel_y = 2 }, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"dif" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"dSV" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/atmospherics/components/trinary/mixer{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"dTb" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"dij" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/stack/package_wrap, +/obj/item/storage/box, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"dil" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"dTd" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law{ - name = "space law"; - pixel_y = 2 +/obj/effect/spawner/random/armory/e_gun, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"dix" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/clothing/head/collectable/hos{ - name = "novelty HoS hat" +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"diA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"diQ" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/power/terminal{ dir = 8 }, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/north{ + c_tag = "Starboard Quarter Solar"; + name = "engineering camera"; + network = list("ss13","engine") + }, /obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"dTe" = ( -/obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"dTh" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, -/obj/structure/disposalpipe/sorting/mail/flip, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"dTy" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker/large, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"dTA" = ( -/obj/item/wrench, -/obj/effect/turf_decal/tile/purple/full, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/maintenance/solars/starboard/aft) +"diU" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" + }, +/obj/structure/sign/poster/contraband/red_rum/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"diZ" = ( +/obj/structure/sign/painting/library_secure{ + pixel_x = -32 + }, +/obj/structure/table/wood/fancy/red, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/window/left/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"dja" = ( +/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"djo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/xenobiology) -"dTE" = ( -/obj/structure/railing/corner{ +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"djC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/turf_decal/trimline/red/filled/arrow_cw, -/turf/open/floor/iron/textured_large, -/area/station/security) -"dTJ" = ( -/obj/machinery/disposal/bin, -/obj/machinery/light_switch/directional/north, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"dTM" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aiupload" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/security/courtroom) +"djQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/upload/chamber) -"dTR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/corner, -/area/station/service/hydroponics/garden) -"dTU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"djW" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Central Hallway Personnel Queue"; + name = "central camera" + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted, /obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central) -"dUb" = ( -/obj/machinery/airalarm/directional/west, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"dUc" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"dUi" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/lobby) -"dUl" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"dUA" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +"djZ" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"dke" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"dUD" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/area/station/hallway/primary/starboard) +"dkh" = ( +/turf/closed/wall, +/area/station/medical/morgue) +"dki" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"dkA" = ( +/obj/structure/flora/bush/leavy/style_random, +/obj/machinery/light/small/directional/south, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"dkD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 }, +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/cargo/sorting) -"dUS" = ( +/area/station/engineering/atmos) +"dkH" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"dkL" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/mapping_helpers/mail_sorting/supply/cargo_bay, +/obj/item/pen, +/obj/item/folder/red{ + pixel_x = -5 + }, +/obj/machinery/door/window/brigdoor/left/directional/west{ + name = "Security Customs Desk"; + req_access = list("security") + }, +/obj/item/radio{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/cargo/storage) -"dVi" = ( -/obj/structure/disposalpipe/segment{ +/area/station/security/checkpoint/customs) +"dkM" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ dir = 4 }, -/turf/open/floor/iron/half{ - dir = 1 +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + name = "robotics sorting disposal pipe" }, -/area/station/service/hydroponics/garden) -"dVl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/mapping_helpers/mail_sorting/science/robotics, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"dkQ" = ( +/obj/machinery/conveyor{ + id = "NTMSLoad2"; + name = "on ramp" }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dVp" = ( -/turf/closed/wall, -/area/station/science/cytology) -"dVs" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"dVt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/cytology) -"dVu" = ( -/obj/structure/railing{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"dVx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"dlc" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/mug/coco, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/obj/item/radio/intercom/directional/east, -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"dVE" = ( -/obj/structure/transit_tube/curved, -/obj/structure/lattice, -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"dlI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"dVX" = ( -/obj/structure/table, -/obj/item/storage/box/mousetraps{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/clothing/gloves/color/orange{ - pixel_x = 4; - pixel_y = -2 +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"dlS" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"dmf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/service/janitor) -"dWb" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/firealarm/directional/north, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"dWl" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 +/area/station/hallway/secondary/exit/departure_lounge) +"dmp" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/cargo/storage) -"dWI" = ( -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/effect/turf_decal/siding/wood/end{ +/area/station/commons/storage/primary) +"dmw" = ( +/obj/structure/dresser, +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"dmA" = ( +/obj/item/kirbyplants/organic/plant10, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"dWT" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/siding/purple, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"dmC" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"dmD" = ( +/obj/machinery/modular_computer/preset/id{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/keycard_auth/wall_mounted/directional/west{ + pixel_y = -5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"dWW" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/machinery/requests_console/directional/south{ + department = "Captain's Desk"; + name = "Captain's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"dXH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 +/area/station/command/heads_quarters/captain) +"dmU" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/pale/style_random, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"dmW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/random/maintenance/no_decals, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"dna" = ( +/obj/structure/table, +/obj/item/folder{ + pixel_x = -4 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"dXN" = ( -/obj/machinery/door/airlock/research{ - name = "Robotics Lab Storage" +/obj/item/pai_card, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/structure/barricade/wooden/crude, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/science/robotics/storage) -"dXS" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/area/station/commons/fitness/recreation) +"dnl" = ( +/obj/machinery/light/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Arrivals Dock"; + name = "shuttle camera" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/button/door/directional/north{ - name = "Cargo Lockdown"; - req_access = list("cargo"); - id = "cargolockdown" +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/obj/structure/closet/firecloset, /turf/open/floor/iron, -/area/station/cargo/storage) -"dXU" = ( -/turf/open/floor/plating/airless, -/area/space/nearstation) -"dXW" = ( -/obj/structure/disposaloutlet{ - dir = 8 +/area/station/hallway/secondary/entry) +"dnt" = ( +/obj/effect/landmark/carpspawn, +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/starboard/fore) +"dny" = ( +/obj/structure/table, +/obj/item/storage/backpack{ + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/window/spawner/directional/north, -/obj/structure/disposalpipe/trunk{ +/obj/item/storage/backpack, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"dYo" = ( -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"dnz" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/noticeboard/directional/east, +/obj/item/wallframe/apc, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"dnF" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"dnL" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/railing{ +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/flasher/directional/west{ + id = "Cell 2"; + name = "Prisoner Pacifier" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"dnS" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"dYq" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"dod" = ( +/obj/effect/landmark/start/head_of_personnel, +/obj/structure/chair/office{ dir = 8 }, -/obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"dof" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"dYr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"dYx" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) -"dYD" = ( -/obj/structure/table/glass, -/obj/item/experi_scanner{ - pixel_y = 6 +"doj" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"dok" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/experi_scanner{ - pixel_x = 4 +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/obj/item/experi_scanner{ - pixel_x = -4 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"dYR" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"dYS" = ( -/obj/machinery/computer/records/security{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/reagent_dispensers/wall/peppertank/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"dYZ" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"dZd" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/bot, -/obj/item/bodypart/arm/right/robot{ - pixel_x = 3 - }, -/obj/item/bodypart/arm/left/robot{ - pixel_x = -3 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/firealarm/directional/west, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 6; - pixel_y = 13 - }, -/obj/machinery/ecto_sniffer{ - pixel_x = -6; - pixel_y = 6 +/area/station/cargo/storage) +"dom" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/item/circuitboard/mecha/ripley/main{ - pixel_x = -9; - pixel_y = -10 +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"don" = ( +/obj/structure/cable, +/obj/machinery/power/smes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"doy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "xeno4"; + name = "Creature Cell 4" }, -/obj/item/circuitboard/mecha/ripley/peripherals{ - pixel_x = -4; - pixel_y = -7 +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"doB" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"dZf" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"doH" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/area/station/engineering/atmos) -"dZy" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/maintenance/storage) -"dZA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/command/meeting_room) -"eam" = ( -/obj/structure/chair{ - dir = 8 - }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"doU" = ( +/obj/machinery/shower/directional/west, /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 9 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"eau" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"dpc" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 4 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel/monastery) +"dpe" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"eaD" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"eaS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"dpw" = ( +/obj/structure/chair, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/bookbinder, -/obj/item/radio/intercom/directional/south, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/station/service/library) -"eaT" = ( -/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/office) +"dpx" = ( +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) -"ebi" = ( -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; - id = "theater_curtains"; - name = "Theater Curtains" +"dpJ" = ( +/obj/structure/sign/departments/science/directional/north{ + name = "ROBOTICS" }, -/obj/machinery/button/curtain{ - id = "theater_curtains"; - name = "curtain control"; - pixel_y = 32; - req_access = list("theatre"); +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"ebk" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/sign/warning/explosives/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"ebs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"ebz" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"ebB" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P11-Central-Primary"; - location = "P10-Central-Primary" - }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ebD" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") - }, -/obj/structure/bed/medical{ - dir = 4 +/area/station/hallway/primary/central/fore) +"dpR" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ebE" = ( -/obj/effect/spawner/structure/window/hollow/end, -/turf/open/floor/plating, -/area/station/security/courtroom) -"ebN" = ( -/obj/structure/broken_flooring/pile/directional/east, -/turf/open/space/openspace, -/area/space/nearstation) -"ebP" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/cell_5k, -/obj/effect/mapping_helpers/apc/full_charge, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ebU" = ( -/obj/structure/cable, +/area/station/engineering/main) +"dpT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"ece" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/cable, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"dqa" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"dqg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"ecj" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"dqw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/landmark/start/roboticist, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"dqF" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"dqL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"drk" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/table, +/obj/item/book/manual/wiki/atmospherics, +/obj/item/stack/sheet/rglass{ + amount = 20; + pixel_x = 2; + pixel_y = -2 }, -/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ecy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"drl" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"drm" = ( +/obj/machinery/mass_driver/ordnance{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ecz" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/plating, +/area/station/science/ordnance) +"drp" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/mousetraps{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/flashlight, +/obj/structure/noticeboard/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"drw" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/area/station/command/corporate_showroom) -"ecC" = ( -/turf/closed/wall, -/area/station/security/office) -"edv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"edH" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, -/area/station/security/warden) -"edL" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/arrows/red{ - pixel_y = 10 - }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"eeo" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/airlock/atmos{ - name = "Hypertorus Fusion Reactor" - }, -/obj/machinery/door/firedoor, +/area/station/cargo/storage) +"dry" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"eeu" = ( -/obj/machinery/door/poddoor/preopen{ - id = "Disposal Exit"; - name = "Disposal Exit Vent" - }, -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"eeB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"eeE" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/urinal/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"eeL" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/area/station/science/ordnance/storage) +"drC" = ( /obj/structure/table, -/obj/effect/spawner/random/entertainment/dice, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eeQ" = ( -/obj/machinery/chem_dispenser, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/decal/cleanable/blood/old, +/obj/item/clothing/gloves/color/black, +/obj/item/wrench, +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30 }, -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"efb" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/machinery/modular_computer/preset/id, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) -"efc" = ( -/obj/structure/table/wood/poker, -/obj/item/storage/dice, -/turf/open/floor/wood, -/area/station/commons/lounge) -"efm" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "brm" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"efx" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"efF" = ( +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"drG" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"efJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ +/area/station/maintenance/port/lesser) +"drM" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/griddle, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"dsc" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Control Room" + }, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"efL" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"efQ" = ( -/obj/structure/cable, +/area/station/tcommsat/computer) +"dsh" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"efY" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/stripes, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/exit/departure_lounge) -"efZ" = ( -/obj/effect/turf_decal/tile/yellow{ +"dsk" = ( +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"dsm" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/barricade/wooden/crude, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"dsn" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = 9; + pixel_y = 3 }, -/area/station/engineering/atmos/mix) -"ego" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/item/radio/intercom/prison/directional/north, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"dsw" = ( +/obj/structure/closet/secure_closet/courtroom, +/obj/item/gavelhammer, +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/north{ + c_tag = "Courtroom Judge"; + name = "command camera" }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"egt" = ( -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/glowstick/blue{ - light_range = 2; - start_on = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"egu" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/target/syndicate, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"egv" = ( -/obj/effect/turf_decal/siding/wood{ +"dsC" = ( +/obj/machinery/light/cold/directional/east, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"egz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"dsD" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall, +/area/ruin/space/has_grav/abandoned_warehouse) +"dsH" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"egH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"egN" = ( -/obj/structure/table, -/obj/effect/spawner/random/engineering/flashlight, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, -/area/station/command/gateway) -"egV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/area/station/engineering/storage/tech) +"dsI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Satellite Antechamber" }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"egY" = ( -/obj/machinery/light_switch/directional/west, -/turf/open/openspace, -/area/station/security) -"ehb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/explab) -"ehn" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ai-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/interior) +"dsJ" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"dtb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/closed/wall/r_wall, +/area/station/maintenance/disposal/incinerator) +"dtg" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ dir = 4 }, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"dtt" = ( +/obj/effect/landmark/event_spawn, /obj/structure/cable, -/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"ehs" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/defibrillator/loaded{ - pixel_y = 6 +/area/station/hallway/primary/aft) +"dty" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance/storage) +"dtA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"dtD" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/newscaster/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/wood/fancy/red, +/obj/structure/sign/painting/large/library{ + dir = 8; + pixel_x = -29 }, -/obj/item/defibrillator/loaded{ - pixel_y = 3 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"dtP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/obj/item/defibrillator/loaded, -/obj/item/defibrillator/loaded{ - pixel_y = -4 +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"dtS" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"eht" = ( +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"dup" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"duq" = ( +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ehO" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"ehP" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 +/area/station/maintenance/fore) +"duA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/masks, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"duH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ehY" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 1 - }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"duM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd","xeno") - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"eih" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 3; - pixel_y = -2 - }, /obj/structure/cable, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"duU" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"ein" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/maintenance/port/lesser) +"duV" = ( +/obj/structure/transit_tube/crossing/horizontal, +/obj/structure/lattice, +/obj/structure/sign/warning/secure_area/directional/south, +/turf/open/space/basic, +/area/space/nearstation) +"duW" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security) -"eip" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" +/area/station/hallway/primary/central) +"dva" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"eiI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/iron, +/area/station/engineering/atmos) +"dvk" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/department/bridge) +"dvq" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" }, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"eiJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"eiT" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin7"; - name = "Cabin 1" +/turf/open/floor/plating, +/area/space/nearstation) +"dvs" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","monastery") }, -/obj/effect/turf_decal/siding/wood/end, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"eiZ" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"dvu" = ( +/obj/structure/extinguisher_cabinet/directional/south, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/maintenance/central/greater) -"ejb" = ( -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"eje" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ejl" = ( -/obj/machinery/holopad/secure, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"eju" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"ejB" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/area/station/command/eva) +"dvN" = ( +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"dwc" = ( +/obj/structure/table, +/obj/item/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_y = -2 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"ejH" = ( -/obj/machinery/shower/directional/north{ - has_water_reclaimer = 0; - name = "smoking hot shower"; - reagent_capacity = 100; - reagent_id = /datum/reagent/clf3 +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/computer/security/telescreen/minisat/directional/south, /turf/open/floor/plating, -/area/station/asteroid) -"ejL" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/area/station/hallway/primary/central/fore) +"dwh" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/table, +/obj/item/stock_parts/micro_laser{ + pixel_x = -7; + pixel_y = -3 }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ejS" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/fullgrass/style_random, -/turf/open/floor/grass, -/area/station/science/research) -"eki" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/item/stock_parts/micro_laser{ + pixel_x = -1; + pixel_y = 3 }, -/obj/effect/turf_decal/siding/purple{ - dir = 1 +/obj/item/stock_parts/micro_laser{ + pixel_x = -5; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"ekl" = ( -/obj/structure/closet/crate, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ekp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/turf/open/floor/circuit/telecomms, -/area/station/science/xenobiology) -"eky" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/item/stock_parts/micro_laser{ + pixel_x = -3; + pixel_y = -2 }, -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 +/obj/item/stock_parts/scanning_module{ + pixel_x = 12; + pixel_y = -1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/mail_sorting/service/library, -/turf/open/floor/wood, -/area/station/service/library) -"ekz" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/chapel{ - dir = 4 +/obj/item/stock_parts/scanning_module{ + pixel_x = 10; + pixel_y = 1 }, -/area/station/service/chapel) -"ekF" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/item/stock_parts/scanning_module{ + pixel_x = 13; + pixel_y = 4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 8; + pixel_y = -1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"ekL" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"dwx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"dwz" = ( +/turf/closed/wall/rust, +/area/station/maintenance/space_hut/plasmaman) +"dwB" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ekR" = ( -/obj/machinery/computer/rdservercontrol{ +/area/station/engineering/atmos/pumproom) +"dwL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"dxf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"dxk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"dxm" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/rust, +/area/station/engineering/gravity_generator) +"dxq" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/obj/machinery/light/small/directional/west{ - bulb_power = 0.8 +/obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/science/server) -"ekY" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/area/station/engineering/atmos) +"dxu" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Xenobiology Cell 1"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"dxB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/lobby) -"ekZ" = ( -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/hallway/primary/fore) +"dxU" = ( +/obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"elk" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics Mixing Room" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"ely" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/area/station/command/heads_quarters/ce) +"dya" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"elE" = ( -/obj/structure/door_assembly, -/turf/open/misc/asteroid, -/area/station/asteroid) -"elT" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"elX" = ( -/obj/machinery/igniter/incinerator_atmos, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"emf" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"dyj" = ( +/turf/closed/wall/rust, +/area/station/security/checkpoint/supply) +"dyu" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"emn" = ( -/obj/machinery/telecomms/bus/preset_three, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"emy" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Starboard Primary Hallway" +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"eng" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"enn" = ( -/obj/machinery/air_sensor/mix_tank, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"ent" = ( -/obj/item/pickaxe, -/turf/open/misc/asteroid, -/area/station/asteroid) -"enu" = ( -/turf/closed/wall, -/area/station/service/kitchen) -"enz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"enT" = ( -/obj/structure/stairs/north, /turf/open/floor/iron, -/area/station/command/corporate_showroom) -"eon" = ( -/obj/effect/spawner/random/structure/chair_comfy{ +/area/station/hallway/secondary/exit/departure_lounge) +"dyw" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"eoo" = ( -/obj/structure/table/wood, -/obj/structure/cable, -/obj/item/clipboard{ - pixel_y = 6 - }, -/obj/item/pen{ - pixel_y = 6 - }, -/obj/item/storage/cans/sixbeer{ - pixel_y = -12 - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"eoy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"eoC" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, +/obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, -/area/station/maintenance/solars/port) -"eoL" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" +/area/station/engineering/supermatter/room) +"dyC" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/structure/sink/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"eoO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/machinery/vending/wardrobe/engi_wardrobe, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/engineering/main) -"eoQ" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ dir = 4; - name = "Air to Distro Staging" + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, /turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"eph" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"epi" = ( -/obj/machinery/conveyor/auto{ - dir = 1; - id = "bridgedeliver" - }, +/area/station/maintenance/disposal/incinerator) +"dyD" = ( +/obj/machinery/air_sensor/nitrogen_tank, +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"dyH" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"epl" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Breakroom and Paramedic Dispatch" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, +/area/station/hallway/secondary/exit/departure_lounge) +"dyK" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/command/bridge) +"dyX" = ( +/obj/structure/reagent_dispensers/cooking_oil, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"dzp" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, -/turf/open/floor/holofloor/dark, -/area/station/medical/exam_room) -"epr" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"epA" = ( /obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"dzt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"dzy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/effect/landmark/start/warden, +/obj/structure/chair/office, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"dzL" = ( +/obj/machinery/modular_computer/preset/engineering{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"epE" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, -/area/station/engineering/main) -"epK" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/warehouse/upper) -"epT" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/command/bridge) +"dzQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/blue{ + dir = 4 }, -/obj/effect/decal/cleanable/glass, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"dzS" = ( +/turf/closed/wall, +/area/station/security/lockers) +"dAu" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"eqp" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/area/station/security/prison) +"dAx" = ( +/turf/closed/wall/r_wall, +/area/station/science/research) +"dAz" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"equ" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"dAQ" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Ordnance Lab" }, -/turf/open/floor/iron, -/area/station/engineering/main) -"eqv" = ( -/obj/machinery/newscaster/directional/east, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"eqC" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"dAS" = ( +/obj/effect/landmark/start/chaplain, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"dAU" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/spawner/random/structure/chair_flipped, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/greater) -"eqD" = ( -/obj/structure/sign/departments/chemistry/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"dAZ" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L3" }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"era" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/commons/locker) -"erd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/area/station/hallway/primary/central/fore) +"dBe" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/duct, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"eri" = ( -/obj/effect/landmark/start/roboticist, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"ers" = ( -/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"erE" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"erX" = ( -/obj/structure/railing, +/area/station/maintenance/department/electrical) +"dBg" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"erY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/area/station/maintenance/port/greater) +"dBs" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/cardboard_cutout{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"esc" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/item/cardboard_cutout, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"dBw" = ( +/turf/closed/wall/rust, +/area/station/service/bar) +"dBy" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/project) -"ese" = ( -/obj/machinery/door/airlock/security{ - name = "Detective's Office" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"dBV" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"dCd" = ( /obj/effect/turf_decal/siding/wood, -/obj/effect/mapping_helpers/airlock/access/all/security/detective, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"esg" = ( -/obj/machinery/smartfridge/organ, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "main_surgery" +/obj/structure/table/wood/fancy/blue, +/obj/item/food/cracker{ + pixel_x = -3; + pixel_y = 3 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/holofloor/dark, -/area/station/medical/surgery/theatre) -"esl" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"esx" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 +/obj/item/food/cracker{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/food/cracker, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"dCM" = ( +/turf/closed/wall/rust, +/area/station/service/bar/atrium) +"dCW" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"dCX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ + dir = 1 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"esN" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"dDp" = ( +/obj/structure/mirror/directional/north, +/obj/structure/sink/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"esP" = ( -/obj/effect/turf_decal/siding/red, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"dDH" = ( +/obj/machinery/vatgrower, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"esQ" = ( -/obj/structure/sign/warning/vacuum/directional/north, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/area/station/science/auxlab) +"dDO" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"esV" = ( -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/area/station/maintenance/fore) +"dEc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/structure/railing, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/light/dim/directional/north, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark/corner{ +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/area/station/engineering/atmos/upper) -"esX" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 7 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 4 +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dEl" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Aft Hallway Engineering Venders"; + name = "aft camera" }, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/item/borg/upgrade/rename{ - pixel_x = 4; - pixel_y = 18 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"etg" = ( -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"dEw" = ( +/obj/effect/turf_decal/loading_area{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"dED" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"dEF" = ( +/turf/closed/wall/r_wall, /area/station/medical/virology) -"etr" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +"dES" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"dEX" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"dFj" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/components/tank/air/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"dFA" = ( +/obj/machinery/pdapainter, +/obj/structure/sign/poster/official/ian/directional/north, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"dFM" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"dGo" = ( +/obj/machinery/computer/security/telescreen/auxbase/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 6 +/obj/item/assault_pod/mining, +/obj/item/radio{ + pixel_x = 6; + pixel_y = 6 }, -/obj/item/multitool{ - pixel_x = -5 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/main) -"etu" = ( -/obj/structure/railing/corner{ +/area/station/construction/mining/aux_base) +"dGp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) +"dGD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"dGG" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"dGP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"dGX" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"dHc" = ( +/turf/open/floor/iron/stairs/old{ + dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"etB" = ( -/obj/machinery/door/window/left/directional/east{ - pixel_x = 4 +/area/station/maintenance/fore) +"dHe" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/security/prison) +"dHg" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"dHi" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"dHq" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/engineering/storage/tech) +"dHw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 4 }, -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/stripes/end{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"etI" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"etV" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/storage) -"etW" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/department/science) -"eua" = ( -/obj/structure/cable, -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"dHL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/research) -"euj" = ( -/obj/machinery/airalarm/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"euF" = ( -/obj/structure/closet/wardrobe/white, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/area/station/maintenance/port/greater) +"dIg" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, -/area/station/commons/locker) -"euR" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/coffee, -/obj/item/reagent_containers/cup/glass/coffee/no_lid{ - pixel_x = 12; - pixel_y = 6 - }, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"euX" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Four"; - space_dir = 2 +/area/station/maintenance/disposal/incinerator) +"dIh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/newscaster/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"dIn" = ( +/obj/structure/table/wood, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/paper_bin, +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"evg" = ( -/obj/machinery/modular_computer/preset/id{ +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"dIv" = ( +/obj/machinery/module_duplicator, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 6 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/east, -/obj/machinery/button/door/directional/east{ - id = "cmoprivacy"; - name = "privacy shutter control"; - pixel_y = 12 - }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"evr" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "warneverchanges" +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"dIy" = ( +/obj/machinery/door/airlock/grunge, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"dIN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/turf/closed/wall/r_wall, +/area/station/maintenance/aft) +"dIQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"evN" = ( -/obj/machinery/rnd/server/master, -/obj/effect/turf_decal/siding/blue{ +/area/station/maintenance/port/fore) +"dIR" = ( +/obj/machinery/mech_bay_recharge_port{ dir = 8 }, -/turf/open/floor/circuit/telecomms/server, -/area/station/science/server) -"evO" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"evQ" = ( -/turf/open/openspace, -/area/station/medical/medbay/central) -"evT" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, /obj/structure/railing{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"ewa" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_y = 6 +/area/station/service/chapel/storage) +"dIX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/filingcabinet, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_y = 3 +/obj/machinery/firealarm/directional/south{ + pixel_x = -32 }, -/obj/item/stock_parts/power_store/cell/emproof, -/turf/open/floor/iron, -/area/station/engineering/main) -"ewr" = ( -/obj/effect/spawner/random/trash/botanical_waste, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ewJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"ewM" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/engineering/atmos/upper) -"ewX" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"exg" = ( -/obj/machinery/netpod, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/cable, -/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"exk" = ( -/obj/structure/table, -/obj/item/surgical_drapes, -/obj/item/cautery, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -10; - pixel_y = -1 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"exz" = ( -/obj/structure/chair/sofa/bench/left{ +/area/station/security/checkpoint/engineering) +"dJd" = ( +/obj/effect/turf_decal/loading_area{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/warm/dim/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"exQ" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/item/book/manual/wiki/robotics_cyborgs, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, -/obj/item/clothing/head/utility/welding, -/obj/item/clothing/glasses/welding, -/obj/machinery/airalarm/directional/south, -/obj/item/toy/crayon/spraycan/roboticist, -/obj/effect/mapping_helpers/airalarm/surgery, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"exR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/structure/cable, -/obj/item/clothing/head/costume/sombrero/green, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"exT" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"eyf" = ( -/obj/effect/spawner/random/entertainment/arcade{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"eyg" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/break_room) -"eyp" = ( -/obj/machinery/light/directional/west, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"eyq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"eyv" = ( -/obj/machinery/plate_press, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/security/prison/work) -"eyN" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 6 +/area/station/command/teleporter) +"dJg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"dJi" = ( +/turf/closed/wall, +/area/station/maintenance/department/chapel/monastery) +"dJk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/status_display/evac/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/off{ - pixel_x = -5; - pixel_y = -9 +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"dJm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/item/multitool{ - pixel_x = 5; - pixel_y = -12 +/obj/structure/sign/departments/rndserver/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/command/eva) -"ezg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"ezj" = ( -/obj/structure/bookcase/random, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/security/prison) -"ezk" = ( -/obj/effect/spawner/structure/window, +/area/station/science/research) +"dJo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ezF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/area/station/maintenance/starboard) +"dJp" = ( +/obj/structure/sign/warning/secure_area{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" }, -/turf/open/floor/iron/white/smooth_large, -/area/station/command/heads_quarters/cmo) -"ezL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/bomb) +"dJw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"ezM" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"eAg" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/station_engineer, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/wood, -/area/station/service/library) -"eAk" = ( -/obj/effect/decal/cleanable/rubble, -/obj/machinery/light/small/dim/directional/north, -/obj/machinery/space_heater, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"eAq" = ( -/obj/structure/chair{ - dir = 4 - }, -/mob/living/basic/mouse, -/obj/effect/mapping_helpers/mob_buckler, -/turf/open/floor/iron/checker, -/area/station/maintenance/department/medical) -"eAx" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/wood, -/area/station/commons/lounge) -"eAJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ +/turf/open/floor/iron, +/area/station/engineering/main) +"dJS" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/medical/exam_room) -"eAP" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"eAW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"eAZ" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"dJU" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/white/corner{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"eBa" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/disposal/delivery_chute{ dir = 8 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"eBb" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"eBd" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod One"; - space_dir = 1 +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"eBf" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"eBh" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"eBw" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"dKa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"eBE" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"eBH" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"eBK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"dKm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/xmastree, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"dKo" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"eBY" = ( -/obj/machinery/destructive_scanner, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"eBZ" = ( -/obj/effect/turf_decal/bot{ +/obj/effect/landmark/event_spawn, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"dKx" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","engine") +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"dKy" = ( +/obj/structure/chair/pew/left{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"eCb" = ( -/obj/machinery/vending/hydronutrients, -/obj/structure/railing{ +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel{ dir = 8 }, -/obj/structure/railing{ - dir = 4 +/area/station/service/chapel) +"dKz" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/belt/utility{ + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"eCd" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 +/obj/item/storage/belt/utility, +/obj/item/clothing/head/utility/welding, +/obj/item/clothing/head/utility/welding, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"eCp" = ( -/obj/machinery/power/terminal{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"eCt" = ( -/obj/machinery/door/airlock/mining{ - name = "Cargo Mail Outlet" - }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"dKJ" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/heads_quarters/captain/private) +"dKK" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/cable, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"dKN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"eCz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"dKZ" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"dLh" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/landmark/navigate_destination/bridge, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"dLk" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"eCC" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/item/extinguisher, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"eCF" = ( -/obj/structure/lattice, -/obj/structure/marker_beacon/yellow, -/turf/open/space/openspace, -/area/space/nearstation) -"eCO" = ( -/obj/machinery/shower/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"dLr" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4; - icon_state = "siding_thinplating_new_end" - }, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 4 }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"dLy" = ( +/obj/machinery/light/directional/west, +/obj/structure/flora/bush/ferny/style_random, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/checker, -/area/station/science/research) -"eCR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/grass, +/area/station/science/auxlab) +"dLA" = ( +/obj/item/kirbyplants/organic/plant10, +/obj/machinery/light_switch/directional/west{ + pixel_y = -8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/button/door/directional/west{ + id = "Biohazard"; + name = "Emergency Research Lockdown"; + pixel_y = 6; + req_access = list("research") + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"dLL" = ( +/obj/structure/flora/bush/ferny, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"dLN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine" }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"eCW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"dMd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"eDa" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"eDb" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"eDq" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/table, -/obj/item/clothing/gloves/cargo_gauntlet{ - pixel_y = -3 +/area/station/maintenance/port/aft) +"dMp" = ( +/obj/effect/decal/cleanable/food/flour, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"dMq" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Supply Door Airlock" }, -/obj/item/clothing/gloves/cargo_gauntlet, -/obj/item/clothing/gloves/cargo_gauntlet{ - pixel_y = 3 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, /area/station/cargo/storage) -"eDu" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/effect/turf_decal/bot_white, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"dME" = ( +/turf/closed/wall, +/area/station/cargo/warehouse) +"dMH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"eDG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/camera/directional/north{ + c_tag = "Head of Security's Office" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"eEa" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/photocopier, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"dMR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table_frame, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"dNx" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"eEg" = ( -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "xeno_airlock_exterior"; - idInterior = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Console"; - pixel_x = -25; - pixel_y = -25; - req_access = list("xenobiology") +/area/station/hallway/secondary/exit/departure_lounge) +"dNL" = ( +/obj/machinery/button/flasher{ + id = "IsolationFlash"; + pixel_x = -23; + pixel_y = 8; + req_access = list("brig") }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"eEm" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/button/door/directional/west{ + id = "Isolation"; + name = "Isolation Shutter Button"; + pixel_y = -6; + req_access = list("brig") + }, +/obj/machinery/computer/security/telescreen/interrogation/directional/north, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"eEx" = ( -/obj/structure/stairs/east, -/obj/structure/railing, +/area/station/security/prison) +"dOg" = ( +/obj/item/kirbyplants/organic/plant22, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"eEC" = ( -/obj/machinery/barsign/directional/south, -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/siding/brown{ +/area/station/command/bridge) +"dOk" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/commons/lounge) -"eEE" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/closet/emcloset, -/obj/structure/window/spawner/directional/east, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"eEG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/science, -/obj/item/reagent_containers/cup/bucket, -/turf/open/floor/plating, -/area/station/science/robotics/storage) -"eEV" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd","xeno") - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"eFj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/station/hallway/primary/aft) +"dOu" = ( +/obj/machinery/computer/shuttle/mining{ + dir = 8; + req_access = null }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eFl" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"eFu" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"dOz" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/east, -/obj/item/kirbyplants/random, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"dOF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"eFy" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/item/storage/box/prisoner, +/area/station/hallway/secondary/exit/departure_lounge) +"dOL" = ( /obj/structure/table, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"eFJ" = ( -/obj/machinery/sparker/directional/north{ - id = "Xenobio" +/obj/machinery/microwave{ + pixel_y = 5 }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"eFK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"eFL" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/light/dim/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"eFP" = ( +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"dON" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"eGn" = ( -/obj/effect/turf_decal/arrows{ - dir = 4; - pixel_x = -7 - }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, /obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"eGz" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/starboard) +"dOW" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/structure/sign/directions/security/directional/north{ - pixel_y = 40 - }, -/obj/structure/sign/directions/medical/directional/north{ - dir = 2 - }, -/obj/structure/sign/directions/evac/directional/north{ - dir = 2; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"eGJ" = ( -/obj/effect/turf_decal/siding/green, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/commons/storage/art) -"eGM" = ( -/obj/machinery/light/directional/north, +/area/station/service/hydroponics) +"dPn" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/machinery/photocopier, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"eGN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"dPr" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"dPK" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"dPR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/extinguisher{ + pixel_x = -4; + pixel_y = 8 }, -/obj/effect/turf_decal/plaque{ - icon_state = "L3" +/obj/item/tank/internals/oxygen/red{ + pixel_x = 4; + pixel_y = 2 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eHa" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/item/clothing/mask/gas, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"dQx" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) -"eHc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eHA" = ( -/obj/structure/railing/corner{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/machinery/computer/records/medical{ + dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"dQC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/assistant, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/status_display/supply{ - pixel_y = 32 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/iron, -/area/station/cargo/storage) -"eHU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/commons/locker) +"dQG" = ( +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"dQK" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "Secure Storage" + }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"dQM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet{ + name = "engineering locker" + }, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/shoes/workboots, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/under/rank/engineering/engineer, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"dQS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/item/crowbar/red, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"eIk" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/south, +/area/station/maintenance/starboard) +"dRc" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"eIo" = ( -/obj/structure/statue/sandstone/venus{ dir = 1 }, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"dRh" = ( +/obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, -/area/station/science/research) -"eIy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, +/area/station/service/chapel) +"dRm" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"eIM" = ( -/obj/effect/turf_decal/siding/dark, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/effect/landmark/start/cargo_technician, +/obj/structure/chair/office{ + dir = 8 }, -/area/station/command/corporate_showroom) -"eIO" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall, -/area/station/science/xenobiology/hallway) -"eIP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/machinery/light_switch/directional/north{ + pixel_x = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"eIV" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"eIY" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"eJi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"eJr" = ( -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - pixel_y = 12; - start_on = 1 +/obj/machinery/firealarm/directional/north{ + pixel_x = -4 }, -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"eJy" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/light_switch/directional/west, -/obj/effect/turf_decal/arrows/red{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"eJB" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/cup/watering_can, -/obj/structure/railing{ +/area/station/cargo/sorting) +"dRr" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/obj/structure/railing{ +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"dRF" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"eJE" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"eJM" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/cloth/fancy/mechanical{ - id = "law" +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"dRR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"dRY" = ( +/obj/structure/table, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/spawner/random/aimodule/neutral, +/obj/machinery/door/window/left/directional/south{ + name = "Core Modules"; + req_access = list("captain") }, -/obj/machinery/door/firedoor, +/turf/open/floor/circuit, +/area/station/ai/upload/chamber) +"dSe" = ( +/obj/effect/turf_decal/bot, +/obj/item/crowbar/red, +/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/revolver/directional/north, +/obj/structure/grille/broken, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/rack, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"dSn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/structure/crate, +/obj/structure/closet/cardboard, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/lawoffice) -"eJQ" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/window/spawner/directional/south, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"eJS" = ( +/area/station/maintenance/starboard) +"dSt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"dSv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"dSw" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/chair, +/obj/machinery/camera/directional/north{ + c_tag = "Departures Holding Area"; + name = "shuttle camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"eJT" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("armory") +/area/station/hallway/secondary/exit/departure_lounge) +"dSB" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Garden" }, -/obj/structure/railing{ - dir = 1 +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"dSG" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"eKa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"eKq" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/sign/picture_frame/portrait/bar{ - pixel_y = -28 - }, -/obj/structure/reagent_dispensers/beerkeg, -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"eKw" = ( -/obj/machinery/light/small/dim/directional/north, +/area/station/hallway/primary/port) +"dSJ" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"dTd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/small, -/area/station/engineering/transit_tube) -"eKD" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/table, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ +/obj/item/compact_remote, +/obj/item/controller, +/obj/item/integrated_circuit/loaded/speech_relay, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/integrated_circuit/loaded/hello_world, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"dTQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"dTW" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/meter/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"dUa" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eKR" = ( -/turf/closed/wall/r_wall, -/area/station/command/bridge) -"eLe" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/warden) -"eLg" = ( -/obj/structure/table, -/obj/item/toy/plush/pkplush, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"eLk" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"eLm" = ( -/obj/structure/disposalpipe/segment{ +/area/station/hallway/primary/fore) +"dUe" = ( +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/bartender, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"dUn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"eLu" = ( -/obj/effect/mapping_helpers/mail_sorting/science/rd_office, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + desc = "Used to grind things up into raw materials and liquids."; + pixel_y = 5 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"eLU" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/machinery/power/tracker, -/turf/open/space/openspace, -/area/station/solars/port) -"eLV" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +/obj/machinery/light_switch/directional/west{ + pixel_y = -4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"eMk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"dUE" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/security_officer, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"eMq" = ( -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/openspace, -/area/station/maintenance/department/medical/central) -"eMr" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"dUK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security) -"eMD" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/obj/effect/landmark/navigate_destination/techstorage, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"eMG" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"eNj" = ( -/obj/effect/spawner/costume/sexyclown, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"eNr" = ( +/area/station/engineering/storage/tech) +"dUQ" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 10 }, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"eNS" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security) -"eNU" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("xenobiology") +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - req_access = list("xenobiology") +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio8"; - name = "Xenobio Pen 8 Blast Door" +/area/station/hallway/primary/fore) +"dUY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"eOg" = ( -/obj/machinery/gizmo/toggle/tucker_tubes, -/turf/open/floor/iron/white, -/area/station/science/explab) -"eOn" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/foyer) -"eOx" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/asteroid) -"eOA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"dVb" = ( +/obj/item/book/manual/wiki/security_space_law, +/obj/item/taperecorder{ + pixel_x = 5 + }, /obj/structure/table, -/obj/effect/spawner/random/trash/crushed_can{ - pixel_x = 7; - pixel_y = 15 +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"dVd" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Satellite External Starboard"; + name = "exterior camera"; + network = list("minisat"); + start_active = 1 }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"eOD" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"dVk" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"dVB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"dVN" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/fedora, +/obj/item/clothing/head/fedora{ + icon_state = "detective" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/clothing/suit/toggle/jacket/trenchcoat, +/obj/item/clothing/suit/toggle/jacket/det_trench/noir, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"dWj" = ( +/obj/machinery/door/airlock/maintenance/external{ + name = "Mass Driver Intersection" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"eOI" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"eOY" = ( -/obj/effect/spawner/structure/window, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"dWs" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/obj/machinery/door/airlock/research{ + name = "Genetics Lab" + }, +/obj/effect/landmark/navigate_destination, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters" + dir = 1; + id = "rdgene"; + name = "Genetics Lab Shutters" }, -/turf/open/floor/plating, -/area/station/service/hydroponics) -"eOZ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"dWG" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) +"dWM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"ePC" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"ePT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"dXz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"dXI" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"dXJ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/main) -"eQf" = ( -/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"dXN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"eQi" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dYl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/port/aft) +"dYy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dYB" = ( +/obj/structure/table/reinforced, +/obj/machinery/syndicatebomb/training, +/obj/item/wirecutters, +/turf/open/floor/iron/dark, +/area/station/security/office) +"dYQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/courtroom) +"dZe" = ( +/obj/structure/closet/secure_closet/bar, +/obj/item/flashlight/lantern, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"dZk" = ( +/obj/machinery/door/airlock/grunge{ + id_tag = "Cabin_2"; + name = "Cabin 2" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"dZA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) +"dZM" = ( +/obj/machinery/computer/monitor{ + dir = 4; + name = "Bridge Power Monitoring Console" }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"eQF" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/obj/machinery/light/small/dim/directional/west, -/obj/machinery/firealarm/directional/south, -/obj/item/storage/cans/sixbeer, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/security/warden) -"eQI" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"dZR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"dZS" = ( +/obj/machinery/door/airlock/atmos/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"eah" = ( +/obj/structure/closet, +/obj/item/stack/rods/ten, +/obj/item/stock_parts/matter_bin, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"eal" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"eQJ" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/airalarm/directional/south, +/obj/machinery/netpod, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"eao" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Circuit Workshop" }, -/obj/item/radio/intercom/directional/south, -/obj/effect/spawner/random/armory/dragnet, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/iron/dark, -/area/station/security/armory) -"eQY" = ( -/obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"eRf" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/engineering/circuit_workshop) +"ear" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/computer/crew{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"eRh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"eaw" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 10 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"eRl" = ( +/area/station/engineering/atmos/pumproom) +"eaQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/structure/cable, -/obj/effect/turf_decal/delivery, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"eRq" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/door/window/left/directional/north{ - req_access = list("science") +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"eRu" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"eRy" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/area/station/holodeck/rec_center) -"eRA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"ebp" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"eby" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/brig) -"eRD" = ( -/obj/machinery/power/emitter, -/turf/open/floor/plating, -/area/station/engineering/storage) -"eRE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"ebF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"eRO" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 6 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"eRZ" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, /obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos) -"eSe" = ( -/obj/structure/chair/sofa/bench, -/obj/effect/spawner/random/trash/mess, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"eSm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/cargo/sorting) +"ebK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/landmark/start/mime, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/obj/machinery/light/dim/directional/north, /turf/open/floor/iron, -/area/station/engineering/main) -"eSs" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/area/station/service/theater) +"ebU" = ( +/turf/closed/wall, +/area/station/service/chapel/dock) +"ebW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"eSE" = ( -/obj/structure/chair/sofa/corp/left{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - dir = 1; - name = "couch" - }, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"eSH" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = -12 +/turf/open/floor/iron, +/area/station/security/office) +"ecf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = 4 +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/item/reagent_containers/dropper{ - pixel_y = 12 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"ecl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/obj/effect/spawner/random/maintenance, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"ecE" = ( +/turf/closed/wall/rust, +/area/station/service/chapel/storage) +"ecF" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/pen, +/obj/item/restraints/handcuffs, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/medical/virology) -"eSL" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"eSR" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +"ecY" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/maintenance/port/aft) +"edj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"edS" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"edU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/stasis{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/machinery/vitals_reader/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"eeb" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, +/obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron, -/area/station/cargo/lobby) -"eSS" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/cargo) -"eTd" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing/corner{ +/area/station/service/hydroponics) +"een" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/openspace, -/area/station/security/prison/garden) -"eTg" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/maintenance/aft) +"eeo" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/structure/sign/warning/radiation/rad_area/directional/north, +/area/station/hallway/primary/starboard) +"eeq" = ( +/obj/machinery/door/airlock/maintenance, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"eTn" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"eTu" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eTZ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 8 +/area/station/maintenance/aft) +"eer" = ( +/turf/closed/wall, +/area/station/medical/office) +"eeC" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Command Maintenance" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"eUj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"eUx" = ( -/obj/structure/tank_dispenser{ - pixel_x = -1 +/obj/machinery/door/poddoor/preopen{ + id = "brige-maint"; + name = "Bridge Blast Door" }, -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom/directional/west, +/obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"eUD" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L12" +/area/station/maintenance/department/crew_quarters/bar) +"eeE" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"eeQ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"eUW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) -"eVl" = ( -/obj/machinery/light/warm/directional/south, -/obj/structure/flora/grass/jungle, -/turf/open/water/no_planet_atmos, -/area/station/service/hydroponics/garden) -"eVq" = ( -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 1 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"eVv" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"eVA" = ( -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"eVE" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/paperplane, -/obj/item/paperplane{ - pixel_x = 15; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"eVG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/hobo_squat, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, /turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"eVR" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/button/door/directional/south{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") - }, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"eWB" = ( -/obj/machinery/computer/prisoner/management{ - dir = 4 +/area/station/science) +"efe" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA"; + location = "HOP"; + name = "hop navigation beacon" }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"eWC" = ( -/obj/structure/tank_dispenser/oxygen, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"eWD" = ( -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"eWJ" = ( -/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"efG" = ( +/turf/closed/wall, +/area/station/maintenance/fore) +"efP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"eWO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"eXb" = ( -/obj/machinery/door/airlock{ - id_tag = "u2"; - name = "Unit 2" - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"eXi" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"eXu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 5 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/turf/open/openspace, -/area/station/security/prison/shower) -"eXy" = ( -/obj/structure/chair/office/light, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"eXF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"eXM" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"eXU" = ( -/obj/machinery/door/airlock/public/glass, +/turf/open/floor/iron, +/area/station/command/teleporter) +"efS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/empty/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"efV" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ege" = ( +/obj/machinery/status_display/supply{ + pixel_x = 32; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/commons/locker) -"eXW" = ( -/obj/machinery/fax{ - fax_name = "Psychology Office"; - name = "Psychology Office Fax Machine" +/area/station/hallway/primary/starboard) +"egr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/table/wood, -/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"egs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"eYd" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/machinery/button/door/directional/south{ - id = "secwarehouse"; - req_access = list("shipping") +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/storage/art) +"egE" = ( +/obj/item/radio/intercom/directional/north, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"egU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 + }, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"eYe" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"egV" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/light/directional/south, /obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"eYj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"ehc" = ( +/obj/machinery/door/airlock/maintenance, /obj/structure/cable, -/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/effect/mapping_helpers/airlock/access/any/service/janitor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"eYm" = ( +/area/station/maintenance/starboard/aft) +"ehp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"ehx" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ehF" = ( +/obj/machinery/door/airlock/command{ + name = "Command Catering Access" + }, /obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/machinery/door/poddoor/preopen{ + id = "brige-maint"; + name = "Bridge Blast Door" }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"ehI" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"ehY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"eib" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/junction/flip{ dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"eYo" = ( -/obj/structure/lattice/catwalk, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"eiz" = ( /obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/starboard/fore) -"eYt" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/turf_decal/bot_red, +/obj/structure/disposalpipe/segment, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"eYv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"eYC" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber" +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"eiI" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 9; + id = "QMLoad"; + name = "off ramp" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/machinery/status_display/supply{ + pixel_x = 32; + pixel_y = 32 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"eYF" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"eiJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"eYI" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/toggle/jacket/det_trench, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/head/fedora/det_hat/minor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"eYO" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/secure_safe/caps_spare, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"eYP" = ( -/turf/closed/wall/rust, -/area/station/medical/chemistry/minisat) -"eYT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/prison/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/security/prison/work) -"eZc" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"eZg" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"eiW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/obj/structure/railing{ dir = 1 }, -/obj/structure/mannequin/skeleton, +/turf/open/space/basic, +/area/space/nearstation) +"eiY" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"eZn" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Starboard Primary Hallway" +/area/station/hallway/primary/aft) +"ejc" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/hallway/primary/fore) +"eji" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"eZo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/area/station/science/robotics/mechbay) +"ejk" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"eZr" = ( -/obj/item/paper/guides/jobs/engi/gravity_gen, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"eZu" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 +/obj/machinery/shower/directional/east{ + name = "emergency shower" }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"eZN" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/firealarm/directional/west, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"eZQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/maintenance/starboard/aft) +"ejt" = ( +/obj/structure/railing/corner{ + dir = 4 }, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"fab" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 }, -/obj/machinery/wall_healer/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"fad" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"ejO" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Atrium" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"ejP" = ( +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"fae" = ( -/obj/machinery/plate_press, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/plating, -/area/station/security/prison/work) -"fai" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"fan" = ( -/obj/structure/railing{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/box, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/upper) -"fao" = ( +/turf/open/floor/iron, +/area/station/service/hydroponics) +"ejQ" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid, +/area/space/nearstation) +"ejU" = ( /obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/science/robotics/mechbay) +"ejX" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"fas" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port Mix to West Ports" }, -/obj/effect/turf_decal/arrows/red{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"eki" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"ekm" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/room) +"ekp" = ( +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"faz" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/chemist, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/pharmacy) -"faK" = ( -/turf/open/floor/glass/reinforced, -/area/station/ai/upload/foyer) -"faP" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"faX" = ( -/obj/structure/table/optable{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"ekB" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"ekL" = ( +/turf/closed/wall/rust, +/area/station/service/kitchen/coldroom) +"ekM" = ( +/turf/closed/wall, +/area/station/hallway/primary/aft) +"ekY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" }, -/obj/item/clothing/mask/breath/muzzle, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"fba" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"elc" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"ele" = ( +/obj/structure/table/wood, +/obj/machinery/door/firedoor, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/rag, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 10 + }, +/turf/open/floor/wood, +/area/station/service/bar) +"elg" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/table/optable{ + name = "Forensics Operating Table" }, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"fbC" = ( -/obj/item/kirbyplants/random, /obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"fbM" = ( -/obj/machinery/incident_display/delam/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/decal/cleanable/blood/old, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"elm" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/atmos_control/carbon_tank{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"fbN" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/item/coin/plasma, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"fcH" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ + dir = 4 }, -/obj/item/circuitboard/computer/secure_data, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"fcK" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"fcM" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"elw" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"fde" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/chair{ + dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"elz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"fdj" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/engineering/gravity_generator) -"fdm" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/item/plate/large, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"fdy" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"elD" = ( +/obj/machinery/vending/dinnerware, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"fdC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"elS" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"emb" = ( +/obj/machinery/door/airlock/external{ + name = "Departure Shuttle Airlock"; + space_dir = 4 }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos) -"fdJ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"fdN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"fdQ" = ( -/obj/structure/table, -/obj/effect/spawner/random/entertainment/cigarette, -/obj/effect/spawner/random/entertainment/lighter, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"fee" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"emd" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"feu" = ( -/obj/effect/landmark/start/janitor, +/turf/open/misc/asteroid, +/area/space/nearstation) +"emo" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/janitor) -"feA" = ( -/obj/structure/chair/sofa/bench/solo{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"emx" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"feN" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"emz" = ( +/obj/structure/disposalpipe/junction/flip, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, /obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/security) -"feQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/area/station/commons/storage/primary) +"emB" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, +/area/station/maintenance/fore) +"emU" = ( +/obj/machinery/door/poddoor/incinerator_atmos_aux, +/turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"feR" = ( -/obj/machinery/computer/security/telescreen/ordnance/directional/south, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"feU" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"feV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"ffk" = ( -/obj/structure/chair/stool/directional/west, -/turf/open/floor/wood, -/area/station/commons/lounge) -"ffp" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"fft" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"ffA" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"ffF" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ffJ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 +"emV" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/pumproom) -"fgi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fgq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/booze, -/obj/effect/spawner/random/trash/food_packaging, -/obj/structure/closet/crate, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"fgt" = ( -/obj/machinery/elevator_control_panel/directional/east{ - desc = "A small control panel used to move the kitchen dumbwaiter up and down."; - linked_elevator_id = "dumbwaiter_lift"; - name = "Dumbwaiter Control Panel"; - preset_destination_names = list("2"="Kitchen","3"="Hydroponics") - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/window/spawner/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"fgP" = ( -/obj/machinery/door/airlock/engineering{ - name = "Port Bow Solar Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/hallway/secondary/exit/departure_lounge) +"eni" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input{ dir = 8 }, -/obj/structure/cable, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"enj" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"fhs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/coffeemaker, -/obj/item/coffee_cartridge, -/obj/item/food/chocolatebar{ - pixel_x = 3; - pixel_y = -12 +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/structure/table, -/obj/machinery/requests_console/auto_name/directional/west, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/spawner/structure/electrified_grille, +/obj/structure/barricade/wooden/crude, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"fhu" = ( -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"fhG" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/area/station/maintenance/fore) +"enr" = ( /obj/structure/table, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"fhH" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/engineering/glass{ - name = "Emitter Room" +/obj/item/storage/box/lights/mixed{ + pixel_y = 5 }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"fhL" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/storage/fancy/cigarettes{ - name = "\proper marlboro"; - rigged_omen = 1 +/obj/item/analyzer{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/plating, -/area/station/commons/storage/art) -"fhN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"fhP" = ( -/obj/structure/railing/corner{ +/obj/item/analyzer, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"enP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"fib" = ( -/obj/machinery/conveyor/auto{ - id = "hoptroll" - }, -/obj/structure/musician/piano/unanchored, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"fid" = ( -/obj/structure/chair/sofa/bench, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"fin" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, -/area/station/science/xenobiology) -"fir" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/requests_console/directional/east{ - department = "Head of Security's Desk"; - name = "Head of Security's Request Console" - }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/announcement, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"fiB" = ( -/obj/structure/bed{ - dir = 1 - }, -/obj/item/bedsheet{ - dir = 1 - }, +/area/station/maintenance/starboard/fore) +"enQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, /turf/open/floor/iron, -/area/station/security/brig) -"fiI" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"fjb" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"fjg" = ( +/area/station/cargo/miningdock) +"enS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"fjn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"fjp" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/siding/yellow{ + dir = 9 }, -/obj/machinery/airalarm/directional/west, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 3 +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/item/pen{ - pixel_y = 3 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"fjt" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, +/area/station/engineering/storage_shared) +"eob" = ( +/obj/structure/sign/warning, +/turf/closed/wall, +/area/station/hallway/secondary/entry) +"eog" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/engineering/main) -"fjC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"fjF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"fkh" = ( -/obj/effect/spawner/random/structure/grille{ - loot = list(/obj/structure/grille = 4, /obj/structure/grille/broken = 1) +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"fkn" = ( -/obj/structure/railing{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"eon" = ( +/obj/machinery/door/poddoor/shutters{ + id = "teleshutter"; + name = "Teleporter Access Shutter" }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/theater) -"fkF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"eot" = ( +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"flc" = ( -/obj/structure/window/spawner/directional/south, -/obj/machinery/door/window/right/directional/east{ - name = "Fitness Ring" +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"eoG" = ( +/obj/machinery/door/airlock/virology{ + name = "Virology Isolation A" }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"fld" = ( -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/trash/box, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"fle" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 1 +/area/station/medical/virology) +"eoM" = ( +/obj/machinery/door/poddoor/preopen{ + id = "brigfrontdoor"; + name = "Front Security Blast Door" }, -/obj/effect/turf_decal/bot, -/obj/structure/sign/warning/no_smoking/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"flm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"eoT" = ( +/obj/structure/table, +/obj/item/clothing/head/utility/welding{ + pixel_y = 4 }, -/area/station/command/corporate_dock) -"fls" = ( -/obj/structure/broken_flooring/pile{ - dir = 1 +/obj/machinery/camera/directional/north{ + c_tag = "Tool Storage"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/effect/decal/cleanable/glass, -/obj/structure/table_frame, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"flF" = ( -/obj/structure/railing{ +/obj/structure/cable, +/obj/item/clothing/gloves/color/fyellow, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"ept" = ( +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"flH" = ( -/obj/structure/closet/boxinggloves, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"flN" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"flO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"flQ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{ +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"epv" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"flZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/effect/mapping_helpers/mail_sorting/security/detectives_office, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"fma" = ( -/turf/closed/wall, -/area/station/medical/coldroom) -"fmr" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"fmw" = ( -/obj/effect/decal/cleanable/dirt, +/area/station/hallway/secondary/exit/departure_lounge) +"epA" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/office) -"fmB" = ( -/obj/structure/secure_safe/directional/east, -/obj/structure/closet/secure_closet/evidence, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/security/evidence) -"fmK" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"fmY" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/department/engine) -"fnc" = ( -/obj/machinery/light/warm/directional/north, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"fne" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"fnh" = ( -/turf/closed/wall, -/area/station/maintenance/department/medical) -"fno" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"fnG" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"epI" = ( +/obj/effect/landmark/start/scientist, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"fnI" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"fnO" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-13" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"fnU" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Virology Lab" +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"epN" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"eqx" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "NTMSLoad"; + name = "off ramp" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/turf/open/floor/grass, -/area/station/medical/virology) -"fod" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"foo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"eqA" = ( +/obj/machinery/light_switch/directional/south{ + pixel_x = 26 }, +/obj/machinery/photocopier, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/engineering/atmos) -"foq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/security/office) +"eqD" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"fow" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"eqE" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"foL" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"foX" = ( -/obj/structure/grille, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"fpi" = ( -/obj/structure/railing{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"eqK" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/taperecorder{ + pixel_x = 4; + pixel_y = 2 }, -/obj/machinery/door/firedoor/border_only{ +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/warden) +"eqV" = ( +/obj/structure/table, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_y = 2 }, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"fpm" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"fpo" = ( -/obj/structure/cable/multilayer/multiz, -/obj/item/assembly/mousetrap/armed, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"era" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"fpp" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/machinery/mineral/ore_redemption, -/obj/machinery/door/window/left/directional/south{ - name = "Ore Redemption Access"; - req_access = list("mineral_storeroom") +/area/station/maintenance/department/crew_quarters/bar) +"eri" = ( +/obj/structure/rack, +/obj/item/crowbar/red, +/obj/effect/spawner/random/clothing/gloves, +/obj/effect/turf_decal/bot, +/obj/item/flashlight, +/obj/machinery/airalarm/directional/east, +/obj/item/storage/box/lights/mixed{ + pixel_y = 4 }, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"fpx" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/table/wood, -/obj/item/binoculars, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"fpG" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"erl" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"fpH" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Courtroom" +/obj/machinery/airalarm/directional/north, +/obj/machinery/autolathe, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"ero" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/obj/effect/turf_decal/siding/dark{ +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"erH" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"erN" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"esn" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/food/donut/plain, +/obj/item/inspector, +/obj/item/inspector, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"fpK" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"fpY" = ( -/turf/open/openspace, -/area/station/science/ordnance) -"fqg" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/closet/secure_closet/hydroponics, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"fqt" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"fqD" = ( -/obj/structure/flora/rock/style_random, -/obj/effect/turf_decal/stripes/asteroid/corner{ - dir = 1 +/area/station/security/office) +"eso" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/item/kirbyplants/organic/plant3, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"frd" = ( -/obj/machinery/vending/wardrobe/hydro_wardrobe, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"esq" = ( +/turf/closed/wall/rust, +/area/station/commons/locker) +"esv" = ( +/obj/structure/chair/stool/directional/south, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"esG" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/port/fore) +"esK" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"esO" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 4 }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"frh" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"fri" = ( +/area/station/maintenance/department/electrical) +"esX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"esZ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 + }, /turf/closed/wall, -/area/station/maintenance/department/bridge) -"frs" = ( -/obj/machinery/reagentgrinder{ +/area/station/engineering/atmos) +"etm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/backpack, +/obj/item/storage/backpack{ + pixel_x = 4; pixel_y = 4 }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"eto" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"frv" = ( -/obj/structure/filingcabinet/chestdrawer, +/area/station/engineering/main) +"etB" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/lighter{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/cigarette/cigar/cohiba{ + pixel_x = 6 + }, +/obj/item/cigarette/cigar, +/obj/machinery/light/directional/west, +/obj/machinery/airalarm/directional/west, +/obj/item/paper_bin, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"etD" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"fry" = ( -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"frG" = ( -/obj/structure/railing{ +/area/station/service/kitchen) +"etO" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"etY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/table/glass, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"frR" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"euc" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" }, -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 4 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"euX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light_switch/directional/south{ + pixel_x = 12 }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"fsc" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"fsd" = ( -/obj/effect/landmark/start/warden, +/area/station/cargo/storage) +"evb" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/delivery, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/structure/chair/office{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"evs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"evt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"fsk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/holopad, /turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"fsn" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ +/area/station/security/courtroom) +"evu" = ( +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"fsx" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"evD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/breakroom) -"fsB" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/landmark/start/paramedic, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"ewa" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"ewe" = ( +/turf/closed/wall/rust, +/area/station/maintenance/central) +"ewl" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"ewt" = ( +/obj/effect/turf_decal/arrows/red{ + dir = 4; + pixel_x = -15 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"fsI" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark, -/obj/effect/turf_decal/siding/wideplating_new/dark{ +/area/station/maintenance/disposal/incinerator) +"ewC" = ( +/obj/structure/chair/pew/left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 }, -/turf/open/floor/circuit/airless, -/area/station/cargo/storage) -"fsQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"fsS" = ( -/obj/machinery/power/terminal{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/chapel{ dir = 4 }, +/area/station/service/chapel) +"ewK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"fsU" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/siding/yellow/corner{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"fsV" = ( -/obj/effect/decal/cleanable/blood/old{ - icon_state = "gib3-old" +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-entrance" }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"fsZ" = ( -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Research Director Observation"; - req_access = list("rd") +/obj/machinery/door/airlock/engineering{ + name = "Engineering Desk" }, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"fta" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 5 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"fte" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/oil, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"ftz" = ( +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/obj/effect/landmark/navigate_destination/engineering, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"ewW" = ( +/obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ftF" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ftK" = ( -/obj/machinery/vending/autodrobe, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"ftR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/area/station/hallway/primary/port) +"exg" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/station/maintenance/starboard) +"exz" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/gps{ + gpstag = "TP0" }, -/obj/effect/turf_decal/tile/dark_blue{ +/turf/open/floor/iron, +/area/station/command/teleporter) +"exD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/main) +"exH" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/vending/colavend, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"ftX" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/asteroid) -"fuk" = ( +/area/station/hallway/primary/aft) +"exJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"fus" = ( -/obj/machinery/holopad, +/area/station/maintenance/fore) +"exN" = ( +/obj/effect/turf_decal/box/corners, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"exP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"exV" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -4 + }, +/obj/machinery/portable_atmospherics/canister/air{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/mask/breath, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"eyc" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/meter/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"eyj" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/obj/machinery/light/small/directional/east, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"fux" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ +/area/station/hallway/primary/fore) +"eyv" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"fuZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/area/station/engineering/atmos) +"eyx" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"fvd" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/secondary/service) -"fvf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"fvg" = ( +/area/station/maintenance/disposal/incinerator) +"eyA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/junction/flip{ dir = 8 }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"fvk" = ( -/obj/structure/sign/poster/random/directional/west, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/wood, -/area/station/commons/lounge) -"fvo" = ( +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"eyU" = ( +/obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "medsecprivacy"; - name = "Privacy Shutter" +/turf/open/floor/plating, +/area/station/command/bridge) +"ezl" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "captain_escape"; + name = "Tactical Relocation Shutter" }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"ezC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/medical) -"fvq" = ( -/obj/machinery/airlock_controller/incinerator_atmos{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 }, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"ezV" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"fvt" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"ezY" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/item/multitool/circuit, -/obj/item/multitool/circuit{ - pixel_x = 7 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"fvF" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"fvI" = ( -/obj/machinery/button/door/directional/west{ - id = "atmos"; - name = "Atmospherics Lockdown"; - req_access = list("atmospherics") - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -35 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/area/station/security/execution/education) +"eAa" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/toolbox/emergency, +/obj/item/flashlight, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/checker{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"eAk" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/chair/wood{ + dir = 8 }, -/area/station/engineering/atmos) -"fwz" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L14" +/obj/item/radio/intercom/chapel/directional/north, +/turf/open/floor/wood/parquet, +/area/station/service/chapel) +"eAl" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Library" }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"eAn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/plaque{ + icon_state = "L10" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"fwA" = ( -/obj/machinery/light/cold/dim/directional/south, -/obj/item/mod/core/standard{ - pixel_x = -4 +/area/station/hallway/primary/central/fore) +"eAs" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 }, -/obj/item/mod/core/standard{ - pixel_x = 4 +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"eAu" = ( +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" }, -/obj/item/mod/core/standard{ - pixel_y = 4 +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"eAF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/closet/crate/science{ - name = "MOD core crate" +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"eBi" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"fwJ" = ( -/obj/structure/bed/pod, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"fwM" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/explab) -"fwT" = ( +/obj/machinery/light/directional/west, /obj/structure/cable, -/obj/machinery/light/cold/dim/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"fwU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") - }, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"fxg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"fxo" = ( -/obj/structure/tank_holder/extinguisher, -/obj/machinery/light/small/dim/directional/north, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured_large, -/area/station/ai/satellite/foyer) -"fxp" = ( -/turf/closed/indestructible/riveted{ - desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease"; - name = "hyper-reinforced wall" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/science/ordnance/bomb) -"fxr" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"eBu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"fxF" = ( -/turf/open/openspace, -/area/station/command/heads_quarters/qm) -"fxG" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-137" - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"fye" = ( -/obj/structure/rack, -/obj/item/storage/box/flashes{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/gun/grenadelauncher{ - pixel_y = 6 - }, -/obj/item/clothing/glasses/hud/security/sunglasses{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/clothing/glasses/hud/security/sunglasses{ - pixel_x = -3; - pixel_y = -2 +/obj/effect/decal/cleanable/blood/old, +/mob/living/basic/goat/pete{ + name = "Pete" }, -/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"eBx" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/armory) -"fyn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"fys" = ( -/obj/machinery/door/airlock/medical{ - name = "Surgery" +/area/station/hallway/primary/central/fore) +"eBH" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery) -"fyC" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"eBZ" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate/silvercrate, +/obj/machinery/light/small/directional/east, +/obj/item/screwdriver/power, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/command/vault) +"eCd" = ( +/turf/closed/wall, +/area/station/hallway/secondary/service) +"eCf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/command/eva) -"fyJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) -"fyM" = ( -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"fyS" = ( /obj/structure/cable, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"eCh" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/area/station/science/xenobiology) -"fzg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"eCu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"fzh" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -2; - pixel_y = 12 - }, -/obj/item/reagent_containers/cup/glass/bottle/juice/cream{ - pixel_x = 20; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 9; - pixel_y = 12 +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron, +/area/station/security/prison) +"eCy" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"eCU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 9; - pixel_y = 6 +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"eDg" = ( +/obj/structure/displaycase/captain, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 9 +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) +"eDq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"fzx" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/item/stamp/head/captain{ - pixel_x = -12 +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/obj/item/hand_tele{ - pixel_x = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"eDr" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_y = 5 }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"fzK" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/plating, -/area/station/commons/fitness/recreation) -"fzL" = ( -/obj/structure/table/wood, -/obj/item/book/granter/action/spell/smoke/lesser{ - name = "mysterious old book of cloud-chasing" +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"eDu" = ( +/obj/effect/landmark/start/medical_doctor, +/obj/effect/turf_decal/siding/blue{ + dir = 5 }, -/obj/item/reagent_containers/cup/glass/bottle/holywater{ - pixel_x = -2; - pixel_y = 2 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/item/nullrod{ - pixel_x = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"eDx" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/item/organ/heart, -/obj/item/soulstone/anybody/chaplain, -/turf/open/floor/cult, -/area/station/service/chapel/office) -"fzM" = ( -/obj/machinery/air_sensor/carbon_tank, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"fzW" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/lobby) -"fzY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/security/brig) +"eDT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"fzZ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "r2p" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/plaque{ + icon_state = "L8" }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/patients_rooms/room_b) -"fAg" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Medical"; + location = "Upload"; + name = "Upload navigation beacon" }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"eEe" = ( +/obj/structure/sign/warning/electric_shock/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"fAE" = ( +"eEh" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"fAJ" = ( -/obj/machinery/space_heater, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"fAR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"fAT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/sign/plaques/kiddie/library{ - pixel_y = -32 +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/wood, -/area/station/service/library) -"fAV" = ( -/obj/item/kirbyplants/random/dead, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"fBc" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/tcommsat/server) -"fBm" = ( -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"fBw" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/chair{ +/area/station/maintenance/port/aft) +"eEi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"fBz" = ( +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"eEz" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fBA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"fBD" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"fBF" = ( -/turf/closed/wall/r_wall, -/area/station/security/breakroom) -"fBK" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"eEB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/radio/intercom/directional/south, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"fBN" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"eEJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, /obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"eEX" = ( /obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/graffiti, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"fBO" = ( -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron/white, -/area/station/science/explab) -"fBS" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/chair/office{ +/area/station/maintenance/port/aft) +"eEY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"fCj" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"eEZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"fCy" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/main) +"eFn" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Mix to Filter" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"fCG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/engineering/atmos/pumproom) +"eFE" = ( +/obj/structure/transit_tube/crossing, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"eFR" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos) -"fCR" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/hallway/primary/fore) +"eGh" = ( +/obj/structure/cable, +/obj/structure/chair/office{ dir = 1 }, -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/iron, -/area/station/security) -"fCY" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"eGC" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","monastery") + }, +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"fDa" = ( -/turf/closed/wall, -/area/station/commons/dorms) -"fDb" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/stairs/right{ + dir = 4 + }, +/area/station/service/chapel/monastery) +"eGD" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input{ + dir = 1 + }, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"eGI" = ( +/obj/structure/closet/secure_closet/cytology, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, +/obj/item/book/manual/wiki/cytology, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"eGL" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fDf" = ( -/obj/structure/musician/piano/unanchored, -/obj/effect/mapping_helpers/trapdoor_placer, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/glass/reinforced, -/area/station/command/emergency_closet) -"fDi" = ( /obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"fDj" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/science/ordnance/testlab) -"fDt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/area/station/maintenance/solars/starboard/aft) +"eGW" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"fDz" = ( -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"fDK" = ( -/obj/machinery/door/morgue{ - name = "Relic Closet"; - req_access = list("chapel_office") +/obj/item/radio/intercom/directional/north, +/obj/machinery/power/terminal{ + dir = 4 }, -/turf/open/floor/cult, -/area/station/service/chapel/office) -"fDN" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"fDO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/area/station/maintenance/solars/port/aft) +"eHa" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/vending/assist, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"eHc" = ( +/turf/closed/wall, +/area/station/engineering/lobby) +"eHf" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"eHu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"eHI" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"fDP" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"eHJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"fDR" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/rubble, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"fDU" = ( -/obj/machinery/air_sensor/oxygen_tank, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"fDV" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/chair/office, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"fEa" = ( -/obj/structure/railing/corner, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/command/meeting_room) -"fEe" = ( -/obj/machinery/light/cold/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ +/turf/open/floor/iron, +/area/station/cargo/storage) +"eHO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/blue{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"fEm" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Cooling Loop to Gas" +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"fEL" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/disposalpipe/sorting/mail{ + name = "Virology Junction" }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Public Fax Machine" +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"eHY" = ( +/obj/structure/sign/departments/evac, +/turf/closed/wall, +/area/station/security/checkpoint/customs) +"eIb" = ( +/obj/machinery/light/directional/east, +/obj/structure/chair/office/light{ + dir = 4 }, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fEP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"fEQ" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/greater) -"fET" = ( -/obj/effect/spawner/random/engineering/vending_restock, -/obj/structure/closet, -/obj/effect/spawner/random/trash/janitor_supplies, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"fEU" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/command/corporate_showroom) -"fFg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"fFj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/computer/security/telescreen/ordnance/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"eIi" = ( +/obj/structure/table/wood/fancy, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 4 }, -/area/station/engineering/atmos) -"fFm" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("xenobiology") +/obj/machinery/light/directional/east, +/obj/item/food/grown/harebell, +/obj/item/food/grown/harebell{ + pixel_x = 3; + pixel_y = 3 }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - req_access = list("xenobiology") +/obj/item/food/grown/harebell{ + pixel_x = -3; + pixel_y = 3 }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio5"; - name = "Xenobio Pen 5 Blast Door" +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"eIl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Prison Wing" }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"fFp" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fFt" = ( -/obj/machinery/photocopier/prebuilt, -/obj/item/newspaper, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"fFy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"fFT" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"fGc" = ( +/area/station/security/execution/transfer) +"eIM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"fGj" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"fGm" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"fGo" = ( -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"eIP" = ( +/obj/effect/landmark/start/cyborg, +/obj/machinery/airalarm/directional/north, +/obj/machinery/camera/motion/directional/west{ + c_tag = "ai_upload Foyer"; + name = "upload camera"; + network = list("aiupload") }, -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/iron, -/area/station/engineering/storage) -"fGr" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"fGu" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/railing{ - dir = 8 +/obj/machinery/computer/security/telescreen/aiupload/directional/west, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/turf_decal/arrows{ - dir = 4; - pixel_x = -7 +/area/station/ai/upload/chamber) +"eIT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/effect/turf_decal/trimline/purple/arrow_cw{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"eIW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fGE" = ( -/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"eJc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"fGG" = ( -/obj/structure/closet/secure_closet/research_director, -/obj/item/taperecorder, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"eJk" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/item/disk/computer/ordnance, -/obj/machinery/light/warm/directional/south, -/obj/item/coffee_cartridge/fancy, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"fGL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/supply) -"fGR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/command/gateway) -"fGT" = ( +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"eJm" = ( /obj/structure/table, -/obj/effect/spawner/random/entertainment/plushie, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"fGZ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input{ - dir = 8 - }, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"fHk" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-74" +/obj/item/clipboard, +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/obj/item/melee/baseball_bat{ + desc = "A staple of security force interrogations."; + icon_state = "baseball_bat_metal"; + name = "kneecapper" }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"fHu" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"eJq" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/robotics/lab) +"eJE" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"fHI" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fHJ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"fHU" = ( -/obj/machinery/computer/holodeck{ +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"eJH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ dir = 8 }, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"fHW" = ( +/area/station/maintenance/disposal/incinerator) +"eJN" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio5"; - name = "Xenobio Pen 5 Blast Door" - }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"fHX" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -16 - }, -/obj/item/pen{ - pixel_x = -16 - }, -/obj/item/book/manual/wiki/research_and_development, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"fIl" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - name = "killroom vent" - }, -/turf/open/floor/circuit/telecomms, -/area/station/science/xenobiology) -"fIm" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"fIr" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"fIv" = ( -/turf/closed/wall/r_wall, -/area/station/command/meeting_room) -"fID" = ( /obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison/safe) +"eJO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"eKk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/stairs/medium{ - dir = 1 - }, -/area/station/command/bridge) -"fIW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/loading_area, /obj/structure/cable, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/turf/open/floor/iron, +/area/station/cargo/storage) +"eKA" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/item/kirbyplants/organic/plant3, +/obj/effect/turf_decal/stripes/line{ dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"fIX" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/cigar, -/turf/open/floor/wood, -/area/station/commons/lounge) -"fIY" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/lounge) -"fIZ" = ( -/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"fJi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_corner, -/area/station/science/xenobiology) -"fJn" = ( -/obj/machinery/power/port_gen/pacman, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/plating, -/area/station/engineering/storage) -"fJz" = ( -/obj/item/reagent_containers/condiment/vegetable_oil, -/obj/machinery/grill, -/turf/open/misc/asteroid, -/area/station/asteroid) -"fJT" = ( -/obj/structure/cable, +"eKG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/interrogation) -"fJV" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/secure_closet/chemical, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"fKb" = ( -/obj/structure/chair, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"fKo" = ( -/obj/structure/chair/office{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"eKT" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"eKU" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"eLm" = ( +/turf/closed/wall, +/area/station/security/checkpoint/customs) +"eLp" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"fKs" = ( +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"eLv" = ( +/obj/machinery/door/window/left/directional/west{ + name = "Waste Door" + }, +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "garbage"; + name = "disposal conveyor" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"eLU" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /turf/open/floor/iron, -/area/station/security/prison) -"fKK" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 +/area/station/cargo/sorting) +"eLV" = ( +/obj/machinery/dna_scannernew, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"fKT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"eMc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"fLe" = ( -/turf/open/floor/catwalk_floor, -/area/station/cargo/storage) -"fLi" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/command/eva) +"eMf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security) -"fLu" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/area/station/hallway/primary/central/fore) +"eMo" = ( +/obj/structure/sign/departments/evac, +/turf/closed/wall, +/area/station/maintenance/department/cargo) +"eMs" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/event_spawn, +/obj/effect/spawner/random/trash/mess, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"eMB" = ( +/obj/machinery/light_switch/directional/west, +/obj/structure/noticeboard/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, +/obj/machinery/vending/wardrobe/coroner_wardrobe, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"eMC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Council Chamber" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"eMW" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/area/station/engineering/atmos/upper) -"fLv" = ( -/obj/machinery/computer/security/wooden_tv, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"eMX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"fLM" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"fLU" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"fMp" = ( -/obj/structure/bookcase/random/reference, -/obj/item/tgui_book/manual/dsm{ - pixel_y = 3; - pixel_x = 3 +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"fMz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/pai_card, -/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"eNb" = ( /turf/open/floor/plating, -/area/station/maintenance/department/science) -"fMF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/delivery, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - location = "QM #1" - }, -/mob/living/simple_animal/bot/mulebot, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"fMS" = ( -/obj/machinery/computer/atmos_control/carbon_tank, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos) -"fMT" = ( +/area/ruin/space/has_grav/abandoned_warehouse) +"eNy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"eNQ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "r1p" - }, /turf/open/floor/plating, -/area/station/medical/patients_rooms/room_a) -"fMY" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/effect/turf_decal/tile/green/half/contrasted{ +/area/station/maintenance/port/greater) +"eNV" = ( +/obj/machinery/power/terminal{ dir = 4 }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"fMZ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/rods/fifty, -/obj/item/wallframe/digital_clock{ - pixel_y = 18 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"fNk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"fNn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"fNp" = ( -/obj/structure/window/reinforced/spawner/directional/east, +/area/station/maintenance/disposal/incinerator) +"eOh" = ( /obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/west{ - name = "Baked Goods"; - req_one_access = list("service","maint_tunnels") - }, -/obj/item/food/muffin/berry{ - pixel_y = 8 +/obj/structure/reagent_dispensers/servingdish, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"eOi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/item/food/poppypretzel, -/obj/item/food/cherrycupcake{ - pixel_y = 19 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"eOl" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/wood/tile, +/area/station/service/library) +"eOs" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/effect/turf_decal/siding/red{ - dir = 4 +/obj/structure/girder, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"eOt" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"eOG" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) -"fNv" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/misc/asteroid, -/area/station/asteroid) -"fNw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/aft) +"eON" = ( +/obj/machinery/porta_turret/ai{ + dir = 1 + }, +/obj/machinery/flasher/directional/east{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/turf/open/floor/circuit/red, +/area/station/ai/upload/chamber) +"eOW" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"ePb" = ( +/obj/structure/lattice/catwalk, +/obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"fNy" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"fNW" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/openspace, -/area/space) -"fOb" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/project) -"fOi" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"ePe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"ePf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/south, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","engine") +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"fOs" = ( -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"ePm" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ dir = 8 }, -/obj/machinery/door/airlock/public/glass{ - name = "Service" - }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"ePU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"ePY" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/bar) -"fOv" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"fOM" = ( -/obj/machinery/telecomms/processor/preset_two, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"fON" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"fOP" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "zaza" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-entrance" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/window/hollow/reinforced/end{ +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"eQb" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/emergency, +/obj/effect/turf_decal/tile/neutral, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"eQf" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, +/turf/open/space/basic, +/area/space/nearstation) +"eQg" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/style_random, +/obj/structure/flora/bush/sunny/style_random, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"fOR" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"eQj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 + dir = 4 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"fPe" = ( -/obj/machinery/vending/engivend, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"fPi" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#9FED58" +/obj/effect/turf_decal/siding/yellow{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"fPk" = ( -/obj/effect/mapping_helpers/mail_sorting/service/theater, -/obj/structure/disposalpipe/sorting/mail{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/carpet, -/area/station/service/theater) -"fPp" = ( -/obj/item/storage/toolbox/emergency, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"eQq" = ( /obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"fPr" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/bot, +/obj/item/radio{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/radio{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/radio{ + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/wall_healer/directional/west, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"eQD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"fPs" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/area/station/cargo/storage) +"eQE" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/table, -/obj/item/stack/medical/wrap/gauze, -/obj/item/stack/medical/suture, -/obj/item/stack/medical/mesh, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/spawner/random/medical/minor_healing, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"fPv" = ( -/obj/machinery/light_switch/directional/east, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"fPx" = ( -/obj/structure/table, -/obj/item/mmi, -/obj/item/mmi, -/obj/item/mmi, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/machinery/camera/directional/west{ + c_tag = "Port Hallway Firelock"; + name = "port camera" }, -/turf/open/floor/iron/white/smooth_half{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/science/robotics/lab) -"fPB" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/camera/autoname/directional/east, -/obj/item/paper_bin{ - pixel_x = 3; - pixel_y = 7 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/item/pen{ - pixel_x = 3; - pixel_y = 8 +/area/station/hallway/primary/port) +"eQG" = ( +/obj/machinery/announcement_system, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/security/warden) -"fPV" = ( +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"eQO" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"fPX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/mapping_helpers/airlock/access/all/command/gateway, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"eRp" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/grimy, +/area/station/hallway/primary/fore) +"eRx" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"eRy" = ( +/obj/effect/turf_decal/box, +/obj/structure/toilet{ + dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/structure/mirror/directional/west, +/obj/machinery/newscaster/directional/south{ + pixel_x = -28 }, -/obj/item/storage/belt/medical{ - pixel_y = 6 +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/east{ + id = "Unit_1Privacy"; + name = "Unit 1 Privacy Toggle"; + pixel_y = -8 + }, +/obj/machinery/button/door/directional/east{ + id = "Unit_1"; + name = "Unit 1 Privacy Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"eRC" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"eRD" = ( +/obj/structure/table/wood, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/item/storage/belt/medical{ +/obj/machinery/newscaster/directional/west, +/obj/item/camera{ pixel_y = 4 }, -/obj/item/storage/belt/medical{ - pixel_y = 2 +/obj/item/hand_tele, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) +"eRK" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table/reinforced/rglass, -/obj/machinery/firealarm/directional/east, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"fQf" = ( -/obj/machinery/shower/directional/west, -/obj/effect/spawner/random/trash/soap{ - spawn_scatter_radius = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/air_sensor/incinerator_tank, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"eSl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output{ + dir = 1 }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"fQk" = ( -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"eSu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/command/directional/east, -/obj/machinery/suit_storage_unit/captain{ - req_access = list("captain") +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"fQm" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"fQp" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"fQr" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnancefreezer" +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"eSY" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency{ + pixel_x = -3; + pixel_y = 3 }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/shovel, +/obj/item/shovel, +/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"fQy" = ( -/obj/structure/railing{ +/area/station/cargo/miningoffice) +"eTh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 1 + }, +/turf/closed/wall, +/area/station/engineering/atmos) +"eTp" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/space/basic, +/area/space/nearstation) +"eTt" = ( +/obj/structure/transit_tube, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/hollow/middle, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"eTG" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"eTS" = ( +/obj/machinery/light/directional{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"eUd" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 2 }, +/obj/item/book/manual/chef_recipes, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"eUk" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"fQG" = ( -/obj/machinery/door/airlock/virology/glass{ - id_tag = "virology_airlock_exterior"; - name = "Virology Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, /obj/structure/cable, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/machinery/door_buttons/access_button{ - dir = 1; - idDoor = "virology_airlock_exterior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_y = -24; - req_access = list("virology") +/obj/machinery/camera/directional/north{ + c_tag = "Starboad Hallway Custodial Bay"; + name = "starboard camera" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"fQO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"fQX" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"fQZ" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/mix) -"fRv" = ( -/obj/machinery/door/window/right/directional/east, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"fRw" = ( -/obj/machinery/computer/crew{ +/area/station/hallway/primary/starboard) +"eUs" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/toy/figure/md{ - pixel_x = 5; - pixel_y = 7 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/mob/living/basic/bot/cleanbot/medbay, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"fRC" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"eUM" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) +"eUN" = ( +/turf/closed/wall, +/area/station/medical/psychology) +"eUT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"fRF" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/area/station/hallway/primary/starboard) +"eVL" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"fRX" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = 12 +/area/station/engineering/supermatter/engine) +"eVP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/displaced, +/obj/structure/grille/broken, /obj/structure/cable, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"fSb" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"fSk" = ( -/obj/structure/chair/office{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt/dust, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"fSp" = ( -/obj/item/stack/spacecash/c100, -/turf/open/floor/fakebasalt, -/area/station/maintenance/department/medical) -"fSq" = ( -/obj/machinery/door/poddoor/shutters{ - id = "secwarehouse"; - name = "Secure Warehouse Shutters" +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"eVT" = ( +/obj/machinery/computer/records/medical{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"eWd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"fSB" = ( -/obj/machinery/door/airlock/security{ - name = "Cargo Security Post" +/obj/machinery/wall_healer/directional/north, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 + dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"eWu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"fSJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "geneshut" - }, -/turf/open/floor/plating, -/area/station/science/genetics) -"fSK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"fSP" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/textured_half, -/area/station/engineering/storage/tech) -"fSR" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"fSS" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"fTj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/hatch{ - name = "Cyborg Entertainment Closet"; - req_access = list("something only silicons open") +/area/station/security/brig) +"eWH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"eWP" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/port/fore) +"eWS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"eWT" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Xenobiology Cell 2"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/obj/machinery/light/small/directional/west, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"eXj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"fTl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"eXJ" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "QMLoad2"; + name = "on ramp"; + pixel_y = 6 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"fTD" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/sorting/mail, -/obj/effect/mapping_helpers/mail_sorting/service/bar, -/turf/open/floor/iron, -/area/station/commons/lounge) -"fTX" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"fUj" = ( -/obj/structure/sign/warning/vacuum/external/directional/east, -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"fUn" = ( -/turf/open/floor/wood/parquet, -/area/station/service/library) -"fUp" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/cold_temp, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"fUv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/item/reagent_containers/cup/bucket{ - list_reagents = list(/datum/reagent/water = 70) - }, -/obj/item/mop, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"fUx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"fUz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/item/electronics/apc, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"fUH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"fUL" = ( -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"fUN" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"fUR" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"fVf" = ( -/obj/effect/mob_spawn/corpse/human/clown, -/obj/effect/decal/cleanable/blood/old, -/turf/open/misc/asteroid, -/area/station/asteroid) -"fVg" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) +"eXQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/siding/brown{ dir = 1 }, -/area/station/engineering/atmos/mix) -"fVs" = ( +/obj/effect/landmark/start/bitrunner, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"fVI" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"fVO" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/airlock/research{ - name = "Ordnance Auxiliary Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"fVU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/area/station/cargo/bitrunning/den) +"eXX" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/insectguts, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"eXY" = ( +/obj/structure/railing/corner, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"eXZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"fVZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/station/cargo/storage) -"fWg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/ruin/space/has_grav/abandoned_warehouse) +"eYd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"fWj" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/iron, +/area/station/service/hydroponics) +"eYl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/requests_console/directional/east{ + department = "Hydroponics"; + name = "Hydroponics Requests Console" }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/mix) -"fWp" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Hydroponics Aft"; + name = "hydroponics camera" }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"fWD" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/turf/open/floor/iron, +/area/station/service/hydroponics) +"eYv" = ( +/obj/machinery/exodrone_launcher, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/turf_decal/trimline/yellow/mid_joiner, +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ + dir = 1 }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"fWJ" = ( -/obj/item/sticker/clown, -/turf/open/misc/asteroid, -/area/station/asteroid) -"fWZ" = ( -/obj/structure/girder, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"fXc" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"fXf" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/misc/asteroid, -/area/station/asteroid) -"fXi" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"fXn" = ( -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"fXo" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/item/pickaxe, +/obj/item/fuel_pellet, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"fXC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/area/station/cargo/drone_bay) +"eYw" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) -"fXD" = ( -/obj/structure/cable, +/area/station/science/robotics/mechbay) +"eYB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"fXH" = ( -/obj/machinery/duct, -/obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"fXR" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/area/station/hallway/primary/aft) +"eYE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"fXU" = ( -/obj/effect/spawner/xmastree, -/turf/open/floor/wood, -/area/station/commons/lounge) -"fXV" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/landmark/start/chief_engineer, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ + dir = 5 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"fXW" = ( -/obj/structure/chair/office/light{ - dir = 1 +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"fXZ" = ( -/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, -/area/station/cargo/storage) -"fYc" = ( -/obj/structure/railing{ - dir = 6 +/area/station/command/heads_quarters/ce) +"eYH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"eYS" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 }, -/area/station/command/meeting_room) -"fYe" = ( -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"fYj" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/courtroom) -"fYQ" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/machinery/camera/autoname/directional/west, +/obj/structure/rack, +/obj/effect/spawner/random/food_or_drink/booze, +/obj/effect/turf_decal/arrows, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"fYZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/area/station/cargo/warehouse) +"eZa" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"eZm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"fZc" = ( -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"fZe" = ( -/turf/closed/wall, -/area/station/security/detectives_office) -"fZg" = ( -/obj/item/toy/plush/lizard_plushie/green{ - name = "Hauls-The-Crates" +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Science"; + location = "Cargo"; + name = "cargo navigation beacon" }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/departments/exodrone/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"fZl" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"eZx" = ( +/obj/machinery/microwave{ + pixel_y = 5 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"fZp" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/obj/structure/table, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"eZE" = ( +/obj/structure/flora/bush/pale/style_random{ + icon_state = "fullgrass_2" }, -/obj/item/radio/intercom/directional/west, -/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/grass/jungle/b/style_5, +/turf/open/misc/asteroid, +/area/space/nearstation) +"eZL" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/storage) -"fZr" = ( -/obj/effect/mapping_helpers/iannewyear, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"fZv" = ( -/obj/structure/cable, +/area/station/hallway/secondary/exit/departure_lounge) +"fac" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"fZz" = ( /obj/structure/cable, /obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/solars/port) -"fZF" = ( -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"fZT" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 +/area/station/maintenance/port/greater) +"fae" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/cargo/miningoffice) +"fak" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/camera/directional/east{ + c_tag = "Starboard Hallway Cargo Counter"; + name = "starboard camera" }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"gag" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/obj/structure/sign/poster/official/random/directional/east, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"gaj" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/starboard) +"faN" = ( +/obj/structure/cable, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"faZ" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 4 }, -/turf/open/floor/carpet, -/area/station/service/chapel) -"gak" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron/white, -/area/station/science/research) -"gar" = ( -/obj/machinery/air_sensor/engine_chamber, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"gas" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/structure/railing{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"gaE" = ( -/obj/structure/toilet{ - dir = 4 +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"gaI" = ( +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"fbm" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"fbr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/stairs/old, +/area/station/hallway/primary/fore) +"fbz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"fbB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/main) -"gaK" = ( -/obj/structure/chair/pew{ - dir = 4 +/area/station/engineering/hallway) +"fbF" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"gaN" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/main) -"gbv" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating/reinforced/airless, -/area/station/asteroid) -"gbF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"fbK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/structure/cable, +/obj/effect/landmark/start/chemist, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"fcv" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"gbM" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"fcM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/bridge) -"gbP" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"gbQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" - }, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3 +/area/station/hallway/primary/fore) +"fcX" = ( +/obj/structure/table/wood, +/obj/machinery/camera/directional/west{ + c_tag = "Bar Storage"; + name = "bar camera" }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 3 +/obj/item/gun/ballistic/shotgun/doublebarrel{ + pixel_y = 5 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"gbR" = ( -/obj/item/kirbyplants/random, -/obj/structure/railing/corner{ - dir = 8 +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/research) -"gbS" = ( -/obj/effect/landmark/start/botanist, -/turf/open/floor/glass/reinforced, -/area/station/service/hydroponics) -"gbV" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"gcb" = ( -/obj/structure/table, -/obj/item/storage/box/firingpins{ - pixel_x = 6; - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/storage/box/firingpins{ - pixel_x = -6; - pixel_y = 6 +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"fdd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"gck" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"gcs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"gcy" = ( -/turf/closed/wall, -/area/station/medical/virology) -"gcN" = ( -/obj/effect/turf_decal/siding/wood{ +"fdp" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"gcQ" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/hos) -"gcU" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/table/reinforced, -/obj/item/food/chips, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gcV" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"gcZ" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/power/smes, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"fdA" = ( +/obj/structure/table_frame/wood, +/turf/open/floor/carpet/green, +/area/ruin/space/has_grav/abandoned_warehouse) +"fdC" = ( +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"gdf" = ( -/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"fdY" = ( +/turf/closed/wall, +/area/station/medical/medbay/lobby) +"fej" = ( /obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"gdA" = ( -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"gdL" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/glass/reinforced, -/area/station/science/research) -"gdP" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"gdZ" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"gea" = ( +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"fez" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 +/obj/structure/chair/office{ + dir = 8 }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"feD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"geh" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - name = "Justice Chamber"; - req_access = list("armory") +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, -/obj/machinery/conveyor_switch/oneway{ - id = "execution"; - pixel_x = 10 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"feU" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"feV" = ( +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"feZ" = ( +/obj/structure/displaycase/labcage, +/obj/effect/turf_decal/box, +/obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"gei" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot_red, -/obj/structure/disposalpipe/trunk{ +/area/station/command/heads_quarters/rd) +"ffa" = ( +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"ffi" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"ffm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"geo" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/service/theater) -"gep" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"ger" = ( -/obj/structure/table/reinforced, -/obj/item/geiger_counter, -/obj/item/storage/medkit/fire, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/light/directional/south, /turf/open/floor/iron, -/area/station/engineering/lobby) -"gev" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/machinery/power/energy_accumulator/grounding_rod/anchored, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"gey" = ( -/obj/machinery/disposal/bin, -/obj/machinery/light_switch/directional/east, -/obj/structure/disposalpipe/trunk{ +/area/station/hallway/primary/starboard) +"ffu" = ( +/obj/effect/turf_decal/box/corners{ dir = 8 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"geB" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"geO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"gfe" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/iv_drip, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gft" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "medbay1" +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"ffv" = ( +/obj/machinery/gibber, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"ffC" = ( +/obj/machinery/vending/assist, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/elevator_control_panel/directional/south{ - linked_elevator_id = "medbay1" +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"ffI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"ffN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "xeno2"; + name = "Creature Cell 2" }, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) -"gfF" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"ffQ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, -/area/station/science/research) -"ggu" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Library" +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Gas to Cold Loop" }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"fgb" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"fgo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/storage/art) +"fgu" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ggz" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"ggY" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"gho" = ( -/obj/structure/table/wood, -/obj/item/food/grown/harebell{ - pixel_x = -4 +/area/station/hallway/secondary/entry) +"fgy" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell{ - pixel_x = 4; - pixel_y = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/item/food/grown/harebell{ - pixel_x = 6 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell, -/turf/open/floor/iron/chapel{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"fgA" = ( +/obj/effect/turf_decal/bot, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 }, -/area/station/service/chapel) -"ghp" = ( -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"ghs" = ( -/obj/structure/closet/l3closet/security, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"ghK" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line, -/obj/item/storage/belt/utility/full, /turf/open/floor/iron, -/area/station/science/robotics/lab) -"ghM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"ghQ" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/chem_master/condimaster{ - desc = "Looks like a knock-off chem-master. Perhaps useful for separating liquids when mixing drinks precisely. Also dispenses condiments."; - name = "HoochMaster Deluxe" - }, -/obj/machinery/button/door/directional/west{ - name = "Bar shuttters"; - id = "bar_shutters" - }, +/area/station/command/teleporter) +"fgB" = ( +/obj/structure/window/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/operating, /turf/open/floor/iron/dark, -/area/station/service/bar) -"ghU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/area/station/medical/morgue) +"fgH" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room" }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ghW" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"fgJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"gii" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P8-Central-Primary"; - location = "P7-Central-Primary" - }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"gij" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) -"gim" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "maintext3" +"fhe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/clothing/gloves/color/brown, +/obj/item/clothing/under/misc/overalls, +/obj/item/clothing/mask/gas{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"giv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/maintenance/starboard) +"fhs" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"giy" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/area/station/hallway/primary/aft) +"fhv" = ( +/obj/structure/table/wood, +/turf/open/floor/wood/tile, +/area/station/service/library) +"fhw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"giD" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Distribution Loop" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/turf/open/floor/plating, +/area/station/maintenance/aft) +"fhH" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + name = "science locker" + }, +/obj/item/clothing/under/rank/rnd/scientist{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/suit/toggle/labcoat/science, +/obj/item/clothing/shoes/sneakers/white, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"fhL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"giJ" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"fhP" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/reed/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"fhY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"gjt" = ( -/obj/machinery/pdapainter/medbay, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"gjw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"fix" = ( /obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"gjy" = ( -/obj/structure/mannequin/plastic{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"gjA" = ( -/obj/machinery/computer/atmos_control/mix_tank{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ - dir = 8 +/obj/structure/closet/firecloset, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"fiy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"fiH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/obj/structure/table, +/obj/item/wallframe/airalarm, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/area/station/engineering/atmos) -"gjB" = ( -/obj/machinery/vending/wardrobe/coroner_wardrobe, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"gjD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/port/lesser) +"fiQ" = ( +/obj/structure/table/wood, +/obj/item/pinpointer/nuke, +/obj/item/disk/nuclear, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"gjG" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"fiR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"gjI" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet_Research"; - name = "Bathroom" +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/service/theater) -"gjJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"gjN" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 8 +/area/station/security/processing) +"fiW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 +/turf/open/floor/engine, +/area/station/science/auxlab) +"fiY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"gjZ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"fiZ" = ( +/obj/item/kirbyplants/organic/applebush, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"gkt" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/airalarm/directional/west, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/chair, -/turf/open/floor/iron, -/area/station/security) -"gkx" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"gkJ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 8 +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/turf/open/openspace, -/area/station/engineering/main) -"gkQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/command/bridge) -"gli" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/area/station/hallway/secondary/entry) +"fjk" = ( +/obj/structure/table, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/spawner/random/aimodule/harmful, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "High-Risk Modules"; + req_access = list("captain") }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"glk" = ( -/obj/structure/toilet/greyscale{ +/obj/item/ai_module/reset/purge{ + pixel_y = 11 + }, +/turf/open/floor/circuit/red, +/area/station/ai/upload/chamber) +"fjn" = ( +/obj/structure/sink/directional/south, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 4 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"glq" = ( +/obj/machinery/light/directional/north, +/obj/structure/closet/l3closet/virology, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"fjw" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"fjz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/ai_slipper{ - uses = 10 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"gls" = ( -/obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"fjI" = ( +/obj/structure/chair/office{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"glA" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/turf/open/floor/iron, -/area/station/command/meeting_room) -"glG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/machinery/wall_healer/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"glH" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"fjX" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/caution/stand_clear, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/directions/dorms/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"glL" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"fkw" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gmd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "chapel_shutters_parlour"; - name = "Chapel Shutters" +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"fkB" = ( +/obj/structure/table, +/obj/item/stack/sheet/plasteel/fifty{ + amount = 10; + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"gme" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/item/stack/sheet/rglass{ + amount = 50 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"gmm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" +/obj/item/stack/sheet/rglass{ + amount = 50 }, -/obj/structure/sign/warning/gas_mask/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"gms" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/item/clothing/shoes/magboots{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/item/clothing/shoes/magboots, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"gmA" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/command/eva) +"fkI" = ( +/obj/structure/table, +/obj/item/wallframe/airalarm, +/obj/item/screwdriver{ + pixel_y = 6 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"fkL" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall, +/area/station/commons/fitness/recreation) +"fkP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"fkT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/clothing/suit/apron/chef, +/obj/item/book/manual/chef_recipes{ + pixel_x = 2; + pixel_y = 6 }, -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/item/book/manual/chef_recipes{ + pixel_y = 2 }, -/turf/open/floor/iron/checker{ +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"flt" = ( +/obj/structure/bed, +/obj/machinery/iv_drip, +/obj/item/bedsheet/medical, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/area/station/engineering/atmos/mix) -"gmH" = ( -/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"flx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, /turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"gmX" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"gnh" = ( -/obj/item/knife/kitchen, -/turf/open/misc/asteroid, -/area/station/asteroid) -"gni" = ( -/obj/machinery/power/turbine/core_rotor{ - dir = 4; - mapping_id = "main_turbine" +/area/station/engineering/supermatter/room) +"flH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"gnx" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/reagent_dispensers/beerkeg, -/obj/structure/table/wood, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"gnE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "splatter3" +/area/station/maintenance/disposal) +"flL" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "AI Chamber" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Chamber entrance shutters"; + name = "AI Chamber Lockdown Shutter" }, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"gnO" = ( -/obj/machinery/door/airlock/medical{ - name = "Treatment Centre" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/flasher/directional/west{ + id = "AI"; + name = "Meatbag Pacifier" }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ai-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/structure/cable/layer3, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/interior) +"fmm" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/dresser, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/contraband/prison, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"fmn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"gok" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"goB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"goI" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"goX" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/conveyor/inverted{ - dir = 6; - id = "QMLoad" - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gpg" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/sorting) -"gpy" = ( -/obj/structure/chair/pew/right{ - dir = 4 +/area/station/hallway/primary/aft) +"fmo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"fmx" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30; + pixel_y = -32 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"gpF" = ( /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"gpJ" = ( -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"fmy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Locker Room" }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, -/area/station/engineering/main) -"gpR" = ( -/obj/machinery/light/dim/directional/south, -/obj/structure/closet/emcloset, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"gpV" = ( +/area/station/commons/locker) +"fmA" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security) -"gqd" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"fmQ" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" + }, +/turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"gql" = ( -/obj/structure/cable, +"fmV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Hydroponics Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"fne" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/medical_doctor, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"fnu" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"gqm" = ( -/turf/closed/wall/material/meat, -/area/station/asteroid) -"gqz" = ( -/obj/effect/decal/cleanable/wrapping/pinata/syndie, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/command/bridge) +"fnL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/meter/layer4, /turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"gqA" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "Science" +/area/station/maintenance/port/aft) +"fnN" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"fnZ" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/saltshaker{ + desc = "Salt. From space oceans, presumably. A staple of modern medicine."; + pixel_x = -8; + pixel_y = 12 }, -/obj/machinery/door/window/right/directional/south{ - name = "MuleBot Access"; - req_access = list("shipping") +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 2 + }, +/obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice{ + desc = "An emerald flask, from the Keeper's soul. High in vitamins!"; + name = "estus flask"; + pixel_x = 4; + pixel_y = 4 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"fob" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"gqB" = ( -/obj/machinery/door/airlock{ - name = "Law Office" +"fol" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"fov" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/service/lawyer, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"foB" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/food/grown/poppy/geranium{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/geranium{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/geranium, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"foP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"foQ" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 9 }, -/obj/machinery/door/firedoor, -/turf/open/floor/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"foU" = ( +/obj/structure/table/wood, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/red, +/obj/item/clothing/glasses/sunglasses/big{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/clothing/glasses/sunglasses/big, +/turf/open/floor/carpet/green, /area/station/service/lawoffice) -"gqO" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"gqV" = ( +"fph" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"fpk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/obj/machinery/computer/atmos_control/ordnancemix{ +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"fpx" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"gqX" = ( -/obj/machinery/chem_dispenser/drinks{ +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/anticorner/contrasted, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"fpz" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/structure/table, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/camera/autoname/directional/west, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/service/bar) -"grm" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 4; - id = "ordauxgarage" +/area/station/maintenance/department/electrical) +"fpG" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"fpQ" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/obj/effect/turf_decal/stripes/asteroid/end, -/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/science/ordnance) -"grv" = ( -/obj/structure/table/glass, -/obj/item/clothing/head/cone{ - pixel_x = -3 +/area/station/maintenance/fore) +"fqb" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ + dir = 8 }, -/obj/item/clothing/head/cone{ - pixel_x = 9; - pixel_y = 11 +/obj/machinery/door/airlock/research/glass{ + name = "Ordnance Lab" }, -/obj/item/clothing/head/cone{ - pixel_x = -14; - pixel_y = 10 +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"fqe" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/cable, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"grw" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering Restrooms" +/area/station/engineering/gravity_generator) +"fql" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/sheet/glass, +/turf/open/space/basic, +/area/station/solars/port/aft) +"fqp" = ( +/obj/effect/landmark/observer_start, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"grz" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/project) -"grK" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"grO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/end, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"fqq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/turf/open/floor/iron/textured, -/area/station/medical/pharmacy) -"gsb" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"fqG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"gsg" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"gsh" = ( -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"gsi" = ( -/obj/machinery/computer/cargo{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/button/door/directional/west{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_y = -8; - req_access = list("cargo") +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/machinery/button/door/directional/west{ - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_y = 8; - req_access = list("cargo") +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, /turf/open/floor/iron, -/area/station/cargo/storage) -"gsn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"gsM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/area/station/command/bridge) +"fqN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"gsN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security/office) -"gsW" = ( -/turf/closed/wall/rock/porous, -/area/station/science/ordnance) -"gtj" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/area/station/engineering/storage_shared) +"fqO" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gtn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"fqP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/east{ + c_tag = "Bridge Council Chamber"; + name = "command camera" + }, +/obj/structure/disposalpipe/trunk, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/service/theater) -"gts" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"fqQ" = ( +/turf/closed/wall/rust, +/area/station/engineering/storage/tech) +"frh" = ( /obj/structure/railing/corner, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"gty" = ( -/obj/effect/landmark/carpspawn, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"gtE" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect1"; - name = "Security Shutters" +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"gtF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"gtK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gtO" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"frO" = ( +/turf/closed/wall/r_wall, +/area/station/science/genetics) +"frP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/eva) +"frT" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"gtX" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"fsd" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"gub" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"guk" = ( -/obj/machinery/vending/wardrobe/gene_wardrobe, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"gun" = ( -/obj/machinery/bci_implanter, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"gup" = ( -/obj/effect/landmark/start/depsec/science, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"gur" = ( -/obj/structure/table/glass, -/obj/item/book/manual/wiki/engineering_construction{ - pixel_x = -3 +/area/station/maintenance/starboard) +"fse" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 10 }, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/item/book/manual/wiki/engineering_guide, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"guF" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/airalarm/directional/north, /turf/open/floor/iron, -/area/station/cargo/storage) -"guN" = ( -/obj/structure/table/glass, -/obj/item/folder/white, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"guO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/area/station/engineering/atmos) +"fsj" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"guP" = ( -/obj/structure/table, -/obj/item/modular_computer/laptop/preset/mafia, -/obj/structure/broken_flooring/side/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"guV" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"fsp" = ( /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"gvd" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"gvk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/spawner/random/maintenance, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gvn" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Gravity Generator Access" +/area/station/maintenance/starboard) +"fsu" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/engineering/atmos) +"fsx" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/structure/reflector/single/anchored{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"gvs" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/area/station/engineering/supermatter/room) +"fsJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"fsV" = ( /obj/structure/cable, -/obj/structure/table, -/obj/item/aquarium_kit, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"gvw" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/cmo) -"gvF" = ( -/turf/closed/wall, -/area/station/science/lobby) -"gvH" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"fsZ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 8 +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"ftd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) +"fth" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 8 +/obj/structure/table/glass, +/obj/machinery/microwave{ + pixel_y = 5 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/service/janitor) -"gvK" = ( -/obj/machinery/light/dim/directional/south, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"gvN" = ( -/obj/machinery/announcement_system, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"gvO" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Holodeck - Aft"; - name = "holodeck camera" +/area/station/medical/break_room) +"fti" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/commons/locker) +"ftl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"fts" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 5 }, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/area/station/holodeck/rec_center) -"gvR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gwp" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"fty" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/station/engineering/atmos/upper) -"gwq" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/tile/neutral, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"ftz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"gws" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "cmoprivacy"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"gwx" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect"; - name = "Security Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"gwA" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"gwE" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/command/bridge) +"ftG" = ( +/obj/machinery/deepfryer, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"ftS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"gwS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/machinery/button/door/directional/west{ + id = "Secure Storage"; + name = "Secure Storage Toggle"; + req_access = list("engine_equip") }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"gxt" = ( -/obj/item/kirbyplants/random, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"ftX" = ( +/obj/machinery/power/smes, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"fun" = ( +/obj/structure/cable, /obj/effect/turf_decal/siding/wood{ - dir = 10 + dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"gxu" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) -"gxw" = ( -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"gxx" = ( -/obj/machinery/porta_turret/ai, -/obj/machinery/flasher/directional/east{ - id = "AI" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/ai/satellite/chamber) -"gxy" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"gxE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/captain/private) +"fuq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/grunge{ + name = "Custodial Closet" }, -/turf/open/floor/iron/large, -/area/station/hallway/secondary/exit/departure_lounge) -"gxM" = ( /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/service/janitor, +/obj/effect/landmark/navigate_destination/janitor, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"fur" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"fuB" = ( +/turf/closed/wall/rust, +/area/station/maintenance/starboard/aft) +"fuX" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gya" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, +/area/station/maintenance/fore) +"fuY" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gyl" = ( -/obj/machinery/vending/modularpc, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 +/obj/structure/cable, +/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"fuZ" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Robotics" }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"gyq" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/machinery/door/window/left/directional/east{ + name = "Robotics Delivery Access"; + req_access = list("robotics") + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"fvb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/teleporter) +"fvh" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"fvr" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, /obj/structure/cable, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"gyu" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"fvz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/commons/storage/primary) -"gyx" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/starboard/fore) +"fvB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/supplies, +/obj/machinery/light/small/directional/east, +/obj/item/kirbyplants/organic/plant21, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"fvC" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/ce) +"fvJ" = ( +/obj/structure/bookcase/random/reference, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"fvK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"gyB" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/starboard) +"fvQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"gyI" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gyM" = ( -/obj/machinery/button/curtain{ - id = "theater_curtains"; - name = "curtain control"; - pixel_x = 32; - req_access = list("theatre"); +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"gyP" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"gyS" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/food/chips/shrimp, -/obj/effect/spawner/random/entertainment/dice, -/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"gyY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, +/area/station/engineering/hallway) +"fvT" = ( +/obj/machinery/computer/records/security{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/engineering/main) -"gza" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ +/area/station/command/bridge) +"fvU" = ( +/turf/closed/wall/rust, +/area/station/maintenance/starboard/fore) +"fvX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"fwf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/engineering/atmos) -"gzd" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/science/explab) -"gzj" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("xenobiology") +"fwJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - req_access = list("xenobiology") +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"fwM" = ( +/obj/structure/table, +/obj/machinery/camera/directional/east{ + c_tag = "Garden" }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio6"; - name = "Xenobio Pen 6 Blast Door" +/obj/effect/turf_decal/siding/green{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"gzp" = ( +/obj/item/shovel/spade, +/obj/item/hatchet, +/obj/item/cultivator, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"gzq" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gzt" = ( -/obj/effect/turf_decal/tile/yellow/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"gzw" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/door/window/left/directional/north{ - name = "Anti Assistant Protection Door"; - req_access = list("medical") +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/hatchet, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/cup/bottle/nutrient/rh{ + pixel_x = 2; + pixel_y = 1 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 +/obj/item/reagent_containers/cup/bottle/nutrient/ez, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"fxd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central) +"fxt" = ( +/obj/machinery/chem_heater/withbuffer, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"gzL" = ( -/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"fxw" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gzS" = ( -/obj/structure/table/wood, -/obj/item/toy/plush/lizard_plushie/green{ - name = "Counsels-The-Patients" +/area/station/security/mechbay) +"fxx" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/west, +/obj/machinery/light/directional/west, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"gAg" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"gAv" = ( -/obj/structure/table, -/obj/item/storage/box/evidence, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/item/restraints/legcuffs/bola/energy, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"gAD" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"gAQ" = ( -/obj/structure/bed/dogbed, -/obj/machinery/light_switch/directional/north, -/mob/living/basic/carp/pet/lia, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"gAV" = ( -/obj/structure/tank_dispenser, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light_switch/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"gAZ" = ( -/obj/machinery/atmospherics/components/binary/pump/off{ +/area/station/medical/office) +"fxB" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible, +/obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "O2 To Pure" + name = "Air to Mix" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"fxP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/item/food/dough, +/obj/item/kitchen/rollingpin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"fxQ" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"gBg" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"gBh" = ( -/obj/effect/landmark/start/detective, -/obj/structure/chair/office, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"fxV" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"gBi" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/chapel{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison) +"fxW" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/area/station/service/chapel) -"gBq" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ dir = 4 }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"fxY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"fyf" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder/blue, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/storage) -"gBu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, -/obj/item/broken_bottle, +/area/station/security/courtroom) +"fyj" = ( /obj/structure/cable, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) +"fyp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"gBw" = ( -/obj/structure/chair/office{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"fyq" = ( +/obj/machinery/button/door/directional/north{ + id = "ordnancestorage"; + name = "Ordnance Storage Access"; + req_access = list("ordnance") + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/structure/cable, +/obj/machinery/atmospherics/components/tank{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"fyw" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Medbay Aux Storage"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/table/glass, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"gBx" = ( +/area/station/medical/office) +"fyG" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"gBy" = ( -/obj/structure/sign/warning/electric_shock/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"gBA" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/glass, -/area/station/cargo/storage) -"gBB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/carpet, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, /area/station/service/chapel) -"gBE" = ( -/obj/structure/table, -/obj/effect/spawner/random/entertainment/deck, +"fyM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/prison) -"gBG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/hallway/secondary/exit/departure_lounge) +"fyS" = ( +/obj/structure/closet/wardrobe/miner, +/obj/effect/turf_decal/delivery, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"gBW" = ( -/obj/machinery/disposal/bin{ - desc = "A pneumatic waste disposal unit. This one leads into space!"; - name = "deathsposal unit" +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 }, -/obj/effect/turf_decal/stripes/end, -/obj/machinery/light/directional/north, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"fyZ" = ( +/obj/structure/chair/office/light{ + dir = 4 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"gBY" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 5 +/obj/effect/landmark/start/chemist, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"gBZ" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/area/station/medical/pharmacy) +"fzd" = ( +/turf/closed/wall, +/area/station/maintenance/solars/port/fore) +"fzk" = ( +/obj/machinery/vending/autodrobe, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"fzn" = ( +/obj/machinery/door/airlock/external{ + name = "Science Escape Pod"; + space_dir = 4 }, -/obj/machinery/door/poddoor/preopen{ - id = "prison release"; - name = "Prisoner Processing Blast Door" +/obj/effect/landmark/navigate_destination/dockescpod1, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"fzu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"fzG" = ( +/obj/machinery/vending/medical, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"gCL" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"gCN" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"fzH" = ( +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/engineering/break_room) -"gCP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/commons/fitness/recreation) +"fzJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"gCT" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/firealarm/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Telecomms Server Room"; + name = "telecomms camera"; + network = list("ss13","tcomms") + }, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"fzL" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/main) -"gCV" = ( +/area/station/hallway/primary/central/fore) +"fAI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"fAM" = ( +/obj/structure/chair/pew/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/iron/chapel{ + dir = 8 + }, +/area/station/service/chapel) +"fBh" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Xenobiology Maintenance" +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"fBm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/table, +/obj/item/raw_anomaly_core/random, +/obj/item/raw_anomaly_core/random{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/raw_anomaly_core/random{ + pixel_x = 7; + pixel_y = 9 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"fBt" = ( +/obj/machinery/door/airlock/grunge{ + name = "Chapel Office" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, +/turf/open/floor/iron/dark, +/area/station/service/chapel/office) +"fBF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"gDl" = ( -/obj/structure/sign/xenobio_guide/directional/south, -/obj/structure/tank_holder/extinguisher, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"fBI" = ( /obj/effect/turf_decal/bot, -/turf/open/floor/iron/white/textured_half, -/area/station/science/xenobiology) -"gDm" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/stairs{ +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) +"fBX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/area/station/security) -"gDR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"gEm" = ( -/obj/structure/railing{ +/obj/machinery/shower/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/structure/mirror/directional/west, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"fCb" = ( +/obj/machinery/computer/cargo{ + dir = 8 }, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/east{ + id = "QMLoaddoor"; + name = "Off Ramp Toggle"; + pixel_y = 6; + req_access = list("cargo") }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"gEr" = ( -/obj/effect/turf_decal/arrows{ - dir = 8; - pixel_x = 7 +/obj/machinery/button/door/directional/east{ + id = "QMLoaddoor2"; + name = "On Ramp Toggle"; + pixel_y = -6; + req_access = list("cargo") }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/storage) +"fCc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"fCe" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"gEA" = ( -/obj/structure/flora/rock/pile/style_random, -/obj/effect/turf_decal/stripes/asteroid/line{ +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"fCs" = ( +/obj/structure/chair/wood{ + dir = 8 }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"gEB" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"fCH" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"gEJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/lobby) -"gEP" = ( +/area/station/command/gateway) +"fCM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/clown, /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, /turf/open/floor/iron, /area/station/service/theater) -"gEQ" = ( -/obj/structure/closet/secure_closet/miner, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"gFg" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"gFB" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +"fCN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"fCX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"fDi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/atmos, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"fDB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Restrooms" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"fDS" = ( +/obj/machinery/air_sensor/carbon_tank, +/turf/open/floor/engine/co2, /area/station/engineering/atmos) -"gFI" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Security's Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"fDT" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Prisoner Locker" }, -/obj/effect/mapping_helpers/airlock/access/all/security/hos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"gFU" = ( -/obj/machinery/button/door/directional/west{ - id = "Cabin5"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"fEb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/trinary/mixer{ + name = "plasma mixer" }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"fEc" = ( +/obj/item/kirbyplants/organic/applebush, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"gGa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"gGf" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"gGh" = ( -/obj/effect/landmark/start/cyborg, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/recharge_floor, -/area/station/ai/upload/foyer) -"gGm" = ( -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"gGo" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"gGp" = ( -/obj/structure/table/wood/fancy/orange, -/obj/machinery/coffeemaker/impressa{ - desc = "An industry-grade Impressa Modello 5 Coffeemaker of the Piccionaia Home Appliances premium coffeemakers product line. Makes coffee from fresh dried whole beans. Guess this is where all the cargo tax goes."; - pixel_x = 6; - pixel_y = 6 - }, -/obj/structure/cable, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"gGr" = ( -/turf/closed/wall, -/area/station/engineering/storage/tcomms) -"gGs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron, /area/station/commons/locker) -"gGP" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/lockers) -"gGS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, +"fEe" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/red, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Brig Control Desk"; + req_access = list("armory") + }, +/obj/item/papercutter, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"gHc" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/mapping_helpers/trapdoor_placer, -/turf/open/floor/glass/reinforced/plasma, -/area/station/engineering/supermatter/room) -"gHk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/security/warden) +"fEg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/port/fore) +"fEj" = ( /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"gHr" = ( -/turf/closed/wall/r_wall, -/area/station/security/processing) -"gHx" = ( -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"gHL" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/directional/west{ - c_tag = "Science Ordnance Test Lab"; - network = list("ss13","rd") - }, -/obj/item/assembly/prox_sensor{ - pixel_y = 2 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 9; - pixel_y = -2 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/machinery/requests_console/directional/west{ - department = "Ordnance Test Range"; - name = "Test Range Requests Console" + dir = 4 }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/binoculars{ - pixel_x = -5; - pixel_y = -10 +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage" }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"gHN" = ( -/turf/closed/wall, -/area/station/medical/chemistry/minisat) -"gHQ" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "chem-passthrough" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"gHS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/medical/storage) +"fEu" = ( +/obj/effect/turf_decal/siding/yellow{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/breakroom) -"gHX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"gHZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gIb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"gIq" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 1 +/area/station/engineering/atmos/storage/gas) +"fEC" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Cell 6"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"fEE" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"gIw" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Robotics Lab" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/machinery/door/airlock{ + name = "Bar" }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/siding/white/corner{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"fEI" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/left/directional/north{ + name = "Monkey Pen"; + req_access = list("genetics") + }, +/mob/living/carbon/human/species/monkey, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/grass, +/area/station/science/genetics) +"fFa" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"gID" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/grille{ - spawn_loot_chance = 76 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"fFe" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"gIM" = ( -/obj/structure/cable, +/area/station/medical/chemistry) +"fFh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"fFj" = ( +/obj/structure/closet/l3closet/janitor, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/bot, +/obj/item/grenade/clusterbuster/cleaner, /obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"gIO" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/poster/random_official, -/obj/item/poster/random_official{ - pixel_y = 11 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/poster/random_official{ - pixel_y = 5 +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"fFs" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/components/tank/air/layer5{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/office) -"gIS" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"gIW" = ( -/obj/structure/cable, -/obj/structure/sign/warning/radiation/rad_area/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"gJg" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/window/spawner/directional/north, -/mob/living/basic/butterfly, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"gJA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"gJC" = ( -/obj/effect/turf_decal/siding/white{ +/area/station/hallway/secondary/entry) +"fFE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"gJE" = ( -/obj/machinery/door/poddoor/shutters{ - id = "maintbridge" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gJL" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/closet, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gJP" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/mapping_helpers/mail_sorting/service/hop_office, -/obj/structure/disposalpipe/sorting/mail/flip{ +/area/station/maintenance/starboard) +"fFH" = ( +/obj/structure/chair/sofa/right/brown, +/obj/effect/landmark/start/psychologist, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"fFK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/arrows/red{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"gJS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chapel_shutters_parlour"; - name = "Chapel Shutters" +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/closet/crate{ + icon_state = "crateopen" }, +/obj/item/stock_parts/capacitor, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/service/chapel/funeral) -"gKt" = ( -/turf/closed/wall/r_wall, -/area/station/science/auxlab/firing_range) -"gKu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"gKM" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/area/station/maintenance/port/greater) +"fFW" = ( +/obj/structure/easel, +/obj/item/canvas/nineteen_nineteen, +/obj/item/canvas/twentythree_nineteen, +/obj/item/canvas/twentythree_twentythree, +/obj/machinery/light/small/directional/west, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/engineering/atmos/mix) -"gKS" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/turf_decal/stripes/end{ +/turf/open/floor/iron/dark, +/area/station/commons/storage/art) +"fGu" = ( +/turf/closed/wall, +/area/station/security/checkpoint/engineering) +"fGz" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gLp" = ( -/obj/structure/closet/secure_closet/personal, +/area/station/maintenance/port/lesser) +"fGC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/delivery, -/obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, -/area/station/commons/locker) -"gLq" = ( -/obj/structure/rack, -/obj/item/food/cheesiehonkers, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gLw" = ( -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/area/station/security/evidence) +"fGI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"gLD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/engineering/atmospherics_portable, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/maintenance/central/greater) -"gLE" = ( -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"gLJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/area/station/cargo/office) +"fGM" = ( +/obj/machinery/door/airlock/external{ + name = "Departure Shuttle Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"gLK" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/area/station/hallway/secondary/exit/departure_lounge) +"fGQ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 }, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box{ - pixel_x = -2; - pixel_y = 2 +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/iv_drip, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"fHj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"gLY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8; - pixel_x = -2 - }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"fHw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/trash/bucket, +/obj/effect/spawner/random/trash/janitor_supplies, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"fHH" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"gLZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ +/obj/machinery/computer/atmos_control/plasma_tank{ dir = 1 }, -/area/station/command/corporate_dock) -"gMk" = ( -/turf/open/misc/asteroid, -/area/station/asteroid) -"gMr" = ( -/obj/structure/railing/corner{ - dir = 1 +/obj/effect/turf_decal/tile/purple/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"fHZ" = ( +/obj/structure/table, +/obj/item/assembly/signaler{ + pixel_x = -2; + pixel_y = -2 }, -/obj/structure/broken_flooring/pile{ - dir = 8 +/obj/item/assembly/signaler{ + pixel_x = -8; + pixel_y = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gMy" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect"; - name = "Security Shutters" +/obj/item/assembly/signaler{ + pixel_y = 8 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"gME" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/raw_anomaly_core/random{ - pixel_x = -5; - pixel_y = 7 +/obj/item/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 }, -/obj/item/raw_anomaly_core/random, -/obj/item/raw_anomaly_core/random{ - pixel_x = 7; - pixel_y = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"gMH" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"fIl" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"gMK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"gNd" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gNo" = ( -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/starboard) +"fIn" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/flora/grass/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"fIu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"gNB" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/checker{ +/obj/machinery/atmospherics/components/binary/valve/digital{ dir = 4 }, -/area/station/engineering/atmos/mix) -"gNP" = ( -/obj/machinery/computer/records/security{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"fIw" = ( +/obj/machinery/libraryscanner, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"fIx" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/camera/directional/west{ + c_tag = "Library"; + name = "library camera" }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/turf/open/floor/wood, +/area/station/service/library) +"fIB" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"gNR" = ( -/obj/effect/turf_decal/arrows{ - dir = 4; - pixel_x = -15 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/analyzer{ + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths. Shifted slightly right."; + pixel_x = 6; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/mix) -"gNT" = ( -/obj/structure/table/reinforced, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/screwdriver{ - pixel_x = -2; - pixel_y = 6 +/obj/item/stock_parts/subspace/analyzer{ + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths. Shifted slightly right."; + pixel_x = 6; + pixel_y = 4 }, -/obj/machinery/airalarm/directional/south, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/item/stock_parts/subspace/analyzer{ + desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths. Shifted slightly right."; + pixel_x = 6; + pixel_y = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"fII" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/area/station/medical/pharmacy) -"gNV" = ( -/turf/closed/wall/r_wall, -/area/station/command/vault) -"gNZ" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"fIP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/office{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"gOc" = ( -/turf/open/openspace, -/area/station/science/lobby) -"gOs" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, -/area/station/science/research) -"gOB" = ( -/obj/item/radio/intercom/directional/north, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"gOY" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance) -"gPk" = ( +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"fIR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"gPn" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"gPI" = ( -/obj/structure/railing/corner/end{ +/area/station/hallway/primary/starboard) +"fJo" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/effect/turf_decal/box, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"fJq" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/structure/table, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"fJr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"fJs" = ( +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"gPZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/area/station/security/processing) +"fJv" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm/directional/south, +/obj/machinery/fax{ + fax_name = "Captain's Office"; + name = "Captain's Fax Machine" }, -/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"fJz" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/office) -"gQe" = ( -/obj/structure/lattice, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"fJR" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"gQq" = ( -/turf/open/openspace, -/area/station/science/xenobiology) -"gQs" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "aisat" +/turf/open/floor/iron/dark, +/area/station/science/lab) +"fKf" = ( +/obj/machinery/chem_heater/withbuffer{ + pixel_x = 6 }, -/obj/machinery/holopad, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"gQt" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin6"; - name = "Cabin 2" +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood/end, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"gQK" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"gQL" = ( -/obj/structure/sign/warning/directional/west, -/turf/closed/wall/rust, -/area/station/medical/chemistry/minisat) -"gRp" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"fKg" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gRq" = ( -/obj/structure/cable/layer3, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"gRA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"gRG" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/engine, +/obj/item/gps, +/obj/effect/turf_decal/bot, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"gRL" = ( -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"gRO" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"fKi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"gSr" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/sink/kitchen/directional/north, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"gSw" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"fKl" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, /obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/mix) -"gSD" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"gSI" = ( -/obj/machinery/suit_storage_unit/cmo, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"gSJ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"gTe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"fKs" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/cell_10k, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"gTf" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_x = -1; - pixel_y = 8 - }, -/obj/item/swab{ - pixel_x = 15 - }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"gTh" = ( -/obj/structure/table/wood, -/obj/item/gift, -/turf/open/floor/wood, -/area/station/commons/lounge) -"gTA" = ( -/obj/structure/railing, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/white, -/area/station/science/research) -"gTI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"fKx" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/disposal/delivery_chute{ + dir = 8 }, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/radio/intercom/directional/east, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"gTM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" +/area/station/cargo/sorting) +"fKA" = ( +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"fKD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "engine" }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"fKJ" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"fKS" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"fLd" = ( +/obj/structure/sign/warning/electric_shock/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/multilayer/connected, +/obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, +/area/station/ai/satellite/maintenance/storage) +"fLo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, /area/station/cargo/storage) -"gTS" = ( -/obj/machinery/door/poddoor/shutters{ - id = "warehouse"; - name = "Warehouse Shutters" - }, -/obj/effect/decal/cleanable/dirt/dust, +"fLu" = ( +/obj/effect/decal/cleanable/ash, /turf/open/floor/iron, -/area/station/cargo/warehouse) -"gTU" = ( -/obj/docking_port/stationary{ - dheight = 4; - dwidth = 4; - height = 9; - name = "Aux Base Zone"; - roundstart_template = /datum/map_template/shuttle/aux_base/default; - shuttle_id = "aux_base_zone"; - width = 9 +/area/station/maintenance/disposal/incinerator) +"fLv" = ( +/turf/open/floor/glass, +/area/station/service/hydroponics) +"fLx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"gTV" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/engineering/break_room) -"gTY" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"gUa" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/structure/window/spawner/directional/north, -/obj/item/mod/construction/broken_core, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"gUq" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/table, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"gUs" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/turf/open/floor/iron, +/area/station/command/teleporter) +"fLy" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + name = "Command Maintenance" }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"gUu" = ( -/obj/effect/turf_decal/tile/blue{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/north{ - name = "Hydroponics shutters"; - id = "hydroponics_shutters" +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/central) +"fLD" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/power/terminal{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"gUv" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"gUB" = ( -/obj/structure/railing, -/obj/structure/table/wood/fancy/blue, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 10 +/obj/machinery/camera/directional/south{ + c_tag = "Starboard Bow Solar"; + name = "engineering camera"; + network = list("ss13","engine") }, -/area/station/command/meeting_room) -"gUY" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"fLH" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/air_sensor/ordnance_burn_chamber, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"fLZ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"gUZ" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"fMn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"gVe" = ( -/obj/structure/chair/stool/directional/east, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"gVi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/station/science/xenobiology) -"gVn" = ( -/obj/machinery/light/cold/dim/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"fMs" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gVx" = ( -/obj/machinery/atmospherics/components/unary/thermomachine{ - dir = 4; - initialize_directions = 4 +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/command/bridge) +"fMF" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Atmospherics Tank - Plasma"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/turf/open/floor/iron/textured, +/turf/open/floor/engine/plasma, /area/station/engineering/atmos) -"gVC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"fML" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/camera/motion/directional/south{ - c_tag = "Secure Technical Storage" - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/storage/tech) -"gVN" = ( -/obj/effect/turf_decal/stripes/asteroid/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"gVW" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"gWe" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"gWo" = ( -/obj/structure/closet/cardboard/metal, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"gWr" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/sign/warning/directional/west, -/obj/structure/railing/corner, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"gWG" = ( /obj/structure/cable, -/obj/machinery/door/airlock/security/glass{ - name = "Permabrig" - }, /turf/open/floor/plating, -/area/station/security/prison/garden) -"gWO" = ( +/area/station/maintenance/starboard) +"fNe" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"fNw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"gWX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"gXh" = ( -/obj/machinery/portable_atmospherics/canister, +/obj/structure/sign/departments/security/directional/south, +/obj/effect/turf_decal/box, +/obj/vehicle/ridden/secway, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"fNy" = ( +/obj/structure/flora/grass/jungle/b/style_random, /turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"gXo" = ( -/obj/effect/landmark/start/quartermaster, -/obj/structure/chair/comfy/black{ - dir = 1 +/area/station/maintenance/port/lesser) +"fNG" = ( +/obj/machinery/light/directional/north, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"gXw" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/security/courtroom) +"fNT" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/item/assembly/signaler{ - pixel_x = 6; - pixel_y = 5 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/item/assembly/signaler{ - pixel_x = -2; - pixel_y = -2 +/area/station/hallway/primary/central/fore) +"fOd" = ( +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199" }, -/obj/item/assembly/signaler{ - pixel_x = -8; - pixel_y = 5 +/obj/effect/turf_decal/bot, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = 5 }, -/obj/item/assembly/signaler{ - pixel_y = 8 +/obj/machinery/light_switch/directional/west{ + pixel_x = -22; + pixel_y = -6 }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/airalarm/directional/north, +/obj/item/radio/intercom/directional/west{ + pixel_x = -28; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"gXy" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/wrench/medical, -/obj/machinery/light/cold/dim/directional/west, -/obj/machinery/vitals_reader/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gYh" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/pharmacy) -"gYt" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gYH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/area/station/service/bar) +"fOt" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"gYI" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/stripes/white/line{ dir = 8 }, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"gYM" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"gYO" = ( -/obj/machinery/door/airlock/command{ - name = "Corporate Showroom" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, +/area/station/medical/morgue) +"fOu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"gYP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"gYT" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"gYW" = ( -/turf/closed/wall, -/area/station/maintenance/central/greater) -"gYY" = ( -/turf/closed/wall/r_wall, -/area/station/science/genetics) -"gZc" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics Tank - Air" +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"gZe" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"fOv" = ( +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/security/execution/transfer) -"gZk" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/interrogation) -"gZs" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/machinery/status_display/supply{ - pixel_y = 32 - }, +/area/station/commons/fitness/recreation) +"fOH" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"fOI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"fOX" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/cargo/storage) -"gZt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"gZv" = ( -/obj/structure/closet/secure_closet{ - req_access = list("brig") +"fPc" = ( +/obj/item/kirbyplants/organic/plant18, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/security/brig) -"gZA" = ( -/obj/machinery/component_printer, -/turf/open/floor/iron/white, -/area/station/science/explab) -"gZE" = ( -/obj/effect/landmark/start/depsec/science, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/trunk/multiz/down{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"fPh" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"gZF" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"gZI" = ( -/obj/structure/dresser, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"haa" = ( -/obj/structure/ladder{ - icon_state = "ladder10" - }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"hab" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"haf" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/structure/sign/directions/lavaland/directional/south{ + dir = 8 }, -/obj/machinery/button/door/directional/south{ - id = "gateshutter"; - name = "Gateway Shutter Control"; - req_access = list("command") +/obj/structure/sign/directions/supply/directional/south{ + pixel_y = -24; + dir = 8 }, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/iron/stairs/left{ dir = 4 }, -/area/station/command/gateway) -"hak" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"hav" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/half/contrasted{ +/area/station/hallway/primary/fore) +"fPp" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/reagent_containers/cup/glass/coffee, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"haC" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 5 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/structure/railing/corner{ - dir = 8 +/turf/open/floor/iron/dark/corner{ + dir = 4 }, +/area/station/hallway/primary/central/fore) +"fPs" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"haF" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"haH" = ( -/obj/machinery/door/poddoor/shutters{ - id = "secmechbay"; - name = "Security Mech Bay Shutters" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, -/obj/machinery/button/door/directional/west{ - id = "secmechbay"; - name = "Security Mech Garage Door Controls"; - req_access = list("security") +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"fPN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"fPP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"hbb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/stripes/corner, +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"fPQ" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/latex, +/obj/item/healthanalyzer, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -3; + pixel_y = 2 }, -/obj/structure/railing{ - dir = 5 +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 5; + pixel_y = -1 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"hbf" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/storage/primary) -"hbh" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 + dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"fQb" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"fQf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"fQg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security) -"hbk" = ( -/obj/effect/turf_decal/sand/plating, +/area/station/cargo/office) +"fQr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/mess, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"fQx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hbo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"hbq" = ( -/obj/item/extinguisher, +/area/station/maintenance/starboard/fore) +"fQF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/sign/warning/vacuum/external/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"fQM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"hbr" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 +/obj/effect/turf_decal/siding/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"fQO" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "permaouter"; + name = "Permabrig Transfer" }, -/obj/effect/decal/cleanable/blood/tracks, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"hbw" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/security/prison/garden) -"hbG" = ( -/obj/structure/sign/warning/radiation/rad_area/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/duct, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"fRf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/main) -"hbH" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"hbM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - id = "court" +/area/station/cargo/warehouse) +"fRp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sink/kitchen/directional/south{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/security/courtroom) -"hbQ" = ( -/obj/structure/table/wood, -/obj/item/clothing/under/costume/maid, -/obj/item/clothing/head/costume/kitty, -/obj/item/clothing/neck/petcollar, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hbV" = ( +/area/station/maintenance/starboard) +"fRt" = ( +/obj/machinery/door/airlock/external{ + name = "Science Escape Pod"; + space_dir = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"hce" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/starboard) +"fRw" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"hcm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, -/area/station/service/theater) -"hcp" = ( -/obj/structure/closet/crate, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/item/stock_parts/servo, -/obj/item/stock_parts/servo, -/obj/item/stock_parts/servo, -/obj/item/stock_parts/servo, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/capacitor, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"hcQ" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 8 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"fRz" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/screwdriver{ + pixel_y = 16 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"fRP" = ( +/obj/structure/chair{ dir = 8 }, -/obj/machinery/recharger{ - pixel_x = 12 - }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/security/office) -"hdd" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/security/interrogation) +"fRS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/temperature_gate{ - dir = 1; - inverted = 1; - target_temperature = 1000 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos) -"hdh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"hdq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/warden) -"hdD" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"fSa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"hdK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/obj/machinery/newscaster/directional/west, -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"hdN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"fSt" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/storage_shared) +"fSC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Arrivals Dock" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"fSD" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hdO" = ( -/obj/structure/chair/plastic{ - dir = 8 +/area/ruin/space/has_grav/abandoned_warehouse) +"fSE" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/rack, +/obj/item/pipe_dispenser, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 10; + pixel_x = -2; + pixel_y = 2 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"hed" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"hef" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron, -/area/station/service/janitor) -"heh" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"hen" = ( -/turf/open/space/openspace, -/area/space/nearstation) -"hep" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"heu" = ( -/turf/open/floor/iron, -/area/station/security/prison) -"hex" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/iron/dark, +/area/station/construction/mining/aux_base) +"fSK" = ( +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"heC" = ( -/obj/item/cultivator, -/obj/item/hatchet, -/obj/item/paper/guides/jobs/hydroponics, -/obj/effect/spawner/random/entertainment/coin{ - spawn_loot_count = 2; - spawn_random_offset = 4 +/obj/item/pen, +/obj/item/stamp/head/cmo{ + pixel_x = 8; + pixel_y = 20 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/wood, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"heP" = ( -/obj/structure/cable, +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"fSS" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ +/obj/structure/disposalpipe/segment{ dir = 9 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"heZ" = ( -/obj/structure/railing{ - dir = 1 +/area/station/maintenance/fore) +"fST" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"fSW" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/restraints/legcuffs/beartrap, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"fSY" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hfd" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/area/station/hallway/primary/fore) +"fSZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"fTr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/engineering/atmos) -"hfm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"fTQ" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/evidence, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"hfn" = ( -/obj/structure/chair/office{ +/area/station/security/processing) +"fTW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/clothing/under/costume/lobster, +/obj/item/clothing/head/costume/lobsterhat, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/obj/machinery/light/small/broken/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"hfp" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"hfv" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/trash/chips, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"hfx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"hfB" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/fullgrass/style_random, -/turf/open/floor/grass, -/area/station/science/research) -"hfD" = ( -/obj/structure/flora/coconuts, -/turf/open/floor/grass, -/area/station/science/genetics) -"hfH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"hfS" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin5"; - name = "Cabin 3" +/obj/effect/spawner/random/clothing/costume, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood/end, +/turf/open/floor/iron, +/area/station/service/theater) +"fUf" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"hfU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes{ +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"fUp" = ( +/obj/machinery/chem_heater/withbuffer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hfV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"hgi" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/medical/chemistry) +"fUP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hgl" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hgA" = ( -/obj/structure/broken_flooring/pile{ +/obj/machinery/duct, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"fUQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/warning/vacuum/external/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"fUZ" = ( +/obj/structure/noticeboard/directional/west, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/crowbar/large, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hgB" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/crude, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/plating, -/area/station/science/lobby) -"hgN" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/machinery/camera/directional/west{ + c_tag = "Hydroponcis Fore"; + name = "hydroponics camera" }, -/area/station/maintenance/radshelter/medical) -"hgS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +/turf/open/floor/iron, +/area/station/service/hydroponics) +"fVj" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Docking Hallway" }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hgV" = ( -/obj/structure/lattice, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"hgX" = ( -/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"hhd" = ( -/obj/machinery/door/poddoor/shutters{ +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = 24 + }, +/obj/structure/sign/directions/science{ dir = 1; - id = "ordauxgarage" + pixel_y = 40 }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ - dir = 8 +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_y = 32 }, -/turf/open/floor/plating, -/area/station/science/ordnance) -"hhC" = ( -/obj/structure/railing{ - dir = 5 +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"fVl" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "N2 to Pure" }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"fVB" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/shieldgen, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/west{ + c_tag = "Secure Storage"; + name = "engineering camera"; + network = list("ss13","engine") }, -/area/station/command/meeting_room) -"hhU" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/broken_flooring/side/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"fVF" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hhX" = ( -/turf/open/space/openspace, -/area/space) -"hhZ" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"hii" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect3"; - name = "Security Shutters" - }, -/obj/effect/turf_decal/caution/stand_clear{ +/area/station/medical/medbay/central) +"fVJ" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"his" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, -/obj/machinery/light/small/directional/west, -/turf/open/misc/asteroid, -/area/station/asteroid) -"hiO" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency, -/obj/effect/spawner/random/maintenance/three, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"hiW" = ( -/obj/structure/chair{ - dir = 1 +/area/station/hallway/primary/fore) +"fVM" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/l3closet/scientist, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/extinguisher, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"hjo" = ( -/obj/effect/turf_decal/arrows{ - dir = 8; - pixel_x = 7 +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"fWk" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 }, /obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"fWq" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"fWB" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/rnd/production/techfab/department/service, +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"hjI" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"hjJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/digital_clock/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hjU" = ( -/obj/structure/table, -/obj/item/toy/plush/pkplush, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"hjW" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/bottle/epinephrine{ - pixel_x = -4; - pixel_y = 12 - }, -/obj/item/reagent_containers/cup/bottle/multiver{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/reagent_containers/dropper, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white/smooth_edge{ +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"fWK" = ( +/obj/machinery/cryo_cell, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"fWL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"fWX" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/area/station/medical/pharmacy) -"hkc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hkd" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"fXm" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/storage/medkit/regular, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"fXy" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/yjunction, -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/turf/open/floor/iron/half, -/area/station/service/hydroponics/garden) -"hkm" = ( -/obj/machinery/door/airlock/medical, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hkt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/comfy/black, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"hle" = ( -/obj/machinery/light/directional/south, -/obj/structure/table/glass, -/obj/item/stack/sheet/glass, -/obj/item/assembly/timer, -/obj/effect/turf_decal/tile/purple/half/contrasted, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 6 }, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hlh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"fXL" = ( +/turf/closed/wall/rust, +/area/station/service/chapel/office) +"fXQ" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"hli" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Xenobiology Maintenance" +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/engine) +"fXS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "E.V.A. Storage" }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"hln" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue{ +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/landmark/navigate_destination/eva, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"fXZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"hls" = ( -/obj/structure/training_machine, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"hlF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/paper/guides/jobs/medical/morgue, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"fYh" = ( +/turf/closed/wall/r_wall, +/area/station/command/bridge) +"fYs" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage"; + name = "trash belt" + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hmb" = ( -/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hmg" = ( -/obj/machinery/requests_console/directional/north{ - department = "Bar"; - name = "Bar Requests Console" +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"fYw" = ( +/turf/closed/wall/r_wall, +/area/station/medical/surgery/theatre) +"fYy" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/mineral/random/labormineral, +/area/space/nearstation) +"fYU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/depsec/medical, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/item/radio/intercom/directional/west, -/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/computer/security/telescreen/med_sec/directional/south, /turf/open/floor/iron/dark, -/area/station/service/bar) -"hmj" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/sheet/iron{ - amount = 30 - }, -/obj/item/radio{ - pixel_x = -5; - pixel_y = 5 +/area/station/security/checkpoint/medical) +"fZk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/item/stack/cable_coil, -/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"hmk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/office{ - dir = 1; - name = "grimy chair" +/area/station/hallway/primary/aft) +"fZy" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"hms" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"hmv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/command/bridge) +"fZz" = ( /obj/structure/cable, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"hmw" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"hmz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"gab" = ( +/obj/machinery/computer/atmos_control/nocontrol/incinerator{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"hmA" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"gao" = ( +/obj/machinery/door/airlock/research{ + name = "Testing Lab" }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hmF" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/food_or_drink/booze{ - spawn_random_offset = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"gau" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hmG" = ( +/area/ruin/space/has_grav/abandoned_warehouse) +"gaE" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"gaR" = ( +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/white/line{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"gba" = ( +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/north{ + pixel_x = -4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/machinery/research/anomaly_refinery, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"hna" = ( +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) +"gbd" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"hnh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/sink/directional/east, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/structure/sign/poster/official/cleanliness/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"gbf" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/medical/break_room) +"gbh" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"hnu" = ( -/obj/structure/cable, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"gbk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"hnw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/warden) -"hny" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/tile/neutral{ +/area/station/medical/medbay/central) +"gbp" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hnE" = ( -/obj/machinery/door/airlock/external{ - id_tag = "cap_ext" +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/turf_decal/stripes/end{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "capspace" - }, -/obj/machinery/button/door/directional/north{ - id = "cap_ext"; - name = "bolt control"; - specialfunctions = 4 - }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"hnJ" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Lethal Armaments" +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"gbs" = ( +/obj/effect/spawner/random/trash/moisture_trap, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"gbB" = ( +/obj/item/disk/computer/medical, +/obj/item/disk/computer/medical, +/obj/item/disk/computer/medical, +/obj/item/clothing/neck/stethoscope{ + pixel_y = 5 + }, +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"gbF" = ( +/obj/machinery/door/poddoor/preopen{ + id = "gravity"; + name = "Gravity Generator Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/button/door/directional/north{ + id = "gravity"; + name = "Gravity Generator Lockdown"; + req_one_access = list("command","tech_storage") }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/armory) -"hnL" = ( -/obj/structure/tank_holder/extinguisher, -/obj/machinery/light/small/dim/directional/south, -/obj/effect/turf_decal/stripes{ - dir = 1 +/area/station/maintenance/starboard/aft) +"gbO" = ( +/obj/structure/table/wood, +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 9 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/ai/satellite/foyer) -"hnY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/obj/item/storage/box/matches{ + pixel_x = -1; + pixel_y = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"hoe" = ( -/obj/machinery/conveyor/auto{ - dir = 8; - id = "bridgedeliver" +/obj/item/lighter{ + pixel_x = 2 }, -/obj/structure/transit_tube/crossing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"hon" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/item/lighter{ + pixel_x = 8; + pixel_y = 4 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/door/firedoor, +/turf/open/floor/wood, +/area/station/service/bar) +"gbU" = ( +/obj/effect/turf_decal/bot, +/obj/structure/frame/computer{ + anchored = 1 }, -/area/station/engineering/atmos) -"hov" = ( -/turf/closed/wall, -/area/station/commons/storage/tools) -"hoD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hoX" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"gbY" = ( +/obj/effect/turf_decal/bot/left, +/obj/effect/decal/cleanable/ash, /turf/open/floor/iron, -/area/station/cargo/storage) -"hpb" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/maintenance/disposal/incinerator) +"gcp" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/monkey_recycler, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/wood{ +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"gcq" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"gcy" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"gcL" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"gdA" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"hpB" = ( -/obj/structure/sign/directions/medical/directional/east{ - dir = 8; - pixel_y = 8; - pixel_x = 0 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/structure/sign/directions/engineering/directional/east{ - pixel_x = 0 +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"gdI" = ( +/obj/structure/chair/pew{ + dir = 8 }, -/obj/structure/sign/directions/evac/directional/east{ - pixel_y = -8; - pixel_x = 0 +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/chapel{ + dir = 8 }, -/turf/closed/wall, -/area/station/hallway/primary/central) -"hpT" = ( -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Office" +/area/station/service/chapel) +"gdL" = ( +/obj/machinery/door/airlock/grunge{ + id_tag = "Cabin_3"; + name = "Cabin 3" }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"gdP" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"hpV" = ( -/turf/open/floor/iron, -/area/station/security/office) -"hqd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"hqg" = ( -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"hqk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/noticeboard/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Detective's Office"; + name = "detective camera" }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"hqw" = ( -/obj/structure/cable, -/turf/open/floor/carpet, +/turf/open/floor/wood, /area/station/security/detectives_office) -"hqz" = ( -/obj/effect/turf_decal/tile/neutral, +"gel" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hqF" = ( -/obj/machinery/conveyor/auto/inverted{ - dir = 6; - id = "bridgedeliver" - }, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"hqN" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/bed, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/item/bedsheet, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/security/medical) -"hqO" = ( -/obj/effect/turf_decal/trimline/yellow/arrow_cw{ - dir = 1 +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"gev" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"hrg" = ( -/obj/structure/broken_flooring/singular{ +/area/station/engineering/hallway) +"gey" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hri" = ( -/obj/machinery/mech_bay_recharge_port{ +/obj/structure/cable, +/obj/structure/disposalpipe/junction/yjunction{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"hrk" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Three"; - space_dir = 8 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/landmark/navigate_destination/dockescpod3, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hrm" = ( -/obj/structure/toilet{ +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"geE" = ( +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32; - spawn_loot_chance = 50 - }, -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/button/door/directional/west{ - id = "u4"; - name = "privacy bolt control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"hro" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 10 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"geO" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"hrp" = ( -/obj/structure/closet/crate{ - name = "Surplus Communications Parts" - }, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"hru" = ( -/obj/effect/landmark/start/coroner, -/obj/effect/turf_decal/trimline/neutral/filled/warning{ +/obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/machinery/door_buttons/airlock_controller{ + idExterior = "virology_airlock_exterior"; + idInterior = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = 24; + pixel_y = -24; + req_access = list("virology") }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"hrI" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"hrM" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "capshut" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/captain/private) -"hrO" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"hsb" = ( -/obj/structure/cable/multilayer/multiz, -/obj/item/assembly/mousetrap/armed, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) -"hsj" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"geV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"hso" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, /obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"gfc" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"gfe" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_y = 24 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hsz" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"hsB" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"gfi" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"hsE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"gfz" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"gfD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 }, /obj/structure/cable, -/obj/effect/turf_decal/tile/green/half{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"gfT" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/directional/west, +/obj/machinery/computer/atmos_control/ordnancemix{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"hsW" = ( -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"htb" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"htf" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"hth" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"ggb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"ggj" = ( +/obj/structure/chair/pew/left{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security) -"htw" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"htJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet, +/turf/open/floor/iron/chapel, /area/station/service/chapel) -"htN" = ( -/obj/structure/chair/office{ +"ggF" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/station_alert, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"ggI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"htV" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"hue" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/closet/masks, -/obj/structure/window/spawner/directional/west, -/obj/machinery/light/directional/north, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"huj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hun" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/item/radio/intercom/directional/north, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/library) -"huv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hux" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/area/station/science) +"ggS" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance) +"ggZ" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/engineering/main) -"huy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/machinery/computer/mecha{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"huK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"huX" = ( -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"ghl" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/item/radio/intercom/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"hvj" = ( -/obj/effect/decal/cleanable/blood/old{ - icon_state = "gib1-old" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"hvl" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"hvw" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hvA" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-78" - }, -/obj/effect/spawner/random/structure/closet_empty/crate, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"hvD" = ( -/obj/structure/broken_flooring/pile{ +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"ghp" = ( /obj/structure/cable, -/obj/structure/sign/poster/contraband/random/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"ght" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"hvL" = ( -/obj/effect/turf_decal/siding/white{ +/area/station/maintenance/disposal) +"ghO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/nanotrasen{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"hvQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"hvR" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/paper_bin/construction{ - pixel_y = 6 - }, -/obj/item/pen, -/obj/item/toy/talking/ai{ - pixel_x = 18; - pixel_y = 8 +/area/station/hallway/primary/starboard) +"ghX" = ( +/obj/item/clipboard, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"hvT" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/item/folder/blue, +/obj/structure/table/reinforced/rglass, +/obj/item/folder/white{ + pixel_x = -8; + pixel_y = 3 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hvV" = ( -/obj/machinery/nuclearbomb/selfdestruct, -/turf/open/floor/iron/dark, -/area/station/command/vault) -"hwb" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"hwc" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/command/bridge) -"hwi" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"hwk" = ( -/obj/machinery/duct, -/obj/machinery/door/airlock{ - name = "Kitchen" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/item/clothing/glasses/hud/health, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"gii" = ( /obj/structure/cable, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/service/kitchen) -"hwM" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 +/obj/structure/sign/plaques/kiddie{ + pixel_y = -32 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"hwP" = ( -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"hwW" = ( -/obj/structure/chair/stool/directional/east, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"hxg" = ( -/obj/machinery/netpod, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/cable, -/obj/structure/sign/poster/contraband/space_cola/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"hxs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"hxB" = ( -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"gij" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Wing" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "perma-entrance" + cycle_id = "brig-entrance-left" }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"hye" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/plating, -/area/station/science/xenobiology) -"hyk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ +/area/station/security/execution/transfer) +"gin" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/science/xenobiology) -"hyp" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Storage" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"hyL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hyM" = ( -/obj/structure/closet, -/obj/item/food/grown/banana, -/obj/item/food/grown/banana, -/obj/item/food/grown/banana, -/obj/item/food/grown/banana, -/obj/item/food/grown/banana, -/turf/open/misc/asteroid, -/area/station/asteroid) -"hyS" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"hyX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"hzn" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"hzx" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/closet/secure_closet/injection{ - name = "educational injections locker" - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/button/flasher{ - id = "executionflash"; - pixel_y = 32; - dir = 1 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"hzF" = ( -/turf/closed/wall, -/area/station/hallway/secondary/exit/departure_lounge) -"hAa" = ( -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"hAd" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/security/office) -"hAg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/maintenance/disposal/incinerator) +"gip" = ( +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"hAs" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/atmos) -"hAx" = ( -/obj/effect/decal/cleanable/blood/splatter/over_window, -/turf/closed/wall, -/area/station/science/lobby) -"hAA" = ( -/obj/structure/chair/sofa/corp/right{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - name = "couch" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"hAL" = ( +/area/station/hallway/primary/aft) +"gix" = ( +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"hAS" = ( -/obj/machinery/hydroponics/soil, -/obj/effect/decal/cleanable/dirt, -/obj/item/cultivator/rake, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"hAV" = ( -/obj/structure/table/wood, -/obj/item/flashlight/flare/candle{ - pixel_x = 1; - pixel_y = 10 - }, -/turf/open/floor/iron/chapel{ +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/aft) +"giA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/area/station/service/chapel) -"hBf" = ( /turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"hBi" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 +/area/station/engineering/storage/tech) +"giG" = ( +/obj/machinery/light/directional/east, +/obj/structure/closet/bombcloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"hBF" = ( -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"hBQ" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, /area/station/science/lobby) -"hBX" = ( -/obj/machinery/computer/records/security, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 8 +"giH" = ( +/obj/structure/sign/poster/official/help_others, +/turf/closed/wall/r_wall/rust, +/area/station/security/prison/shower) +"giJ" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"hBZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"hCb" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/engine/cult, -/area/station/service/library) -"hCc" = ( +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"giT" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"hCs" = ( -/turf/closed/wall, -/area/station/service/hydroponics) -"hCt" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Departure Lounge Security Post" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"giU" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"hCv" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/hallway/primary/central) -"hCJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/area/station/engineering/atmos/storage/gas) +"gjc" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"gjg" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"gjv" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"gjx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hCK" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/service/bar) -"hCN" = ( /obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"gjD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hCR" = ( -/obj/machinery/door/airlock/medical{ - name = "Chemical Storage" - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" - }, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/medical/pharmacy) -"hCS" = ( -/turf/closed/wall, -/area/station/cargo/warehouse) -"hCT" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hDo" = ( -/turf/closed/wall/r_wall, -/area/station/security/evidence) -"hDJ" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "ordauxgarage" - }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ +/area/station/construction/mining/aux_base) +"gjF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/science/ordnance) -"hDK" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hDV" = ( -/obj/effect/turf_decal/tile/yellow/diagonal_centre, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"hDX" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/flashlight/lantern{ - pixel_y = 7 - }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"gjL" = ( +/obj/structure/railing{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"hEi" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/rd) -"hEu" = ( -/obj/structure/chair/wood{ - dir = 1 +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ + dir = 4 }, -/obj/effect/landmark/start/mime, -/turf/open/floor/carpet, -/area/station/service/theater) -"hED" = ( -/turf/closed/wall/r_wall, -/area/station/security/armory) -"hEI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"gjP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/window/right/directional/south{ + name = "Cargo Disposal"; + req_access = list("shipping") + }, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 6 }, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/security/breakroom) -"hER" = ( -/obj/structure/railing, +/area/station/cargo/sorting) +"gka" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable/multilayer/multiz, +/obj/structure/sign/poster/random/directional/east, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"hEV" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/department/bridge) +"gkb" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/command/vault) +"gkf" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/station/cargo/storage) +"gkr" = ( +/obj/machinery/vending/tool, +/obj/effect/turf_decal/delivery, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"hEX" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/iron, -/area/station/security/warden) -"hFa" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/tank/plasma, -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"hFz" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"hFA" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 - }, -/turf/open/misc/asteroid, -/area/station/maintenance/port/lesser) -"hFF" = ( -/obj/machinery/atmospherics/components/binary/pump, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hFN" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8 +/area/station/commons/storage/primary) +"gkv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"hFO" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/commons/dorms) -"hFY" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/science/robotics/lab) +"gkx" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hGh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/space/basic, +/area/space/nearstation) +"gkD" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/chapel{ - dir = 1 +/obj/structure/table, +/obj/machinery/status_display/ai/directional/north, +/obj/item/storage/toolbox/mechanical, +/obj/item/multitool, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/power/terminal{ + dir = 4 }, -/area/station/service/chapel) -"hGo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"gkW" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"hGB" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"hGC" = ( -/obj/structure/filingcabinet/white, -/obj/effect/turf_decal/bot_red, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"hGE" = ( +/area/station/hallway/primary/starboard) +"glo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/cable, +/obj/effect/spawner/random/decoration/carpet, +/turf/open/floor/iron, +/area/station/security/prison) +"glG" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/ai/satellite/interior) +"glI" = ( +/turf/closed/indestructible/opshuttle, +/area/station/science/ordnance/bomb) +"glX" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"glY" = ( /obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 + dir = 4 }, +/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"hGU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"hGV" = ( -/obj/structure/railing, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hGZ" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/light/small/dim/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/ai/satellite/maintenance/storage) -"hHa" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/button/door/directional/north{ - id = "secwarehouse"; - req_access = list("shipping") +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/hallway/primary/fore) +"gmb" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/closet/crate/preopen, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"hHj" = ( -/obj/effect/landmark/start/medical_doctor, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"gmj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/camera/directional/north{ + c_tag = "Hydroponics Storage"; + name = "hydroponics camera" }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"hHw" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/shower) -"hHx" = ( -/obj/machinery/drone_dispenser, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"gmn" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"gmo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"hHA" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/stairs/left{ - color = "#795C32"; - dir = 8 +"gmB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"gmG" = ( +/turf/closed/wall, +/area/station/maintenance/aft) +"gmJ" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"gne" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Docking Hallway" }, -/area/station/security/courtroom) -"hHF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/chair{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"gng" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall, +/area/station/commons/storage/primary) +"gnh" = ( +/turf/closed/wall/r_wall, +/area/station/service/chapel) +"gnp" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood/end, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, +/obj/machinery/status_display/evac/directional/west, +/obj/item/flashlight/lantern, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"gny" = ( +/obj/structure/cable, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"gnB" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"hHJ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"hHL" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"hHO" = ( +/area/station/cargo/storage) +"gnI" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" + }, +/obj/effect/turf_decal/bot, +/obj/item/book/manual/wiki/robotics_cyborgs, +/turf/open/floor/engine, +/area/station/science/auxlab) +"gnN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"hHS" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, +/obj/structure/chair/stool/directional/north, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) +"goc" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"hHW" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/engineering_guide{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 7; - pixel_y = 6 +/obj/machinery/door/window/left/directional/south{ + name = "Trash Chute"; + req_access = list("janitor") }, -/obj/item/clothing/head/utility/welding{ - pixel_y = 1 +/obj/machinery/conveyor_switch/oneway{ + dir = 4; + id = "garbage"; + name = "trash chute" }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"hHZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 5 +/obj/effect/turf_decal/loading_area, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/turf/open/space/openspace, -/area/space/nearstation) -"hIm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"hIq" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Reception" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/blue/filled/line, +/area/station/service/janitor) +"goh" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"goi" = ( +/obj/machinery/power/turbine/inlet_compressor, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"goj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron, +/area/station/security/prison) +"gos" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"gou" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"hIv" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/engineering/gravity_generator) +"goG" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"hIB" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/engineering/storage_shared) +"goY" = ( +/obj/structure/chair/pew/right{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/railing/corner, -/turf/open/floor/iron/dark/corner{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/area/station/engineering/atmos) -"hIV" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/siding/purple{ +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"gpe" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input{ dir = 1 }, -/obj/structure/window/spawner/directional/north, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"gpy" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"hJo" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hJs" = ( -/obj/machinery/conveyor/auto{ - dir = 8; - id = "bridgedeliver" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/security/glass{ + name = "Transferring Centre" }, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"hJU" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"gpz" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/station/maintenance/central) +"gpH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"hKv" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/machinery/light/cold/dim/directional/south, -/obj/machinery/vitals_reader/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"hKB" = ( -/obj/structure/stairs/south, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"hKM" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Prison Wing" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/warden) -"hKN" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"gpI" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/engine, /area/station/science/xenobiology) -"hKU" = ( -/obj/machinery/computer/exoscanner_control{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/station/cargo/drone_bay) -"hKX" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/locker) -"hLj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ +"gpL" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/plating/airless, +/area/station/engineering/supermatter/room) +"gpM" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hLq" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"hLw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"gpP" = ( +/obj/machinery/rnd/production/circuit_imprinter/department/science, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"hLA" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"hLG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"gpS" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"hLP" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd","xeno") +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/duct, +/obj/structure/railing/corner{ dir = 1 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"gqk" = ( +/obj/machinery/chem_heater/withbuffer, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/button/door/directional/north{ + id = "xeno1"; + name = "Creature Cell 1 Toggle"; + pixel_x = -24; + req_access = list("xenobiology") }, -/area/station/science/xenobiology) -"hLR" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/sink/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"hMa" = ( -/obj/structure/chair{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/restraints/handcuffs, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/light/dim/directional/south, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"hME" = ( -/turf/closed/wall, -/area/station/security/prison/work) -"hMM" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"hNg" = ( -/obj/structure/chair, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"hNh" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/bridge) -"hNC" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-4" +/area/station/science/xenobiology) +"gql" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"hNG" = ( -/obj/effect/turf_decal/siding/green, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/item/pen, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/west{ + name = "Hydroponics Desk"; + req_access = list("hydroponics") }, /turf/open/floor/iron, -/area/station/commons/storage/art) -"hNN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/area/station/service/hydroponics) +"gqn" = ( +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"gqz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"hNP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/airlock/research/glass{ - name = "Secure Pen" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"gqD" = ( /obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"hOa" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/science/auxlab/firing_range) -"hOb" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge" +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + name = "detective closet" }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/iron/dark/side, -/area/station/command/bridge) -"hOh" = ( -/obj/structure/table/glass, -/obj/item/folder/white{ +/obj/item/clothing/head/fedora{ pixel_x = 4; - pixel_y = -3 - }, -/obj/item/book/manual/wiki/infections, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 + pixel_y = 4 }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 2; - pixel_x = 3 +/obj/item/clothing/head/fedora{ + icon_state = "detective" }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"hOn" = ( -/obj/structure/closet/emcloset, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"hOD" = ( -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"hOR" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/stairs, -/area/station/command/heads_quarters/qm) -"hPb" = ( +/obj/item/clothing/suit/toggle/jacket/trenchcoat, +/obj/item/clothing/suit/toggle/jacket/det_trench/noir, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"gqR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"grq" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"hPg" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/command/teleporter) +"grs" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"hPk" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"hPs" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"hPw" = ( -/turf/open/floor/iron/stairs/right{ +/area/station/security/office) +"gry" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/station/maintenance/aft) +"grQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Satellite Antechamber" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ai-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/interior) +"grV" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/port/fore) +"gse" = ( +/obj/structure/chair/pew/left{ dir = 8 }, -/area/station/science/research) -"hPx" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/cup/bottle/welding_fuel{ - pixel_y = 7 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/obj/item/reagent_containers/cup/bottle/welding_fuel{ - pixel_x = -7 +/turf/open/floor/iron/chapel{ + dir = 1 }, -/obj/item/reagent_containers/cup/bottle/welding_fuel{ - pixel_x = 7 +/area/station/service/chapel) +"gsl" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 }, -/obj/machinery/light/cold/dim/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"hPF" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/spawner/random/contraband/prison, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/security/prison/safe) -"hPH" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hPP" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood, -/area/station/service/library) -"hPS" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"hPW" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"gsr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"hQg" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/exam_room) -"hQj" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"hQm" = ( -/turf/open/floor/iron/stairs/left{ +/area/station/medical/treatment_center) +"gsu" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/area/station/engineering/main) -"hQq" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/button/door/directional/north{ + id = "Skynet_launch"; + name = "Mech Bay Door Control"; + req_access = list("robotics") + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"hQu" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/spawner/random/maintenance, /turf/open/floor/iron, -/area/station/cargo/storage) -"hQy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hQA" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"hQD" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/stripes/line{ +/area/station/hallway/primary/central/fore) +"gsB" = ( +/obj/structure/table, +/obj/item/pipe_dispenser, +/obj/item/holosign_creator/atmos, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"hQE" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"gsO" = ( +/obj/effect/landmark/start/cargo_technician, +/obj/structure/chair/office{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hQF" = ( -/obj/structure/transit_tube/horizontal, -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"hQH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"hQJ" = ( -/obj/structure/cable, -/obj/machinery/newscaster/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"hQK" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"hQY" = ( -/obj/structure/table, -/obj/effect/spawner/random/bureaucracy/folder, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"hRd" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, +/area/station/cargo/office) +"gtj" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"hRh" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/tank_holder/extinguisher, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"hRl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"gtq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"hRo" = ( -/obj/structure/table, -/obj/item/storage/box/shipping, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"hRv" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/security/interrogation) -"hRB" = ( -/turf/closed/wall, -/area/station/service/bar) -"hRH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 +/area/station/hallway/primary/port) +"gtC" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" }, -/area/station/science/xenobiology/hallway) -"hRM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, +/obj/structure/plasticflaps/opaque, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"hRO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 +/area/station/cargo/sorting) +"gtI" = ( +/obj/structure/disposaloutlet{ + dir = 4 }, +/obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"hRR" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/machinery/meter, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/area/station/engineering/atmos/mix) -"hRX" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/plating, -/area/station/engineering/storage) -"hSg" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"gtK" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/door/airlock/external{ - name = "Departure Lounge Airlock"; - space_dir = 2 +/obj/machinery/button/door/directional/south{ + id = "morgueprivacy"; + name = "Morgue Privacy Shutter"; + pixel_x = -8 }, -/obj/effect/turf_decal/stripes/end, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"hSi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/area/station/medical/morgue) +"gtR" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"gtT" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"hSo" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +/area/station/service/chapel/funeral) +"gtU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"gtW" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/rd) +"gua" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hSA" = ( -/obj/effect/spawner/random/structure/chair_comfy{ - dir = 1 - }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"hSC" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"guu" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/science/robotics/storage) -"hSD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/decal/cleanable/food/salt{ + desc = "A sizable pile of concentrated salt left behind by the previous occupant." }, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"guC" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/project) -"hSF" = ( -/mob/living/basic/mining/basilisk, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"hSM" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/wideplating/dark/end{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/storage) -"hST" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"hSW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/mail_sorting/security/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security) -"hTf" = ( -/obj/structure/chair/office{ +/area/station/hallway/primary/central/fore) +"guJ" = ( +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"guS" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/machinery/vending/tool, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"guT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"gva" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos) +"gvu" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"hTl" = ( -/obj/machinery/computer/records/medical{ - dir = 1 +/area/station/engineering/atmos) +"gvx" = ( +/obj/structure/closet/secure_closet/evidence, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"gvM" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/storage/box/pdas{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/obj/item/storage/box/ids, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/item/papercutter{ + pixel_x = -9 }, -/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"hTQ" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1; - name = "killroom vent" +/area/station/command/bridge) +"gwa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/crate, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"gwk" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/turf/closed/wall, +/area/station/security/checkpoint/engineering) +"gwn" = ( +/obj/effect/turf_decal/box, +/obj/machinery/shower/directional/east, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/item/soap/nanotrasen, +/obj/machinery/newscaster/directional/west, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/east{ + id = "Shower_2"; + name = "Shower 2 Privacy Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 }, -/turf/open/floor/circuit/telecomms, -/area/station/science/xenobiology) -"hTW" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench/left, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron, -/area/station/security/prison) -"hTX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"gwI" = ( +/obj/structure/chair{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"gwO" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/item/flatpack/flatpacker, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/station/engineering/atmos/pumproom) -"hTZ" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 5 +/turf/open/floor/iron/dark, +/area/station/science/lab) +"gwV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/reagent_containers/condiment/enzyme, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"hUm" = ( -/obj/machinery/light/cold/dim/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"hUo" = ( -/obj/machinery/shieldgen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"hUw" = ( -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"gwW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"hUD" = ( -/obj/effect/landmark/start/chief_medical_officer, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"hUH" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"gxe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/noticeboard/directional/east, +/obj/machinery/computer/gateway_control, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"gxi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/camera/autoname/directional/north, /turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"hUI" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/area/station/maintenance/disposal/incinerator) +"gxu" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"gxN" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"hUN" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/trash/caution_sign, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"hUS" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"gxW" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/maintenance/starboard) +"gyb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"gyd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"gyf" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall/rust, +/area/station/security/prison/garden) +"gyl" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"hUU" = ( -/obj/machinery/atmospherics/components/binary/pump/off/general/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"gyn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output{ + dir = 1 }, -/obj/machinery/door/window/brigdoor/right/directional/west, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"gyv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/gas, /obj/effect/turf_decal/bot, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"hVc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"gyx" = ( +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"hVe" = ( -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/north{ + c_tag = "Gateway"; + name = "command camera" }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/suit_storage_unit/engine, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/engineering/storage) -"hVs" = ( +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"gyM" = ( +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"hVB" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/cell_10k, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"hVC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 8 - }, +"gyV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"gzh" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"hVL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"hVN" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"hVQ" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-203" +/area/station/maintenance/port/lesser) +"gzv" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"hVW" = ( -/obj/machinery/telecomms/hub/preset, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"hWd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/structure/closet/secure_closet/captains, -/obj/machinery/firealarm/directional/north, -/obj/item/storage/lockbox/medal, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"hWq" = ( -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"gzx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "NTMSLoad"; + name = "off ramp"; + pixel_x = -8; + pixel_y = -5 }, -/obj/machinery/wall_healer/directional/west, -/turf/open/floor/iron/edge{ +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gzA" = ( +/obj/structure/girder, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"gAF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/shaft_miner, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"gAO" = ( +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"hWt" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +/obj/machinery/door/airlock/medical/glass{ + id_tag = "medbay_front_door"; + name = "Medbay" }, -/turf/open/floor/plating/elevatorshaft, -/area/station/ai/satellite/interior) -"hWx" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/structure/broken_flooring/corner/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"hWF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"hWG" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood/fancy, -/obj/item/food/beef_stroganoff, -/obj/item/kitchen/spoon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"hWW" = ( -/obj/structure/cable, -/obj/effect/landmark/start/atmospheric_technician, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"hXb" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"hXf" = ( -/obj/structure/chair/office, -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/landmark/navigate_destination/med, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"gBd" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"gBf" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"gBi" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/figure/secofficer, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"hXk" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"gBp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"gBx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"hXo" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/area/station/hallway/primary/central/fore) +"gBC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/duct, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"hXu" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/machinery/door/airlock/maintenance{ + name = "Circuit Workshop Maintenance" }, -/obj/item/kirbyplants/random/dead, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"gBJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Lockers"; + location = "Medical"; + name = "medical navigation beacon" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"hXH" = ( -/obj/effect/decal/cleanable/rubble, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"hXK" = ( -/obj/structure/closet/cardboard, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/science) -"hXL" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 +/area/station/hallway/primary/central/fore) +"gBT" = ( +/obj/structure/table, +/obj/item/analyzer{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/analyzer, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/cargo/storage) -"hYe" = ( -/turf/closed/wall, -/area/station/science/ordnance/bomb) -"hYg" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/canvas, -/obj/item/canvas, -/obj/item/canvas, -/obj/item/canvas, -/obj/item/canvas, -/obj/item/canvas, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/item/hand_labeler, -/turf/open/floor/iron/textured, -/area/station/commons/storage/art) -"hYh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"hYF" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured_large, /area/station/engineering/storage/tech) -"hYG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ +"gCf" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"gCl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"hYP" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"gCu" = ( +/obj/structure/chair{ + dir = 8 }, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"gCY" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Prison Cells"; + network = list("ss13","prison") }, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"hYU" = ( -/obj/structure/lattice, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"hZs" = ( +/area/station/security/prison) +"gDe" = ( +/obj/structure/dresser, +/obj/machinery/airalarm/directional/east, +/obj/machinery/button/door/directional/north{ + id = "Cabin_1"; + name = "Cabin 1 Privacy Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, /turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"hZC" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 +/area/station/commons/locker) +"gDl" = ( +/obj/effect/spawner/random/entertainment/arcade, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"gDm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/directions/science{ + dir = 4; + pixel_x = -32; + pixel_y = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"hZM" = ( -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"hZN" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/food/grown/banana, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/grass, -/area/station/medical/virology) -"hZV" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench{ +/obj/structure/sign/directions/supply{ + pixel_x = -32 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = -32; + pixel_y = -8 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/effect/landmark/start/assistant, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"iac" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/photocopier/prebuilt, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"iak" = ( -/turf/open/water/no_planet_atmos, -/area/station/service/hydroponics/garden) -"iau" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"iaB" = ( -/obj/machinery/rnd/experimentor, -/turf/open/floor/engine, -/area/station/science/explab) -"iaI" = ( -/obj/structure/railing{ - dir = 10 +/area/station/hallway/primary/central/fore) +"gDu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/carpet, -/area/station/service/theater) -"iaN" = ( -/turf/closed/wall, -/area/station/cargo/miningoffice) -"iaP" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 +/obj/effect/turf_decal/siding/yellow{ + dir = 4 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"ibi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"gDv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"ibl" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/turf/open/openspace, -/area/station/science/xenobiology) -"ibq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"ibv" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"gDy" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"gDJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"ibx" = ( -/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"gDM" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/asteroid) -"ibE" = ( -/obj/machinery/pdapainter/research, -/obj/item/toy/plush/rouny{ - desc = "THAT is a rouny."; - name = "rouny plushie"; - pixel_y = 18 +/area/station/maintenance/starboard/aft) +"gDS" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/abandoned_warehouse) +"gDT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/obj/effect/turf_decal/siding/purple/corner, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"icl" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Library" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"gDW" = ( +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/wood, +/area/station/maintenance/department/crew_quarters/bar) +"gEo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"icp" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/computer/records/medical/laptop{ +/turf/open/floor/iron, +/area/station/engineering/hallway) +"gEs" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/turf_decal/delivery, +/obj/item/tank/internals/oxygen/yellow, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"icq" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"icr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"icw" = ( -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/pharmacy) -"icz" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"gEB" = ( +/obj/machinery/disposal/bin/tagger, /obj/effect/turf_decal/bot, -/obj/item/disk/computer{ - pixel_x = 7; - pixel_y = 2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = 14 }, -/obj/item/disk/computer{ - pixel_x = -5; - pixel_y = 8 +/obj/machinery/camera/directional/north{ + c_tag = "Quartermaster's Office"; + name = "cargo camera"; + network = list("ss13","qm") }, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"icC" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"icJ" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/pen{ - pixel_x = 0; - pixel_y = 4 +/area/station/command/heads_quarters/qm) +"gER" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/glass/reinforced, -/area/station/science/genetics) -"icM" = ( -/obj/effect/turf_decal/bot_white, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"gFn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"idr" = ( -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) -"idB" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"gFt" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/restraints/handcuffs{ - pixel_x = -3; - pixel_y = 5 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs{ - pixel_x = 4; - pixel_y = -3 +/obj/structure/sign/poster/contraband/random/directional/east, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gFD" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/food/candy{ - pixel_x = 18; - pixel_y = 7 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security/warden) -"idH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 +/area/station/security/office) +"gFE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/door/airlock/external{ + name = "Auxiliary Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ferry-dock" }, -/obj/item/radio/intercom/directional/west, /turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"idR" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engine Room" +/area/station/hallway/secondary/exit/departure_lounge) +"gFF" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/iron, +/area/station/security/courtroom) +"gFL" = ( +/obj/structure/table, +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"gFO" = ( +/obj/effect/landmark/start/lawyer, +/obj/structure/chair/office{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/landmark/navigate_destination/lawyer, +/turf/open/floor/carpet/green, +/area/station/service/lawoffice) +"gFQ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 8 }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"gFR" = ( /obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"gFY" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/engineering/main) -"idU" = ( +/area/station/hallway/primary/port) +"gGf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"idV" = ( -/obj/docking_port/stationary{ - dwidth = 3; - height = 15; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - shuttle_id = "arrival_stationary"; - width = 7 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"gGi" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"gGp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/camera/directional/south{ + c_tag = "Laser Room Port"; + name = "laser room camera"; + network = list("ss13","engine") }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"ied" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/grown/bananapeel, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"ief" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"iej" = ( -/obj/effect/turf_decal/siding/white{ +/area/station/engineering/supermatter/room) +"gGq" = ( +/obj/structure/table, +/obj/machinery/light/small/directional/east, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/suit/armor/vest, +/obj/item/clothing/neck/stethoscope, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"gGs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"gGx" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/rack, -/obj/item/wrench/medical, -/obj/item/food/strawberryicecreamsandwich, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"iel" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/on, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"gGF" = ( +/obj/structure/grille/broken, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"gGR" = ( +/obj/structure/bodycontainer/morgue{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"gHc" = ( +/obj/structure/chair{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/area/station/engineering/atmos/pumproom) -"iem" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1; - name = "server vent" +/turf/open/floor/iron, +/area/station/security/courtroom) +"gHd" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 }, -/obj/machinery/camera/motion/directional/south{ - c_tag = "Research Server Room"; - network = list("ss13","rd") - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/science/server) -"ien" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/turf_decal/stripes/end, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "capspace" - }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"ieo" = ( -/obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"ieI" = ( -/obj/structure/cable/layer3, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/tcommsat/server) -"ieJ" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"gHe" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/toy/basketball, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"ieP" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"gHi" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Atrium Starboard"; + name = "service camera" }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"ifd" = ( -/turf/open/floor/engine/airless, -/area/space/nearstation) -"ifj" = ( -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"ifl" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"gHA" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/north{ + name = "Security Desk"; + req_access = list("security") + }, +/obj/item/crowbar/red, +/obj/item/storage/fancy/donut_box, /turf/open/floor/plating, -/area/station/medical/storage) -"ifv" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 4 +/area/station/hallway/secondary/exit/departure_lounge) +"gHD" = ( +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/storage/backpack/duffelbag/sec/surgery{ + pixel_y = 5 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/obj/item/clothing/mask/surgical, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"gHE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"gHI" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/machinery/door/airlock/command{ + name = "Quartermaster's Office" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"ifP" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, +/area/station/command/heads_quarters/qm) +"gHX" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/west{ - pixel_y = 4 +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"gIo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/wrench, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"gIt" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/obj/machinery/firealarm/directional/west{ - pixel_y = -5 +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"gIw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gIz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, /turf/open/floor/iron, -/area/station/security/brig) -"ifV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" +/area/station/hallway/primary/central/fore) +"gIE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"ign" = ( -/obj/structure/closet/toolcloset, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/commons/storage/tools) -"igq" = ( -/turf/closed/wall, -/area/station/medical/medbay/central) -"igB" = ( -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/iron/dark, -/area/station/security/processing) -"igE" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 10 +/area/station/engineering/atmos) +"gII" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/structure/railing/corner{ - dir = 4 +/obj/effect/landmark/start/station_engineer, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/station/engineering/main) +"gIX" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/openspace, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"gJa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"igG" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating/airless, -/area/station/solars/port) -"igK" = ( -/turf/open/floor/iron/stairs/medium{ +"gJc" = ( +/obj/structure/railing{ dir = 1 }, -/area/station/hallway/secondary/exit/departure_lounge) -"igQ" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/storage/box/evidence{ - pixel_x = -5; - pixel_y = 12 - }, -/obj/item/implanter, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"igS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"iha" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/iron/stairs/right{ dir = 4 }, -/turf/open/floor/plating, -/area/station/science/genetics) -"ihd" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/service/chapel) +"gJj" = ( +/obj/machinery/door/airlock/external{ + name = "Arrival Shuttle Airlock"; + space_dir = 2 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/light/warm/directional/south, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"gJs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/service/bar) -"ihe" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 4"; - name = "Cell 4 locker" +/obj/effect/turf_decal/stripes/line, +/obj/machinery/camera/directional/south{ + c_tag = "Gravity Generator"; + name = "engineering camera"; + network = list("ss13","engine") }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"gJz" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig) -"ihH" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/chair_maintenance{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"ihK" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 9 }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"gJC" = ( +/obj/structure/sign/departments/security/directional/south, +/obj/structure/flora/bush/pale/style_random, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"gJE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"iig" = ( -/obj/machinery/computer/security/mining{ +/area/station/maintenance/port/lesser) +"gJF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/cable_coil/five, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gJK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/turf/closed/wall/rust, +/area/station/maintenance/disposal/incinerator) +"gJL" = ( +/obj/machinery/door/poddoor/preopen{ + id = "brigfrontdoor"; + name = "Front Security Blast Door" + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"gKd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"gKg" = ( +/obj/structure/railing, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"gKB" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/table_frame, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/sign/warning/vacuum/external/directional/west, -/turf/open/floor/iron/textured, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gKC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"gKI" = ( +/turf/closed/wall/rust, /area/station/cargo/miningoffice) -"iin" = ( +"gKR" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"gLm" = ( +/obj/machinery/status_display/ai/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"gLn" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall, +/area/station/security/medical) +"gLp" = ( +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"iio" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) -"iiB" = ( -/obj/structure/lattice, /obj/structure/cable, -/turf/open/space/openspace, +/turf/open/misc/asteroid/airless, /area/space/nearstation) -"ijd" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"ijg" = ( +"gLH" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ijn" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ijo" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/computer/shuttle/mining{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"ijp" = ( -/obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"ijv" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"ijC" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash, +/area/station/maintenance/port/greater) +"gLK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/maintenance/department/science) -"ikc" = ( -/obj/structure/closet/crate/secure/loot{ - code_length = 2; - name = "malfunctioning abandoned crate" - }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"ike" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"gLO" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/courtroom) +"gLP" = ( +/obj/structure/bookcase/random/adult, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"gLT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, +/obj/structure/cable, +/obj/machinery/meter/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"ikp" = ( -/obj/structure/table, -/obj/item/toy/plush/slimeplushie{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/stamp/granted{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = 1 - }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"ikD" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/reinforced, -/area/station/maintenance/port/greater) -"ilb" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, +/area/station/maintenance/port/aft) +"gMg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, -/area/station/security/warden) -"ili" = ( -/obj/structure/transit_tube/curved/flipped{ - dir = 1 +/area/station/command/bridge) +"gMp" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"gMq" = ( +/obj/machinery/door/airlock/grunge{ + name = "Cell 2" }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"gMy" = ( /obj/structure/lattice, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/space/basic, /area/space/nearstation) -"ilk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ilq" = ( -/obj/structure/transport/linear/public, -/obj/machinery/holopad, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"ilx" = ( -/obj/machinery/smartfridge/organ, -/turf/open/floor/plating, -/area/station/medical/morgue) -"ilQ" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/glass/reinforced, -/area/station/service/bar) -"iml" = ( -/obj/effect/decal/cleanable/dirt/dust, +"gMA" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/medical/central) -"imx" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/science) -"imy" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L8" +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"gMC" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Engineering Storage"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"imG" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, +/area/station/engineering/main) +"gME" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"gMK" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"gNq" = ( +/obj/machinery/vending/wardrobe/medi_wardrobe, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"gNz" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/auxlab) +"gNE" = ( +/obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"imI" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"imQ" = ( -/obj/structure/table, -/obj/item/camera, -/turf/open/floor/iron, -/area/station/security/prison) -"imU" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"imZ" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/uppernorth) -"ina" = ( -/obj/effect/spawner/random/structure/steam_vent, -/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ini" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"ins" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ - dir = 1 +/turf/open/space/basic, +/area/space/nearstation) +"gNI" = ( +/obj/structure/transit_tube, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"gNJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"gNM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/plating, -/area/station/ai/satellite/teleporter) -"inz" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/science/xenobiology) -"inC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/chair/office{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/effect/turf_decal/siding/red{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_edge{ +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"gOh" = ( +/obj/structure/chair{ dir = 8 }, -/area/station/medical/pharmacy) -"ioa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"iol" = ( -/turf/closed/wall/r_wall, -/area/station/service/lawoffice) -"iom" = ( -/obj/effect/mapping_helpers/dead_body_placer, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"iov" = ( -/obj/structure/chair/office{ - name = "grimy chair" - }, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"iow" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"ioP" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"ioZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/dresser, -/obj/item/toy/figure/dsquad{ - pixel_x = 6; - pixel_y = 12 +/area/station/medical/medbay/lobby) +"gOo" = ( +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -24 }, -/obj/item/toy/figure/secofficer{ - pixel_x = -6; - pixel_y = 12 +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"ipc" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/area/station/hallway/primary/port) +"gOq" = ( +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/armory) -"ipq" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/reagent_containers/condiment/peppermill{ - desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; - pixel_x = -8; - pixel_y = 2 - }, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 9; - pixel_y = 3 - }, -/obj/item/book/manual/chef_recipes, +/area/station/security/processing) +"gOG" = ( +/obj/item/food/breadslice/plain, +/obj/item/food/breadslice/plain, +/obj/item/food/breadslice/plain, +/obj/item/food/grown/potato, +/obj/item/food/grown/potato, +/obj/item/food/grown/onion, +/obj/item/food/grown/onion, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/closet/crate, /turf/open/floor/iron/white, /area/station/security/prison/mess) -"ipu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +"gPa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"ipv" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"gPy" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/computer/rdconsole/unlocked{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ipJ" = ( -/obj/effect/turf_decal/tile/red{ +/turf/open/floor/iron/dark, +/area/station/science/lab) +"gPA" = ( +/turf/closed/wall/rust, +/area/station/maintenance/port/aft) +"gPC" = ( +/obj/structure/railing/corner{ dir = 8 }, +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"gPH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/security/warden) -"ipR" = ( -/obj/structure/grille, +/obj/machinery/meter/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/ai/satellite/teleporter) -"ipT" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ +/area/station/maintenance/port/greater) +"gPO" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"gPS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/glass, +/obj/item/crowbar/red, +/obj/item/healthanalyzer, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"gPX" = ( +/obj/structure/reflector/box/anchored{ dir = 1 }, -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/turf/open/floor/engine, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"ipV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 +"gQd" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"ipZ" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/iv_drip, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"iqa" = ( -/obj/structure/chair{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"gQo" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 }, /obj/effect/turf_decal/stripes/line{ - dir = 5 + dir = 4 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"iqf" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"iqE" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/west{ - name = "Requests Window" +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Weapon Distribution"; - req_access = list("armory") +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"gQq" = ( +/obj/machinery/computer/mecha{ + dir = 1 }, -/obj/item/paper, -/obj/item/pen, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/security/armory) -"iqW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"irx" = ( -/obj/structure/chair/sofa/bench/right{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"irA" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"irJ" = ( -/turf/open/floor/iron/white, -/area/station/science/lab) -"irK" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"irS" = ( +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"gQt" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"gQu" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman/pre_loaded, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/chapel/monastery) +"gQx" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron, +/area/station/cargo/storage) +"gQB" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/table, +/obj/item/restraints/handcuffs, +/obj/machinery/recharger, +/obj/item/screwdriver, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/customs) +"gQJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ise" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"isg" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/cargo/office) +"gQV" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Atmospherics Tank - CO2"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"ism" = ( -/obj/machinery/button/door/directional/east{ - id = "Cabin7"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"gRg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "xeno1"; + name = "Creature Cell 1" }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"gRq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"gRP" = ( +/obj/item/kirbyplants/random, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/camera/directional/east{ + c_tag = "Bridge Maintenance Entrance"; + name = "command camera" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"isq" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"isr" = ( -/obj/effect/turf_decal/siding/green{ - dir = 4 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"isx" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/security/office) -"isy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"isH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/command/bridge) +"gSc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"isO" = ( -/obj/structure/table, -/obj/item/construction/plumbing, -/obj/item/construction/plumbing{ - pixel_y = -5 +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"gSk" = ( +/obj/machinery/vending/wardrobe/chem_wardrobe, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/item/plunger{ - pixel_x = 15 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"gSp" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/area/station/medical/chemistry/minisat) -"isT" = ( -/turf/open/openspace, -/area/station/engineering/break_room) -"ita" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, -/obj/machinery/light_switch/directional/east, /turf/open/floor/iron, -/area/station/command/bridge) -"itk" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/preopen{ - id = "ceshut" +/area/station/cargo/storage) +"gSz" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"its" = ( -/obj/machinery/atmospherics/components/unary/thermomachine{ - dir = 8; - initialize_directions = 8 +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark, /area/station/engineering/atmos) -"itt" = ( -/obj/structure/lattice/catwalk, -/obj/item/toy/plush/lizard_plushie/space{ - name = "Abuses-The-Chemicals" +"gSC" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 }, -/turf/open/space/basic, -/area/space/nearstation) -"iua" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"iub" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/command/corporate_showroom) -"iug" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/item/reagent_containers/blood/a_minus, +/obj/item/reagent_containers/blood/b_minus{ + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 +/obj/item/reagent_containers/blood/b_plus{ + pixel_x = 1; + pixel_y = 2 }, -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/item/reagent_containers/blood/o_minus, +/obj/item/reagent_containers/blood/o_plus{ + pixel_x = -2; + pixel_y = -1 }, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"iuv" = ( -/obj/effect/spawner/structure/window/hollow/middle, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"gSF" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/mess) +"gSL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/circuitboard/computer/operating, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/hydroponics/garden) -"iuA" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/south, -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/effect/spawner/random/trash/crushed_can, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"iuB" = ( -/turf/open/floor/plating/elevatorshaft, -/area/station/ai/satellite/interior) -"iuU" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/fore) +"gSQ" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"iuV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/crowbar/red, +/obj/item/wrench, +/obj/item/storage/toolbox/mechanical, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"ivh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/circuit/telecomms, /area/station/science/xenobiology) -"ivp" = ( -/obj/structure/table, -/obj/item/clothing/suit/jacket/straight_jacket, -/obj/item/clothing/mask/muzzle, -/obj/item/clothing/glasses/blindfold, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, +"gSW" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Director's Office" + }, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"ivx" = ( -/turf/open/floor/glass/reinforced/airless, -/area/station/asteroid) -"ivC" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","engine") +/area/station/command/heads_quarters/rd) +"gTc" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 6 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -6 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"ivD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, +/area/station/engineering/atmos/storage/gas) +"gTr" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/door/airlock/engineering{ + name = "Engineering" }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"ivR" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 }, -/obj/machinery/vending/coffee, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"ivU" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"gTz" = ( +/obj/structure/chair/sofa/right/maroon{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"iwd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ dir = 8 }, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"iwk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip, -/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, -/turf/open/floor/iron, -/area/station/engineering/main) -"iwu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/effect/spawner/random/bureaucracy/briefcase, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"iwG" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/checker{ - dir = 1 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/area/station/engineering/atmos) -"iwP" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"gTA" = ( +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Hydroponics Backroom" }, -/area/station/hallway/secondary/entry) -"iwQ" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"gTD" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"gTN" = ( +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/service/bar) -"iwS" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/dark/telecomms, -/area/station/ai/satellite/chamber) -"ixa" = ( -/obj/machinery/light/directional/south, +/area/station/service/hydroponics) +"gUw" = ( +/obj/machinery/power/solar{ + id = "aftport"; + name = "Aft-Port Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/aft) +"gUK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"ixc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +"gUS" = ( +/obj/effect/turf_decal/bot, +/obj/effect/landmark/event_spawn, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron, +/area/station/cargo/storage) +"gUT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"gUZ" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"ixi" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light/dim/directional/north, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/engineering/atmos) -"ixm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"ixo" = ( -/obj/structure/girder, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/sand/plating, +/area/station/maintenance/fore) +"gVc" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/poster/contraband/missing_gloves/directional/east, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"ixA" = ( +/area/station/maintenance/department/electrical) +"gVg" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"gVi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) +"gVp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ixL" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker/large, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"ixR" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"gVt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"ixU" = ( -/turf/closed/wall/r_wall, -/area/station/science/research) -"ixZ" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iyb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"gVv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"gVC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"iyg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/greenglow, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iyw" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"iyA" = ( -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"iyE" = ( -/obj/machinery/door/window/left/directional/west{ - name = "Mass Driver Door"; - req_access = list("ordnance") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/mass_driver/ordnance{ - dir = 4 +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/science/ordnance/testlab) -"iyF" = ( -/obj/machinery/door/airlock/command{ - name = "Chief Medical Officer's Quarters" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"iyG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"gWb" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"gWw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security) -"iyT" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/hallway/primary/central) +"gWT" = ( +/obj/machinery/door/airlock/maintenance/external/glass{ + name = "Construction Zone" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"iyZ" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd","xeno") +/area/station/construction/mining/aux_base) +"gXc" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/disposaloutlet{ + dir = 4 }, -/obj/effect/turf_decal/siding/purple, -/turf/open/floor/iron/white/smooth_corner{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/area/station/science/xenobiology) -"izd" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"izr" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/porta_turret/ai, -/turf/open/floor/iron/dark/airless, -/area/station/tcommsat/server) -"izy" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L4" +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"gXh" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"izF" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"izP" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"gXG" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/execution/transfer) -"izU" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/disposalpipe/junction/flip{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"izV" = ( -/obj/machinery/door/airlock/research, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"gXJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=HOP"; + location = "Security"; + name = "security navigation beacon" }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"gXX" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"iAE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"gYl" = ( +/obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"iAM" = ( -/obj/machinery/computer/security/telescreen/rd/directional/south, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"iAQ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iBe" = ( -/obj/structure/chair/pew/right{ +/area/station/security/brig) +"gYm" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"gYx" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "ordnancestorage"; + name = "Ordnance Storage Shutters" + }, +/obj/machinery/door/firedoor/heavy, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"gYA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"iBg" = ( -/obj/structure/table, -/obj/effect/spawner/random/contraband/prison, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/security/prison) -"iBl" = ( -/obj/structure/sign/poster/contraband/missing_gloves, -/turf/closed/wall, -/area/station/commons/storage/primary) -"iBs" = ( -/obj/structure/table, -/obj/item/stack/spacecash/c100, -/obj/item/food/drug/saturnx{ - pixel_y = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"iBK" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"gYK" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iBP" = ( -/obj/structure/table, -/obj/effect/spawner/random/bureaucracy/paper, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/item/radio/intercom/directional/south, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"gYS" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"iCa" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/grunge{ - name = "Courtroom" +/area/station/command/heads_quarters/ce) +"gYV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/service/lawyer, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"iCi" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"gZl" = ( +/turf/closed/wall/r_wall/rust, +/area/station/hallway/secondary/service) +"gZm" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2O to Pure" }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"iCD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"gZu" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"gZI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/checker, -/area/station/science/research) -"iCH" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"iCM" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"iCT" = ( -/obj/structure/girder/reinforced, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"iCV" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/teleport/station, -/obj/machinery/light/small/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"hah" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/folder, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"iDq" = ( -/obj/item/clothing/head/costume/festive{ - pixel_x = 1; - pixel_y = 8 +/area/station/maintenance/port/greater) +"hat" = ( +/turf/closed/wall, +/area/station/service/hydroponics) +"haP" = ( +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 }, -/mob/living/basic/mothroach, -/turf/open/misc/asteroid, -/area/station/asteroid) -"iDs" = ( -/obj/structure/disposaloutlet{ - dir = 4 +/obj/item/radio/intercom/prison/directional/west, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"hbe" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xeno4"; + name = "Creature Cell 4" }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/left/directional/east{ + name = "Creature Cell"; + req_access = list("xenobiology") }, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"iDu" = ( -/obj/structure/door_assembly/door_assembly_mai, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"iDw" = ( -/obj/effect/landmark/start/chief_medical_officer, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/freezer, -/area/station/command/heads_quarters/cmo) -"iDx" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/west{ - id = "Cell 3"; - name = "Cell 3" +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"hbf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"hbr" = ( +/obj/machinery/door/airlock/external{ + name = "External Freight Airlock" }, -/turf/open/floor/iron, -/area/station/security/brig) -"iDB" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"iDD" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"iDJ" = ( -/obj/structure/table/reinforced, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"iEj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"iEl" = ( -/obj/structure/holosign/barrier/atmos, -/turf/open/misc/asteroid, -/area/station/asteroid) -"iEn" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Starboard Primary Hallway" +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"hbC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"hbE" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/bridge) +"hbH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"hbT" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"iEA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"iEK" = ( -/obj/structure/cable, -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/area/station/service/chapel) -"iEO" = ( -/turf/closed/wall, -/area/station/security/prison/mess) -"iEQ" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"hcH" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"iFb" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" +/obj/item/folder{ + pixel_x = 3 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/item/pen{ + pixel_x = 4 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "research_shutters"; + name = "Research Privacy Shutter" }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"iFg" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/door/window/right/directional/east{ + name = "Research Lab Desk"; + req_access = list("science") }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"iFn" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 8 }, /turf/open/floor/plating, -/area/station/engineering/storage) -"iFq" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"iFr" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/closet, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"iFv" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 +/area/station/science/lab) +"hcP" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"iFz" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"iFK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"iFN" = ( -/turf/closed/wall/r_wall, -/area/station/science/server) -"iFU" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"iFV" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"iGa" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/landmark/blobstart, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"iGg" = ( -/obj/structure/closet{ - anchored = 1; - name = "Cold protection gear" +/turf/open/floor/circuit/red, +/area/station/security/mechbay) +"hda" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/turf/open/floor/iron/white/smooth_corner{ +/turf/open/floor/iron/stairs/medium{ dir = 1 }, -/area/station/science/xenobiology) -"iGo" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Service Hall" +/area/station/service/chapel/monastery) +"hdj" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/service/general, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"iGy" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/sign/warning/no_smoking{ + pixel_x = -30 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"iGC" = ( -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"iGK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/commons/lounge) -"iHr" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron, -/area/station/security/prison) -"iHv" = ( -/obj/effect/spawner/random/decoration/carpet, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"iHC" = ( -/obj/machinery/power/solar_control{ - dir = 1; - id = "aft"; - name = "Aft Solar Control" - }, -/obj/structure/cable, +/area/station/hallway/primary/port) +"hdm" = ( +/obj/structure/kitchenspike, +/obj/effect/turf_decal/bot/left, +/obj/machinery/airalarm/directional/north, +/obj/item/radio/intercom/directional/east, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"hdo" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/maintenance/solars/port) -"iHG" = ( -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"iHH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/research) -"iHK" = ( -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"iHL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/hallway/primary/central/fore) +"hdq" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"iHO" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/asteroid) -"iHY" = ( -/obj/structure/sign/warning/explosives/directional/east, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"iIb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"hdy" = ( +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/area/station/engineering/atmos/mix) -"iIo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"iIp" = ( -/obj/structure/railing, -/obj/machinery/power/terminal{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"iIq" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"iIw" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/machinery/light_switch/directional/north, /turf/open/floor/iron, -/area/station/cargo/warehouse) -"iIB" = ( -/obj/effect/turf_decal/tile/yellow/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/hallway/primary/central/fore) +"hdz" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"iII" = ( -/obj/machinery/shower/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"hdA" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "cmo sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office, +/obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"iIR" = ( +/area/station/medical/storage) +"hdY" = ( /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/mail_sorting/service/chapel, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P3-Central-Primary"; - location = "P2-Central-Primary" +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"hee" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"hev" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"iIT" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/window/brigdoor/left/directional/north, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"iIY" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/area/station/hallway/secondary/entry) +"heD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Freight Mining Airlock" }, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"heU" = ( +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"heX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/service/hydroponics) -"iJb" = ( -/obj/structure/table, -/obj/item/mmi, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"iJd" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Medical"; - name = "Medical Fax Machine" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/hallway/secondary/exit/departure_lounge) +"hfl" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/tank/internals/oxygen/red, +/obj/item/stack/package_wrap, +/obj/item/food/grown/mushroom/glowshroom, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"hfp" = ( +/turf/closed/wall, +/area/station/maintenance/central) +"hfr" = ( +/obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/machinery/button/door/directional/north{ - id = "triage"; - name = "triage button"; - normaldoorcontrol = 1 - }, -/obj/machinery/button/ticket_machine{ - pixel_y = 36 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"iJg" = ( -/obj/structure/table, -/obj/item/ai_module/reset{ - pixel_x = 2; - pixel_y = 8 - }, -/obj/item/ai_module/supplied/freeform, -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"iJm" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"iJr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured, /area/station/cargo/storage) -"iJt" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"hfF" = ( +/obj/structure/bed{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) -"iJB" = ( -/obj/machinery/door/airlock/medical{ - name = "Psychology Bedroom" +/obj/machinery/airalarm/directional/west, +/obj/effect/landmark/start/assistant, +/obj/effect/spawner/random/bedsheet{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/north{ + id = "Cabin_3"; + name = "Cabin 3 Privacy Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"iJF" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"iJG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/item/pillow/random, +/turf/open/floor/wood, +/area/station/commons/locker) +"hfP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Prison Wing" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"iJP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/security/execution/transfer) +"hfV" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"iJT" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"iJZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/north, -/obj/structure/filingcabinet, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"iKc" = ( -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iKn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/chair, -/obj/effect/mob_spawn/corpse/human/cargo_tech, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"iKA" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron, -/area/station/security/prison/mess) -"iKD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/landmark/start/geneticist, +/obj/structure/chair/office/light{ dir = 4 }, -/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"hgf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"iLb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/engineering/lobby) -"iLh" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/area/station/security/office) +"hgL" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/maintenance/port/greater) +"hgW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/iron/dark/textured_corner{ +/obj/machinery/camera/directional/south{ + c_tag = "Auxiliary Base Construction" + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"hhc" = ( +/obj/machinery/computer/aifixer{ dir = 1 }, -/area/station/science/xenobiology) -"iLj" = ( -/obj/structure/railing{ - dir = 10 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"iLo" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"hhi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/prison) +"hhp" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/security/prison) +"hhE" = ( +/obj/item/kirbyplants/organic/plant18, +/obj/machinery/light_switch/directional/west{ + pixel_y = -4 + }, +/obj/machinery/button/door/directional/west{ + id = "research_shutters"; + name = "Research Shuttle Toggle"; + pixel_y = 6; + req_access = list("science") + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"iLw" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"iLG" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom/command/directional/south, -/obj/machinery/recharger, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"iLZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"hhX" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"iMc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"iMk" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, +/area/station/hallway/primary/port) +"hib" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iMq" = ( -/turf/closed/wall, -/area/station/medical/morgue) -"iMD" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"iMK" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"iMS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iMT" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"iNa" = ( -/obj/effect/turf_decal/stripes{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"hih" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"iNh" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/storage) -"iNj" = ( -/obj/machinery/light/small/directional/east, -/turf/open/openspace, -/area/station/engineering/main) -"iNq" = ( -/obj/machinery/hydroponics/soil, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/item/plant_analyzer, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"iNv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/port/greater) -"iNC" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"iNT" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"iNU" = ( -/obj/item/stack/tile/rglass/sixty, -/obj/item/fuel_pellet, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"iNY" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/machinery/light_switch/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"hiQ" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"iOc" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"iOE" = ( -/obj/item/pickaxe/mini, -/turf/open/misc/asteroid, -/area/station/asteroid) -"iOH" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-maint-passthrough" }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Room" }, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"iON" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iPd" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"iPf" = ( +/area/station/maintenance/starboard/aft) +"hja" = ( /obj/structure/cable, -/obj/machinery/button/door/directional/east{ - id = "xbprotect1"; - name = "shutter control" - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/kirbyplants/random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"iPm" = ( -/obj/structure/rack, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/item/analyzer{ - pixel_y = 3 +/obj/item/radio/intercom/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/spawner/random/engineering/toolbox, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"iPp" = ( -/obj/structure/chair/sofa/bench/left{ +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"hjb" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 8 }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"iPu" = ( -/obj/machinery/light/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"hjh" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Medical Operating Theater A"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"hjj" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/power/terminal{ + dir = 4 }, -/area/station/engineering/atmos/pumproom) -"iPw" = ( -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"iPz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/bot{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/airalarm/directional/west, /turf/open/floor/iron, -/area/station/command/gateway) -"iPH" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"iPQ" = ( +/area/station/engineering/supermatter/room) +"hjk" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"hjn" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"iQs" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/project) -"iQt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/medical/central) -"iQD" = ( -/obj/structure/railing, -/obj/machinery/camera/motion/directional/north{ - c_tag = "AI Sat - Lower Right Exterior"; - network = list("minisat") - }, -/turf/open/floor/iron/stairs{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"hjt" = ( +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"hjD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/area/station/ai/satellite/foyer) -"iQJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/main) -"iQZ" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"iRm" = ( -/obj/effect/spawner/random/structure/barricade, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"iRp" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/newspaper, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"iRs" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ +/area/station/command/vault) +"hjE" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"iRy" = ( -/obj/machinery/door/airlock/command{ - name = "Research Director's Observatory" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) -"iRB" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/bridge) -"iRG" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"iRL" = ( -/obj/structure/sink/kitchen/directional/east, -/obj/machinery/button/door/directional/west{ - id = "kitchen_counter"; - name = "Kitchen Shutters" - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"iRR" = ( +/obj/machinery/holopad, /obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/turf/open/floor/engine, +/area/station/command/vault) +"hjJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"iSw" = ( -/obj/machinery/computer/bank_machine{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"hjL" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"hjR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"hjZ" = ( +/obj/machinery/door/morgue{ + name = "Booze Storage"; + req_access = list("bar") }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/vault) -"iSz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/bar/backroom) +"hkd" = ( +/obj/machinery/power/smes, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/electric_shock/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"iSD" = ( -/turf/closed/wall/r_wall, -/area/station/science/xenobiology/hallway) -"iSE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/effect/turf_decal/stripes{ - dir = 6 +/area/station/maintenance/department/electrical) +"hkp" = ( +/turf/closed/wall/r_wall/rust, +/area/station/medical/virology) +"hkq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"hkr" = ( +/obj/docking_port/stationary{ + dheight = 4; + dwidth = 4; + height = 9; + name = "Aux Base Zone"; + roundstart_template = /datum/map_template/shuttle/aux_base/default; + shuttle_id = "aux_base_zone"; + width = 9 }, /turf/open/floor/plating, -/area/station/command/bridge) -"iSH" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/ethanol{ - pixel_x = -6 - }, -/obj/item/reagent_containers/cup/bottle/hydrogen, -/obj/item/reagent_containers/cup/bottle/copper{ - pixel_x = 6 +/area/station/construction/mining/aux_base) +"hkw" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Engineering Hallway" }, -/obj/machinery/light/very_dim/directional/south, -/turf/open/floor/iron/dark/textured_edge{ +/obj/structure/sign/departments/engineering/directional/east, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"hky" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input{ dir = 1 }, -/area/station/medical/pharmacy) -"iSJ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"iSU" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"iTa" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"hkA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"iTA" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"iTF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/turf/open/floor/iron, +/area/station/security/office) +"hkC" = ( +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, +/area/station/hallway/primary/port) +"hkF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"iTL" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/commons/storage/art) -"iTW" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Locker Room" +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/security/prison) +"hkI" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/commons/locker) -"iUq" = ( -/obj/machinery/module_duplicator, +/area/station/hallway/primary/port) +"hkK" = ( /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"iUF" = ( -/obj/structure/lattice, -/obj/effect/spawner/random/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"iUP" = ( -/obj/structure/railing/corner{ +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"hkL" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"iUV" = ( -/obj/effect/spawner/random/armory/shotgun, -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"iUX" = ( -/obj/structure/transport/linear/public, -/obj/machinery/elevator_control_panel{ - linked_elevator_id = "aisat"; - pixel_x = 32; - preset_destination_names = list("2" = "Telecomms", "3" = "AI Core") - }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"iVk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"iVp" = ( -/obj/machinery/modular_computer/preset/research, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/area/station/engineering/atmos) +"hkO" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/solars/port/fore) +"hkR" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security{ + name = "Armoury" }, -/obj/effect/turf_decal/siding/purple, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"iVG" = ( -/obj/item/tank/internals/oxygen, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iVJ" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/security/armory) +"hkW" = ( +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"iVK" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("minisat") +/area/station/maintenance/disposal/incinerator) +"hlb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/holosign/barrier/atmos, +/obj/structure/sign/poster/contraband/rebels_unite/directional/north, +/turf/open/floor/plating/airless, +/area/station/maintenance/space_hut/plasmaman) +"hlC" = ( +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 3; + pixel_y = 28 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"iVL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "AI Core shutters"; + name = "AI Core Shutter" }, -/obj/item/storage/bag/plants, -/obj/structure/table/wood, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"iVY" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/light/directional/east, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"iWn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/brigdoor/left/directional/west{ + name = "Primary AI Core Access"; + req_access = list("ai_upload") }, -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/camera/directional/south, -/turf/open/floor/iron, -/area/station/engineering/main) -"iWu" = ( -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"hlP" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/department/crew_quarters/bar) +"hlS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"iWO" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/storage/art) -"iWV" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"iXj" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/security/courtroom) -"iXk" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridgespace" +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"hma" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/turf/open/floor/glass/reinforced, -/area/station/command/meeting_room) -"iXn" = ( -/obj/item/radio/intercom/directional/north, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/white/textured_corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/science/xenobiology) -"iXp" = ( -/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"hmh" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/department/chapel/monastery) +"hmn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/clothing/wardrobe_closet_colored, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"hmr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"iXv" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"iXx" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"iXA" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"iXR" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"iYb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"iYh" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"iYy" = ( -/obj/effect/turf_decal/box, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos/mix) -"iYB" = ( -/obj/machinery/door/airlock/command{ - name = "Chief Medical Officer's Office" +/turf/open/floor/iron, +/area/station/engineering/lobby) +"hms" = ( +/turf/closed/wall, +/area/station/medical/cryo) +"hmK" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"hmO" = ( +/turf/closed/wall, +/area/station/security/processing) +"hna" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"iYC" = ( -/obj/machinery/telecomms/processor/preset_four, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"iYO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/command/bridge) -"iYS" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/hallway/primary/aft) +"hnb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Pure to Mix" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/disposal/bin, -/obj/machinery/light/directional/east, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light_switch/directional/north, /turf/open/floor/iron, -/area/station/security) -"iZa" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/upper) -"iZr" = ( +/area/station/engineering/atmos/pumproom) +"hne" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"iZz" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/hallway/primary/central) -"iZW" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 +/area/station/maintenance/fore) +"hnl" = ( +/obj/machinery/door/window/left/directional/south{ + name = "Cargo Delivery Access"; + req_access = list("shipping") }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"jaa" = ( +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"hnw" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xeno2"; + name = "Creature Cell 2" + }, +/obj/effect/turf_decal/delivery, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/button/door/directional/west{ - id = "maintbridge"; - name = "Shutter Control" +/obj/machinery/door/window/left/directional/west{ + name = "Creature Cell"; + req_access = list("xenobiology") }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jaf" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"jak" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"hnA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"jam" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/lobby) -"jav" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"jaH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"jaJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/area/station/service/janitor) +"hnD" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"jaV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"jbc" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/primary/fore) -"jbi" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"jbo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/rnd/production/circuit_imprinter, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"hnL" = ( +/obj/machinery/telecomms/server/presets/engineering, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"hnU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jbq" = ( -/obj/structure/railing{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"hoz" = ( +/obj/structure/table/wood, +/obj/structure/mirror/directional/west, +/obj/machinery/light/small/directional/west, +/obj/item/food/pie/cream, +/obj/item/bikehorn{ + pixel_x = -6; + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/station/service/theater) +"hoE" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"jbG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"jbL" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jbP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/west, -/obj/structure/moisture_trap, -/turf/open/floor/iron, -/area/station/maintenance/central/greater) -"jbR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/machinery/light/warm/directional/west, -/obj/item/storage/fancy/coffee_condi_display, -/obj/structure/table, -/obj/item/surgicaldrill, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"jbV" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/cargo/storage) -"jch" = ( -/obj/structure/table, -/obj/item/fuel_pellet, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"jco" = ( -/obj/machinery/vending/tool, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"jcG" = ( -/obj/machinery/light/warm/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/commons/locker) +"hoI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 10 }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jcL" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/computer/records/security, +/area/station/engineering/atmos) +"hoK" = ( /obj/structure/cable, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"jcQ" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/corporate_showroom) -"jcR" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"jcW" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/computer/communications{ +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"jdd" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"jdl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/area/station/hallway/primary/port) +"hoV" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/item/weldingtool/largetank, +/obj/item/clothing/head/utility/welding, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"jdn" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"jdo" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics Tank - Nitrogen" - }, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"jds" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"hpg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"hph" = ( /obj/structure/table, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/item/pickaxe, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"jdK" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"jdW" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"jer" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jex" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/flasher/directional/west{ + id = "Cell 3"; + name = "Prisoner Pacifier" }, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"jez" = ( -/obj/structure/sink/directional/north, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"jeE" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"jeL" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"jeY" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"hpu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"jfb" = ( -/obj/structure/transit_tube/curved{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/structure/lattice, -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"hpv" = ( +/turf/closed/wall, +/area/station/medical/surgery/theatre) +"hpz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"jfm" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jfo" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"jfq" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/area/station/engineering/hallway) +"hpC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"jfr" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"hpG" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "foreport"; + name = "Fore-Port Solar Array" }, -/obj/machinery/light/floor, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"jfB" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/fore) +"hpH" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/toolbox/emergency, +/obj/item/shovel, +/obj/item/shovel, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/siding/purple, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"jfD" = ( -/turf/open/floor/iron/white/smooth_corner{ +/area/station/cargo/miningdock) +"hpQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"hpS" = ( +/obj/effect/turf_decal/tile/purple{ dir = 4 }, -/area/station/science/xenobiology) -"jfE" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/bed{ - dir = 1 - }, -/obj/item/bedsheet/red{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"hpW" = ( +/obj/structure/cable, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"jfL" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"jge" = ( -/obj/effect/spawner/random/structure/crate, -/obj/item/clothing/glasses/meson, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"jgs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"jgA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/cold_temp, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"jgB" = ( -/obj/structure/closet/emcloset, -/obj/effect/landmark/start/hangover, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"jgC" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/obj/machinery/door/airlock{ - name = "Clown's Backstage Room" - }, -/obj/machinery/door/firedoor, +/obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/security/office) +"hpY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"jgH" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"jha" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"jhc" = ( -/obj/docking_port/stationary/mining_home/common, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"jhe" = ( -/obj/effect/spawner/structure/window, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/commons/storage/tools) -"jhj" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/maintenance/port/greater) +"hqk" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/command/corporate_dock) -"jhl" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "dumbwaiter_lift" - }, -/obj/machinery/smartfridge, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/openspace, -/area/station/service/hydroponics) -"jhG" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"jhK" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"hqm" = ( +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/iron, +/area/station/cargo/storage) +"hqr" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/purple{ + dir = 9 + }, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"jih" = ( -/obj/item/trash/spacers_sidekick, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"jij" = ( -/turf/closed/wall/r_wall, -/area/station/commons/storage/primary) -"jim" = ( -/turf/open/floor/iron/white, -/area/station/science/explab) -"jin" = ( -/obj/effect/decal/cleanable/dirt/dust, +"hqP" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"jir" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"jit" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/spawner/random/entertainment/cigarette_pack{ - pixel_x = -12 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"jiv" = ( -/obj/machinery/door/airlock/mining{ - name = "Cargo Bathroom" +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"jiw" = ( -/turf/open/floor/iron/white/smooth_edge, -/area/station/science/research) -"jiy" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/security/execution/transfer) +"hqS" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"hqT" = ( +/obj/item/kirbyplants/random, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/security/breakroom) -"jiz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/theater) -"jiN" = ( -/obj/docking_port/stationary/syndicate, -/turf/open/space/openspace, -/area/space) -"jjF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/area/station/hallway/primary/starboard) +"hqW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/library) -"jjG" = ( -/obj/machinery/power/emitter/welded, -/obj/structure/cable, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, /area/station/engineering/supermatter/room) -"jjI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"jjN" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"jjO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot{ +"hqZ" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/pale/style_random, +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"hri" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/station/commons/locker) +"hrN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"jjQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, +/obj/machinery/fax/heads/hop, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"jjS" = ( -/obj/structure/rack, -/obj/effect/spawner/random/entertainment/cigarette_pack, +/area/station/command/heads_quarters/hop) +"hrY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"jka" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/structure/closet/secure_closet/medical1, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"jkc" = ( -/obj/structure/bed{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/spawner/random/bedsheet{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"hsg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/item/pillow/random, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"jke" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"hsr" = ( +/obj/structure/cable, /obj/structure/sign/poster/contraband/random/directional/north, /obj/effect/mapping_helpers/burnt_floor, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"hsx" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"hsB" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/security/medical) +"hsC" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"hsO" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"jkv" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"jkF" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/firedoor, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/iron/showroomfloor, +/area/station/commons/storage/art) +"hsV" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Departures Cargo Dock"; + name = "shuttle camera" }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "bar_shutters"; - name = "Bar Shutters" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"hsW" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/obj/structure/table/reinforced/rglass, /turf/open/floor/iron/dark, -/area/station/service/bar) -"jkG" = ( -/obj/effect/turf_decal/siding/wood/end{ +/area/station/medical/treatment_center) +"htJ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"htP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"jkL" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"htS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"jkU" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/machinery/door/airlock/medical{ + name = "Operating Theater" }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"htZ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"huc" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/project) -"jlb" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/computer/records/medical/laptop{ - dir = 4; - pixel_y = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"jlc" = ( -/obj/structure/railing/corner{ +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/obj/structure/table, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/hallway/primary/fore) +"huj" = ( +/obj/effect/turf_decal/box, +/obj/effect/spawner/random/gizmo, +/turf/open/floor/engine, +/area/station/science/auxlab) +"huo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Isolation"; + name = "Isolation Shutters" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) +"hur" = ( +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"huK" = ( +/obj/item/shrapnel/bullet, +/turf/open/floor/iron, +/area/station/security/prison) +"huO" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/item/reagent_containers/cup/bottle/facid{ - pixel_x = -5; - pixel_y = 5 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"huR" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/item/reagent_containers/cup/bottle/toxin{ - pixel_x = 6; - pixel_y = 8 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/item/reagent_containers/cup/bottle/morphine{ - pixel_x = -4; - pixel_y = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"huS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/item/reagent_containers/cup/bottle/morphine{ - pixel_x = 5; - pixel_y = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"hvj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe{ - pixel_y = 5 +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"hvl" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/reagent_containers/syringe{ - pixel_y = 5 +/obj/item/toy/figure/scientist{ + pixel_x = 8; + pixel_y = 6 }, -/obj/item/assembly/signaler{ - pixel_x = -3; - pixel_y = -12 +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"jld" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"jle" = ( -/obj/structure/chair{ - dir = 4 +/area/station/science/xenobiology) +"hvz" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/button/door/directional/west{ + id = "ordnancemix"; + name = "Ordnance Lab Access"; + pixel_y = 8; + req_access = list("ordnance") }, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"jlg" = ( -/obj/effect/turf_decal/box/white{ - color = "#9FED58" +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"jlp" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"hvB" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/rust, +/area/station/security/prison) +"hwr" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jlq" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/obj/effect/turf_decal/stripes/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"hwA" = ( +/turf/closed/wall/rust, +/area/station/maintenance/solars/starboard/aft) +"hwJ" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"jlw" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/vending/coffee, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"jlC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/security/warden) -"jlI" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"jlJ" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"jlL" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/no_decals/two, -/obj/machinery/camera/autoname/motion/directional/east{ - network = list("minisat") +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"jlU" = ( -/obj/machinery/newscaster/directional/south, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"jlW" = ( -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"jmh" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"jmn" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"jmp" = ( -/mob/living/simple_animal/hostile/ooze/gelatinous, -/turf/open/misc/asteroid, -/area/station/asteroid) -"jmu" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jmP" = ( -/obj/machinery/computer/pod/old/mass_driver_controller/trash{ - id = "captaindriver"; - pixel_x = -24 +/area/station/security/office) +"hwN" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/item/storage/box, +/obj/item/radio/off{ + pixel_x = 6 }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/turf/open/floor/iron, +/area/station/engineering/lobby) +"hwY" = ( +/obj/machinery/air_sensor/air_tank, +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"hwZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"hxb" = ( +/obj/effect/landmark/start/bartender, +/obj/effect/turf_decal/siding/wood/end{ dir = 1 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"jmU" = ( -/obj/effect/landmark/start/head_of_security, -/obj/machinery/light/small/directional/east, -/obj/structure/bed/double, -/obj/item/bedsheet/hos/double, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"jmY" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"jnm" = ( -/obj/structure/table/wood/fancy, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/wood/parquet, +/area/station/service/bar/backroom) +"hxd" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"jnE" = ( -/obj/structure/table, -/obj/item/binoculars, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"jnG" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"jnP" = ( -/obj/machinery/mech_bay_recharge_port{ +/obj/item/trash/cheesie, +/obj/item/trash/syndi_cakes, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"hxf" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station/dispenser/reverse/flipped{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/brown{ +/obj/effect/landmark/navigate_destination/chapel, +/turf/open/floor/iron/grimy, +/area/station/hallway/primary/fore) +"hxi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/atmos{ + name = "Incinerator" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 6 }, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"jnY" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"hxt" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"joa" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L6" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"job" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet_Research"; - name = "Bathroom" +/obj/effect/turf_decal/siding/white{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"hxw" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"hxx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/service/theater) -"joo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"joB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/hallway/secondary/exit/departure_lounge) +"hxL" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/item/storage/medkit/emergency, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"joH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +"hxP" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/bitrunning/den) +"hxQ" = ( +/obj/machinery/computer/cargo{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"joL" = ( -/obj/machinery/computer/gateway_control{ - dir = 8 +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"hyl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/gateway) -"joM" = ( -/turf/open/floor/glass/reinforced/airless, -/area/space/nearstation) -"joQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"joV" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"joW" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("xenobiology") +/area/station/hallway/primary/central) +"hyq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - req_access = list("xenobiology") +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"hyt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio7"; - name = "Xenobio Pen 7 Blast Door" +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"hyJ" = ( +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"hyQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"jpc" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/west, /turf/open/floor/iron, -/area/station/security/interrogation) -"jpe" = ( -/turf/open/floor/iron/white/smooth_corner{ +/area/station/commons/fitness/recreation) +"hzC" = ( +/obj/structure/flora/rock/icy/style_2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"hzE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/science/xenobiology) -"jpg" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/item/kirbyplants/organic/plant3, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"jpn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"hzO" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"hAc" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"jpv" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/machinery/shower/directional/east{ + name = "emergency shower" }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"jpx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"jpD" = ( -/obj/effect/spawner/random/trash/mess, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"jpH" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"jpV" = ( -/obj/effect/landmark/start/librarian, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"jpW" = ( +/area/station/engineering/atmos) +"hAF" = ( /obj/structure/table/wood, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/item/toy/figure/bartender{ + pixel_x = -7 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/item/folder/red, -/turf/open/floor/iron, -/area/station/security/courtroom) -"jpZ" = ( -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/commons/lounge) -"jqd" = ( -/obj/structure/closet/secure_closet/hos, -/obj/item/food/sandwich/philly_cheesesteak, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"jqe" = ( -/obj/machinery/bouldertech/refinery{ +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"hAJ" = ( +/turf/closed/wall, +/area/station/engineering/storage/tech) +"hAM" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"hAP" = ( +/turf/closed/wall/r_wall, +/area/station/security/evidence) +"hBa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 4; - id = "brm" - }, -/obj/effect/turf_decal/sand/plating, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"jqf" = ( -/obj/machinery/door/firedoor/border_only{ +/area/station/maintenance/port/fore) +"hBf" = ( +/obj/structure/chair{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/airalarm/directional/west, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"jqj" = ( /obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jqk" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/airlock/research{ - name = "Xenobiology" +/area/station/hallway/secondary/exit/departure_lounge) +"hBg" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad"; + name = "off ramp" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" +/turf/open/floor/plating, +/area/station/cargo/storage) +"hBk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ + dir = 4 }, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"hBm" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/end{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"hBx" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"jql" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/structure/sign/warning/secure_area/directional/north{ + name = "EMERGENCY STORAGE" }, -/obj/machinery/plumbing/receiver, -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"jqu" = ( -/obj/structure/table/reinforced, -/obj/item/pinpointer/nuke, -/obj/item/disk/nuclear, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"jqv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"hBD" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/area/station/engineering/atmos/mix) -"jqz" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jqC" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/item/banner/cargo/mundane, /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jqD" = ( -/obj/machinery/teleport/station, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"jqG" = ( -/obj/machinery/computer/security{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"hBG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/light/directional/east, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"hBJ" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/port/greater) +"hBR" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/l3closet/scientist, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/machinery/firealarm/directional/north, +/obj/item/extinguisher, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Air to Room" }, -/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"jqT" = ( -/obj/structure/chair{ - dir = 4 +/area/station/science/xenobiology) +"hBV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance{ + name = "Ordnance Lab Maintenance" }, -/obj/effect/landmark/start/head_of_personnel, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/science/ordnance) +"hCd" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"hCl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"jqY" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"jrd" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/area/station/security/lockers) +"hCr" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jre" = ( -/obj/machinery/electrolyzer{ - anchored = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/item/radio/intercom/prison/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/mix) -"jrm" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"jrn" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"jrX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"jrY" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"jsf" = ( -/obj/structure/sign/warning/chem_diamond/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jsn" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"hCK" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/orange, +/obj/item/restraints/handcuffs, +/obj/item/reagent_containers/spray/pepper, /obj/effect/turf_decal/stripes/corner, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/warning/chem_diamond/directional/north, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"jss" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench/left{ - dir = 1 +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 }, -/obj/effect/landmark/start/assistant, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"jsC" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/medical/central) -"jsL" = ( -/obj/effect/turf_decal/bot{ - dir = 1 +/area/station/security/execution/transfer) +"hCV" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/airlock/external{ + name = "Common Mining Dock" }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/firealarm/directional/north, +/obj/effect/landmark/navigate_destination, /turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"jsO" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/area/station/hallway/primary/fore) +"hCY" = ( +/obj/item/disk/computer{ + pixel_x = -5; + pixel_y = 8 }, -/area/station/maintenance/department/medical) -"jsU" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 1 +/obj/item/disk/computer{ + pixel_x = 7; + pixel_y = 2 + }, +/obj/item/disk/computer{ + pixel_x = -8; + pixel_y = -3 + }, +/obj/structure/table, +/obj/item/disk/computer/ordnance{ + pixel_x = 2; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"hDa" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"jtc" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jtd" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"jtv" = ( -/obj/structure/chair/plastic, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/dim/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"jtw" = ( -/obj/effect/spawner/random/structure/crate_abandoned, +"hDy" = ( +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"jtR" = ( -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/hallway/primary/central) -"juh" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/analyzer, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"jui" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"juw" = ( -/turf/closed/wall/r_wall, -/area/station/command/corporate_showroom) -"juD" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"juE" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"juU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"juV" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"hDB" = ( +/turf/closed/wall/r_wall, +/area/station/tcommsat/server) +"hDC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/engineering/main) -"juZ" = ( -/obj/structure/table/wood, /obj/structure/disposalpipe/segment{ dir = 6 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"jvt" = ( -/obj/structure/closet/secure_closet/chemical, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron/textured_large, -/area/station/medical/treatment_center) -"jvA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 10 +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"hDK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"jvM" = ( +/area/station/hallway/primary/starboard) +"hDV" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 8 }, -/turf/open/floor/iron/white/smooth_corner{ +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/area/station/science/robotics/lab) -"jvN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"jvO" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"hDX" = ( /obj/structure/cable, -/obj/machinery/light/warm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"jvV" = ( -/obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"jwa" = ( -/obj/structure/lattice, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"jwb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"jwr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/closet/secure_closet/courtroom, -/obj/item/gavelblock, -/obj/item/gavelhammer, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"jwF" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/light/dim/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"jwI" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "bar_shutters"; - name = "Bar Shutters" +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"hEa" = ( +/obj/item/kirbyplants/organic/applebush, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"jwK" = ( -/obj/item/toy/plush/lizard_plushie/space/green, -/turf/open/floor/fakespace, -/area/station/maintenance/port/lesser) -"jwL" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/area/station/command/meeting_room) -"jxa" = ( -/turf/closed/wall, -/area/station/science/explab) -"jxd" = ( -/turf/open/floor/iron, -/area/station/engineering/lobby) -"jxe" = ( -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 +/area/station/hallway/primary/central/fore) +"hEk" = ( +/obj/structure/table, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/stack/wrapping_paper{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 +/obj/item/stack/wrapping_paper{ + pixel_x = -4; + pixel_y = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/item/radio/intercom/directional/north, +/obj/item/storage/box/shipping, +/obj/effect/spawner/random/bureaucracy/birthday_wrap, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/item/papercutter, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"jxi" = ( -/obj/structure/chair/stool/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"jxq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/station/cargo/sorting) +"hEw" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"jxx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output{ +/obj/item/pen, +/obj/item/stamp/law{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"hEE" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/aft) +"hEH" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"jxE" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"jxF" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/science) -"jxR" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jxS" = ( -/obj/structure/lattice, -/obj/structure/cable, -/turf/open/openspace, -/area/station/command/meeting_room) -"jyg" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light_switch/directional/west, -/obj/structure/closet/l3closet, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"jyu" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"jyx" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/paramedic, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"jyM" = ( -/obj/structure/ladder{ - icon_state = "ladder10" +/area/station/hallway/secondary/exit/departure_lounge) +"hEI" = ( +/obj/machinery/pdapainter/medbay, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"jyO" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"jyQ" = ( -/obj/machinery/door/airlock/research{ - name = "Research and Development Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/smooth_edge, -/area/station/science/lab) -"jza" = ( -/turf/closed/wall/r_wall, -/area/station/security/lockers) -"jzi" = ( -/obj/machinery/light/floor, +/area/station/command/heads_quarters/cmo) +"hEQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"jzq" = ( -/obj/item/target, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"hEU" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, +/obj/effect/turf_decal/stripes/box, /turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"jzu" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"jzv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/area/space/nearstation) +"hEV" = ( +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"hEY" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Air to Distro" + }, +/obj/structure/sign/warning/fire/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Atmospherics Distribution Loop"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"jzC" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"jzI" = ( -/obj/structure/railing{ - dir = 1 +/area/station/engineering/atmos/pumproom) +"hFm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/iron, +/area/station/engineering/atmos) +"hFx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "xenobiology sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"hFy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/office) +"hGf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/cargo/storage) -"jzJ" = ( -/obj/machinery/power/terminal{ - dir = 8 +/area/station/command/bridge) +"hGm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/south{ + pixel_x = 26 }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/main) -"jzM" = ( -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"jzN" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"jzR" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/door/airlock/public/glass{ - name = "Prison Kitchen" +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"jzV" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 6 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"hGC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"jAd" = ( -/obj/machinery/teleport/hub, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"jAe" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"jAg" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/area/station/cargo/storage) +"hGX" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"hHg" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/structure/bed/medical/emergency, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"hHj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/station/security/lockers) -"jAn" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"hHm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron, -/area/station/security/office) -"jAB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"jAD" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"jAG" = ( -/turf/closed/wall, -/area/station/service/lawoffice) -"jAR" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"jAU" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"jBg" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/machinery/light/small/dim/directional/east, -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"hHt" = ( +/obj/structure/table, +/obj/item/storage/crayons, +/obj/item/clothing/under/color/grey{ + pixel_x = 4; + pixel_y = 4 }, -/obj/item/assembly/igniter/condenser, -/obj/machinery/camera/autoname/directional/east{ - network = list("minisat") +/obj/item/clothing/under/color/grey, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"jBh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/dim/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"jBj" = ( -/obj/structure/chair/office/tactical{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/effect/landmark/start/detective, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/office) -"jBl" = ( +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"hHL" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 9 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jBG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"jBJ" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/holopad, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"jBM" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Two"; - space_dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"jBX" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"hHM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"hHP" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad/secure, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jCm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ +/area/station/ai/upload/chamber) +"hIm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"hIq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"jCr" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 10 - }, -/obj/structure/railing{ - dir = 10 +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"hIs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"hIS" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/rnd_all, +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/secure_area/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"jCw" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"hIY" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"hJa" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/checkpoint/supply) +"hJm" = ( +/obj/item/radio/intercom/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P5-Central-Primary"; - location = "P4-Central-Primary" +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jCD" = ( -/turf/closed/wall, -/area/station/security/detectives_office/private_investigators_office) -"jCG" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/station/service/hydroponics) +"hJp" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/effect/turf_decal/stripes/full, +/obj/structure/bed/dogbed/mcgriff, +/mob/living/basic/pet/dog/pug/mcgriff, /turf/open/floor/iron/dark, -/area/station/security/processing) -"jCN" = ( -/obj/machinery/door/airlock/medical{ - name = "Psychology Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, -/obj/structure/cable, +/area/station/security/warden) +"hJy" = ( /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/vault{ + name = "Vault" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/medical/psychology) -"jCP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/hallway/secondary/entry) -"jCT" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/mapping_helpers/airlock/locked, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"jCU" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/o_plus{ - pixel_x = -2; - pixel_y = -1 +/obj/effect/mapping_helpers/airlock/access/all/supply/vault, +/obj/effect/landmark/navigate_destination/vault, +/turf/open/floor/iron/dark, +/area/station/command/vault) +"hJz" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 4 }, -/obj/item/reagent_containers/blood/o_minus, -/obj/item/reagent_containers/blood/b_plus, -/obj/item/reagent_containers/blood/b_minus, -/obj/item/reagent_containers/blood/a_plus, -/obj/item/reagent_containers/blood/a_minus, -/obj/item/reagent_containers/blood/lizard, -/obj/item/reagent_containers/blood/ethereal, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 +/obj/item/stock_parts/power_store/cell/high, +/obj/item/screwdriver{ + pixel_y = 18 }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"hJC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/mob/living/basic/bot/cleanbot/medbay{ + name = "Deacon Scrubsy" + }, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"hJD" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/security_all, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"hJQ" = ( +/obj/structure/chair/sofa/right/maroon{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/structure/railing{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"jCX" = ( -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"jDi" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"jDl" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"jDs" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -6 +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"hJZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 6; - pixel_y = 3 +/obj/machinery/flasher/directional/north{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/camera/directional/north{ + c_tag = "AI Chamber SMES"; + name = "core camera"; + network = list("aicore") + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"hKc" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/service/bar) -"jDw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, +/area/station/security/processing) +"hKg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"jDC" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch/oneway{ - dir = 8; - id = "QMLoad"; - name = "Loading Conveyor"; - pixel_x = -13 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jDM" = ( -/obj/machinery/power/turbine/turbine_outlet{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"jDP" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail, -/obj/effect/mapping_helpers/mail_sorting/science/genetics, -/turf/open/floor/iron/white, -/area/station/science/research) -"jDQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"jEc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"jEd" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#EFB341" - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"jEf" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"jEr" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/commons/lounge) -"jEt" = ( -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"jEu" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/syringe{ - pixel_y = 6 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"hKA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/item/reagent_containers/syringe{ - pixel_y = 3 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"jED" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"jEK" = ( -/obj/structure/disposalpipe/junction{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"jEX" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"jEY" = ( -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/ai/satellite/foyer) -"jFc" = ( -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"jFP" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 +/area/ruin/space/has_grav/abandoned_warehouse) +"hKB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"jFR" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"jGa" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/yellow, -/turf/open/space/openspace, -/area/space/nearstation) -"jGd" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/structure/sign/warning/explosives/alt/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"jGe" = ( -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"hKE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"jGg" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/area/station/maintenance/port/aft) +"hKP" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"jGs" = ( -/obj/structure/sign/warning/electric_shock, -/turf/closed/wall/r_wall, -/area/station/science/xenobiology) -"jGy" = ( +/obj/structure/sign/poster/official/enlist/directional/east, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"hKQ" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder/yellow, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/courtroom) +"hKV" = ( /obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/item/assembly/timer{ +/obj/item/paper_bin{ pixel_x = -4; - pixel_y = 2 - }, -/obj/item/assembly/timer{ - pixel_x = 5; pixel_y = 4 }, -/obj/item/assembly/timer{ +/obj/item/radio{ pixel_x = 6; - pixel_y = -4 + pixel_y = 4 }, -/obj/item/assembly/timer, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light_switch/directional/west, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"jGB" = ( -/turf/closed/wall, -/area/station/service/janitor) -"jGF" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/office) -"jGP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/area/station/security/checkpoint/supply) +"hLj" = ( +/obj/machinery/telecomms/server/presets/security, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"hLr" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/airalarm/directional/south, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/delivery, +/obj/machinery/bci_implanter, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/camera/directional/east{ + name = "engineering camera"; + network = list("ss13","engine"); + c_tag = "Circuit Workshop" }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/showroomfloor, /area/station/engineering/circuit_workshop) -"jGW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 +"hLz" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "medical sorting disposal pipe" }, -/obj/effect/landmark/start/prisoner, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/prison) -"jGX" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/broken_bottle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"jHn" = ( -/obj/structure/railing{ - dir = 8 +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/mapping_helpers/mail_sorting/medbay/general, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"hLH" = ( +/obj/machinery/computer/security/mining{ dir = 8 }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"jHp" = ( -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jHx" = ( -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/patients_rooms/room_a) -"jHz" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jHD" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"jHH" = ( -/obj/machinery/disposal/bin, -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/area/station/cargo/miningdock) +"hLO" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" }, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"jHQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jHR" = ( -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 +/area/station/cargo/storage) +"hLS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"hMf" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"jIc" = ( -/obj/machinery/light/warm/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"jIe" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/item/storage/bag/tray, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "kitchenshutters"; + name = "Kitchen Shutters" }, +/turf/open/floor/iron, +/area/station/service/kitchen) +"hMo" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/cargo/sorting) +"hMx" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"hMz" = ( +/obj/machinery/power/shieldwallgen, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"hMC" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/security/prison) +"hMN" = ( +/turf/closed/wall, +/area/station/service/chapel/funeral) +"hMW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"hMZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "brige-maint"; + name = "Bridge Blast Door" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge-passthrough" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"jIf" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/door/airlock/maintenance{ + name = "Command Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"hNi" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/wood, -/area/station/service/library) -"jIl" = ( -/obj/structure/railing{ - dir = 1 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/area/station/hallway/primary/starboard) +"hNj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/south, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"hNy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 5 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"hNF" = ( +/obj/structure/lattice/catwalk, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/marker_beacon/burgundy, +/turf/open/space/basic, +/area/space/nearstation) +"hNI" = ( +/turf/closed/wall/rust, +/area/station/security/detectives_office) +"hNL" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"hNR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Teleporter Access" }, -/area/station/command/meeting_room) -"jIm" = ( -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/white, -/area/station/science/research) -"jIn" = ( +/obj/effect/mapping_helpers/airlock/access/all/command/teleporter, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"hOc" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/medical/chemistry) -"jIA" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 +/area/station/cargo/storage) +"hOh" = ( +/obj/machinery/door/airlock/engineering{ + name = "Port Quarter Solar Access" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"jIG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/solars/port/aft) +"hOm" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/obj/structure/transit_tube/horizontal, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/science/robotics/lab) -"jIK" = ( +/turf/open/floor/plating, +/area/station/service/chapel/dock) +"hOs" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"hOt" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"jIU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"hOA" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/ferny, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"hOE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"jIY" = ( -/obj/structure/chair{ - name = "Defense" +/area/station/maintenance/starboard) +"hOH" = ( +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/courtroom) -"jJb" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/secondary/entry) -"jJe" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"jJg" = ( -/obj/effect/mapping_helpers/broken_floor, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"jJo" = ( -/obj/structure/chair{ - dir = 1 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"hOJ" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, -/area/station/maintenance/radshelter/medical) -"jJv" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/rubble, -/obj/structure/rack, -/obj/item/pickaxe/improvised, -/turf/open/floor/plating, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, /area/station/maintenance/port/greater) -"jJA" = ( -/obj/structure/sign/warning/directional/east, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jJS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_half{ +"hOK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/area/station/science/xenobiology) -"jJW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/clothing/wardrobe_closet_colored, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"jKc" = ( -/obj/machinery/door/window/brigdoor/left/directional/north{ - req_access = list("armory") - }, -/obj/structure/railing{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"hON" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering Desk"; + name = "engineering camera"; + network = list("ss13","engine") }, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"jKg" = ( -/obj/effect/landmark/start/depsec/science, -/obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/machinery/rnd/production/protolathe/department/engineering, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"jKj" = ( -/obj/structure/closet{ - name = "janitorial supplies" +/area/station/engineering/lobby) +"hOU" = ( +/obj/machinery/door/airlock/external{ + name = "Security Escape Pod"; + space_dir = 2 }, -/obj/item/storage/box/bodybags, -/obj/item/reagent_containers/spray/cleaner, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"jKp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/landmark/navigate_destination/dockescpod4, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"hOY" = ( +/obj/structure/bookcase/random/reference, +/obj/item/toy/figure/psychologist{ + pixel_y = 18 }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"jKt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/carpet, +/area/station/medical/psychology) +"hPp" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet{ + name = "medical locker" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/grille/broken, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"hPq" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "dormitories sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/service/dormitories, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"jKu" = ( +/area/station/commons/fitness/recreation) +"hPr" = ( +/obj/machinery/air_sensor/engine_chamber, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"hPx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"hPz" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/maintenance/port/greater) +"hPG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"jKw" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"hPR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"jKy" = ( -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/area/station/service/chapel) -"jKC" = ( -/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"hPV" = ( +/obj/structure/flora/rock/pile/style_random, /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"jKD" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"jKF" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ +/area/station/security/prison) +"hPW" = ( +/turf/closed/wall/r_wall/rust, +/area/station/tcommsat/computer) +"hPX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"hPY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"hQa" = ( /obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 8; - name = "Waste Release" - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"jLp" = ( -/obj/machinery/photocopier/prebuilt, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"jLr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/structure/cable, /obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"hQg" = ( +/obj/item/kirbyplants/organic/plant3, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"hQs" = ( +/obj/structure/chair, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"hQA" = ( +/obj/structure/sink/directional/south, +/obj/machinery/atmospherics/components/tank/air/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"hQF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"jLv" = ( -/obj/structure/table, -/obj/item/storage/fancy/cigarettes/cigpack_carp, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"jLC" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"jLV" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "splatter6" +"hQI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"hQP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"hRa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"jLY" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ dir = 1 }, -/obj/machinery/meter, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"jMa" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"hRf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"jMe" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"jMy" = ( -/obj/structure/railing/corner{ +/area/station/hallway/primary/central/fore) +"hRg" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"jMN" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"jMU" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Security Office"; - name = "Security Office Fax Machine" - }, -/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/security/office) -"jMW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jNg" = ( -/mob/living/basic/bot/repairbot, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"jNh" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/construction/mining/aux_base) +"hRj" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Ports" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jNr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"jNJ" = ( -/obj/effect/turf_decal/siding/green, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/commons/storage/art) -"jNL" = ( -/obj/machinery/door/airlock/command{ - name = "Chief Engineer" +/area/station/engineering/atmos) +"hRo" = ( +/obj/machinery/door/poddoor/preopen{ + id = "transittube_ai"; + name = "Transit Tube Blast Door" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, -/obj/structure/cable, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"jOf" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"hRG" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ dir = 4 }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"hRO" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/lobby) -"jOh" = ( -/obj/machinery/atmospherics/components/binary/pump{ +/area/station/hallway/secondary/exit/departure_lounge) +"hRU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"hRY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"hRZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"hSa" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/mix) -"jOq" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"jOr" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white/right, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/item/radio/intercom/prison/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"hSt" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"jOz" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jOB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jOD" = ( -/obj/structure/closet/firecloset, -/obj/item/poster/random_contraband, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"jOH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"jOM" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"hSv" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/turf/open/space/openspace, -/area/space/nearstation) -"jON" = ( -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron, -/area/station/security/prison/mess) -"jOV" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison) -"jOZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"jPb" = ( -/obj/effect/baseturf_helper/reinforced_plating, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"jPg" = ( -/obj/machinery/telecomms/broadcaster/preset_right, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"jPm" = ( -/obj/structure/chair/office/tactical{ +/turf/closed/wall, +/area/station/engineering/atmos) +"hSy" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/computer/records/security{ dir = 4 }, -/obj/effect/landmark/start/security_officer, +/obj/machinery/status_display/evac/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron, -/area/station/security/office) -"jPq" = ( -/obj/machinery/light/small/dim/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"jPs" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = -5 +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/customs) +"hSJ" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/item/storage/box/beakers{ - pixel_x = 7; - pixel_y = 3 +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"hTb" = ( +/obj/structure/closet/secure_closet/research_director, +/obj/effect/turf_decal/delivery, +/obj/item/gun/energy/e_gun/mini, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Research Director's Office"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"jPL" = ( -/obj/structure/lattice, -/obj/machinery/camera/autoname/directional/east, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"jPO" = ( -/obj/machinery/cryo_cell, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"jPY" = ( -/mob/living/basic/living_floor, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"hTj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"jQc" = ( -/obj/effect/turf_decal/tile/blue{ +/area/station/maintenance/port/fore) +"hTz" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"hTB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"jQf" = ( +/obj/effect/landmark/event_spawn, +/obj/item/kirbyplants/organic/plant3, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"hTK" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/siding/green{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"jQl" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/rack, -/obj/item/stack/sheet/iron/twenty, -/obj/item/stack/sheet/iron/ten, -/obj/item/stack/sheet/glass{ - amount = 25; - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"hTQ" = ( +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"jQo" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/security/prison/shower) +"hUw" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/mining{ + name = "Cargo Bay" }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jQs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"hUy" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters" }, -/obj/machinery/light/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jQt" = ( /obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) +"hUA" = ( +/obj/machinery/computer/records/security, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"hUC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"jQS" = ( -/turf/closed/wall/r_wall, -/area/station/science/xenobiology) -"jRj" = ( +/area/station/maintenance/port/greater) +"hUD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, /obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/broken/directional/west, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"jRw" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"jRI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jRJ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/starboard) +"hUE" = ( +/obj/structure/chair/pew{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/chapel{ dir = 1 }, -/obj/structure/disposalpipe/trunk/multiz/down{ +/area/station/service/chapel) +"hUL" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/security) -"jRK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/obj/machinery/door/airlock{ - name = "Mime's Backstage Room" +/area/station/hallway/secondary/entry) +"hUM" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"hVc" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/storage/backpack/satchel/eng, +/obj/item/wirecutters, /turf/open/floor/plating, -/area/station/service/theater) -"jRN" = ( +/area/station/maintenance/port/lesser) +"hVj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"hVl" = ( +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/structure/flora/grass/jungle/a/style_random, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lab) -"jRU" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/random/directional/north, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"jSf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ - name = "grimy chair" - }, +/area/station/maintenance/port/lesser) +"hVy" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"hVF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"jSs" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Booth" +/area/station/hallway/secondary/exit/departure_lounge) +"hVH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgehop" +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"hVL" = ( +/obj/machinery/computer/slot_machine, +/obj/effect/turf_decal/bot_white, +/obj/structure/sign/poster/contraband/smoke/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"jSu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"hVT" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/machinery/light/directional/east, +/turf/open/floor/grass, +/area/station/service/chapel) +"hVU" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"hVY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/effect/spawner/random/medical/memeorgans, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"hVZ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/item/reagent_containers/cup/bucket, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"jSE" = ( +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"hWw" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"hWD" = ( +/turf/open/floor/iron/stairs/medium{ + dir = 8 + }, +/area/station/hallway/primary/fore) +"hXe" = ( /obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"hXK" = ( +/obj/structure/sign/directions/security{ + pixel_y = -40 + }, +/obj/structure/sign/directions/medical{ + dir = 8; + pixel_y = -32 + }, +/obj/structure/sign/directions/command{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"hXL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/station_alert, +/obj/machinery/requests_console/directional/east{ + department = "Atmospherics"; + name = "Atmospherics Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"hXY" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/item/storage/backpack, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/airalarm/directional/north, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"hYo" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/prisoner, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"hYu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jSV" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/area/station/maintenance/starboard/fore) +"hYw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"jSY" = ( +/obj/machinery/light/small/directional/south, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ + dir = 8 }, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/exam_room) -"jTa" = ( +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"hYD" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"jTd" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"jTg" = ( -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"jTo" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Office" +/obj/machinery/button/door/directional/east{ + id = "virocells"; + name = "Isolation Shutters" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"hYY" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/organic/plant11, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"hZd" = ( +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"hZg" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/upper) -"jTB" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/storage) -"jTE" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/obj/structure/rack, +/obj/item/storage/box/teargas{ + pixel_x = 1; + pixel_y = -2 }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"jTI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/open/space/basic, -/area/space/nearstation) -"jTR" = ( +/obj/item/storage/box/flashes{ + pixel_x = 3 + }, +/obj/item/gun/grenadelauncher, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"hZi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"jUd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/central/lesser) -"jUi" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jUm" = ( -/obj/structure/closet/wardrobe/pjs, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"hZn" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/science/xenobiology) +"hZp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"jUz" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ +/area/station/hallway/secondary/service) +"hZr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"jUD" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"hZu" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"hZP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/courtroom) -"jUS" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"hZS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/office) -"jUU" = ( -/turf/closed/wall, -/area/station/commons/vacant_room/commissary) -"jUV" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/commons/storage/art) +"hZT" = ( +/obj/structure/chair/office/light{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/service/library) -"jVk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"jVq" = ( -/obj/effect/spawner/random/structure/billboard/nanotrasen, -/obj/effect/turf_decal/stripes/asteroid/line{ +/obj/effect/turf_decal/siding/yellow{ dir = 9 }, -/turf/open/misc/asteroid, -/area/station/maintenance/port/lesser) -"jVu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"jVx" = ( -/turf/closed/wall/rust, -/area/station/engineering/storage/tech) -"jVy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/bridge) -"jVF" = ( -/obj/machinery/duct, -/obj/effect/landmark/start/botanist, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"jVI" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"jVO" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L2" +/area/station/engineering/lobby) +"iai" = ( +/obj/machinery/vending/hydronutrients, +/obj/structure/railing{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"jVV" = ( -/obj/structure/lattice, -/turf/open/space/openspace, -/area/space/nearstation) -"jVY" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"jWb" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 1"; - name = "Cell 1 locker" +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig) -"jWc" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"iak" = ( +/obj/docking_port/stationary/random{ + name = "lavaland"; + shuttle_id = "pod_3_lavaland" }, -/turf/open/floor/wood, -/area/station/service/library) -"jWg" = ( +/turf/open/space/basic, +/area/space/nearstation) +"ias" = ( /obj/structure/table/wood, -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/obj/item/flashlight/lantern{ - pixel_y = 7 +/obj/item/vending_refill/cigarette, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/structure/mirror/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"jWh" = ( -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"jWj" = ( -/obj/structure/cable, -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"jWm" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 +/area/station/service/bar/backroom) +"iaw" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = -40 }, -/obj/machinery/firealarm/directional/south, -/turf/open/openspace, -/area/station/security/prison/shower) -"jWE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"jWG" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 9 +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_y = -32 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"jWI" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Gas to Cooling Loop" +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = -24 }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jWP" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"iay" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"iaH" = ( +/obj/structure/chair/wood/wings{ dir = 8 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"jWU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/area/station/engineering/atmos/pumproom) -"jXb" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"jXC" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/minisat/directional/west, /turf/open/floor/iron, -/area/station/command/bridge) -"jXL" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"jXO" = ( -/obj/structure/cable, +/area/station/service/theater) +"iaX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"jYf" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"iaY" = ( +/obj/structure/closet/l3closet/security, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"jYh" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"jYm" = ( -/obj/structure/broken_flooring/corner/directional/east, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"jYp" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"jYy" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"jYG" = ( -/obj/effect/landmark/navigate_destination{ - location = "Public Mining Dock" +/area/station/maintenance/port/aft) +"ibd" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/west{ + name = "Kitchen Service Desk"; + req_access = list("kitchen") }, -/obj/machinery/door/airlock/external{ - name = "Common Mining Dock" +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"jYH" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/service/theater) -"jYT" = ( -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"jZg" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/rack, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"jZj" = ( -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"jZp" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/obj/item/pen, +/obj/item/storage/bag/plants, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/green/corner, +/obj/machinery/door/window/right/directional/east{ + name = "Kitchen Service Desk"; + req_access = list("hydroponics") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"jZt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"jZv" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"jZx" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"jZC" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/command/meeting_room) -"jZG" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/area/station/service/kitchen) +"ibi" = ( +/obj/machinery/biogenerator, +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jZN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 1 +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ + dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/item/reagent_containers/cup/watering_can, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"jZV" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/paper_bin, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"jZY" = ( +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"ibm" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating, -/area/station/asteroid) -"kaa" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ +/area/ruin/space/has_grav/abandoned_warehouse) +"ibJ" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/security/checkpoint/science) -"kae" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"ibL" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/surgery_tray/full, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"ibN" = ( +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"kag" = ( -/turf/closed/wall, -/area/station/commons/storage/primary) -"kah" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/light/directional/east, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"ibU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/sign/warning/electric_shock/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kao" = ( -/obj/structure/ladder, -/obj/machinery/light/small/dim/directional/north, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"kaJ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, +/area/station/maintenance/port/aft) +"icp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/security) -"kaK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/breakroom) -"kbe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/area/station/security/brig) +"icw" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/utility/hardhat/orange{ + name = "protective hat"; + pixel_y = 6 }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"kbg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"kbv" = ( -/obj/machinery/turretid{ - control_area = "/area/station/ai/satellite/interior"; - name = "AI Antechamber turret control"; - pixel_x = 27; - dir = 4 +/obj/item/clothing/head/utility/hardhat/orange{ + name = "protective hat"; + pixel_y = 6 }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/item/clothing/head/utility/hardhat/orange{ + name = "protective hat"; + pixel_y = 6 }, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"kbD" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/siding/purple, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"kbT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kbW" = ( -/obj/structure/chair/plastic{ - dir = 8 +/area/station/engineering/storage_shared) +"icx" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/rust, +/area/space/nearstation) +"icG" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"kbY" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kcc" = ( /obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/port/fore) +"icJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/event_spawn, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/gateway) +"icQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kcd" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"kck" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Security Secways" + }, +/obj/effect/turf_decal/box, +/obj/vehicle/ridden/secway, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"icR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai/satellite/uppersouth) -"kco" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 5 +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/button/door/directional/north{ + id = "greylair"; + name = "Lair Privacy Toggle" }, -/turf/open/misc/asteroid, -/area/station/maintenance/port/lesser) -"kcr" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/digital_clock/directional/south, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"icU" = ( +/obj/structure/sign/departments/security/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"kcz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"idh" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "chapel sorting disposal pipe" }, -/obj/structure/closet/radiation, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"kcA" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/white{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security) -"kcB" = ( -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 +/obj/effect/mapping_helpers/mail_sorting/service/chapel, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"kcE" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/science/research) -"kcN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"idk" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 +/area/station/engineering/supermatter/engine) +"idq" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/checker, -/area/station/science/research) -"kcW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"kcY" = ( -/obj/structure/table/reinforced, -/obj/machinery/camera/directional/north{ - c_tag = "Science Robotics Office"; - network = list("ss13","rd") +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/radio/intercom/directional/north, -/obj/item/storage/medkit{ - pixel_x = 7; - pixel_y = -3 +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"idF" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/storage/medkit{ - pixel_x = -5; - pixel_y = -1 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/item/healthanalyzer{ - pixel_x = 4; - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/healthanalyzer{ - pixel_x = -3; - pixel_y = -4 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/effect/turf_decal/delivery/red, -/obj/effect/turf_decal/stripes/line{ +/area/station/hallway/primary/central/fore) +"idM" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/modular_computer/preset/cargochat/cargo{ dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"kda" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"kdc" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kde" = ( -/obj/structure/chair{ +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"idQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"kdg" = ( -/turf/closed/wall, -/area/station/science/research) -"kdh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kdo" = ( +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"idY" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/command/emergency_closet) -"kdp" = ( -/turf/open/floor/glass/reinforced, -/area/station/engineering/lobby) -"kdu" = ( -/obj/structure/toilet{ - dir = 1 +/obj/machinery/door/airlock/grunge{ + name = "Morgue" }, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32; - spawn_loot_chance = 50 +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"ieb" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Xenobiology Euthanization Chamber"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/button/door/directional/west{ - id = "u3"; - name = "privacy bolt control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"kdw" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 +/turf/open/floor/circuit/telecomms, +/area/station/science/xenobiology) +"ieg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"kdE" = ( +/turf/open/floor/iron, +/area/station/security/brig) +"ieu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"ieI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/engineering/atmos/project) -"kdI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/command/teleporter) +"ieV" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kdP" = ( -/obj/structure/bed/medical/emergency, -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron, -/area/station/command/gateway) -"kdR" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("aicore") +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"kdW" = ( -/obj/machinery/smartfridge, -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"ifu" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/obj/item/book{ + desc = "An undeniably handy book."; + icon_state = "bookknock"; + name = "A Simpleton's Guide to Safe-cracking with Stethoscopes" }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters" +/obj/item/stack/spacecash/c500{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ked" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"kee" = ( -/obj/structure/cable/layer3, -/obj/effect/turf_decal/tile/blue, +/obj/item/stack/spacecash/c1000, +/obj/item/gun/ballistic/automatic/pistol/deagle/gold, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/safe/vault, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"keg" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/area/station/command/vault) +"ifv" = ( +/obj/structure/table, +/obj/item/mmi, +/obj/item/bodypart/chest/robot{ + pixel_y = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/item/bodypart/leg/right/robot{ + pixel_x = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"keo" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "QMLoad2"; - name = "Unloading Conveyor"; - pixel_x = -13; - pixel_y = -4 +/obj/item/bodypart/arm/right/robot{ + pixel_x = 6; + pixel_y = 6 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ket" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 1 +/obj/item/bodypart/leg/left/robot{ + pixel_x = -6 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/commons/locker) -"kex" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/item/bodypart/arm/left/robot{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"keJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"keP" = ( -/turf/open/floor/iron/stairs/left{ - dir = 1 +/obj/item/bodypart/head/robot, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"keQ" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"ifw" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"ifB" = ( +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30 + }, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"ifQ" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/security/prison) +"igg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/siding/blue{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"kfr" = ( -/obj/machinery/gulag_item_reclaimer{ - pixel_y = 24 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) -"kfs" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/displaycase/trophy, -/turf/open/floor/glass/reinforced, -/area/station/service/bar) -"kfD" = ( -/obj/structure/table/optable, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/blue/full, -/obj/item/radio/intercom/directional/north, -/obj/item/clothing/mask/breath/muzzle, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"kfG" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"igl" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/library) +"igo" = ( +/obj/machinery/vending/wardrobe/jani_wardrobe, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Custodial Closet"; + name = "service camera" }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"kgb" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"igC" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/sign/warning/secure_area/directional/south, /turf/open/floor/iron, -/area/station/engineering/main) -"kgh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, +/area/station/hallway/primary/aft) +"igR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") - }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/structure/sign/poster/official/fruit_bowl/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"kgm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"kgA" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/item/book/manual/chef_recipes{ - pixel_x = 2; - pixel_y = 6 +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"ihg" = ( +/turf/closed/wall/r_wall, +/area/station/ai/satellite/maintenance/storage) +"iht" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"kgH" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "soup"; - name = "Radiation Chamber Shutters" +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"kgO" = ( +/turf/open/floor/iron, +/area/station/cargo/storage) +"ihD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"kgT" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"ihU" = ( +/turf/closed/wall/rust, +/area/station/cargo/sorting) +"iio" = ( +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/security/brig) -"khi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ - dir = 1 +/area/station/hallway/primary/starboard) +"iiQ" = ( +/obj/effect/turf_decal/box, +/obj/structure/toilet{ + dir = 8 }, -/area/station/cargo/bitrunning/den) -"khv" = ( -/obj/structure/table, -/obj/item/clipboard{ - pixel_y = 8; - pixel_x = -6 +/obj/structure/mirror/directional/west, +/obj/machinery/newscaster/directional/south{ + pixel_x = -28 }, -/obj/item/folder/white{ - pixel_x = -6; - pixel_y = 8 +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/east{ + id = "Unit_2Privacy"; + name = "Unit 2 Privacy Toggle"; + pixel_y = -8 }, -/obj/item/paper_bin{ - pixel_x = 7; - pixel_y = 3 +/obj/machinery/button/door/directional/east{ + id = "Unit_2"; + name = "Unit2 Privacy Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 }, -/obj/item/pen{ - pixel_x = 7; - pixel_y = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"ijc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"khA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"khJ" = ( -/obj/effect/decal/cleanable/blood/old{ - icon_state = "gib5-old" - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"khL" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"khO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"ijd" = ( +/obj/structure/chair/comfy/brown{ + color = "#c45c57"; dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"khP" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/effect/landmark/start/head_of_security, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"ijl" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/office) +"ijr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 1 }, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"iju" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"khS" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 +/obj/structure/cable, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"ijy" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "cargo sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/supply/cargo_bay, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ijC" = ( +/obj/structure/closet/secure_closet/chemical, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/storage/box/pillbottles, +/obj/item/storage/box/pillbottles, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/structure/railing, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"ijF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"khZ" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood, -/area/station/commons/lounge) -"kib" = ( +/area/station/hallway/primary/central/fore) +"ijG" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"kic" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kik" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/chair/sofa/bench/right{ - dir = 1 +/area/station/maintenance/port/fore) +"ijH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"kir" = ( +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/turf_decal/tile/yellow, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/starboard) -"kiB" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/structure/table, -/obj/item/hand_tele, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/item/radio{ - broadcasting = 1; - pixel_x = -8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) +"ijL" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"ijN" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"ijQ" = ( +/turf/closed/wall, +/area/station/service/bar/atrium) +"ijV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"kiK" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"kiN" = ( +/area/station/maintenance/starboard) +"ike" = ( +/obj/machinery/mining_weather_monitor/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/computer/camera_advanced/base_construction/aux, +/obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"kiT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kiW" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"kjf" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +"ikg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"kjg" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/service/bar) -"kjh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/holosign/barrier, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"kjo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"kjp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/service/chapel/monastery) +"ikh" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Distro" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"kjs" = ( -/obj/effect/spawner/random/structure/chair_comfy{ - dir = 1 +/area/station/engineering/atmos/pumproom) +"ikm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/warning/xeno_mining/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"iko" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/cargo/storage) +"ikr" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Psychology Maintenance" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"kju" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/area/station/medical/psychology) +"ikt" = ( +/obj/structure/plaque/static_plaque/atmos, +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"iku" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/commons/locker) +"ikx" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"kjx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/singular, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kjD" = ( -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/transit_tube/station/dispenser/reverse{ dir = 1 }, -/obj/machinery/atmospherics/components/binary/pump/on/supply/visible/layer4, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"kjI" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/engineering/glass{ - name = "Material Storage" +/turf/open/floor/catwalk_floor/iron, +/area/station/service/chapel/dock) +"ikE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable, -/obj/effect/landmark/navigate_destination, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"ikH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/decal/cleanable/blood/old, /obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/engineering/storage) -"kjR" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/rack, -/obj/item/clothing/glasses/meson/engine, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/item/trapdoor_remote/preloaded, -/obj/machinery/light_switch/directional/north{ - pixel_x = 26 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"kjU" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/obj/structure/cable, +/obj/machinery/airalarm/directional/east, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"ikO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"ikR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kkf" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"kki" = ( -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"ikT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"ikX" = ( +/obj/structure/sign/poster/contraband/missing_gloves, +/turf/closed/wall/rust, +/area/station/maintenance/port/fore) +"ill" = ( +/obj/machinery/computer/teleporter{ + dir = 8 }, -/obj/structure/table/wood/fancy/orange, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"kkA" = ( -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/item/radio/intercom/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/security/mechbay) -"kkC" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/rack, -/obj/effect/spawner/random/armory/pick_laser_loadout, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/area/station/ai/satellite/foyer) +"iln" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/armory) -"kkD" = ( -/obj/machinery/smartfridge/extract, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"kkF" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" +/area/station/security/execution/transfer) +"ils" = ( +/obj/structure/chair/office/light{ + dir = 8 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"kkJ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/button/door/directional/south{ - id = "evashutter"; - name = "E.V.A. Storage Shutter Control"; - req_access = list("command") +/obj/effect/landmark/start/station_engineer, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/command/eva) -"kkK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/engineering/lobby) +"ilv" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/records/security{ dir = 4 }, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"kkU" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kld" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/newscaster/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Security Office Computers" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"kll" = ( -/obj/structure/railing{ +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/office) +"ilI" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/airlock/external{ + name = "Mining Dock Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/machinery/atmospherics/pipe/layer_manifold/general/visible/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"ilJ" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/commons/fitness/recreation) +"imo" = ( +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = 40 + }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_y = 32 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 24 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"klu" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/railing/corner, -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"klz" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"klG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/item/radio/intercom/directional/south, /turf/open/floor/iron, -/area/station/security) -"klJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, +/area/station/hallway/primary/central/fore) +"imM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/service/janitor) -"klL" = ( -/obj/machinery/door/window/brigdoor/left/directional/west{ - name = "Command Desk"; - req_access = list("command") +/area/station/hallway/primary/central/fore) +"imP" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 8 +/obj/machinery/defibrillator_mount/directional/west, +/obj/structure/table/reinforced/rglass, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"imS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdprivacy"; + name = "Director's Privacy Blast Door" }, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"klP" = ( -/obj/structure/sign/poster/random/directional/west, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/turf/open/floor/plating, +/area/station/command/heads_quarters/rd) +"ine" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"inf" = ( +/turf/closed/wall/rust, +/area/station/engineering/circuit_workshop) +"ing" = ( +/turf/closed/wall/rust, +/area/station/service/chapel/dock) +"inE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"klR" = ( -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/patients_rooms/room_b) -"kmb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"kmj" = ( -/obj/machinery/door/airlock/mining{ - name = "Boutique Backroom" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"kmo" = ( +/turf/open/floor/iron, +/area/station/engineering/atmos) +"inF" = ( /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/area/station/science/xenobiology) -"kmu" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"kmz" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, +"inI" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"ios" = ( +/turf/closed/wall/rust, +/area/station/service/kitchen) +"ioK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/upload/borg/no_lock{ dir = 1 }, -/area/station/engineering/atmos/project) -"kmL" = ( +/turf/open/floor/iron/dark, +/area/station/ai/upload/chamber) +"ioQ" = ( +/turf/closed/wall, +/area/station/engineering/circuit_workshop) +"ioT" = ( +/obj/structure/lattice/catwalk, +/obj/structure/sign/warning/secure_area/directional/west{ + pixel_y = -32 + }, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 +/turf/open/floor/plating, +/area/space/nearstation) +"ipb" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"ipd" = ( +/obj/effect/turf_decal/box, +/obj/machinery/netpod, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"ipf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/edge{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"kmX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/trunk/multiz/down, /turf/open/floor/iron, -/area/station/cargo/storage) -"kno" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 +/area/station/engineering/hallway) +"ipg" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"ipo" = ( +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199" }, +/obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 + dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"knt" = ( -/obj/effect/turf_decal/loading_area/white, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"knw" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white/right, /turf/open/floor/iron/dark, -/area/station/command/gateway) -"knX" = ( +/area/station/service/hydroponics) +"ipA" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"kod" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload" }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"koe" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/effect/landmark/navigate_destination/aiupload, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"ipC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"ipD" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/port/aft) +"ipE" = ( +/obj/structure/frame/computer{ + anchored = 1; dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"kol" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"kop" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/trash/mess, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"koz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"koA" = ( -/obj/structure/cable, +/area/ruin/space/has_grav/abandoned_warehouse) +"ipI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"koG" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white/left, +/obj/item/radio/intercom/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/command/gateway) -"koK" = ( -/obj/machinery/light/directional/west, -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 6; - pixel_y = -2; - req_access = list("xenobiology") +/area/station/service/library) +"ipJ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Outlet Pump" }, -/obj/machinery/button/ignition{ - id = "Xenobio"; - pixel_x = -6 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"ipL" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/crowbar/red, +/obj/item/reagent_containers/cup/watering_can, +/obj/item/circuitboard/machine/biogenerator, +/obj/item/wirecutters, +/obj/item/wrench, +/obj/item/shovel/spade, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/firealarm/directional/west{ - pixel_y = -4 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/turf/open/floor/iron/dark/textured_corner, -/area/station/science/xenobiology) -"koM" = ( -/obj/structure/table, /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"koT" = ( -/obj/machinery/door/airlock/command{ - name = "Chief Engineer" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/command/heads_quarters/ce) -"koX" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"koZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/pile, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kpj" = ( +/turf/open/floor/iron, +/area/station/service/hydroponics) +"ipO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 8 +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"ipQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/area/station/service/chapel) -"kpn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"iqd" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/medical_all, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kps" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"iqk" = ( +/obj/structure/flora/rock/pile/style_random{ + pixel_x = 4; + pixel_y = 3 }, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/science/xenobiology) -"kpw" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/asteroid/line{ dir = 8 }, -/obj/effect/spawner/random/maintenance, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"iqN" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kpx" = ( +/area/station/maintenance/port/fore) +"iqQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/cable, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"iqU" = ( +/obj/machinery/door/airlock/maintenance{ + id_tag = "bankvault" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"kpy" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/landmark/event_spawn, +/obj/structure/barricade/wooden/crude, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"iri" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"kpD" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/spawner/random/aimodule/harmful, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "High-Risk Modules"; - req_access = list("captain") +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"irj" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/security/courtroom) +"irn" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" }, -/obj/item/ai_module/reset/purge{ - pixel_y = 11 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"kpG" = ( -/obj/effect/turf_decal/stripes/red/corner, -/obj/effect/turf_decal/stripes/red/corner{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"irE" = ( +/obj/machinery/teleport/station, +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"kpL" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"kpP" = ( -/obj/machinery/door/airlock/command{ - id_tag = "cmoshower"; - name = "Shower" +/area/station/ai/satellite/foyer) +"irG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron/freezer, -/area/station/command/heads_quarters/cmo) -"kpT" = ( -/obj/effect/spawner/random/decoration/paint, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch/directional/north, +/obj/machinery/light/directional/north, +/obj/item/kirbyplants/organic/plant5, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"kqa" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 10 }, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/mix) -"kqf" = ( -/obj/machinery/plumbing/input{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"kqj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"kqy" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"kqB" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/toilet{ - dir = 1 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/science/research) -"kqC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/storage) -"kqD" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/area/station/engineering/atmos) +"irJ" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"irL" = ( +/obj/structure/table, +/obj/machinery/processor{ + pixel_y = 6 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"kqE" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"irM" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"kqQ" = ( -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/service/hydroponics/garden) -"kqS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/area/station/hallway/primary/aft) +"irN" = ( +/obj/structure/cable, +/obj/structure/flora/bush/sparsegrass/style_random{ + pixel_x = 7; + pixel_y = 3 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"kqV" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"irO" = ( /obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/effect/spawner/random/armory/barrier_grenades{ - pixel_y = 3 +/obj/item/crowbar/red, +/obj/item/wrench, +/obj/item/electropack, +/obj/item/assembly/signaler{ + pixel_x = 6 }, -/obj/machinery/button/door/directional/west{ - id = "armory"; - name = "Armory Shutters" +/obj/effect/turf_decal/bot, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/armory) -"kqW" = ( -/turf/open/floor/wood, -/area/station/service/library) -"kra" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"kri" = ( -/obj/effect/turf_decal/siding/purple{ +/area/station/security/execution/education) +"irQ" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/research) -"krj" = ( -/obj/structure/railing/corner{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/structure/cable, +/area/station/hallway/primary/fore) +"irZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"krq" = ( -/obj/structure/hoop{ +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"isD" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/security/prison) -"krz" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 4; - name = "euthanization chamber freezer" +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, -/area/station/science/xenobiology) -"krJ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 10 +/obj/machinery/shower/directional/east{ + name = "emergency shower" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"krP" = ( -/turf/closed/wall/r_wall, -/area/station/command/teleporter) -"krW" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/stack/cable_coil, /turf/open/floor/plating, -/area/station/engineering/storage) -"ksa" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/effect/turf_decal/trimline/dark_red/filled/warning, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/maintenance/starboard/aft) +"isO" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"isS" = ( +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"itn" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/vault) +"itr" = ( +/obj/structure/table/glass, +/obj/item/clipboard{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/grenades, +/obj/item/toy/figure/chemist, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"itw" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"ksd" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"itC" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"itF" = ( +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/chaplain, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"itR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/warehouse) +"itZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/obj/machinery/fax{ + fax_name = "Psychology Office"; + name = "Psychology Office Fax Machine" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"iug" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input{ dir = 1 }, +/turf/open/floor/engine/plasma, /area/station/engineering/atmos) -"kse" = ( -/obj/structure/table/wood, -/obj/item/restraints/handcuffs, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"ksf" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/sand/plating, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/food_or_drink/booze{ - spawn_random_offset = 1 +"iun" = ( +/obj/machinery/door/airlock/medical{ + id_tag = "Shower_1"; + name = "Shower 1" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/commons/toilet/restrooms) +"iuC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Cabin_4Privacy"; + name = "Cabin 4 Privacy Shutter" }, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ksl" = ( +/area/station/maintenance/port/lesser) +"iuE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"ksq" = ( -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"ksw" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ksE" = ( -/obj/structure/table, -/obj/item/stack/rods/two, -/obj/item/stack/cable_coil/five, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/mechbay) -"ksU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/cargo/office) +"iuH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"ktc" = ( -/obj/structure/reflector/single{ - dir = 5 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"iuP" = ( +/obj/machinery/computer/teleporter{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"ktr" = ( -/obj/machinery/door/airlock/grunge{ - name = "Radiation Shelter" +/obj/effect/turf_decal/bot, +/obj/machinery/button/door/directional/east{ + id = "teleshutter"; + name = "Teleporter Shutter Toggle"; + req_access = list("teleporter") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"ktD" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/glass, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"ktG" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/area/station/command/teleporter) +"ivh" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "cmoprivacy"; + name = "Office Privacy Shutters" }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/plating, +/area/station/command/heads_quarters/cmo) +"ivm" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"ktI" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"ivF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/structure/fireaxecabinet/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) -"ktL" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"kub" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"kuy" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"kuI" = ( -/obj/structure/chair/sofa/right/maroon, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"kuP" = ( -/obj/structure/cable, +/area/station/hallway/primary/central) +"ivG" = ( +/turf/closed/wall/rust, +/area/station/command/bridge) +"ivP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/stack/sheet/iron/fifty, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"kuS" = ( -/obj/item/trash/boritos/purple, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"kvd" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace/xenobio, -/area/station/science/xenobiology) -"kvj" = ( -/obj/structure/table, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -9 - }, -/obj/machinery/airalarm/directional/north, -/obj/item/flesh_shears{ - pixel_x = -5; - pixel_y = 10 - }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"kvk" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"kvo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/area/station/maintenance/port/greater) +"ivU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"iwf" = ( +/obj/structure/transit_tube/curved/flipped{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"kvK" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"kvX" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/trash/mess, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kwc" = ( +/area/space/nearstation) +"iwo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"kwd" = ( -/obj/effect/turf_decal/stripes/end, -/obj/machinery/light/small/dim/directional/north, -/obj/structure/flatpack_cart, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kwh" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/grille/broken, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"kwp" = ( -/obj/item/storage/box/bodybags, -/obj/item/healthanalyzer, -/obj/structure/rack, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"iwB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/chair/office/light{ dir = 4 }, -/turf/open/floor/iron/white/smooth_half{ +/obj/effect/landmark/start/geneticist, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"iwL" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear{ dir = 8 }, -/area/station/science/robotics/lab) -"kwS" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room" }, -/obj/item/radio/intercom/directional/east, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"iwM" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"iwS" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"kwU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"iwT" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"ixc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"ixf" = ( +/obj/machinery/porta_turret/ai, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/box/red, +/obj/structure/cable, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/interior) +"ixi" = ( +/obj/machinery/door/poddoor/shutters{ + id = "aux_base_shutters"; + name = "Auxillary Base Shutters" + }, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"kwW" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/kitchenspike_frame, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kxa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/area/station/construction/mining/aux_base) +"ixj" = ( +/obj/machinery/light/directional/west, +/obj/machinery/requests_console/directional/west{ + department = "Engineering"; + name = "Engineering Requests Console" }, +/obj/effect/mapping_helpers/requests_console/information, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kxk" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"kxm" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Prison Showers" +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/bot, +/obj/machinery/microwave/engineering/cell_included, +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_y = 5 }, -/obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"kxs" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/medical/memeorgans, -/obj/structure/closet/crate/freezer, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"kxz" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"kxB" = ( -/turf/closed/wall/r_wall, -/area/station/asteroid) -"kxD" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"ixn" = ( +/obj/structure/railing/corner{ dir = 1 }, -/obj/machinery/computer/records/security, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/information, -/turf/open/floor/iron, -/area/station/security/office) -"kxG" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/door/morgue{ + name = "Coffin Storage"; + req_access = list("chapel_office") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"ixo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"kxS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Lab" +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"kxZ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central) +"ixx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/obj/item/storage/toolbox/emergency, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"kyb" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"kyd" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/area/station/cargo/drone_bay) +"ixB" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/department/chapel/monastery) +"ixN" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/obj/item/book/bible, -/obj/machinery/newscaster/directional/north, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"kyh" = ( -/obj/effect/landmark/start/station_engineer, -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/engineering/storage) -"kyi" = ( -/mob/living/basic/mothroach, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/commons/storage/art) -"kyn" = ( -/obj/structure/table, -/obj/item/instrument/harmonica, -/turf/open/floor/iron, -/area/station/security/prison) -"kyv" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"kyA" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"ixO" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/cargo/storage) -"kyP" = ( +/area/station/command/heads_quarters/hop) +"iyd" = ( +/obj/machinery/door/poddoor/incinerator_atmos_main, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"iyi" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kyQ" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/starboard) -"kzk" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"kzC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/structure/closet/emcloset/anchored, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"kzG" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"iyk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kzI" = ( -/obj/machinery/door/airlock/virology/glass{ - id_tag = "virology_airlock_interior"; - name = "Virology Lab" +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"iyr" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/door/airlock/external{ + name = "Abandoned External Airlock" }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"iyB" = ( +/obj/machinery/atmospherics/components/binary/valve/layer4, +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"iyF" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/machinery/door_buttons/access_button{ - idDoor = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_x = -24; - pixel_y = 8; - req_access = list("virology") - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"kzK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"kzS" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"kAc" = ( +/area/station/maintenance/fore) +"iyI" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"kAg" = ( -/turf/closed/wall, -/area/station/service/hydroponics/garden) -"kAh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 5 + dir = 4 }, -/obj/machinery/light/directional/east, +/obj/machinery/camera/autoname/directional/east, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kAw" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/science/auxlab) +"iyM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kAW" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/floor/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"kBf" = ( -/obj/structure/cable, +/area/station/hallway/primary/starboard) +"iyT" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/obj/machinery/status_display/evac/directional/north, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"kBh" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/glass, -/area/station/ai/satellite/chamber) -"kBo" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/research) -"kBt" = ( -/obj/machinery/modular_computer/preset/civilian, -/obj/machinery/button/door/directional/north{ - id = "roboticsprivacy"; - name = "Robotics Privacy Control"; - pixel_x = -24; - req_access = list("robotics") - }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"iza" = ( +/turf/closed/wall/rust, +/area/station/maintenance/port/lesser) +"ize" = ( +/obj/structure/flora/bush/pale/style_random, +/obj/machinery/newscaster/directional/north, +/obj/machinery/light/small/directional/north, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"izf" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"kBw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"kBx" = ( -/obj/structure/railing/corner{ - dir = 4 +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "Secure Storage" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kBy" = ( -/obj/structure/frame/machine, -/obj/item/shard, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"kBJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"kBM" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"izt" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"izu" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kBX" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair{ - dir = 8 +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, /turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"kCc" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/area/station/cargo/miningoffice) +"izv" = ( +/obj/structure/closet{ + name = "chapel locker" }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"kCg" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"kCn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/item/storage/backpack/cultpack{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 +/obj/item/clothing/under/color/black, +/obj/effect/turf_decal/bot, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"izL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/reagent_containers/blood/random{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/smooth_edge{ +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/area/station/medical/pharmacy) -"kCr" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"kCs" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/machinery/door/firedoor/border_only{ +/area/station/maintenance/fore) +"izM" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"kCu" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"kCD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"izU" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/vending/clothing, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"iAo" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/secure_area/directional/south, +/turf/open/space/basic, +/area/space/nearstation) +"iAC" = ( +/obj/machinery/suit_storage_unit/rd, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"iAE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"iAR" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"iAU" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/clothing/head/utility/welding{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"kCJ" = ( -/obj/structure/toilet{ - dir = 4 +/obj/item/clothing/head/utility/welding, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"iBc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/holosign/barrier/atmos, +/turf/open/floor/plating/airless, +/area/station/maintenance/space_hut/plasmaman) +"iBh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/theater) -"kDb" = ( -/obj/structure/window/reinforced/spawner/directional/east, /obj/structure/cable, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"kDf" = ( -/turf/open/floor/engine/hull, -/area/space/nearstation) -"kDg" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/rack, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool{ - pixel_x = -4; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"kDm" = ( +/obj/effect/turf_decal/siding/purple, /obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"iBi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kDs" = ( -/obj/docking_port/stationary/public_mining_dock{ - dir = 2 +/area/station/maintenance/port/aft) +"iBt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "xeno3"; + name = "Creature Cell 3" }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"kDx" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"kDC" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/area/station/science/xenobiology) +"iBy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control" }, /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kDJ" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kDY" = ( -/obj/structure/displaycase/captain{ - pixel_y = 5 +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"iBz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/computer/security/telescreen/minisat/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"kEg" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/command/eva) -"kEn" = ( -/obj/structure/cable, +/area/station/service/bar) +"iBD" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/mail_sorting/engineering/general, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4 +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"iBH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"iBV" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/engineering/lobby) -"kEp" = ( -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"kEs" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/hallway/secondary/entry) -"kEt" = ( +/area/station/security/courtroom) +"iBY" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"kEu" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"kEA" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"iCb" = ( +/obj/structure/flora/bush/pale/style_random{ + icon_state = "brflowers_3" + }, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"iCK" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + name = "mail belt" + }, +/obj/structure/disposalpipe/junction/flip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"iCP" = ( +/obj/machinery/door/airlock/external{ + name = "Brig Shuttle Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"kEJ" = ( -/obj/structure/toilet{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"iCV" = ( +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"iCW" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/machinery/camera/directional/north{ + c_tag = "Departures Lounge"; + name = "shuttle camera" }, -/obj/machinery/light/small/dim/directional/south, -/obj/machinery/button/door/directional/north{ - id = "u1"; - name = "privacy bolt control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"kFi" = ( /obj/effect/turf_decal/tile/neutral{ - dir = 8 + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/locker) -"kFl" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/research) -"kFm" = ( -/obj/structure/rack, -/obj/item/stack/sheet/iron/twenty, -/obj/item/stack/sheet/iron/ten, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"kFp" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"iDh" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Upload"; + location = "Science"; + name = "science navigation beacon" + }, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/break_room) -"kFB" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/central/fore) +"iEi" = ( +/obj/structure/chair{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"kFH" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/office) +"iEr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/station/engineering/atmos/upper) -"kFO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/light/directional/west, +/turf/open/floor/engine, /area/station/engineering/supermatter/room) -"kFP" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +"iEu" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/engineering/atmospherics_portable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"iEy" = ( +/obj/structure/table/wood, +/obj/structure/sign/poster/official/cohiba_robusto_ad/directional/south, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/matches{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/lighter{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/lighter, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"kFR" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"kFT" = ( +/area/station/maintenance/port/greater) +"iEB" = ( +/obj/structure/sign/warning/docking, /turf/closed/wall, -/area/station/security/checkpoint/medical) -"kGf" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/obj/machinery/power/terminal, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"kGm" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"kGo" = ( -/obj/structure/ladder{ - icon_state = "ladder10" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/ruin/space/has_grav/abandoned_warehouse) +"iEG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"kGu" = ( -/turf/open/floor/iron/stairs/medium, -/area/station/command/corporate_showroom) -"kGy" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kGF" = ( -/obj/effect/turf_decal/tile/neutral/half{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/edge{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"kGS" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"iFa" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"iFd" = ( +/obj/structure/sign/warning/electric_shock, /turf/closed/wall/rust, -/area/station/maintenance/department/medical) -"kGZ" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"kHf" = ( -/obj/structure/table, -/obj/item/clipboard, -/obj/item/wrench, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/server) -"kHn" = ( +/area/station/maintenance/starboard) +"iFe" = ( +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"kHp" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/disposalpipe/trunk{ +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 3"; + name = "Cell 3"; + req_access = list("security") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/engineering/storage) -"kHt" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"iFm" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + name = "library sorting disposal pipe" }, +/obj/effect/mapping_helpers/mail_sorting/service/library, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"kHw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/tile/green/half{ +/area/station/hallway/primary/central/fore) +"iFv" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) -"kHB" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/modular_computer/preset/cargochat/cargo, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"iFE" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/cargo/storage) -"kHG" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"kIl" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +"iFI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/window/right/directional/west{ + name = "Library Desk"; + req_access = list("library") + }, +/obj/item/clipboard, +/obj/item/toy/figure/curator, +/obj/item/pen/fountain, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"kIm" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/area/station/service/library) +"iFK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"kIB" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kIK" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"kIM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/frame/computer, -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"kIY" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/blue{ dir = 9 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 - }, -/area/station/science/research) -"kJj" = ( -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"kJp" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"iFR" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"iFU" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"kJH" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/item/trash/chips, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kJM" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","engine") +/turf/open/floor/iron/dark, +/area/station/security/brig) +"iGg" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"kJN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/maintenance/aft) +"iGx" = ( +/obj/structure/table/bronze, +/obj/item/stack/sheet/bronze{ + amount = 50 + }, +/turf/open/floor/bronze, +/area/station/maintenance/department/chapel) +"iGD" = ( +/obj/structure/table, +/obj/machinery/light/directional/west, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"kJT" = ( -/turf/closed/wall, -/area/station/commons/storage/art) -"kJV" = ( -/obj/effect/spawner/random/decoration/statue, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"kJW" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"iGG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"iGI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/command{ + name = "Chief Medical Officer's Office" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"iGK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/siding/purple/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"iGT" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_y = 5 + }, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/item/storage/box/shipping{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"iHp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"kKc" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"iHq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/storage/primary) +"iHC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"iHG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kKw" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/siding/green{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"kKJ" = ( -/obj/machinery/rnd/destructive_analyzer, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lab) -"kKK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/item/radio/intercom/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"kKN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"iHL" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"kKR" = ( +/area/station/science/lobby) +"iHN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"kLi" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/department/medical/central) -"kLw" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/engine, -/area/station/science/explab) -"kLL" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"kLO" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, +/area/station/maintenance/starboard/aft) +"iHO" = ( +/obj/structure/closet/crate/coffin, +/obj/effect/turf_decal/bot_white, +/obj/effect/mob_spawn/corpse/human/skeleton, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/chapel/funeral) +"iHP" = ( /obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"iHT" = ( +/obj/structure/chair{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"iHY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/west, +/obj/structure/sign/departments/botany/directional/west, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/commons/lounge) -"kLU" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/yellow{ +/area/station/hallway/primary/starboard) +"iIp" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"kMj" = ( -/obj/item/target/alien/anchored, -/obj/machinery/camera/preset/ordnance{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/loading_area{ dir = 4 }, -/turf/open/floor/plating/airless{ - luminosity = 2 +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) +"iIF" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/glasses/science{ + pixel_x = 4; + pixel_y = 4 }, -/area/station/science/ordnance/bomb) -"kMl" = ( -/obj/structure/disposalpipe/segment{ +/obj/item/clothing/glasses/science, +/obj/item/storage/pill_bottle/epinephrine, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"iIP" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/box/red, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"kMr" = ( -/obj/structure/transport/linear/public, -/obj/machinery/elevator_control_panel/directional/north{ - linked_elevator_id = "cargo" - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"kMA" = ( -/obj/effect/turf_decal/siding/purple, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"kMS" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"kMW" = ( -/obj/item/exodrone, -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/area/station/commons/fitness/recreation) +"iIX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"kMZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 5; - pixel_y = 0; - pixel_x = 4 +/obj/structure/filingcabinet/employment, +/obj/item/radio/intercom/directional/south, +/obj/machinery/button/door/directional/east{ + id = "lawyer_shutters"; + name = "Law Office Shutters Toggle"; + req_access = list("lawyer") }, -/turf/open/openspace, -/area/station/science/lobby) -"kNk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kNs" = ( -/obj/machinery/vending/assist, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"kNH" = ( -/obj/machinery/power/emitter{ +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"iJf" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/sign/warning/no_smoking{ + pixel_x = -28 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Mech Bay"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"kNJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, +/area/station/science/robotics/mechbay) +"iJg" = ( +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"kNO" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood, -/area/station/service/library) -"kNX" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/recharger, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"kOd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/command/eva) -"kOl" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/command/meeting_room) -"kOn" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/security/warden) -"kOx" = ( -/obj/machinery/door/airlock/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, +/area/station/commons/storage/primary) +"iJu" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"kOC" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/textured, -/area/station/security/courtroom) -"kOE" = ( -/obj/structure/sign/painting/library{ - pixel_y = 32; +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 1; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/turf/open/floor/wood, -/area/station/service/library) -"kOI" = ( +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science) +"iJv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"iJy" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"iJN" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"kOL" = ( -/turf/open/floor/engine, -/area/station/science/xenobiology) -"kOT" = ( -/obj/item/stack/tile/iron/grimy{ - amount = 10 +/area/station/command/bridge) +"iJO" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"kOU" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"kPc" = ( -/obj/structure/table/wood, -/obj/item/camera_film{ - pixel_y = 9 - }, -/obj/item/camera_film{ - pixel_x = -3; - pixel_y = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"kPj" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/obj/structure/reflector/single/anchored{ + dir = 9 }, -/obj/effect/turf_decal/siding, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"kPv" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"kQa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"kQj" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"kQv" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"kQF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/engine, /area/station/engineering/supermatter/room) -"kQH" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Centre" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/unres{ +"iJQ" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kQJ" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kQV" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/computer/security/telescreen/cmo/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"kRd" = ( -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"iJR" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/checker{ - dir = 4 - }, -/area/station/engineering/atmos/project) -"kRl" = ( -/obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"kRq" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"iJV" = ( +/obj/effect/landmark/start/chaplain, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"iKg" = ( +/turf/closed/wall/rust, +/area/station/engineering/main) +"iKq" = ( +/obj/structure/chair/office{ dir = 4 }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/pumproom) -"kRs" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering Breakroom"; - panel_open = 1 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/effect/mapping_helpers/airlock/welded, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"kRw" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, +/area/station/security/checkpoint/customs) +"iKy" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kRG" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Library" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kRM" = ( +/area/station/hallway/primary/central/fore) +"iKN" = ( /obj/structure/table, -/obj/item/folder/yellow{ - pixel_x = 3; - pixel_y = 6 +/obj/item/multitool/circuit{ + pixel_x = -6 }, -/obj/item/folder/yellow{ - pixel_x = -6; - pixel_y = 8 +/obj/item/multitool/circuit, +/obj/item/multitool/circuit{ + pixel_x = 6 }, -/obj/item/folder/yellow{ - pixel_x = -9; - pixel_y = 1 +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"iKT" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/holywater, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"iKX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/folder/yellow{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/shower/directional/east{ + name = "emergency shower" }, -/obj/item/folder/yellow{ - pixel_x = 3; - pixel_y = 1 +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"kRT" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"kRX" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/mining_weather_monitor/directional/east, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"kSm" = ( -/obj/machinery/computer/libraryconsole/bookmanagement, -/obj/structure/table, -/obj/machinery/light/dim/directional/north, /turf/open/floor/iron, -/area/station/security/prison) -"kSq" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/openspace, -/area/station/science/xenobiology) -"kSy" = ( +/area/station/engineering/atmos) +"iLj" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"iLz" = ( +/obj/structure/table, +/obj/machinery/keycard_auth, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"iLD" = ( +/obj/structure/table/wood/fancy, +/obj/item/storage/fancy/candle_box, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"iLQ" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"iLS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/science/xenobiology) -"kSA" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/directional/east, -/obj/machinery/modular_computer/preset/cargochat/science{ +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central) +"iLT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/space_heater, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"iLX" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"kSH" = ( -/obj/machinery/medical_kiosk{ - pixel_x = -2 +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"iMr" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/button/door/directional/east{ + name = "Psychology Privacy Shutters"; + id = "psychprivacy" }, -/obj/effect/turf_decal/tile/blue/diagonal_edge, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/medbay/lobby) -"kSM" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"iMu" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, /obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"kSO" = ( -/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kSP" = ( -/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"iMx" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"iMA" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/office) -"kSU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/area/station/maintenance/port/lesser) +"iMG" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/east, +/obj/effect/spawner/random/structure/crate, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"iMJ" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom/directional/north{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"kSW" = ( -/obj/structure/chair/office{ - dir = 8; - name = "grimy chair" +/obj/item/radio/intercom/directional/east{ + freerange = 1; + listening = 0; + name = "Common Channel" }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/obj/item/radio/intercom/directional/south{ + freerange = 1; + frequency = 1447; + listening = 0; + name = "Private Channel"; + pixel_x = 8 }, +/turf/open/floor/circuit/red, +/area/station/ai/satellite/chamber) +"iMN" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall, +/area/station/service/bar) +"iMX" = ( +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"iNc" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"kTa" = ( -/obj/machinery/dna_scannernew, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"kTb" = ( -/obj/structure/cable, -/obj/machinery/camera/directional/east{ - c_tag = "Interrogation room"; - network = list("interrogation") - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/interrogation) -"kTo" = ( -/obj/structure/cable/multilayer/multiz, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kTr" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/command/corporate_dock) -"kTx" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/interior) -"kTy" = ( -/obj/structure/railing, -/turf/open/floor/iron/dark/side, -/area/station/command/meeting_room) -"kTC" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kTL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/maintenance/port/lesser) +"iNh" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Cell 4"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/turf/open/floor/iron, -/area/station/commons/locker) -"kTM" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"iNi" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"iNm" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"kTP" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"kTV" = ( -/obj/item/circuitboard/machine/engine/propulsion, -/turf/open/misc/asteroid, -/area/station/asteroid) -"kUb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/effect/turf_decal/tile/yellow{ +/area/station/engineering/atmos) +"iNK" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"iNL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/wallet, +/obj/effect/spawner/random/entertainment/coin, +/obj/effect/spawner/random/entertainment/coin, +/obj/item/pen/blue{ + pixel_x = -5; + pixel_y = -10 }, -/area/station/engineering/atmos) -"kUd" = ( -/obj/machinery/door/poddoor/lift{ - transport_linked_id = "cargo" +/obj/item/pen/red{ + pixel_x = 1; + pixel_y = -10 }, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/item/flashlight/lamp/green{ + pixel_x = 9; + pixel_y = 15 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_half, -/area/station/cargo/storage) -"kUh" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/item/disk/computer/quartermaster, +/obj/item/disk/computer/quartermaster, +/obj/item/disk/computer/quartermaster, +/obj/item/clipboard, +/obj/item/folder/yellow, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/brown{ - dir = 5 +/obj/item/gps{ + gpstag = "QM0"; + pixel_x = -8; + pixel_y = 4 }, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"kUp" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"kUz" = ( -/obj/structure/cable, +/area/station/command/heads_quarters/qm) +"iNU" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Lab" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"kUG" = ( -/obj/machinery/computer/security{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"iNZ" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/flasher/directional/west{ + id = "Cell 5"; + name = "Prisoner Pacifier" }, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 + dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"kUJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"iOb" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kUR" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"kUX" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmospherics_engine) -"kVF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"iOD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"kVP" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"iOR" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"iOW" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/science/breakroom) -"kVS" = ( -/obj/effect/decal/cleanable/rubble, -/obj/structure/railing{ - dir = 1 +/area/station/hallway/secondary/exit/departure_lounge) +"iPa" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/security/armory) +"iPw" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/recharge_floor, +/area/station/science/robotics/mechbay) +"iPY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"iQd" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "science sorting disposal pipe" }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/mapping_helpers/mail_sorting/science/genetics, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"iQg" = ( +/obj/machinery/door/airlock/grunge{ + name = "Prison Forestry" }, -/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"kVX" = ( -/obj/structure/closet/secure_closet/miner, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/area/station/security/prison/garden) +"iQn" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/cable_coil, +/obj/item/storage/backpack/duffelbag/sec/surgery{ + pixel_y = 5 + }, +/obj/item/wirecutters, +/obj/machinery/firealarm/directional/east, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"kWb" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/chamber) -"kWc" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"kWk" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"kWC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"kWH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"kWI" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"iQt" = ( +/turf/closed/wall/rust, +/area/station/commons/fitness/recreation) +"iQK" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/abandoned_warehouse) +"iQT" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"kWK" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"kWN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"iRq" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/directional/west, +/obj/effect/decal/cleanable/rubble, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/bouldertech/refinery/smelter, +/obj/machinery/conveyor{ + id = "mining" }, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"kXs" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/displaycase/trophy, -/turf/open/floor/glass/reinforced, -/area/station/service/bar) -"kXz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"kXN" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 +/area/station/cargo/miningoffice) +"iRt" = ( +/obj/effect/spawner/xmastree, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"iRJ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/computer/records/security, -/turf/open/floor/iron, -/area/station/command/bridge) -"kXV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/closet/secure_closet/medical2, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/structure/plaque/static_plaque/golden/commission/wawa, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"kYc" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/command_all, -/obj/machinery/light/directional/north, -/turf/open/floor/circuit, -/area/station/engineering/storage/tech) -"kYi" = ( -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"iRR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"kYk" = ( -/obj/machinery/door/poddoor/shutters{ - id = "secmechbay"; - name = "Security Mech Bay Shutters" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/chair/office/light{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/landmark/start/research_director, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"kYl" = ( -/obj/structure/ladder{ - icon_state = "ladder10" +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"iSb" = ( +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "Supply Dock Loading Door" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad"; + name = "off ramp" }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/central/lesser) -"kYn" = ( +/turf/open/floor/plating, +/area/station/cargo/storage) +"iSw" = ( +/turf/closed/wall/rust, +/area/station/security/checkpoint/customs) +"iSx" = ( /obj/structure/lattice, -/obj/structure/grille/broken, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/space/basic, /area/space/nearstation) -"kYs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +"iSC" = ( +/obj/structure/cable, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"iSG" = ( +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = -4; + pixel_y = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"kYu" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/teleporter) -"kYB" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 4; + pixel_y = 2 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 8 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_y = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"kYT" = ( +/turf/open/floor/iron/dark, +/area/station/command/eva) +"iSQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/closed/wall/r_wall, -/area/station/maintenance/department/medical) -"kYU" = ( -/obj/machinery/computer/prisoner/management{ +/area/station/maintenance/disposal/incinerator) +"iSS" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"iSU" = ( +/obj/machinery/computer/security{ dir = 4 }, -/obj/machinery/requests_console/directional/east{ - department = "Bridge"; - name = "Bridge Requests Console" +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"kYW" = ( -/obj/structure/table/reinforced, -/obj/structure/displaycase/forsale/kitchen{ - pixel_y = 8 +/area/station/hallway/secondary/exit/departure_lounge) +"iTj" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id = "sparemech"; + name = "Mech Bay" }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "bar_shutters"; - name = "Bar Shutters" +/turf/open/floor/plating, +/area/station/security/mechbay) +"iTq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"iTy" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"kYZ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/machinery/light/small/directional/south, +/obj/item/clipboard, +/obj/item/toy/figure/mime{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"kZj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/stairs{ +/obj/structure/table/wood/fancy, +/obj/item/toy/dummy{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/toy/figure/clown, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/area/station/cargo/bitrunning/den) -"kZu" = ( +/turf/open/floor/iron, +/area/station/service/theater) +"iTB" = ( +/obj/structure/rack, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kZv" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"iTL" = ( +/obj/structure/chair{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"kZw" = ( -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"kZA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/bridge) -"kZO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"iTM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kZS" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters" - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"lac" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/vending/wardrobe/atmos_wardrobe, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos) -"laf" = ( -/obj/effect/spawner/random/structure/chair_comfy{ +/turf/open/floor/iron, +/area/station/security/brig) +"iTQ" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"lam" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"iTW" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"iTZ" = ( +/obj/structure/transit_tube/crossing/horizontal, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"iUm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lan" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"lao" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "evashutter"; - name = "E.V.A. Storage Shutter" +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 4 }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/command/eva) -"lar" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/landmark/start/lawyer, -/turf/open/floor/iron/dark, -/area/station/security/office) -"laD" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"iUH" = ( +/turf/closed/wall, /area/station/science/ordnance) -"laF" = ( -/obj/structure/closet{ - name = "evidence closet 1" - }, -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/hand_labeler, -/turf/open/floor/iron, -/area/station/security/evidence) -"laL" = ( -/obj/machinery/door/airlock{ - id_tag = "u1"; - name = "Unit 1" - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"laM" = ( +"iUM" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/color/fyellow, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"lbl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"lbo" = ( -/obj/structure/falsewall, -/turf/open/misc/asteroid, -/area/station/hallway/secondary/exit/departure_lounge) -"lbr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"lbt" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, -/obj/item/radio/intercom/directional/south, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/maintenance{ + name = "Service Maintenance" + }, +/obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/general, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"lbw" = ( -/obj/structure/closet/l3closet, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"lbJ" = ( +/area/station/maintenance/department/crew_quarters/bar) +"iUT" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/starboard/fore) +"iUV" = ( +/obj/structure/rack, +/obj/item/tank/internals/oxygen/empty, +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron, -/area/station/security/prison) -"lbT" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/chair/stool/directional/west, -/obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"lbX" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"lbZ" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/railing/corner/end{ +/area/ruin/space/has_grav/abandoned_warehouse) +"iVj" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/department/security) +"iVk" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/purple/arrow_cw{ - dir = 6 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"iVl" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lcd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/command/bridge) +"iVn" = ( +/obj/machinery/door/airlock/external{ + name = "Mining Dock Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"lcv" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/engineering/lobby) -"lcM" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/cold/dim/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"lcS" = ( +/area/station/cargo/miningdock) +"iVy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/beacon, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"iVF" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/camera, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"iVH" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet{ + name = "security locker" + }, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/shoes/jackboots, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"iVL" = ( +/turf/closed/mineral/random/labormineral, +/area/station/hallway/secondary/entry) +"iVO" = ( +/obj/effect/turf_decal/box, /obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 + dir = 8 }, -/obj/machinery/rnd/production/techfab/department/cargo, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lcU" = ( /obj/effect/turf_decal/tile/yellow{ - dir = 4 + dir = 1 }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ +/turf/open/floor/iron, +/area/station/cargo/office) +"iVR" = ( +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"iVV" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"lcX" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"lde" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"iWj" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/item/wrench, +/obj/machinery/door/window/left/directional/north{ + name = "Emergency Storage"; + req_access = list("command") + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/item/crowbar/red, +/obj/item/clothing/mask/gas, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"iWm" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/siding/white{ dir = 1 }, -/area/station/engineering/atmos/upper) -"ldf" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"iWy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"iWL" = ( +/obj/machinery/firealarm/directional/west, /obj/structure/cable, +/obj/effect/turf_decal/siding/red, +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"iWT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"iXd" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"ldl" = ( -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"iXD" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Cell 3"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"iXM" = ( +/obj/structure/table, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 1 }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) -"ldo" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/flasher/directional/west{ + id = "Cell 1"; + name = "Prisoner Pacifier" }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"ldT" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"les" = ( -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"iXZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/item/stack/rods/two, -/obj/item/grown/bananapeel, -/obj/effect/mapping_helpers/broken_floor, +/mob/living/basic/bot/secbot/beepsky/armsky, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"iYa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"leT" = ( -/obj/machinery/mecha_part_fabricator/maint{ - name = "forgotten exosuit fabricator" +/turf/open/floor/iron, +/area/station/commons/locker) +"iYb" = ( +/obj/structure/railing{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/circuit, -/area/station/hallway/primary/central) -"leW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 8 +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"lfd" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lfh" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lfn" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 5 +/turf/open/floor/iron/stairs/right{ + dir = 1 }, +/area/station/service/chapel/monastery) +"iYf" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lfo" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "virology_airlock_interior"; + name = "Virology Interior Airlock" + }, /obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"iYj" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"lfp" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/port/lesser) +"iYq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"lfq" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"lfu" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/landmark/start/bartender, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"lfv" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"lfx" = ( -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/white, -/area/station/science/research) -"lfy" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/security/office) +"iYr" = ( +/obj/structure/railing{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood/corner{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"lfC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/decorations, -/obj/effect/spawner/random/decoration, -/obj/effect/spawner/random/decoration/material, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"lfG" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"iYA" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/directional/north{ + c_tag = "Virology Airlock"; + name = "medical camera"; + network = list("ss13","medical") }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"lgh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"lgp" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/asteroid) -"lgw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 5 +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lgx" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/drugs, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"iYI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"lgA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"lgG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/brig) -"lgL" = ( -/mob/living/carbon/human/species/monkey/angry, -/turf/open/misc/asteroid, -/area/station/asteroid) -"lgO" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"lhc" = ( -/obj/structure/flora/rock/pile/style_random, -/obj/effect/turf_decal/stripes/asteroid/line{ +/area/station/cargo/warehouse) +"iYS" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"lhe" = ( -/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/processing) +"iYW" = ( +/obj/machinery/vending/wardrobe/viro_wardrobe, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"lhg" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"lhx" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/research/glass{ - name = "Research Breakroom" +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/door_buttons/access_button{ + dir = 1; + idDoor = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = -24; + pixel_y = -2; + req_access = list("virology") }, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"iZm" = ( /obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/breakroom) -"lhA" = ( -/obj/effect/landmark/start/scientist, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"lhD" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/command/bridge) -"lhG" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/clothing/suit/apron/chef, -/obj/item/clothing/mask/surgical, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"lhO" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"lib" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"lil" = ( -/obj/machinery/atmospherics/components/binary/valve, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"iZv" = ( +/obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"lip" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"liE" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/closed/wall, -/area/station/maintenance/central/greater) -"liF" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/processing) +"iZB" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Air to Ports" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"liH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/area/station/engineering/atmos) +"iZV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"liQ" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"liU" = ( -/obj/structure/table, -/obj/item/electronics/airlock, -/obj/effect/decal/cleanable/glass, -/obj/item/stack/rods/two, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ljk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"ljl" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"iZX" = ( +/obj/structure/chair, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/north, +/obj/machinery/firealarm/directional/north, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"ljp" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"jam" = ( +/obj/machinery/light/directional/north, +/obj/machinery/medical_kiosk{ + pixel_y = 4 + }, +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"jas" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ljt" = ( -/obj/structure/table/optable{ +/area/station/maintenance/fore) +"jay" = ( +/obj/machinery/conveyor{ + id = "garbage" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/broken_flooring/corner/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"ljA" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"jaM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/wall_healer/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ljF" = ( -/obj/structure/weightmachine/weightlifter, -/obj/machinery/camera/autoname/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"jaR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, -/area/station/security/prison) -"ljG" = ( -/obj/structure/railing{ +/area/station/cargo/storage) +"jaU" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"jaW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/office) +"jbf" = ( +/obj/structure/chair{ dir = 1 }, -/turf/open/misc/asteroid, -/area/station/cargo/miningoffice) -"ljN" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy/birthday_wrap, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/greater) -"ljU" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/table, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_x = -4; - pixel_y = 7 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/holosign_creator/robot_seat/bar{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/clothing/head/hats/tophat, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"lke" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/holopad, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"lkw" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 +/area/station/commons/fitness/recreation) +"jbg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 5 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"lkQ" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/bot, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"lls" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 +/area/station/engineering/atmos) +"jbt" = ( +/turf/closed/wall/mineral/plastitanium, +/area/station/maintenance/starboard) +"jbP" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"llD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"llT" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/space/nearstation) +"jbV" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera/motion/directional/north{ + active_power_usage = 0; + c_tag = "Armory - External"; + use_power = 0 }, -/turf/open/floor/iron, -/area/station/security/office) -"llW" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"lmd" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 +/turf/open/space/basic, +/area/space/nearstation) +"jbZ" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8; + filter_type = list(/datum/gas/nitrogen) }, -/obj/effect/spawner/random/structure/closet_private, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"lmn" = ( -/obj/item/flashlight/lamp, -/turf/open/misc/asteroid, -/area/station/asteroid) -"lmo" = ( -/obj/structure/transport/linear/public, -/obj/machinery/porta_turret/ai, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"lmt" = ( +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"jca" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"jcj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/computer/shuttle/mining/common, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"jck" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lmI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) -"lmL" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/structure/closet_empty/crate, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lmU" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"jco" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"jcp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/door/airlock/research{ + name = "Auxiliary Research" }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"lno" = ( -/turf/closed/wall/r_wall, -/area/station/science/explab) -"lnp" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/toy/plush/nukeplushie, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"lnt" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/heavy, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/chair{ +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science) +"jcs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/newscaster/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"jcK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"lny" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/light/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"lnB" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/clothing/head/costume/cardborg, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"lnG" = ( -/obj/structure/bed, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") - }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"lnZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/stack/sheet/rglass/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/rglass/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"loa" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/command/bridge) +"jcN" = ( +/obj/structure/bookcase/random/fiction, +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/directional/north, +/turf/open/floor/wood, +/area/station/service/library) +"jdl" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"jdp" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/wood, -/area/station/service/theater) -"log" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/camera/directional/south{ + c_tag = "Xenobiology Entrance"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"loh" = ( -/turf/closed/wall, -/area/station/maintenance/solars/port/aft) -"lok" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"lop" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"jds" = ( +/turf/closed/wall, +/area/station/service/kitchen) +"jdE" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Fore Hallway Diner"; + name = "fore camera" + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/item/paper/pamphlet/gateway, -/obj/structure/table, -/obj/item/flashlight/flare{ - pixel_x = 12 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/machinery/firealarm/directional/south, /turf/open/floor/iron, -/area/station/command/gateway) -"loq" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/structure/rack, -/obj/item/toy/figure/borg, +/area/station/hallway/primary/central/fore) +"jdL" = ( +/obj/structure/railing, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"loC" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Quarters" +/area/station/service/chapel) +"jdR" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall/r_wall, +/area/station/medical/virology) +"jdW" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "bankshutter"; + name = "Bank Shutter" }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgehop" +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/noticeboard/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"jdY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/hop) -"loF" = ( -/obj/machinery/pdapainter{ - pixel_y = 2 +/obj/item/kirbyplants/organic/plant16, +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/obj/machinery/airalarm/directional/south, -/obj/item/toy/figure/ian{ - pixel_x = 7; - pixel_y = 15 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"loR" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"jec" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"jes" = ( +/obj/structure/girder, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"loT" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/port/lesser) +"jet" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/warden) -"loU" = ( -/obj/structure/bookcase{ - name = "Holy Bookcase" +/obj/machinery/door/airlock/external/glass{ + name = "Monastery External Airlock" }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/plating, /area/station/service/chapel) -"loY" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"lpc" = ( -/obj/structure/railing{ - dir = 8 +"jeR" = ( +/obj/structure/table, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"lpe" = ( -/turf/open/floor/iron, -/area/station/engineering/storage) -"lpu" = ( -/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"jeS" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"jeT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"lpF" = ( -/obj/machinery/fax{ - fax_name = "Medical"; - name = "Medical Fax Machine" +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"lpW" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"lqa" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 +/area/station/hallway/primary/fore) +"jeU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"lqf" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lqv" = ( -/obj/structure/cable, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"lqy" = ( -/obj/structure/chair, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/science/lobby) +"jeZ" = ( +/obj/item/kirbyplants/organic/plant5, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"jfc" = ( /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 10 }, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"lqI" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"lqM" = ( -/obj/structure/chair/pew{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/chapel{ - dir = 4 +/obj/effect/turf_decal/tile/brown{ + dir = 8 }, -/area/station/service/chapel) -"lqR" = ( -/obj/effect/landmark/event_spawn, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"lrk" = ( +/area/station/cargo/storage) +"jfy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"lrr" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/stairs/left{ - dir = 8 - }, -/area/station/medical/storage) -"lrw" = ( +/area/station/maintenance/port/greater) +"jfK" = ( +/obj/structure/table/glass, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/item/reagent_containers/spray/cleaner, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"lrF" = ( -/obj/effect/turf_decal/siding/red{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit, -/area/station/science/robotics/lab) -"lrV" = ( -/obj/structure/sign/poster/official/enlist/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"lsq" = ( -/obj/structure/chair/office{ - name = "grimy chair" +/obj/machinery/power/apc/auto_name/directional/north, +/obj/item/radio/intercom/directional/west, +/obj/item/wrench/medical, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"jfV" = ( +/obj/structure/closet/secure_closet/captains, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"lsr" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/east{ - id = "Cell 2"; - name = "Cell 2" +/area/station/command/heads_quarters/captain) +"jfY" = ( +/obj/structure/transit_tube/curved/flipped, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig) -"lsx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) -"lsC" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"lsJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/closet/crate/bin, -/obj/machinery/newscaster/directional/west, +/area/station/hallway/primary/central/fore) +"jgf" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/station/maintenance/starboard/aft) +"jgn" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"lsT" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Blast Chamber" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/area/station/science/robotics/lab) +"jgr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"lsU" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Courtroom"; + location = "Lockers"; + name = "lockers navigation beacon" }, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "engine" +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"jgt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"lta" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/station/engineering/main) +"jgu" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/iron, -/area/station/command/corporate_dock) -"ltj" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 4 +/area/station/hallway/primary/starboard) +"jgv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" }, -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"ltk" = ( -/obj/machinery/power/emitter, +/area/station/security/medical) +"jgy" = ( +/obj/structure/closet/secure_closet/evidence, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"ltB" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"ltF" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"jgz" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ltS" = ( -/turf/closed/wall, -/area/station/hallway/primary/starboard) -"ltU" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"luq" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"jgB" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Cold Room Maintenance" }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lut" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"jgC" = ( +/turf/closed/wall/rust, +/area/station/cargo/miningdock) +"jgI" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/item/clothing/shoes/jackboots{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"lux" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/girder, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/cowboy/black, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/pushbroom, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"luz" = ( -/obj/structure/cable, -/obj/machinery/door/window/left/directional/east{ - name = "Security Medbay" - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 +/area/station/maintenance/department/cargo) +"jgN" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"jhc" = ( +/obj/structure/table/bronze, +/obj/item/clothing/head/costume/bronze{ + pixel_x = 5; + pixel_y = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/machinery/light/small/directional/east, +/obj/item/toy/clockwork_watch{ + pixel_x = -5 }, +/turf/open/floor/bronze/filled, +/area/station/maintenance/department/chapel) +"jhg" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"jhh" = ( +/obj/effect/landmark/atmospheric_sanity/mark_all_station_areas_as_goal, +/turf/open/space/basic, +/area/space) +"jhr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/medical) -"luA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"luK" = ( -/obj/structure/closet/crate/trashcart/laundry, -/obj/item/grenade/iedcasing/spawned{ - det_time = 0 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"jhv" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/light/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"luW" = ( -/obj/machinery/door/airlock/grunge{ - name = "Chapel" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/carpet, -/area/station/service/chapel) -"lva" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"jhy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/solars/port) -"lve" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/maintenance/port/greater) +"jhz" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"jhB" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"jhD" = ( +/obj/machinery/light_switch/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"lvg" = ( -/obj/effect/turf_decal/tile/brown, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"lvj" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole{ +/area/station/cargo/office) +"jhH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"lvn" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/cargo/storage) +"jhN" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/turf/open/floor/iron/chapel{ +/turf/open/floor/engine, +/area/station/science/xenobiology) +"jhP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison) +"jhX" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/power/floodlight, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison) +"jia" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 1 }, -/area/station/service/chapel) -"lvw" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"jij" = ( +/obj/machinery/computer/records/security{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"lvM" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"jiq" = ( +/obj/machinery/light/directional/south, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"jiJ" = ( +/obj/structure/chair/sofa/bench/left, +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"jiN" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/status_display/evac/directional/west, +/obj/item/toy/figure/cmo{ + pixel_x = 9; + pixel_y = 12 }, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -9; + pixel_y = 10 }, -/area/station/engineering/atmos/mix) -"lvT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"jiO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"jiR" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/sign/departments/restroom/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"jiS" = ( +/obj/item/kirbyplants/random, +/obj/structure/sign/poster/random/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"lvU" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/main) -"lvZ" = ( -/obj/machinery/vending/cola/red, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/security/prison) -"lwr" = ( -/obj/structure/railing, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"lwu" = ( -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"lwv" = ( -/obj/effect/turf_decal/stripes{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, +/area/station/hallway/primary/starboard) +"jiT" = ( +/obj/structure/filingcabinet/chestdrawer, /obj/machinery/light/directional/north, -/obj/structure/rack, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lwy" = ( -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/machinery/door/airlock/mining{ - name = "Boutique Backroom" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"jiU" = ( +/obj/machinery/door/airlock/medical{ + id_tag = "Shower_2"; + name = "Shower 2" }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" - }, -/turf/open/floor/iron, -/area/station/cargo/boutique) -"lwB" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/sign/picture_frame/portrait/bar{ - pixel_y = -28 - }, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/service/bar) -"lwC" = ( -/obj/machinery/power/terminal{ - dir = 8 +/area/station/commons/toilet/restrooms) +"jiW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/kitchen/directional/south{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/power/port_gen/pacman, +/obj/effect/landmark/generic_maintenance_landmark, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"lwI" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/item/kirbyplants/organic/plant11, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"lwW" = ( -/obj/machinery/lift_indicator/directional/north{ - linked_elevator_id = "cargo" +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"jjm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/button/elevator/directional/north{ - id = "cargo" +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"jjs" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/starboard/aft) +"jju" = ( +/obj/machinery/light/directional/north, +/obj/structure/chair/sofa/bench/left{ + dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lwZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/atmos_control/nocontrol/incinerator{ - dir = 8 +/turf/open/floor/wood, +/area/station/service/chapel/monastery) +"jjP" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/storage/toolbox/emergency, +/obj/machinery/light/small/directional/north, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"jjU" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/airalarm/directional/south, +/obj/item/kirbyplants/organic/plant10, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"jkb" = ( +/obj/machinery/door/window/right/directional/north{ + name = "Hydroponics Delivery Access"; + req_access = list("hydroponics") }, -/obj/machinery/button/door/directional/north{ - id = "incstorage"; - name = "Storage Shutter Control" +/obj/effect/turf_decal/delivery, +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Hydroponics" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"lxb" = ( -/obj/structure/girder, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"jkk" = ( +/turf/closed/wall, +/area/station/security/evidence) +"jks" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/stack/sheet/iron/ten{ + amount = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"lxw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/item/assembly/prox_sensor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/west{ + id = "sparemech"; + name = "Abandoned Mech Bay Toggle" }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"lxx" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"lxI" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"lxP" = ( -/obj/machinery/defibrillator_mount/directional/west, -/obj/machinery/stasis{ - dir = 4 +/obj/effect/turf_decal/stripes/end, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"jkB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 9 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"lxR" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/decal/cleanable/dirt/dust, +/turf/closed/wall, +/area/station/engineering/atmos) +"jkW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"lxX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"jlh" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/central) +"jlw" = ( +/turf/closed/wall, +/area/station/service/bar) +"jlY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"lyr" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/stack/medical/suture{ - pixel_x = 6; - pixel_y = 7 +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"jmj" = ( +/obj/machinery/bluespace_beacon, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/reagent_containers/cup/bottle/multiver{ - pixel_x = -6; - pixel_y = 6 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/item/stack/medical/mesh, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"lyF" = ( -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/teleporter) +"jmw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"jmE" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron/white/smooth_edge{ +/obj/item/pen, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/area/station/medical/exam_room) -"lyJ" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"jmK" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ dir = 1 }, -/obj/structure/sign/poster/official/report_crimes/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lyL" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/flora/bush/style_2, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"lyN" = ( -/turf/open/openspace, -/area/station/engineering/lobby) -"lyQ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lyY" = ( -/obj/machinery/shower/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" - }, -/turf/open/floor/iron/textured_large, -/area/station/medical/treatment_center) -"lzj" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"lzk" = ( -/obj/machinery/door/airlock/grunge{ - name = "Radiation Shelter" +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"jmM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/radshelter/medical) -"lzr" = ( -/obj/effect/turf_decal/tile/red{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"jng" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/port/aft) +"jnj" = ( +/obj/structure/chair{ dir = 1 }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"lzs" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/security) -"lzu" = ( -/obj/machinery/shower/directional/north, -/obj/structure/curtain, -/obj/effect/spawner/random/trash/soap, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"lzB" = ( -/obj/structure/cable, -/obj/effect/landmark/blobstart, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/security/prison) -"lzE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/blood/tracks, +/area/station/commons/fitness/recreation) +"jnp" = ( +/turf/closed/wall/rust, +/area/station/cargo/drone_bay) +"jnL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"joh" = ( +/turf/closed/wall/rust, +/area/station/command/heads_quarters/hos) +"jop" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/asteroid) -"lzF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/medical/storage) +"joC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P2-Central-Primary"; - location = "P1-Central-Primary" +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","monastery") }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lzW" = ( +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"joF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/sign/poster/official/random/directional/east, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"lAe" = ( +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"joK" = ( +/obj/structure/chair/pew{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"joL" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/dresser, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) +"joP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"lAj" = ( -/turf/closed/wall, -/area/station/construction/mining/aux_base) -"lAm" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/storage) -"lAs" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/security/brig) +"joS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/east, +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"lAt" = ( +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"joY" = ( +/turf/closed/wall/rust, +/area/station/maintenance/disposal) +"jpa" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"lAy" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"lAE" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"lAG" = ( -/obj/machinery/skill_station, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"lAL" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lAN" = ( -/obj/structure/railing/corner{ +/turf/open/floor/iron/stairs/medium{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/area/station/service/chapel) +"jpx" = ( +/obj/structure/railing{ dir = 4 }, -/area/station/command/meeting_room) -"lBu" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/conveyor_switch/oneway{ - id = "sorter"; - pixel_x = 20; - pixel_y = 16 +/obj/structure/table, +/obj/item/pai_card, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"jpF" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 9 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/cargo/sorting) -"lBC" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/structure/sign/poster/random/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"lBI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"lBJ" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"lBZ" = ( +/area/station/command/bridge) +"jpM" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"jpX" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/structure/railing, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"lCk" = ( -/obj/effect/turf_decal/siding/dark_blue{ +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"lCp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/area/station/ai/satellite/maintenance/storage) +"jqb" = ( +/turf/closed/wall, +/area/station/security/detectives_office) +"jqt" = ( +/obj/machinery/computer/bank_machine, +/obj/structure/sign/warning/secure_area/directional/north, +/obj/machinery/light/small/directional/north, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/railing{ - dir = 6 +/area/station/command/vault) +"jqI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"jqJ" = ( +/mob/living/carbon/human/species/monkey, +/obj/effect/turf_decal/stripes/end{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"lCu" = ( -/obj/effect/turf_decal/stripes{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/cable, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lCw" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/science/genetics) +"jqS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"lCA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"jqV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"lCK" = ( -/obj/effect/turf_decal/siding/dark_blue, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"lCO" = ( -/obj/structure/chair/pew{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/sign/warning/electric_shock/directional/west{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"jqW" = ( +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"jra" = ( +/obj/machinery/door/poddoor/preopen{ + id = "gravity"; + name = "Gravity Generator Blast Door" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/chapel, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"jre" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"jrh" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Public)" + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, /area/station/service/chapel) -"lCR" = ( -/obj/structure/railing{ +"jri" = ( +/turf/closed/wall, +/area/station/security/execution/transfer) +"jrr" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people{ + pixel_y = 4 + }, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/reagent_containers/dropper, +/obj/effect/turf_decal/bot, +/obj/item/toy/figure/botanist, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron, -/area/station/maintenance/central/greater) -"lCU" = ( -/obj/machinery/power/apc/auto_name/directional/south, +/area/station/service/hydroponics) +"jrs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, /obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"lCY" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"jrR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lDa" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/item/reagent_containers/cup/soda_cans/cola{ - pixel_x = 14 +/area/station/engineering/atmos/pumproom) +"jrT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/reagent_containers/cup/soda_cans/cola{ - pixel_x = 3; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/item/reagent_containers/cup/soda_cans/cola{ - pixel_x = -6 +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison) +"jsc" = ( +/obj/machinery/light_switch/directional/east{ + pixel_x = 23; + pixel_y = 8 }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lDl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"jsj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/medical/pharmacy) -"lDn" = ( +/obj/structure/cable/multilayer/connected, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"jso" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"lDt" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lobby Lockdown Shutters"; - id = "cargolobbylockdown" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"lDK" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/stairs/left{ +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"jsI" = ( +/obj/structure/hoop{ dir = 8 }, -/area/station/science/research) -"lDO" = ( -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/prison) +"jsN" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"jsV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ dir = 1; - id = "geneshut" + id = "visitation"; + name = "Visitation Shutters" }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/science/genetics) -"lDP" = ( +/area/station/security/execution/transfer) +"jtk" = ( +/obj/machinery/light/directional/north, +/obj/structure/chair/sofa/bench, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"jtl" = ( /obj/structure/table, -/obj/item/healthanalyzer{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/healthanalyzer{ - pixel_x = -5 - }, -/obj/item/pen{ - pixel_x = 7 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/machinery/computer/records/medical/laptop, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white, -/area/station/security/medical) -"lDZ" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"jtD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/no_smoking/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman/pre_loaded, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"jtJ" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"jtL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"lEa" = ( -/obj/machinery/button/elevator/directional/east{ - id = "aisat" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai/satellite/interior) -"lEj" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/asteroid) -"lEu" = ( -/obj/structure/railing/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"juj" = ( +/obj/effect/spawner/random/decoration/glowstick, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"lEM" = ( -/obj/item/radio/intercom/directional/south{ - frequency = 1423; - name = "Interrogation Intercom" - }, -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"juq" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/asteroid, +/area/station/hallway/secondary/exit/departure_lounge) +"jus" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"lER" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"lES" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder{ - pixel_y = 12 +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"juF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"juL" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"juR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Laser Room Starboard"; + name = "laser room camera"; + network = list("ss13","engine") }, -/turf/open/floor/iron/white/smooth_edge{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"jvh" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/medical/pharmacy) -"lFv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"lFE" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/disposalpipe/segment{ +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"jvl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lFG" = ( -/turf/open/floor/glass, -/area/station/command/meeting_room) -"lFK" = ( -/obj/structure/chair, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"jvQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"jvR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 5 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"lFM" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ - name = "Port To Turbine" +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"jwi" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge-passthrough" }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/machinery/door/airlock/command{ + name = "Bridge Maintenance" }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lFN" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" +/obj/machinery/door/poddoor/preopen{ + id = "brige-maint"; + name = "Bridge Blast Door" }, -/obj/effect/turf_decal/box, -/obj/item/radio/intercom/directional/west, -/obj/machinery/byteforge, -/turf/open/floor/iron/dark/textured, -/area/station/cargo/bitrunning/den) -"lFQ" = ( -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"lFR" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Pharmacy" +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"jwn" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"jwu" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"jwB" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/light/small/directional/north, +/obj/structure/closet/emcloset, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"jwV" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos) +"jxy" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured_edge{ - dir = 1 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/area/station/medical/treatment_center) -"lFT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"lFW" = ( -/obj/effect/spawner/random/structure/grille{ - spawn_loot_chance = 76 +/area/station/maintenance/starboard/aft) +"jya" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"jyr" = ( +/obj/structure/sign/warning/secure_area{ + name = "WARNING: Station Limits" }, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"lFX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/rust, +/area/space/nearstation) +"jyF" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/main) -"lGe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"lGt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/green/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lGD" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/maintenance/starboard/fore) +"jyH" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/siding/brown{ dir = 1 }, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"lGH" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"lGJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"lGP" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"lGR" = ( -/obj/effect/spawner/structure/window/hollow/end{ +/area/station/cargo/bitrunning/den) +"jyI" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"jyS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"jzf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/service/hydroponics/garden) -"lHc" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lHi" = ( -/obj/structure/ladder{ - icon_state = "ladder10" - }, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"lHm" = ( -/turf/closed/wall, -/area/station/engineering/storage/tech) -"lHp" = ( -/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"lHy" = ( -/obj/machinery/button/door/directional/west{ - id = "Cabin6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, +/area/station/maintenance/disposal) +"jzh" = ( /obj/effect/turf_decal/siding/wood{ - dir = 8 + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/wood, +/area/station/service/library) +"jzk" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"lHC" = ( -/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/vending/engivend, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"jzm" = ( +/obj/effect/turf_decal/delivery, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/suit_storage_unit/atmos, /turf/open/floor/iron/dark, -/area/station/security/office) -"lHX" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#EFB341" +/area/station/engineering/atmos) +"jzo" = ( +/obj/structure/chair{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"jzt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/plaque{ + icon_state = "L12" }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"lIm" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"jzw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"jzB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"lIn" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"lIp" = ( -/obj/structure/chair, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"lIr" = ( -/turf/closed/wall, -/area/station/hallway/secondary/service) -"lIv" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"lIW" = ( -/obj/item/stack/cable_coil{ - amount = 1 - }, -/turf/open/floor/plating/airless, -/area/station/solars/port/fore) -"lIZ" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/vending/boozeomat, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"jzF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"lJo" = ( -/obj/structure/cable, +/area/station/maintenance/port/lesser) +"jzH" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/engineering/gravity_generator) +"jAc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"lJq" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"lJv" = ( -/obj/structure/kitchenspike, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mob_spawn/corpse/human/damaged, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/mob_buckler, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"lJw" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/area/station/maintenance/port/greater) +"jAl" = ( +/obj/machinery/computer/exodrone_control_console{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/warden) -"lJC" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 9 +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"lJT" = ( -/obj/machinery/photocopier/prebuilt, -/obj/machinery/light_switch/directional/east, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"lKf" = ( -/obj/effect/landmark/start/geneticist, -/obj/structure/chair/office, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"jAu" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"lKh" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"lKp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"jAy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"jAF" = ( +/obj/structure/marker_beacon/burgundy{ + name = "landing marker" }, -/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"jBf" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/cargo/storage) -"lKC" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lKF" = ( -/obj/effect/turf_decal/box/corners{ +/area/station/engineering/atmos) +"jBi" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/ai/satellite/interior) -"lKN" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"lKY" = ( -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"lKZ" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/asteroid/corner{ - dir = 1 +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"jBl" = ( +/obj/structure/table/wood/fancy/blue, +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"lLk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"lLm" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"lLo" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/firealarm/directional/west, +/obj/item/reagent_containers/cup/glass/bottle/wine/unlabeled, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"jBr" = ( +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"lLr" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/area/station/maintenance/port/greater) +"jBs" = ( +/turf/closed/wall/r_wall, +/area/station/security/checkpoint/engineering) +"jBy" = ( +/obj/structure/bookcase/random/nonfiction, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"jBC" = ( +/obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"lLC" = ( -/obj/structure/chair/stool/directional/east{ - name = "Quartermaster" +"jBN" = ( +/obj/structure/chair/office{ + dir = 4 }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"lLF" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"lLH" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ - dir = 1 +/obj/effect/landmark/navigate_destination/bridge, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"jBO" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lLO" = ( +/obj/structure/bed/medical/emergency, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"jBR" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"lLU" = ( +/obj/structure/door_assembly/door_assembly_eng{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"jBS" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"jBT" = ( +/obj/machinery/light_switch/directional/east, +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/components/tank/air, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"jCl" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"jCm" = ( +/turf/closed/wall, +/area/station/maintenance/department/crew_quarters/bar) +"jCP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lLW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"lMa" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"lMx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"lMC" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 4 }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"jCZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/insectguts, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"jDs" = ( +/obj/structure/table, +/obj/item/razor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/commons/locker) +"jDy" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"lMI" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"lMT" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 +/obj/machinery/duct, +/obj/structure/railing/corner{ + dir = 1 }, -/obj/structure/closet/emcloset, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"jDF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron/checker, -/area/station/science/research) -"lNe" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"lNk" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"jDU" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/light/directional/west, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/structure/rack, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lNu" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/table/glass, +/obj/structure/cable, +/obj/structure/fireaxecabinet/jawsofrecovery/directional/east, +/obj/item/surgicaldrill, +/obj/item/toy/figure/paramedic, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"jEd" = ( +/obj/structure/table, +/obj/machinery/firealarm/directional/west, +/obj/item/clipboard{ + pixel_x = 4 }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/book/manual/wiki/tcomms, +/obj/item/radio, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"jEp" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes{ +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"lNv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"lNz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"lNB" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/door/airlock{ - name = "Hydroponics Backroom" +/area/station/service/theater) +"jEw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"lNJ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space/basic, -/area/space/nearstation) -"lNV" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/stairs/left{ +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/science/lab) -"lOa" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Crystallizer Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/checker{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"jEy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/area/station/engineering/atmos/mix) -"lOk" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"lOo" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/landmark/start/depsec/supply, +/obj/structure/chair/office{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"lOy" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/robotics/mechbay) -"lOE" = ( -/obj/structure/table/wood, -/obj/item/gun/ballistic/revolver/russian, -/turf/open/floor/wood, -/area/station/commons/lounge) -"lPe" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"lPi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"jEC" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai/satellite/uppersouth) -"lPj" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured_large, -/area/station/ai/satellite/foyer) -"lPn" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/south, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"jEK" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/hallway/secondary/entry) +"jEO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, /obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"lPp" = ( -/obj/machinery/light/directional/south, -/obj/machinery/power/emitter, /turf/open/floor/plating, -/area/station/engineering/storage) -"lPw" = ( +/area/station/engineering/atmos/storage/gas) +"jEQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"lPz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"lPC" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"lPV" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"lQe" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/multilayer/connected, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"lQl" = ( +/area/station/maintenance/port/greater) +"jFq" = ( +/obj/structure/barricade/wooden/crude, +/obj/machinery/door/airlock/bronze, /obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/end{ +/turf/open/floor/bronze, +/area/station/maintenance/department/chapel) +"jFs" = ( +/obj/structure/flora/bush/jungle/c/style_2, +/obj/structure/flora/grass/jungle/b/style_5, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"jFv" = ( +/obj/structure/chair/office/light{ dir = 8 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/hallway/secondary/command) -"lQA" = ( +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"jFC" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/washing_machine, +/obj/machinery/light/directional/north, /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/machinery/light/directional/south, +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"jFS" = ( +/obj/structure/sign/departments/engineering/directional/east{ + pixel_y = -32 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"lQD" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/command/bridge) -"lQL" = ( -/turf/open/openspace, -/area/station/hallway/primary/starboard) -"lQN" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/area/station/command/gateway) -"lQQ" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"jFZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/airalarm/directional/north, /turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"lQU" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 9 - }, -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee/no_lid, -/obj/effect/spawner/random/trash/cigbutt{ - spawn_random_offset = 4; - spawn_scatter_radius = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"lRc" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"lRk" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/open/floor/iron/dark/telecomms, -/area/station/ai/satellite/chamber) -"lRr" = ( -/obj/machinery/door/airlock/maintenance/glass, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 - }, +/area/station/maintenance/disposal/incinerator) +"jGg" = ( +/obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"lRJ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/spawner/random/entertainment/cigarette_pack, -/obj/item/cigarette/rollie/mindbreaker, -/obj/machinery/airalarm/directional/east, -/obj/item/paper/fluff/stations/lavaland/orm_notice, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"lRL" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/machinery/firealarm/directional/west, +/obj/item/radio/intercom/directional/north, +/obj/machinery/pdapainter/supply, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/qm) +"jGt" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/item/kirbyplants/random, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/station/security/warden) -"lRN" = ( -/obj/item/reagent_containers/spray/plantbgone{ - pixel_y = 3 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/watertank, -/obj/item/grenade/chem_grenade/antiweed, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"lRU" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, +/obj/structure/grille/broken, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"jGU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"lSc" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Reception" +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"jGW" = ( +/obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"lSz" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"jHm" = ( +/obj/vehicle/ridden/janicart, +/obj/item/key/janitor, +/obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating, -/area/station/science/robotics/storage) -"lSA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half, -/area/station/science/xenobiology) -"lSD" = ( -/obj/machinery/disposal/bin, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, /area/station/service/janitor) -"lSI" = ( -/obj/structure/cable, +"jHo" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"lSM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"lSN" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/obj/structure/chair, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"lTb" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/station/solars/port/aft) -"lTj" = ( -/obj/effect/spawner/random/trash/hobo_squat, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"jHy" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"lTk" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/area/station/maintenance/port/lesser) +"jHR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"lTp" = ( -/obj/structure/chair/sofa/bench, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lTq" = ( +/obj/structure/sign/warning/vacuum/external/directional/west, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"jHS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"lTv" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/green/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"jHT" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"lTD" = ( -/obj/machinery/modular_computer/preset/engineering, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"lTJ" = ( -/obj/structure/filingcabinet, -/obj/item/storage/box/evidence{ - pixel_y = 19 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"lTN" = ( -/obj/structure/cable, +/area/station/service/hydroponics) +"jIa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"lUj" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/research) -"lUk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"lUl" = ( +/obj/effect/landmark/start/chaplain, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"jIg" = ( /obj/structure/cable, -/obj/structure/chair/sofa/bench/right, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/meter, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"jIt" = ( +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lUp" = ( +/obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/engine) +"jID" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"lUM" = ( -/obj/structure/toilet/greyscale{ - dir = 4 +/area/station/maintenance/starboard/aft) +"jIR" = ( +/obj/structure/closet/crate/solarpanel_small, +/obj/effect/turf_decal/delivery, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"jIV" = ( +/obj/machinery/vending/security, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"lUY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/security/lockers) +"jIW" = ( +/obj/structure/chair/pew/right{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"lVj" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/iron/chapel{ + dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"lVo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/service/chapel) +"jIX" = ( +/obj/item/radio/intercom/directional/west{ + freerange = 1; + listening = 0; + name = "Common Channel"; + pixel_y = 4 + }, +/obj/item/radio/intercom/directional/north{ + freerange = 1; + listening = 0; + name = "Custom Channel" + }, +/obj/item/radio/intercom/directional/east{ + freerange = 1; + listening = 0; + name = "Common Channel"; + pixel_y = 4 + }, +/obj/effect/landmark/start/ai, +/obj/machinery/button/door/directional/north{ + id = "AI Core shutters"; + name = "AI Core Shutters Toggle"; + pixel_x = 24; + req_access = list("ai_upload") + }, +/obj/machinery/button/door/directional/north{ + id = "AI Chamber entrance shutters"; + name = "AI Chamber Lockdown"; + pixel_x = -24; + req_access = list("ai_upload") + }, +/turf/open/floor/circuit/red, +/area/station/ai/satellite/chamber) +"jJd" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = -7 + }, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = -7 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 7 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 7 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6 + }, +/obj/item/reagent_containers/dropper, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/machinery/camera/directional/south{ + c_tag = "Chemistry"; + name = "medical camera"; + network = list("ss13","medical") }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"lVq" = ( /obj/item/radio/intercom/directional/south, -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/purple{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/white/textured_corner{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"jJh" = ( +/obj/structure/flora/bush/ferny/style_random, +/turf/open/misc/asteroid, +/area/space/nearstation) +"jJp" = ( +/obj/structure/chair/sofa/middle/brown{ dir = 1 }, -/area/station/science/xenobiology) -"lVv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"lVx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"lVB" = ( -/turf/closed/mineral/random/stationside/asteroid/porus, -/area/station/maintenance/department/science) -"lVD" = ( -/obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"lVF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/disposalpipe/segment{ +/area/station/cargo/miningoffice) +"jJs" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"lWc" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album/chapel, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"lWd" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/research, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"lWf" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/meter, -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 6 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/iron, +/area/station/security/brig) +"jJx" = ( +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/area/station/engineering/atmos/mix) -"lWF" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/greater) -"lWW" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/ai/satellite/chamber) -"lXb" = ( -/obj/machinery/light/warm/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/wood/tile, +/turf/open/floor/iron, /area/station/security/courtroom) -"lXe" = ( +"jJB" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "disposals sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/supply/disposals, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"jJD" = ( +/obj/machinery/power/shieldwallgen/xenobiologyaccess, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/box, +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"lXi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"jJH" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Security"; + name = "navigation beacon (Security Delivery)" }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"lXu" = ( +/obj/machinery/door/window/right/directional/north{ + name = "Security Delivery Access"; + req_access = list("security") + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"jJJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lXy" = ( -/mob/living/basic/slime, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"lXE" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"lXG" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/crate, +/area/station/hallway/primary/fore) +"jJN" = ( +/obj/effect/turf_decal/stripes/end, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/closet/firecloset, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lXI" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/airlock/atmos{ - name = "Hypertorus Fusion Reactor" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/port/lesser) +"jJW" = ( +/obj/item/kirbyplants/organic/plant18, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"jKj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"lXO" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "experimentor sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"jKt" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"lXY" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"lYa" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/item/kirbyplants/organic/plant21{ + desc = "After his promotion, he was transferred to Kilo Station to serve as the gateway's protector."; + name = "rodger" }, -/obj/vehicle/ridden/secway, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/security/interrogation) -"lYe" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/cargo/lobby) -"lYg" = ( +/area/station/command/gateway) +"jKv" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"lYm" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"lYo" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"lYt" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/light_switch/directional/north, +/area/station/command/bridge) +"jKz" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, -/area/station/engineering/break_room) -"lYu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/command/eva) +"jKH" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"lYA" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"lYB" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + name = "Theater sorting disposal pipe" + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/mail_sorting/service/theater, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"jKJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/glowstick, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"lYL" = ( -/obj/structure/railing{ - dir = 10 +/area/station/maintenance/port/greater) +"jKQ" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 }, -/turf/open/floor/iron/dark/side{ - dir = 10 +/obj/effect/turf_decal/bot_white, +/obj/machinery/camera/directional/north{ + c_tag = "Morgue"; + name = "medical camera"; + network = list("ss13","medical") }, -/area/station/command/meeting_room) -"lYN" = ( -/obj/machinery/computer/monitor, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"lYR" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"lYZ" = ( -/obj/machinery/computer/communications, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/structure/window/reinforced/spawner/directional/north, +/area/station/medical/morgue) +"jKZ" = ( +/obj/machinery/vending/sustenance, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"jLk" = ( +/obj/machinery/door/airlock/grunge{ + name = "Cell 3" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/command/bridge) -"lZb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/end{ +/area/station/security/prison/safe) +"jLq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"jLy" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/structure/sign/poster/official/help_others/directional/north, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"jLK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/iron/textured, -/area/station/medical/pharmacy) -"lZc" = ( -/obj/machinery/button/door/directional/east{ - id = "soup"; - name = "Radiation Shutters Control" +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"jLM" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"jLT" = ( +/obj/machinery/computer/mech_bay_power_console{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lZn" = ( -/obj/effect/turf_decal/siding/purple/corner{ - dir = 1 +/obj/structure/cable, +/turf/open/floor/circuit/green{ + luminosity = 2 }, +/area/station/science/robotics/mechbay) +"jMa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"lZu" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/starboard) -"lZH" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 }, -/obj/structure/cable, /obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"mam" = ( -/obj/structure/closet/secure_closet/personal, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"jMl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/security) -"maA" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/hallway/secondary/exit/departure_lounge) +"jMo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"jMF" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/science/robotics/lab) -"maB" = ( -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/checker{ +/area/station/hallway/primary/starboard) +"jMK" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"jMU" = ( +/obj/item/kirbyplants/organic/plant10, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"jMZ" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/area/station/engineering/atmos) -"maR" = ( -/obj/machinery/restaurant_portal/restaurant, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood, -/area/station/commons/lounge) -"maY" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/science/robotics/mechbay) +"jNe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"mbn" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/spawner/random/clothing/costume, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"mbA" = ( -/obj/structure/cable, -/obj/machinery/button/ignition{ - id = "xenobio"; - pixel_y = -26 - }, -/obj/machinery/button/door/directional/north{ - id = "xenobio5"; - name = "pen 5 blast doors control"; - pixel_x = -6 +/turf/open/floor/iron, +/area/station/command/bridge) +"jNn" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"jNt" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Arrivals"; + location = "Custodial"; + name = "custodial navigation beacon" }, -/obj/machinery/button/door/directional/north{ - id = "xenobio6"; - name = "pen 6 blast doors control"; - pixel_x = 6 +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"jNM" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 +/obj/item/folder/yellow, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/folder{ + pixel_x = -4; + pixel_y = 4 }, -/area/station/science/xenobiology) -"mbL" = ( -/turf/closed/wall/r_wall, -/area/station/ai/upload/foyer) -"mbM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, +/obj/item/lighter, +/obj/item/cigarette/cigar/cohiba, +/obj/item/stamp/head/ce, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"jNR" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/security/lockers) -"mbZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/south, +/area/station/maintenance/starboard/fore) +"jNW" = ( +/obj/structure/table/wood, +/obj/item/storage/crayons, +/obj/item/bikehorn/rubberducky, +/obj/machinery/newscaster/directional/south, /turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"mcd" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/area/station/service/theater) +"jOb" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/engineering/storage) -"mcl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"mcv" = ( -/obj/machinery/button/door/directional/south{ - id = "sealobs"; - name = "Observatory Lock" +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"jOi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/records/security{ + dir = 1 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"mcw" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"jOn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/maintenance/starboard/fore) +"jOA" = ( +/obj/machinery/gateway/centerstation, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/command/gateway) +"jOI" = ( +/obj/structure/sign/warning/secure_area{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall/r_wall/rust, +/area/station/science/ordnance/bomb) +"jOY" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"jOZ" = ( +/obj/machinery/computer/rdservercontrol, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"mcA" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/north, -/obj/item/storage/wallet, -/turf/open/floor/iron/dark, +/area/station/science/server) +"jPq" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/cobweb, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio" + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/button/door/directional/north{ + id = "Cabin_4"; + name = "Cabin 4 Privacy Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, /area/station/commons/locker) -"mcH" = ( +"jPB" = ( +/turf/closed/wall/rust, +/area/station/security/courtroom) +"jPG" = ( /obj/effect/turf_decal/stripes/corner, +/obj/machinery/disposal/bin/tagger, +/obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"mcQ" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"mcS" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"mds" = ( -/obj/machinery/vending/autodrobe, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"mdU" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/firealarm/directional/north, +/area/station/command/heads_quarters/hos) +"jQh" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"mee" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 +/turf/open/space/basic, +/area/space/nearstation) +"jQn" = ( +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"jQy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"meE" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/caution/stand_clear{ dir = 8 }, -/obj/effect/spawner/structure/window, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"jQE" = ( +/turf/closed/wall, +/area/station/hallway/primary/port) +"jQR" = ( +/obj/docking_port/stationary/mining_home/common/kilo, /turf/open/floor/plating, -/area/station/service/bar) -"meF" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/hallway/primary/fore) +"jQT" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"meH" = ( -/obj/structure/rack, -/obj/item/electronics/apc, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"meL" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"meP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/turf/open/floor/plating, +/area/station/maintenance/aft) +"jQV" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"meQ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/misc/asteroid, +/area/space/nearstation) +"jQW" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/command/vault) +"jRe" = ( +/obj/structure/cable, +/obj/structure/chair/office, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"meT" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/area/station/command/bridge) +"jRm" = ( +/obj/structure/table/wood, +/obj/machinery/fax{ + fax_name = "Detective's Office"; + name = "Detective's Fax Machine" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mff" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron, -/area/station/security/courtroom) -"mfh" = ( -/obj/machinery/newscaster/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"mfl" = ( -/obj/structure/bookcase/random/adult, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/wood, -/area/station/service/library) -"mfw" = ( +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"jRv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"jRx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"mfA" = ( -/obj/machinery/exoscanner, -/obj/effect/turf_decal/siding/wideplating_new/dark/end{ +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/theater) +"jRy" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/turf/open/floor/circuit/airless, -/area/station/cargo/storage) -"mfC" = ( -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"mfE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"jRF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"jRQ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/ore_silo, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"mfP" = ( -/obj/machinery/atmospherics/components/tank/air/layer4, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 +/area/station/command/vault) +"jRR" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance" }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"mgn" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 5; - height = 7; - name = "Cargo Bay"; - shuttle_id = "cargo_home"; - width = 12 +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"jSe" = ( +/obj/item/target/clown, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"jSu" = ( +/obj/machinery/conveyor{ + id = "garbage" }, -/turf/open/space/basic, -/area/space) -"mgz" = ( -/obj/machinery/holopad, -/turf/closed/mineral/random/stationside/asteroid/porus, -/area/station/asteroid) -"mgH" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/trash/syndi_cakes, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"mgV" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/commons/fitness/recreation) -"mhc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/cable, +/area/station/maintenance/disposal) +"jSw" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/chair/sofa/middle/maroon, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"jSx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"jSC" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/rust, +/area/station/maintenance/aft) +"jSE" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/caution/stand_clear{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"mhi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room" + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"jSF" = ( +/turf/open/floor/carpet/green, +/area/ruin/space/has_grav/abandoned_warehouse) +"jSJ" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mht" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"mhz" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mhD" = ( -/obj/structure/rack, -/obj/effect/spawner/random/contraband/narcotics, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mhF" = ( -/obj/effect/spawner/random/decoration/material, -/obj/effect/spawner/random/decoration/material, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, +"jSK" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"mhN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"mhO" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers{ - pixel_x = -10; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = 6 - }, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/pharmacy) -"mhU" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"mhW" = ( +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"jSM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"jTa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Custodial Closet" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/service/janitor, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"jTc" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/lobby) -"mic" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/commons/locker) +"jTk" = ( +/obj/structure/flora/rock/pile/style_random{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"jTm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"jTt" = ( /obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"mio" = ( -/obj/machinery/computer/station_alert, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"mit" = ( -/obj/structure/weightmachine/weightlifter, -/obj/machinery/newscaster/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/prison) -"miD" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/pod/light, -/area/station/maintenance/department/medical/central) -"miI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/hallway/primary/fore) +"jUa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"jUi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/toy/figure/assistant{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"jUz" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/gateway) -"miK" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"miL" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 +/area/station/engineering/atmos) +"jUJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"miM" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"jUU" = ( +/turf/closed/wall/rust, +/area/station/medical/morgue) +"jVf" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/infections{ + pixel_y = 6 }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"miU" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/plasteel{ - amount = 15 +/obj/item/healthanalyzer, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/camera/directional/east{ + c_tag = "Virology"; + name = "medical camera"; + network = list("ss13","medical") }, -/obj/item/assembly/prox_sensor{ - pixel_x = 5; - pixel_y = 7 +/obj/machinery/requests_console/directional/east{ + department = "Virology"; + name = "Virology Requests Console" }, -/obj/structure/fireaxecabinet/mechremoval/directional/east, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"miV" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mjd" = ( -/obj/machinery/light/directional/south, -/obj/machinery/cell_charger, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/item/tgui_book/manual/idc, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"jVA" = ( /obj/structure/table, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/starboard) -"mjf" = ( +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"jVD" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/main) -"mjj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"mjq" = ( -/obj/structure/cable/layer3, -/obj/machinery/camera/autoname/directional/north{ - network = list("aicore") - }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"mju" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"mjx" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"jVG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/obj/effect/decal/cleanable/generic, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/department/crew_quarters/bar) +"jVZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/event_spawn, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"jWs" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"mjP" = ( +/area/station/maintenance/starboard) +"jWw" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"jWx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"mjR" = ( -/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos) -"mjU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/hallway/primary/starboard) +"jWD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Cabin_3Privacy"; + name = "Cabin 3 Privacy Shutter" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"jWL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"jXd" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"jXi" = ( +/obj/structure/girder/displaced, +/obj/structure/grille/broken, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"mjY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, +/area/station/maintenance/port/fore) +"jXk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"mjZ" = ( -/obj/machinery/atmospherics/components/binary/pump, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/engineering/atmos) -"mkc" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, +/area/station/command/bridge) +"jXN" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"jXX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"mks" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"mkE" = ( -/obj/structure/table/glass, -/obj/item/storage/box/lights/mixed, /turf/open/floor/iron, -/area/station/engineering/lobby) -"mkJ" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/area/station/commons/fitness/recreation) +"jYb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/computer/records/security, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"mkN" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Security's Tactical Shower" +/area/station/hallway/secondary/exit/departure_lounge) +"jYc" = ( +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 10 }, -/obj/effect/mapping_helpers/airlock/access/all/security/hos, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"mkR" = ( -/obj/machinery/light/small/dim/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/command/gateway) -"mkV" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"mkZ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"mla" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 8; - id = "gateshutter"; - name = "Gateway Access Shutter" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/gateway) -"mld" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"mlf" = ( +/area/station/engineering/atmos) +"jYd" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/security/glass{ + name = "Engineering Security Post" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"jYe" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"jYh" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mlh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks{ +/turf/open/floor/plating, +/area/station/security/prison/garden) +"jYo" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/ammo_casing/c357/spent, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"mlk" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, -/turf/open/space/basic, -/area/space/nearstation) -"mlm" = ( -/obj/machinery/light/warm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"mlo" = ( +/area/station/engineering/supermatter/room) +"jYp" = ( /obj/structure/table, -/obj/item/hand_labeler, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"mlq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = -2 }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"mlG" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 3 +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 8 }, -/obj/item/restraints/handcuffs, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"jYx" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"mlK" = ( -/turf/open/floor/fakepit, -/area/station/maintenance/department/medical) -"mlV" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"mmh" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/engineering) -"mmi" = ( -/obj/structure/closet/secure_closet/security/med, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/radio/intercom/directional/north, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/firealarm/directional/north{ - pixel_x = -28 +/obj/structure/sign/departments/aisat/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"mml" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space/openspace, -/area/station/solars/port) -"mmy" = ( -/obj/machinery/photobooth/security, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"mmU" = ( -/obj/machinery/computer/mecha{ +/area/station/hallway/primary/central/fore) +"jYL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) +"jYT" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"mmV" = ( -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/science/genetics) -"mna" = ( -/obj/structure/tank_dispenser, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"mnc" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/pharmacy) -"mnd" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 10 +/area/station/engineering/atmos/pumproom) +"jYX" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Monastery External Airlock" }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"mne" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mnj" = ( -/obj/structure/table, -/obj/item/stack/arcadeticket, -/obj/item/stack/arcadeticket, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mnk" = ( -/obj/effect/spawner/random/structure/tank_holder, +/area/station/service/chapel) +"jZJ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"mnm" = ( -/obj/machinery/chem_dispenser, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/medical/pharmacy) -"mnt" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/nuclearbomb/beer, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"kac" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mnA" = ( -/obj/effect/turf_decal/stripes/red/corner{ dir = 4 }, -/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "chem-passthrough" + }, +/obj/machinery/door/airlock/medical/glass{ + name = "Chemistry" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/obj/effect/landmark/navigate_destination/chemfactory, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"mnC" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/medical/chemistry) +"kat" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"mnD" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/decoration/flower, -/obj/effect/spawner/random/decoration/paint, -/obj/effect/spawner/random/decoration/glowstick, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mnG" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mnI" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/machinery/light/directional/east, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"kax" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) +"kay" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"mnP" = ( -/turf/open/floor/iron, -/area/station/service/hydroponics) -"mnU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage) -"mnX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/evidence) -"mod" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"kaM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"moe" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/testlab) -"mog" = ( -/turf/open/openspace, /area/station/engineering/main) -"mor" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"moH" = ( -/obj/machinery/computer/records/security, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"moL" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Pure to Mix" - }, -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mpc" = ( -/turf/closed/wall/rock/porous, -/area/station/hallway/primary/starboard) -"mpp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"kaT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/light/cold/directional/east, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mpA" = ( -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/white/smooth_half{ +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"kaW" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/commons/fitness/recreation) -"mpG" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"mpH" = ( -/obj/machinery/computer/operating{ - dir = 1 +/area/station/maintenance/starboard) +"kaX" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Office" }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"mpP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"mpZ" = ( -/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"kbc" = ( +/obj/structure/sign/poster/random/directional/north, /obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mqc" = ( -/obj/structure/closet/crate/freezer, -/obj/item/food/icecreamsandwich, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/sign/departments/chemistry/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"mqz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/plating, -/area/station/science/robotics/storage) -"mqA" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/riot_armor, -/obj/effect/spawner/random/armory/bulletproof_armor, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"mqE" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mqH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/department/bridge) +"kbf" = ( +/obj/machinery/light/directional/east, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"mra" = ( -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_y = 24; +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/button/door/incinerator_vent_atmos_main{ - pixel_y = 40; +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"kbl" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"kbn" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/rock/pile/style_random, +/turf/open/floor/grass, +/area/station/service/chapel/monastery) +"kbv" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"mrq" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"mrr" = ( -/obj/item/storage/box/beakers{ - pixel_y = 7 - }, -/obj/structure/table/reinforced, -/obj/item/assembly/igniter{ - pixel_y = -3 - }, -/obj/item/toy/figure/chemist{ - pixel_x = 6 +/area/station/hallway/primary/aft) +"kbw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "O2 to Airmix" }, -/turf/open/floor/iron/dark/textured_edge, -/area/station/medical/pharmacy) -"mrw" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"kbx" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"kbC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/camera/directional/north{ + c_tag = "Prison Labor"; + network = list("ss13","prison") + }, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"mry" = ( -/turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"mrK" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical2, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"mrV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"msf" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/spawner/random/bedsheet/any, -/obj/structure/bed, -/obj/item/toy/plush/lizard_plushie/green{ - name = "Drinks-The-Booze" +/area/station/security/prison) +"kbH" = ( +/obj/machinery/computer/records/medical{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/obj/machinery/light/directional/east, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"msi" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"msm" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"msr" = ( +/area/station/command/heads_quarters/cmo) +"kbT" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"kbV" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_y = -1 +/obj/item/storage/box/evidence, +/obj/item/taperecorder{ + pixel_x = 5 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"mst" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"msw" = ( -/obj/effect/mob_spawn/corpse/human/assistant, -/turf/open/misc/asteroid, -/area/station/asteroid) -"msz" = ( -/obj/machinery/door/airlock/security{ - name = "Auxilliary Brig" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/turf/open/floor/iron, -/area/station/security/brig) -"msR" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"kbY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"kbZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ dir = 1 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"msS" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/mod/module/thermal_regulator, -/obj/item/mod/module/plasma_stabilizer{ - pixel_y = 12 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"msV" = ( -/obj/structure/closet/crate/bin, -/obj/effect/spawner/random/trash/botanical_waste, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/machinery/camera/autoname/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/break_room) -"msY" = ( -/turf/open/floor/engine/co2, /area/station/engineering/atmos) -"msZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"mta" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"mtB" = ( -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 +"kca" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"mtG" = ( -/obj/machinery/door/airlock/command, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, +/area/station/security/courtroom) +"kcx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" +/obj/machinery/button/door/directional/south{ + id = "kitchenshutters"; + name = "Kitchen Shutter Control"; + pixel_x = -6 }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/machinery/light_switch/directional/south{ + pixel_x = 6 }, -/area/station/command/corporate_showroom) -"mtH" = ( -/turf/open/floor/plating/airless, -/area/station/solars/port) -"mtO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"mtS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"kcy" = ( +/obj/machinery/newscaster/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"mtT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/firealarm/directional/west, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"mua" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"muf" = ( -/obj/structure/chair/pew/right{ +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"kcE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/departments/lawyer/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"mut" = ( -/obj/machinery/shower/directional/south, -/obj/structure/cable, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"muw" = ( -/obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/medkit/fire{ - pixel_y = -4 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"muB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 6 - }, -/turf/open/openspace, -/area/station/engineering/main) -"muE" = ( -/obj/structure/table/glass, -/obj/item/radio/intercom/directional/south, -/obj/item/tgui_book/manual/dsm{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 2; - pixel_x = 3 - }, -/obj/item/food/sandwich/cheese, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"muL" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"muP" = ( +/area/station/hallway/primary/port) +"kcI" = ( /obj/effect/turf_decal/siding/wood{ - dir = 4 + dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/carpet/red, /area/station/service/chapel) -"mvb" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"mvd" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/sink/directional/north, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/checker, -/area/station/science/research) -"mvh" = ( -/obj/machinery/light/floor, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"mvj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"kcW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/office) +"kcX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/wall_healer/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/machinery/shower/directional/east, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"mvk" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/stripes{ +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"kdr" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mvp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/grille/broken, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"mvG" = ( -/obj/structure/flora/rock/pile/style_random, +/obj/structure/sign/warning/electric_shock/directional/north, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"kdH" = ( /turf/open/misc/asteroid/airless, -/area/station/asteroid) -"mvI" = ( -/obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"mvJ" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/structure/desk_bell{ - pixel_x = 4 +/area/station/hallway/secondary/entry) +"kdO" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"mvP" = ( +/area/station/hallway/secondary/exit/departure_lounge) +"kem" = ( +/turf/closed/wall/rust, +/area/station/security/processing) +"kep" = ( +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ - name = "N2O Storage" + name = "Engineering Security Post" + }, +/obj/effect/turf_decal/siding/red/corner{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"kex" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"mvR" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Jim Norton's Quebecois Coffee" +/area/station/maintenance/port/greater) +"keE" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency{ + pixel_y = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/item/crowbar, +/obj/item/flashlight{ + pixel_y = 2 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Arrivals Storage"; + name = "shuttle camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"keO" = ( +/obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"mvU" = ( -/obj/item/radio/intercom/prison/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"mvW" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, /area/station/commons/fitness/recreation) -"mwc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"mwe" = ( -/obj/structure/cable, +"kfh" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"kfT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"kgc" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"mwo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"mwq" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"kgB" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mww" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"kgD" = ( +/obj/machinery/power/solar{ + id = "aftstarboard"; + name = "Aft-Starboard Solar Array" + }, +/obj/effect/turf_decal/box, /obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/command/corporate_dock) -"mwx" = ( +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/aft) +"kgE" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Transferring Centre" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/unres/delayed, /obj/structure/cable, -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"mwR" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/area/station/security/processing) +"khe" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mwS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/lobby) -"mwW" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/science/robotics/lab) -"mwX" = ( -/obj/item/food/grown/banana, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/grass, -/area/station/science/genetics) -"mwY" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering Restrooms" +/area/station/hallway/primary/starboard) +"khj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/firedoor, /turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"mxf" = ( -/obj/structure/sign/warning/directional/east, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/asteroid) -"mxh" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"mxn" = ( -/obj/machinery/module_duplicator, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/white, -/area/station/science/explab) -"mxq" = ( +/area/station/command/heads_quarters/cmo) +"khy" = ( +/obj/structure/sign/warning/biohazard, /turf/closed/wall, -/area/station/maintenance/disposal) -"mxt" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/space/nearstation) -"mxv" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/maintenance/starboard) +"khK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/photocopier/prebuilt, -/turf/open/floor/iron, -/area/station/security) -"mxx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/atmos) -"mxF" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"myg" = ( -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, +/area/station/hallway/secondary/exit/departure_lounge) +"kio" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, +/obj/machinery/light_switch/directional/west, /turf/open/floor/iron, -/area/station/engineering/lobby) -"myk" = ( -/obj/structure/table, -/obj/item/food/popcorn/salty, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"myx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"myG" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/computer/records/security{ - dir = 8 - }, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/effect/turf_decal/trimline/dark_red/filled/warning, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"myV" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"myW" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"myZ" = ( -/obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 +/area/station/security/office) +"kir" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"kix" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/stack/rods/fifty, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"mzB" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/closet/firecloset/full, -/obj/structure/sign/departments/science/alt/directional/south, -/turf/open/floor/iron/white, -/area/station/science/research) -"mzI" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"kiG" = ( +/obj/structure/chair{ + dir = 1 }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/bridge) -"mzU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/welded, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/emergency_closet) -"mAa" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/chlorine{ - pixel_x = -6 - }, -/obj/item/reagent_containers/cup/bottle/carbon, -/obj/item/reagent_containers/cup/bottle/bromine{ - pixel_x = 6 - }, -/turf/open/floor/iron/dark/textured_edge{ +/area/station/security/courtroom) +"kiO" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/secure_area/directional/west, +/turf/open/space/basic, +/area/space/nearstation) +"kiW" = ( +/obj/structure/weightmachine/weightlifter, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/area/station/medical/pharmacy) -"mAd" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, -/area/station/security/office) -"mAi" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/stairs/right{ +/area/station/security/prison) +"kiZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/area/station/medical/storage) -"mAA" = ( -/obj/structure/bed/medical/emergency{ +/turf/open/floor/iron, +/area/station/security/office) +"kja" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"mAC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"mAF" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"mAX" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 +/area/station/engineering/atmos) +"kji" = ( +/obj/structure/table/glass, +/obj/item/assembly/timer{ + desc = "Used to time things. Works well with contraptions which has to count down. Tick tock. But slightly shifted to the left."; + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"mBb" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +/obj/item/assembly/timer{ + desc = "Used to time things. Works well with contraptions which has to count down. Tick tock. But slightly shifted to the left."; + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/warm/directional/south, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mBg" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"mBj" = ( -/obj/structure/bed, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/item/assembly/timer{ + desc = "Used to time things. Works well with contraptions which has to count down. Tick tock. But slightly shifted to the left."; + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"mBt" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/screwdriver{ + pixel_y = 5 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mBw" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/item/stack/cable_coil, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/station/service/library) -"mBD" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"mBI" = ( +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"kjl" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/candle_box{ +/obj/item/flashlight/lamp/green{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 8; pixel_y = 5 }, -/obj/item/storage/fancy/candle_box, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"mBT" = ( -/obj/structure/weightmachine, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"mBX" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" +/obj/item/pen/red{ + pixel_x = 5; + pixel_y = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination/engineering, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/toy/figure/hos, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"kju" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mBY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"mCm" = ( -/obj/effect/turf_decal/stripes, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mCn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"mCo" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"mCr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"kjK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"kjS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"mCt" = ( -/obj/machinery/light/cold/dim/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"mCv" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch/directional/west, -/obj/item/storage/wallet/random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/commons/locker) -"mCF" = ( -/obj/machinery/duct, -/obj/effect/landmark/start/cook, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"mCN" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) -"mCT" = ( -/obj/structure/chair/office/light, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"mCZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, +/area/station/science/auxlab) +"kkc" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"mDb" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"mDe" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"mDr" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"mDx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"mDF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/east, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"mDT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"kkg" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"kkC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mDV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"mDX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/theater) -"mEs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/structure/chair/office{ dir = 1 }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"mEy" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/psychologist, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"kkL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security) -"mEN" = ( -/obj/item/disk/computer/maintenance/spectre_meter, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"mEQ" = ( -/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"mFe" = ( -/obj/structure/chair/office{ +/area/station/maintenance/starboard/aft) +"kkP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/landmark/start/cargo_technician, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"mFn" = ( -/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"kkT" = ( /obj/structure/table, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/item/clipboard, +/obj/item/wrench, +/obj/item/crowbar/red, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Server Room"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/item/storage/backpack/duffelbag/sec/surgery{ - pixel_y = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/science/server) +"kkV" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/medical/cryo) +"kll" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 }, +/obj/machinery/light/directional/north, +/obj/item/radio/intercom/directional/north, /obj/structure/cable, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"mFR" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/closet/toolcloset, -/obj/machinery/computer/security/telescreen/auxbase/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light_switch/directional/north, +/area/station/science/robotics/mechbay) +"klm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"klp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"mFT" = ( -/obj/machinery/newscaster/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"mGk" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 +/area/station/science/robotics/mechbay) +"klB" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"klK" = ( +/obj/structure/railing{ + dir = 4 }, -/area/station/engineering/atmos) -"mGn" = ( -/turf/closed/wall/rock/porous, -/area/station/hallway/secondary/entry) -"mGo" = ( -/obj/structure/chair/comfy{ +/obj/structure/rack, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/seeds/tower, +/obj/item/seeds/watermelon, +/obj/item/seeds/wheat, +/obj/item/seeds/sugarcane, +/obj/item/seeds/orange, +/obj/item/seeds/grape, +/obj/item/seeds/cocoapod, +/obj/item/seeds/banana, +/obj/item/seeds/apple, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/structure/sign/painting/library{ - pixel_y = 32; +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"klN" = ( +/obj/effect/turf_decal/stripes/white/line{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"mGq" = ( -/obj/machinery/door/firedoor, -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"mGv" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"mGG" = ( -/turf/closed/wall, -/area/station/security/breakroom) -"mGM" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/asteroid) -"mGP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 +/obj/structure/mannequin/skeleton{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"kmo" = ( /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"mGV" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, +/area/station/engineering/main) +"kmt" = ( +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"kmC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Office" +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"kmK" = ( +/obj/structure/flora/rock, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"kmN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"mGW" = ( -/turf/open/openspace, -/area/station/hallway/primary/central) -"mGX" = ( -/obj/machinery/door/poddoor{ - id = "captaindriver" +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"kmZ" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/turf_decal/stripes/end{ +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"knh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/storage/gas) +"knk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"kno" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ dir = 1 }, /turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"mHb" = ( -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"mHf" = ( -/obj/structure/table, -/obj/item/controller, -/obj/item/compact_remote, -/obj/item/compact_remote, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/white, -/area/station/science/explab) -"mHn" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 10 +"knu" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"knv" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "External Waste Ports to Filter" }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"knL" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/firealarm/directional/south, +/obj/machinery/stasis, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/obj/effect/turf_decal/box, +/obj/machinery/vitals_reader/directional/east, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"knR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"mHu" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"mHG" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/disposalpipe/segment, +/area/station/hallway/primary/aft) +"koc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"mHL" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/area/station/maintenance/starboard/aft) +"koi" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Prison Isolation Cell"; + network = list("ss13","prison","isolation") }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"mHU" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/east, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"mHV" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/structure/toilet/greyscale{ dir = 4 }, -/obj/structure/chair/sofa/bench/right{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"mIa" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/tank_holder/extinguisher, -/obj/machinery/light/directional/south, +/obj/effect/spawner/random/contraband/prison, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) +"kom" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/structure/bed/dogbed/cayenne{ + name = "Lia's bed" + }, +/mob/living/basic/carp/pet/lia, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mId" = ( -/obj/structure/urinal/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"mIk" = ( -/obj/structure/closet/crate/coffin, -/obj/effect/decal/cleanable/cobweb, +/area/station/command/heads_quarters/hos) +"kox" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"koE" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/radio/intercom/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/chapel/funeral) -"mIA" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"mIC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mIW" = ( -/turf/closed/wall/r_wall, -/area/station/security/warden) -"mIY" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"mJb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mJv" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 +/area/station/hallway/primary/aft) +"kpq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron/dark, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) -"mJx" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +"kpH" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"mJB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"kpS" = ( +/obj/structure/railing{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"mJD" = ( -/obj/structure/cable, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"kqe" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"mJG" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"kql" = ( +/obj/machinery/computer/station_alert{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mJL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"mJO" = ( -/obj/structure/railing{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mJR" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/item/clothing/head/soft/grey{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mJU" = ( -/obj/machinery/atmospherics/components/trinary/filter{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mJV" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/railing, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"mKc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/command/bridge) +"kqn" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"mKe" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood/fancy, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"kqs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"mKo" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"kqG" = ( +/obj/machinery/chem_dispenser/drinks{ dir = 4 }, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/cargo/bitrunning/den) -"mKD" = ( -/turf/closed/wall, -/area/station/hallway/secondary/command) -"mKF" = ( +/obj/machinery/status_display/ai/directional/west, /obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lab) -"mKM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ - dir = 8 +/obj/machinery/light_switch/directional/south{ + pixel_x = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mKO" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"mKW" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"mLe" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench/right{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mLn" = ( +/turf/open/floor/iron/dark, +/area/station/service/bar) +"kra" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"mLr" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mLA" = ( -/obj/structure/railing{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"krc" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"krg" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 +/obj/machinery/camera/directional/north{ + c_tag = "Morgue Entrance"; + name = "medical camera"; + network = list("ss13","medical") }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mLG" = ( -/obj/structure/railing{ - dir = 5 +/obj/machinery/firealarm/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/siding/white{ + dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"mLH" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"mLN" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"mLO" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mMc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"kri" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"mMe" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 4 +/obj/structure/sign/warning/test_chamber/directional/west, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"mMp" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/armory) -"mMC" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"krk" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Prisoner Locker" + }, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"krr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"mMH" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"mMN" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mMO" = ( -/obj/structure/railing{ +/area/station/maintenance/disposal/incinerator) +"krv" = ( +/obj/machinery/porta_turret/ai{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/box/red, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"mMS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"mMT" = ( -/turf/closed/wall, -/area/station/service/kitchen/coldroom) -"mMZ" = ( +/area/station/ai/satellite/chamber) +"krw" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Art Cabinet" + }, +/obj/machinery/door/firedoor, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"mNd" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ +/area/station/commons/storage/art) +"krM" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/structure/table/glass, +/obj/structure/bedsheetbin, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"krN" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"krY" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/science/genetics) -"mNl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/commons/locker) -"mNo" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/box/gloves{ - pixel_y = 10 +/area/station/maintenance/solars/port/aft) +"ksg" = ( +/obj/structure/table, +/obj/item/pipe_dispenser{ + pixel_x = 3; + pixel_y = 7 }, -/obj/item/storage/box/masks{ - pixel_x = -6; - pixel_y = 2 +/obj/item/pipe_dispenser, +/obj/structure/cable, +/obj/machinery/air_sensor{ + chamber_id = "ordnancegas2" }, -/obj/item/storage/box/bodybags{ - pixel_x = 6; - pixel_y = 2 +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"ksp" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"mNF" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"mNQ" = ( -/obj/effect/spawner/surgery_tray/full/deployed, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airalarm/surgery, -/turf/open/floor/iron/white/textured, -/area/station/medical/surgery/theatre) -"mNZ" = ( -/turf/closed/mineral/random/stationside/asteroid/porus, -/area/station/asteroid) -"mOb" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "External Gas to Loop" }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"mOc" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" +/area/station/engineering/supermatter/room) +"ksr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Port Hallway Chemistry Desk"; + name = "port camera" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"ksJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/cargo/miningdock) +"ksM" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/security/lockers) +"ksN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine, +/area/station/science/auxlab) +"ktc" = ( +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ktu" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) -"mOo" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"mOC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"mOI" = ( -/obj/machinery/button/door/directional/south{ - id = "warehouse" - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/spawner/directional/south, -/obj/machinery/conveyor{ - dir = 1; - id = "QMLoad" - }, -/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/cargo/storage) -"mOY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 9 - }, +/area/station/security/brig) +"ktA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"kua" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mPk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/iron, -/area/station/engineering/main) -"mPv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/olive, -/turf/open/space/basic, -/area/space/nearstation) -"mPH" = ( -/obj/structure/closet/secure_closet/miner, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/light/directional/north, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"mPN" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/chair/office, -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/hallway/primary/starboard) +"kuc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/station/science/auxlab) +"kuf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"mPW" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "incstorage"; - name = "Incinerator Storage Shutters" +/area/station/engineering/atmos) +"kuk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"mPX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"mQk" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mQo" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/warden) -"mQy" = ( -/turf/open/floor/iron/chapel{ +/area/station/maintenance/aft) +"kun" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/service/chapel) -"mQE" = ( +/obj/machinery/griddle, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"kut" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/vault{ + name = "Vault" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/access/all/supply/vault, +/turf/open/floor/iron/dark, +/area/station/command/vault) +"kuK" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/tank/internals/oxygen, +/obj/item/pickaxe, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"kuL" = ( +/obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, -/area/station/ai/satellite/uppernorth) -"mQM" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_half, -/area/station/science/xenobiology) -"mQN" = ( -/obj/structure/urinal/directional/north, -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"mQP" = ( -/obj/structure/lattice, -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/valve/on/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"mQZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, +/area/station/maintenance/port/aft) +"kvl" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/evidence) +"kvo" = ( /obj/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"mRd" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm/directional/west, +/obj/item/ai_module/reset{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/ai_module/supplied/freeform, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"kvJ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/sign/warning/fire/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"kvL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/piratepad_control/civilian{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark/textured, +/area/station/cargo/sorting) +"kvM" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"kvU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"mRi" = ( -/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"kwe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/button/door/directional/west{ + id = "gatewayshutters"; + name = "Gateway Shutters"; + req_access = list("command") + }, +/obj/machinery/door/poddoor/shutters/window{ + id = "gatewayshutters"; + name = "Gateway Chamber Shutters" + }, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"kwl" = ( +/obj/machinery/netpod, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"kwm" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron, +/area/station/service/chapel/dock) +"kwx" = ( +/obj/structure/sign/xenobio_guide, +/turf/closed/wall/rust, +/area/station/science/xenobiology) +"kwK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/glowstick, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kwM" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"mRu" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - dir = 8; - id = "atmoshfr" +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"kwV" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/engineering/atmospherics_engine) -"mRA" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/station/commons/lounge) -"mRE" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"mRI" = ( -/obj/effect/mob_spawn/corpse/human/clown, -/turf/open/misc/asteroid, -/area/station/asteroid) -"mSe" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 10 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 }, -/obj/structure/railing/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"mSf" = ( -/obj/machinery/mass_driver{ - dir = 1; - id = "captaindriver"; - power = 12 - }, -/obj/effect/turf_decal/stripes/end, -/obj/machinery/light/small/directional/south, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"mSm" = ( -/obj/structure/table/wood, -/obj/item/clothing/head/fedora, -/turf/open/floor/wood, -/area/station/commons/lounge) -"mSr" = ( -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"kxf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"mSK" = ( -/turf/open/floor/iron/white, -/area/station/commons/fitness/recreation) -"mSN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/trimline/blue/end{ dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"mSY" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") +/area/station/service/hydroponics) +"kxr" = ( +/obj/structure/flora/bush/jungle/c/style_2, +/obj/structure/flora/bush/ferny, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"kxu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/science/explab) -"mTg" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/storage) +"kxG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/medical) +"kxH" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/multitool, /obj/effect/turf_decal/stripes/corner{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"mTs" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"mTw" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/button/door/directional/north{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Toggle"; + pixel_x = -24; + req_access = list("command") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"mTP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"mTS" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"mTV" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"mUg" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"mUh" = ( -/mob/living/basic/deer, -/obj/structure/flora/bush/sparsegrass/style_3, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"mUi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"mUp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/dark, +/area/station/command/eva) +"kxS" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mUs" = ( -/turf/open/floor/iron/white, -/area/station/medical/storage) -"mUz" = ( -/obj/structure/table, -/obj/machinery/door/window/left/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") +/area/station/hallway/primary/central/fore) +"kxT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"kxU" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 +/obj/item/radio/intercom/directional/north, +/obj/structure/sign/departments/medbay/alt/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"kyj" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 1 }, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/the_big_gas_giant_truth/directional/west, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"kyR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/fire{ - pixel_x = -3; - pixel_y = -3 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"kyT" = ( +/obj/machinery/vending/wardrobe/engi_wardrobe, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering Lockers"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"mUA" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"kyU" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/shieldgen, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"kzh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/chair{ +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kzl" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"kzr" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"mUB" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/book/manual/wiki/medicine, -/obj/item/tgui_book/manual/dsm{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 7 +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 }, -/obj/item/clothing/neck/stethoscope{ - pixel_y = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"kzz" = ( +/obj/machinery/light/directional/north, +/obj/structure/chair/stool/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"kzG" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"mUF" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"kzK" = ( +/obj/structure/chair/office/light{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"mUP" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/chair/sofa/bench{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"mUQ" = ( -/turf/closed/wall/rock, -/area/station/asteroid) -"mUU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"mUW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"mVf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"kzP" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"kzT" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"mVi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"mVU" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mVX" = ( -/obj/machinery/door/airlock/mining{ - name = "Drone Bay" +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"kAb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kAj" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/warning/vacuum/external/directional/east{ + pixel_y = -32 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/cargo/drone_bay) -"mWb" = ( -/obj/effect/turf_decal/siding/wood, +/area/station/maintenance/starboard) +"kAt" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"mWe" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "Supply Dock Loading Door" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" +/obj/machinery/door/airlock/command{ + name = "Head of Security's Office" }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/hos, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"kAR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"mWf" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden) -"mWh" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"kBd" = ( +/obj/machinery/door/airlock/maintenance{ + name = "E.V.A. Maintenance" }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mWB" = ( -/obj/machinery/requests_console/auto_name/directional/south, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"mWF" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"kBs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"mWJ" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical, -/obj/item/clothing/gloves/color/fyellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"mWS" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/asteroid) -"mWX" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/service/bar) -"mXj" = ( -/obj/machinery/door/poddoor/shutters{ - id = "warehouse"; - name = "Warehouse Shutters" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/warehouse) -"mXp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"mXr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"mXE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"mXF" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/cable_coil{ - amount = 1 +/area/station/hallway/primary/aft) +"kBz" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber" }, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"mXJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"kBF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"mXK" = ( -/obj/item/clothing/mask/gas/clown_hat, -/obj/effect/decal/remains/human, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"mXM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/medical/central) -"mXV" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/firealarm/directional/east, -/obj/item/radio{ - pixel_x = -12 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/recharger, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"mXY" = ( -/obj/structure/railing{ - dir = 8 +/area/station/security/office) +"kBP" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Emergency Research Blast Door" }, -/turf/open/floor/iron/stairs/left, -/area/station/command/corporate_showroom) -"mYd" = ( -/obj/structure/railing{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"kBS" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"mYs" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Gateway Chamber" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/command/gateway, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/gateway) -"mYD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/effect/turf_decal/stripes, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mYE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"mYK" = ( -/obj/machinery/telecomms/server/presets/service, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"mYN" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, +/area/station/science/auxlab) +"kBU" = ( +/obj/machinery/light_switch/directional/south, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"kCa" = ( /obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail{ + name = "hydroponics sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"kCd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"kCk" = ( +/turf/closed/wall/rust, +/area/station/maintenance/disposal/incinerator) +"kCm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"kCK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"mYU" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"kCZ" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/iv_drip, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"kDe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"kDg" = ( +/obj/machinery/computer/apc_control, +/obj/effect/turf_decal/bot, /obj/machinery/requests_console/directional/west{ - department = "Hydroponics"; - name = "Hydroponics Requests Console" + department = "Chief Engineer's Desk"; + name = "Chief Engineer's Requests Console" }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/button/door/directional/north{ + id = "ceprivate"; + name = "Privacy Shutters Toggle"; + pixel_x = -6; + req_access = list("ce") }, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/machinery/button/door/directional/north{ + id = "Secure Storage"; + name = "Secure Storage Toggle"; + pixel_x = 6; + req_access = list("engine_equip") }, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"kDw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"kDy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"mZc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"kDC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"mZn" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - name = "server vent" +/area/station/service/janitor) +"kDG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/dark/telecomms, -/area/station/science/server) -"mZr" = ( -/obj/structure/table/wood, -/obj/item/paper_bin/carbon{ - pixel_x = 6 +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"kDR" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/engineering/storage/tech) +"kEm" = ( +/obj/item/kirbyplants/random, +/obj/structure/sign/poster/contraband/self_ai_liberation/directional/west, +/turf/open/floor/circuit, +/area/station/ai/upload/chamber) +"kEp" = ( +/obj/structure/flora/grass/jungle/a/style_random{ + icon_state = "grassb2" }, -/obj/item/folder/white{ - pixel_x = -7; - pixel_y = -3 +/obj/structure/flora/bush/pale/style_random{ + icon_state = "brflowers_3" }, -/obj/item/pen{ - pixel_x = 6 +/obj/structure/flora/bush/ferny, +/turf/open/misc/asteroid, +/area/space/nearstation) +"kEz" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/obj/machinery/button/door/directional/east{ - id = "psychshutter"; - name = "privacy shutter control" +/area/station/hallway/primary/fore) +"kEC" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ + dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"mZs" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/misc/asteroid, -/area/station/asteroid) -"mZA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 10 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"kEQ" = ( +/obj/effect/turf_decal/bot, +/obj/structure/tank_dispenser, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"mZJ" = ( -/obj/structure/lattice, -/obj/structure/disposaloutlet, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"kES" = ( +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + id_tag = "justicedoor_2"; + name = "Justice Chamber" }, -/turf/open/space/openspace, -/area/space/nearstation) -"mZK" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Prison Wing" +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/button/door/directional/north{ + id = "justicedoor_2"; + name = "Justice Door Lock"; + normaldoorcontrol = 1; + req_access = list("armory"); + silicon_access_disabled = 1; + specialfunctions = 4 }, /obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"kFl" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/security/warden) -"mZL" = ( -/obj/effect/spawner/random/structure/chair_flipped, +/area/station/hallway/primary/central) +"kFo" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"mZY" = ( -/obj/machinery/piratepad/civilian, -/obj/effect/turf_decal/bot_white, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"naj" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/area/station/cargo/sorting) +"kFs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/white, -/area/station/science/explab) -"nal" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 5 +/obj/machinery/light/directional/east, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"kFw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"kFx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"kFB" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kFG" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"kFN" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"nan" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/railing/corner, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"kGc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"nas" = ( -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"nat" = ( +/obj/effect/landmark/event_spawn, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"nav" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 - }, +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/pumproom) -"naF" = ( /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"naO" = ( -/obj/structure/chair/pew/right{ - dir = 4 +/area/station/engineering/lobby) +"kGj" = ( +/obj/machinery/door/airlock/engineering{ + name = "Port Bow Solar Access" }, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"naU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 8; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"naX" = ( -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/dark, +/area/station/maintenance/solars/port/fore) +"kGs" = ( +/obj/machinery/door/morgue{ + name = "Religious Equipment"; + req_access = list("chapel_office") + }, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"kGD" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"naZ" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/gateway) +"kHh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"nbf" = ( /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"nbj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark/side, -/area/station/command/emergency_closet) -"nbk" = ( -/obj/structure/railing/corner/end/flip{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"kHq" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/computer/atmos_control/air_tank{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/project) -"nbm" = ( -/obj/effect/landmark/start/captain, -/obj/structure/cable, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"nbu" = ( -/obj/structure/grille, -/turf/closed/wall/r_wall, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, /area/station/engineering/atmos) -"nbz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"nbG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"kHr" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"kHs" = ( +/obj/machinery/modular_computer/preset/cargochat/engineering{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nbS" = ( -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"ncc" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/north, -/mob/living/basic/butterfly, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"nck" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ +/obj/machinery/light/directional/east, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chemsat" - }, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"ncm" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"ncv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"ncR" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Monkey Pen" +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) +"kHw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"ncV" = ( -/obj/machinery/door/airlock/public{ - name = "Restroom" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"kHG" = ( +/obj/machinery/smartfridge/chemistry/preloaded, /turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"ncX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/medical/pharmacy) +"kHI" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"kHK" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"kHQ" = ( +/obj/structure/sign/poster/official/wtf_is_co2, +/turf/closed/wall, +/area/station/engineering/atmos) +"kHR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/wood, -/area/station/commons/lounge) -"ncZ" = ( +/area/station/service/library) +"kHX" = ( +/obj/machinery/door/poddoor{ + id = "trash"; + name = "Disposal Bay Door" + }, +/obj/structure/fans/tiny, /obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"kIf" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/service_all, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/spawner/random/techstorage/arcade_boards, +/obj/effect/spawner/random/techstorage/arcade_boards, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"kIz" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/red, +/obj/item/pen, +/obj/machinery/door/window/left/directional/south{ + name = "Security Desk"; + req_access = list("security") }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"ndb" = ( -/obj/machinery/vending/security, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/light_switch/directional/east, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"kIE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"ndo" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/south, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"ndr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/area/station/maintenance/starboard) +"kIY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/prison/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"ndu" = ( -/obj/structure/grille, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"ndv" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/east, -/turf/open/floor/glass/reinforced, -/area/station/security/checkpoint/science) -"ndB" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/maintenance/starboard) +"kJf" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/turf/closed/wall, -/area/station/service/bar) -"ndE" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ndI" = ( -/obj/structure/table, -/obj/machinery/airalarm/directional/east, -/obj/structure/sign/poster/contraband/clown/directional/south, -/obj/item/storage/toolbox/artistic{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/item/storage/toolbox/crafter{ - pixel_x = 2; - pixel_y = 1 - }, -/turf/open/floor/iron/textured, -/area/station/commons/storage/art) -"ndR" = ( -/obj/machinery/disposal/bin, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/button/door/directional/west{ - id = "pharmacy_shutters"; - name = "Privacy Control"; - pixel_y = -6 - }, +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light_switch/directional/west{ - pixel_y = 6 +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/hallway) +"kJq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Brig" }, -/turf/open/floor/iron/white/smooth_corner, -/area/station/medical/pharmacy) -"ndS" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"kJs" = ( +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"nea" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/maintenance/port/aft) +"kJu" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/obj/machinery/digital_clock/directional/west, -/obj/machinery/suit_storage_unit/medical, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"neb" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/pipe_dispenser{ - pixel_x = 3; - pixel_y = 7 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 }, -/obj/item/pipe_dispenser, -/obj/machinery/power/apc/auto_name/directional/south{ - areastring = "/area/station/science/ordnance/burnchamber" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"nee" = ( -/turf/open/floor/iron/dark/corner{ - dir = 4 +/area/station/service/chapel) +"kJx" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/area/station/command/corporate_dock) -"nek" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"nem" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/port/greater) +"kJH" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"kKa" = ( +/obj/structure/table/wood/fancy/blue, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/machinery/holopad, -/turf/open/floor/iron/white/textured_half{ - dir = 1 +/obj/item/reagent_containers/cup/glass/trophy/bronze_cup, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"kKm" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" }, -/area/station/science/xenobiology) -"nen" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/item/bot_assembly/firebot, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"nep" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) -"nes" = ( -/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/navigate_destination/library, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"net" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/security/interrogation) -"neu" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 9 +/area/station/service/library) +"kKw" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "xeno_blastdoor"; + name = "Xenobiology Containment Blast Door" }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"nev" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/hallway/secondary/entry) -"nez" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Storage Room" +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/iron/dark, +/area/station/science) +"kLa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"neT" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating/reinforced/airless, -/area/station/tcommsat/server) -"nfa" = ( +/area/station/maintenance/department/crew_quarters/bar) +"kLm" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"kLo" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"nfe" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Auxiliary Tool Storage" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, /turf/open/floor/iron, -/area/station/commons/storage/tools) -"nfj" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/decoration/ornament{ - pixel_x = 5 - }, -/obj/structure/table/wood, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -8; - pixel_y = 4 +/area/station/hallway/primary/port) +"kLx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"kLy" = ( +/obj/structure/flora/bush/pale/style_random{ + icon_state = "fernybush_3" }, +/turf/open/misc/asteroid, +/area/space/nearstation) +"kLR" = ( +/obj/machinery/telecomms/server/presets/medical, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"kLS" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/glowstick/on, +/obj/effect/spawner/random/gizmo, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"nfn" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/maintenance/starboard/fore) +"kLW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"kMe" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/solars/port/aft) +"kMi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"kMs" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/poster/random/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/table/wood/fancy/orange, -/obj/item/paper_bin/carbon{ - pixel_x = 5 - }, -/obj/item/paper_bin/carbon{ - pixel_x = 5; - pixel_y = 4 +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/obj/item/reagent_containers/cup/glass/bottle/whiskey{ - pixel_x = -7; - pixel_y = 4 +/area/station/hallway/primary/fore) +"kMt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"kMu" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"nfx" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/door/airlock/research{ + name = "Ordnance Lab" }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 +/obj/machinery/door/firedoor/heavy, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance_storage, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"kMw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, -/area/station/service/hydroponics) -"nfy" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/area/station/construction/mining/aux_base) +"kMx" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/machinery/computer/camera_advanced/base_construction/aux{ +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"kMM" = ( +/obj/machinery/vending/cart{ + req_access = list("hop") + }, +/obj/structure/noticeboard/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Head of Personnel's Office"; + name = "command camera" + }, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"kMP" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"nfF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"nfP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"nfS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/broken/directional/west, -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, -/area/station/cargo/warehouse) -"ngd" = ( -/obj/structure/cable, +/area/station/maintenance/starboard) +"kNe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ngh" = ( -/obj/effect/spawner/random/structure/closet_maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"ngp" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 +/area/station/security/execution/transfer) +"kNf" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/security/execution/transfer) +"kNw" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"kNz" = ( +/obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"ngz" = ( -/obj/structure/holosign/barrier/atmos, -/turf/open/misc/asteroid, -/area/station/hallway/primary/central) -"ngK" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 10 + dir = 4 }, -/area/station/maintenance/radshelter/medical) -"nhk" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/space_heater, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nhm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/area/station/maintenance/aft) +"kNG" = ( +/obj/structure/sign/poster/official/help_others, +/turf/closed/wall, +/area/station/command/bridge) +"kNJ" = ( +/obj/structure/table/wood, +/obj/item/folder{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"nho" = ( -/obj/structure/sign/warning/directional/south, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/obj/item/storage/dice{ + pixel_x = -4 }, -/area/station/asteroid) -"nhC" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"nid" = ( -/obj/machinery/vending/medical, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"nii" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/pen/red{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light_switch/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/commons/lounge) -"niv" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/maintenance/starboard/fore) +"kNK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"niB" = ( -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"niI" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"niQ" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/computer/cargo, /turf/open/floor/iron, -/area/station/cargo/storage) -"njr" = ( -/obj/structure/closet/crate/freezer, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/grown/potato, -/obj/item/food/grown/potato, -/obj/item/food/grown/onion, -/obj/item/food/grown/onion, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/newscaster/directional/south, -/obj/item/radio/intercom/prison/directional/east, -/obj/item/reagent_containers/condiment/rice, -/obj/item/reagent_containers/condiment/flour, -/obj/item/storage/fancy/egg_box, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"njL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/hallway/primary/central) +"kNO" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"njM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"njX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"njZ" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/closet/emcloset, +/obj/structure/sign/warning/secure_area/directional/south{ + name = "EMERGENCY STORAGE" }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/table/wood/fancy/blue, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/meeting_room) -"nkb" = ( -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"kNP" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/mask/breath, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kNS" = ( /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"nkc" = ( -/obj/structure/railing/corner{ - dir = 8 - }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"kNY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/theater) -"nkd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nke" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/iron, -/area/station/maintenance/department/science) -"nkf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-maint-passthrough" }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"nki" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"kOb" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"kOt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"nkA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"kOw" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall, +/area/station/science/ordnance) +"kOx" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, /area/station/engineering/atmos) -"nkM" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"nli" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnanceburn" +"kOJ" = ( +/obj/machinery/teleport/hub, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"nlu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, +/area/station/command/teleporter) +"kOX" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nlz" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"kPd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"kPf" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"nlI" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/turf_decal/trimline/red/filled/line{ +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"kPk" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"nlQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/port/lesser) +"kPo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/turf/open/floor/iron, -/area/station/command/bridge) -"nlZ" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/trash/mopbucket, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"nmc" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"nmq" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"nmD" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"nmG" = ( -/obj/effect/turf_decal/trimline/blue/filled/end, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"kPt" = ( +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"nmN" = ( /obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/purple, -/turf/open/space/basic, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid, /area/space/nearstation) -"nmX" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security) -"nne" = ( +"kPv" = ( +/obj/effect/landmark/event_spawn, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"kPE" = ( +/obj/effect/turf_decal/tile/red{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"nnj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nnv" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 8 - }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 4 +/area/station/hallway/secondary/entry) +"kPI" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/turf_decal/delivery, +/obj/item/tank/internals/oxygen/yellow, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"nny" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"kPK" = ( +/obj/machinery/button/ignition/incinerator/atmos{ + pixel_x = 8; + pixel_y = 36 }, -/turf/open/floor/iron, -/area/station/security) -"nnz" = ( /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics Project Room" +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"kPO" = ( +/turf/closed/wall/rust, +/area/station/commons/storage/primary) +"kPQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"nnF" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"kPS" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/newscaster/directional/south, +/obj/machinery/recharger, +/obj/machinery/camera/directional/south{ + c_tag = "Engineering Security Post"; + name = "engineering camera" }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"nnL" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, +/area/station/security/checkpoint/engineering) +"kQd" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nnM" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/vending/cola/red, -/obj/effect/mapping_helpers/broken_machine, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"nnT" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Four"; - space_dir = 2 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/landmark/navigate_destination/dockescpod4, +/obj/effect/turf_decal/stripes/end, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"noc" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/engineering/supermatter/room) +"kQf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, /turf/open/floor/plating, -/area/station/ai/satellite/teleporter) -"nod" = ( -/obj/machinery/button/elevator/directional/east{ - id = "cargo" +/area/station/maintenance/port/greater) +"kQH" = ( +/obj/machinery/skill_station, +/obj/effect/turf_decal/box, +/obj/machinery/newscaster/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Art Storage"; + name = "library camera" }, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "cargo" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/commons/storage/art) +"kQI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"noh" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"kQO" = ( +/obj/structure/chair{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"nor" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Security's Office" +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"kQQ" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/hos, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/door/airlock/hatch{ + name = "Satellite Antechamber" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "ai-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/structure/cable/layer3, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/interior) +"kQT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"kRd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"noy" = ( -/obj/structure/bed, -/obj/item/bedsheet, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/security/brig) -"noF" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, /area/station/command/gateway) -"noO" = ( -/obj/item/target, -/obj/item/target, -/obj/item/target/alien, -/obj/item/target/alien, -/obj/item/target/clown, -/obj/item/target/clown, -/obj/item/target/syndicate, -/obj/item/target/syndicate, -/obj/structure/closet/crate/secure{ - desc = "A secure crate containing various materials for building a customised test-site."; - name = "Firing Range Gear Crate"; - req_access = list("science") +"kRu" = ( +/obj/effect/turf_decal/siding/blue, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"npg" = ( -/obj/structure/table/wood, -/obj/item/toy/plush/carpplushie{ - greyscale_colors = "#ff5050#000000"; - name = "\improper Nanotrasen wildlife department space carp plushie" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"kRD" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"npn" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"kRU" = ( +/obj/structure/table, +/obj/item/pai_card, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"kSn" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/sign/warning/directional/west, +/obj/structure/rack, +/obj/effect/spawner/random/armory/dragnet, +/obj/effect/spawner/random/armory/dragnet, /turf/open/floor/iron/dark, /area/station/security/armory) -"npw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"kSp" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage"; + name = "trash belt" + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"npH" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/recycler{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"kSs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump/off{ + dir = 4; + name = "O2 To Pure" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"kSx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"kSR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"npL" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/spawner/random/vending/colavend, -/obj/structure/sign/poster/official/no_erp/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"nqg" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"kTa" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"nqi" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"nql" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"kTe" = ( +/obj/structure/table/glass, +/obj/item/storage/medkit/regular, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/syringe, +/obj/machinery/camera/directional/east{ + c_tag = "Security Infirmary" }, -/obj/structure/chair{ +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"kTk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/interrogation) -"nqu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/north, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/iron/grimy, -/area/station/maintenance/port/greater) -"nqD" = ( -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"nqI" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/inspector{ - pixel_x = -5; - pixel_y = 12 +/area/station/hallway/primary/starboard) +"kTq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/eva) +"kTD" = ( +/obj/machinery/light/directional/south, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/inspector{ - pixel_x = 5 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/office) -"nqK" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ - dir = 8 +/area/station/cargo/drone_bay) +"kTJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"nrp" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Fore Primary Hallway" +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"nrL" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"nrW" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/area/station/hallway/primary/port) +"kTK" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/port/lesser) +"kUd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/grass, -/area/station/medical/virology) -"nsi" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"kUh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"nsm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"nso" = ( /obj/effect/landmark/event_spawn, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"kUp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nsu" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nsD" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"nsI" = ( /obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"kUB" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/analyzer, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"kUJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"kUN" = ( +/obj/structure/sign/departments/cargo/directional/east, +/obj/effect/turf_decal/delivery, +/obj/machinery/piratepad/civilian, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark/textured, +/area/station/cargo/sorting) +"kUR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"nsY" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kUS" = ( +/turf/closed/wall, +/area/station/engineering/storage_shared) +"kUV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/iron/dark, +/area/station/security/eva) +"kUX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"kUZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"kVd" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"ntd" = ( -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"ntQ" = ( -/obj/structure/sign/warning/docking, -/turf/closed/wall, -/area/station/hallway/secondary/entry) -"ntS" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"nun" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"nup" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating/dark, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/chapel, /area/station/service/chapel) -"nur" = ( -/obj/structure/chair/wood{ - dir = 1 +"kVk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/spawner/random/structure/crate, +/mob/living/basic/chicken{ + desc = "A timeless classic."; + name = "Kentucky" }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"nuC" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"kVv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"nuM" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Courtroom" +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Engineering"; + location = "EVA"; + name = "eva navigation beacon" }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"nuR" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"kVD" = ( +/obj/machinery/exodrone_launcher, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/turf_decal/trimline/yellow/mid_joiner, +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ dir = 1 }, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"nva" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ + dir = 8 }, -/obj/machinery/button/door/directional/south{ - id = "Secure Storage"; - name = "Secure Storage Control" +/obj/effect/turf_decal/trimline/yellow/mid_joiner{ + dir = 4 }, -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nvd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 +/obj/item/exodrone, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"kVN" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/space/basic, +/area/space/nearstation) +"kVY" = ( +/obj/machinery/door/airlock/command{ + name = "Gateway" }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/command/gateway, +/obj/effect/landmark/navigate_destination/gateway, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"kWe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"nvg" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/siding/purple{ + dir = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"nvp" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light_switch/directional/north, -/obj/machinery/button/door/directional/west{ - id = "main_surgery"; - name = "Privacy Shutters Control" +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"nvu" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"nvw" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes/box, -/obj/item/assembly/mousetrap/armed, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"nvC" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"kWm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"nvD" = ( -/obj/structure/window/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"nvK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/command) -"nvQ" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/north, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"nvR" = ( /obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"nwc" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"nwp" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 +/obj/item/kirbyplants/organic/plant21, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/bed/medical/emergency, -/obj/machinery/firealarm/directional/west, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"nwr" = ( -/turf/closed/wall/r_wall, -/area/station/commons/fitness/recreation) -"nwv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P7-Central-Primary"; - location = "P6-Central-Primary" +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"nxc" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/area/station/hallway/primary/starboard) +"kWz" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Disposal Access" }, -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nxv" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/effect/mapping_helpers/airlock/access/any/service/janitor, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/navigate_destination/disposals, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"kWA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"kWK" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/records/medical/laptop, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"kWW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Security Mech Bay" }, -/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/navigate_destination, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/mechbay) +"kXp" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/computer/security/qm, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/qm) +"kXw" = ( +/obj/effect/turf_decal/siding/wood, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"kXJ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xeno1"; + name = "Creature Cell 1" }, -/area/station/engineering/atmos/mix) -"nxG" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/door/window/left/directional/west{ + name = "Creature Cell"; + req_access = list("xenobiology") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"kXN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nxY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/glass, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"nyq" = ( -/obj/item/flashlight/flare/candle/infinite{ - pixel_x = 16; - pixel_y = -16 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"nyz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, /turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"nyA" = ( -/obj/structure/chair/sofa/bench/left{ +/area/station/command/teleporter) +"kXS" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nyE" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"kXV" = ( +/obj/machinery/door/airlock/grunge, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"kYr" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"nyQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) +"kYy" = ( +/obj/machinery/door/airlock/external{ + name = "Science Escape Pod"; + space_dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"nyW" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"nzb" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/command/heads_quarters/cmo) -"nzf" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"nzi" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, +/area/station/maintenance/starboard) +"kYB" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/obj/item/tank/internals/emergency_oxygen, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"nzk" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/central/greater) -"nzw" = ( -/obj/effect/spawner/random/entertainment/slot_machine, -/obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"nzC" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/maintenance/starboard) +"kYE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"kYG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"nzR" = ( -/obj/structure/sign/warning/radiation/rad_area/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/main) -"nzT" = ( -/obj/effect/landmark/start/ai, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/item/radio/intercom/directional/west{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_y = -8 - }, -/obj/item/radio/intercom/directional/west{ - freerange = 1; - frequency = 1447; - listening = 0; - pixel_y = 6 - }, -/obj/machinery/button/door/directional/south{ - id = "AI Core shutters"; - name = "AI Core Shutters Control"; - pixel_x = -24; - req_access = list("ai_upload") - }, -/obj/machinery/camera/directional/north{ - c_tag = "AI Chamber - Core"; - network = list("aicore") - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/apc/cell_5k, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/ai/satellite/chamber) -"nAb" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/department/cargo) -"nAe" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"nAi" = ( -/obj/structure/cable, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/custom_shuttle, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"nAm" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/service/bar) -"nAr" = ( +/area/station/command/bridge) +"kYI" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"nAs" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 4 +/obj/structure/chair/office{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"nAu" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"nAG" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"kYP" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 14; + pixel_y = 13 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/locker) -"nAR" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/duct, +/turf/open/floor/plating/rust, +/area/station/security/prison/shower) +"kYR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/iron, -/area/station/security) -"nBa" = ( -/obj/structure/chair, -/obj/item/restraints/handcuffs, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/obj/machinery/button/door/directional/north{ + id = "xeno3"; + name = "Creature Cell 3 Toggle"; + pixel_x = 24; + req_access = list("xenobiology") }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"nBA" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"kYU" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nBV" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/structure/chair/sofa/bench/tram/solo, -/obj/machinery/light/dim/directional/north, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/access/any/service/janitor, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"kZq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"nCb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/library) -"nCc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"nCe" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"nCf" = ( -/obj/structure/railing/corner/end{ - dir = 4 +/area/station/cargo/storage) +"kZw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"nCm" = ( -/turf/open/openspace/xenobio, -/area/station/science/xenobiology) -"nCo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"kZx" = ( +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Kitchen Service Door" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/green/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"nCq" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ +/area/station/service/kitchen) +"kZz" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nCs" = ( -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"nCt" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nCu" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"nCH" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"nCS" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/space/openspace, -/area/space/nearstation) -"nDC" = ( -/obj/machinery/holopad, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"nDE" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security) -"nDG" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench, -/obj/effect/landmark/start/prisoner, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"nDN" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1, -/turf/open/floor/iron/textured, +/turf/open/floor/iron, /area/station/engineering/atmos) -"nDR" = ( -/obj/structure/railing/corner, +"kZH" = ( +/obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/command/meeting_room) -"nDU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"nEk" = ( -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"nEw" = ( -/obj/structure/chair{ - dir = 8; - name = "Judge" - }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"nEx" = ( -/obj/machinery/hydroponics/soil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"nED" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 +/obj/machinery/camera/directional/west{ + c_tag = "Satellite Maintenance"; + name = "satellite camera"; + network = list("minisat") }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"nEY" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"kZI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"nFl" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 +/area/station/maintenance/port/greater) +"kZK" = ( +/obj/machinery/door/airlock/external{ + name = "Security Escape Pod"; + space_dir = 2 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nFI" = ( -/obj/effect/landmark/start/chief_medical_officer, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"nFS" = ( -/obj/structure/closet/wardrobe/white, -/obj/item/restraints/handcuffs/cable/zipties, -/obj/item/reagent_containers/blood/random, -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/broken_flooring/pile{ +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"kZP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/effect/spawner/random/bedsheet, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"nFT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "detective_shutters"; - name = "Detective's Office Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/detectives_office) -"nGd" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/security/office) -"nGp" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Atmospherics Tank - Carbon Dioxide" - }, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"nGv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"nGO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, +/area/station/security/brig) +"kZU" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron, -/area/station/security/prison) -"nGV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk/multiz{ +/area/station/engineering/atmos/storage/gas) +"kZX" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/crossing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/space/nearstation) +"kZY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"nHj" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"nHm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nHr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/area/station/engineering/supermatter/room) +"lac" = ( +/turf/closed/wall, +/area/station/command/gateway) +"lae" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"nHs" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"laf" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"lam" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/west, +/obj/structure/disposalpipe/trunk, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"laB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"nHw" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/structure/cable, +/obj/effect/turf_decal/plaque{ + icon_state = "L2" }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"laE" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/cup/bucket, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"laH" = ( +/obj/structure/table/wood/fancy, +/obj/item/storage/fancy/candle_box, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"lbj" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"lbq" = ( +/obj/item/radio/intercom/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"nHD" = ( -/obj/effect/turf_decal/bot{ +/obj/item/flatpack/flatpacker, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"lby" = ( +/turf/closed/wall, +/area/station/science/robotics/mechbay) +"lbD" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"lbJ" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"lbO" = ( +/turf/closed/wall, +/area/station/service/library) +"lcg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal{ + name = "Commissary Locker" + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"lch" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/item/radio/intercom/directional/west, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, -/area/station/engineering/storage) -"nHK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"nHV" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"nHZ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/area/station/commons/fitness/recreation) +"lck" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"lcn" = ( +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/engine) +"lcw" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"nIb" = ( -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"nIu" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/science/glass, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"nID" = ( +/area/station/hallway/primary/central) +"lcF" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"nIG" = ( -/turf/closed/wall, -/area/station/medical/medbay/lobby) -"nIJ" = ( +/obj/effect/turf_decal/bot, /obj/structure/rack, -/obj/effect/spawner/random/engineering/tool, -/obj/effect/spawner/random/engineering/tool, -/obj/effect/spawner/random/maintenance, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"nIK" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/item/storage/backpack/satchel/med, +/obj/item/assembly/health, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"lcK" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/directional/north{ + pixel_x = 8 + }, +/obj/machinery/door/window/brigdoor/right/directional/east{ + name = "Primary AI Core Access"; + req_access = list("ai_upload") + }, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"lcN" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/box, +/obj/structure/sign/poster/official/safety_internals/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"lcZ" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/electrical) +"lda" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 8 }, -/obj/effect/turf_decal/bot{ - dir = 1 +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"ldc" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"nIS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"nJs" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"lds" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/stack/rods, +/turf/open/floor/carpet/green, +/area/ruin/space/has_grav/abandoned_warehouse) +"lea" = ( +/obj/machinery/rnd/production/techfab/department/cargo, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"nJD" = ( +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"lep" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/computer/operating{ + name = "Forensics Operating Computer" + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"lev" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"nJF" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/east{ - name = "Robotics Desk"; - req_access = list("robotics") +/area/station/science/xenobiology) +"ley" = ( +/obj/machinery/telecomms/server/presets/science, +/obj/structure/cable, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"leB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -24 }, -/obj/structure/desk_bell, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "roboticsprivacy"; - name = "Robotics Shutters" +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"nJK" = ( -/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/science) +"leD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/obj/structure/grille/broken, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"nJL" = ( +/area/station/maintenance/port/greater) +"leF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/item/shard, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"nJQ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/area/station/maintenance/fore) +"leH" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/solars/port/fore) +"lfd" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"nKa" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"nKc" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/machinery/fax/heads/rd, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"lfl" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/briefcase, +/obj/item/taperecorder, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/button/door/directional/north{ - id = "aux_base_shutters"; - name = "Shutter Control" +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"lfu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"nKe" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"lfz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"lfE" = ( +/obj/machinery/power/turbine/core_rotor{ + mapping_id = "main_turbine" + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/medical{ - name = "Paramedic Dispatch" +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"lfQ" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/effect/turf_decal/delivery, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/crowbar, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/medical) +"lfU" = ( +/obj/machinery/teleport/station, +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"nKi" = ( -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nKk" = ( +/area/station/command/teleporter) +"lgb" = ( +/obj/effect/turf_decal/bot, /obj/structure/rack, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"nKn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "splatter1" +/obj/item/storage/backpack, +/obj/item/extinguisher{ + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"nKp" = ( -/turf/open/floor/glass/reinforced/plasma, -/area/station/engineering/supermatter/room) -"nKt" = ( -/obj/effect/spawner/random/decoration/showcase, -/obj/structure/sign/picture_frame/showroom/two{ - pixel_x = 8; - pixel_y = 32; - dir = 1 +/obj/item/extinguisher, +/obj/structure/sign/warning/no_smoking{ + pixel_x = -30 }, -/obj/structure/sign/picture_frame/showroom/one{ - pixel_x = -8; - pixel_y = 32; +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"lge" = ( +/obj/structure/railing/corner{ dir = 1 }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"lgh" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/fire/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lgu" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"nKx" = ( -/obj/machinery/light/dim/directional/south, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"nKA" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"lgv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, /turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"lgC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, /area/station/cargo/storage) -"nKV" = ( -/obj/structure/cable, -/obj/structure/closet/l3closet/scientist, -/obj/effect/turf_decal/stripes/line{ +"lgQ" = ( +/obj/structure/transit_tube/horizontal{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd","xeno") - }, +/obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"nLb" = ( -/obj/structure/closet/wardrobe/grey, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"lhf" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lhm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"lhv" = ( +/obj/machinery/shower/directional/east, +/obj/item/soap/nanotrasen, +/obj/structure/cable, +/turf/open/floor/plastic, +/area/station/security/prison/shower) +"lhx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"nLc" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/bureaucracy/stamp, -/obj/machinery/light_switch/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"nLd" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/area/station/hallway/secondary/entry) +"lhB" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/oven/range, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"nLg" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/area/station/service/kitchen) +"lhG" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"nLi" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"nLz" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/processing) -"nLD" = ( -/obj/machinery/computer/atmos_control/plasma_tank, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"lhJ" = ( +/obj/structure/table, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/item/restraints/handcuffs, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/area/station/engineering/atmos) -"nLF" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"nLT" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"nLW" = ( -/obj/structure/chair/office{ - name = "grimy chair" +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"lia" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/medical/paramedic) +"lie" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/vending/wardrobe/science_wardrobe, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"nMf" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/turf/open/floor/iron/dark, +/area/station/science/lab) +"lig" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/light/directional/south, -/turf/open/openspace, -/area/station/science/xenobiology) -"nMh" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"lix" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Prisoner Locker" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"liB" = ( +/turf/closed/wall, +/area/station/security/checkpoint/supply) +"liE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"nMj" = ( -/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"liK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, /obj/effect/mapping_helpers/broken_floor, -/mob/living/basic/goose/vomit, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"nMk" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port/fore) -"nMo" = ( -/obj/structure/transit_tube/curved/flipped{ +/area/station/maintenance/aft) +"ljb" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/red{ dir = 8 }, -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"nME" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"nMI" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/port/lesser) -"nMP" = ( -/obj/structure/sign/poster/random/directional/south, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"nMR" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/security/checkpoint/engineering) +"ljy" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nMT" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden) -"nMV" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, -/area/station/engineering/main) -"nMW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/landmark/event_spawn, +/area/station/security/courtroom) +"ljA" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"nMX" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nNn" = ( -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -9; - pixel_y = 8 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -9 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-maint-passthrough" }, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = 6; - pixel_y = 12 +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator Access" }, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 4; - pixel_y = 10 +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"lkl" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"lko" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/research) +"lkp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/item/stack/sheet/plasteel/twenty{ - pixel_x = 4; - pixel_y = 7 +/obj/effect/turf_decal/siding/red{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"nNo" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/closet/secure_closet/chemical, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"lkB" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"lkF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"nNv" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nNA" = ( -/obj/effect/turf_decal/bot, -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"nNK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"nNN" = ( -/obj/effect/turf_decal/stripes, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nNP" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"nOx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, /obj/effect/spawner/random/vending/colavend, -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"nOZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"nPf" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 +/area/station/hallway/primary/starboard) +"lkW" = ( +/obj/structure/sign/departments/engineering/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Starboard Hallway Rotunda"; + name = "starboard camera" }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"nPm" = ( -/obj/effect/turf_decal/tile/dark_blue, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/command/bridge) -"nPw" = ( -/obj/structure/water_source/puddle, -/obj/item/reagent_containers/cup/watering_can, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"nPQ" = ( -/obj/effect/turf_decal/siding/dark_blue{ +/area/station/hallway/primary/starboard) +"llh" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/rust, +/area/station/maintenance/port/lesser) +"llj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"llr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"nPV" = ( -/obj/effect/decal/cleanable/dirt/dust, +/area/station/maintenance/port/greater) +"llu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nPW" = ( -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nQm" = ( -/obj/machinery/camera/motion/directional/west{ - c_tag = "Secure - AI Upper External East"; - network = list("aicore") - }, -/turf/open/space/openspace, -/area/space/nearstation) -"nQs" = ( +/area/station/maintenance/aft) +"llI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, /obj/machinery/light/small/directional/north, -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"nQw" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/space/openspace, -/area/space/nearstation) -"nQy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/warm/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"nQQ" = ( -/obj/effect/spawner/random/decoration/statue{ - spawn_loot_chance = 50 - }, -/obj/structure/window/spawner/directional/west, -/obj/structure/sign/painting/library_secure{ - pixel_x = 32 - }, -/turf/open/floor/carpet/royalblue, -/area/station/service/library) -"nQT" = ( -/obj/item/flashlight/flare{ - icon_state = "flare-on"; - start_on = 1 - }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"nRj" = ( +/area/station/maintenance/port/lesser) +"llY" = ( +/turf/closed/wall/r_wall, +/area/station/medical/pharmacy) +"lmb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 8 }, -/turf/open/floor/iron/white/textured_corner, -/area/station/science/xenobiology) -"nRq" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"nRw" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"nRA" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"lme" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/structure/bed/maint, -/obj/effect/spawner/random/bedsheet/any, -/turf/open/floor/iron, -/area/station/service/janitor) -"nRZ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central) +"lmh" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 4"; + name = "Cell 4"; + req_access = list("security") }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/checker{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"lmi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/area/station/engineering/atmos/project) -"nSf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"nSn" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/siding/wood, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"nSC" = ( -/turf/closed/wall, -/area/station/security/prison/shower) -"nSH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"nSN" = ( -/mob/living/basic/parrot/poly, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/obj/effect/turf_decal/siding/red/corner{ + dir = 8 }, -/obj/item/paper/monitorkey, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"nSP" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 +/area/station/security/checkpoint/customs) +"lmk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"lmr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nTm" = ( -/obj/structure/chair/office{ - dir = 1 +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Prison Kitchen" }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/smooth_corner{ +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"lmA" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/area/station/medical/pharmacy) -"nTo" = ( -/obj/structure/rack, -/obj/effect/spawner/random/entertainment/plushie, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"nTq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/engineering, -/obj/item/pinpointer/material_sniffer, -/obj/effect/spawner/random/decoration/material, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"lmC" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nTA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"nTN" = ( -/obj/item/reagent_containers/cup/bottle/fake_gbs, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/asteroid) -"nTQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, +/area/station/engineering/supermatter/room) +"lmF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/main) -"nTT" = ( +/area/station/security/brig) +"lmO" = ( +/turf/closed/wall/rust, +/area/station/cargo/storage) +"lnc" = ( +/obj/structure/chair/office/light, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"lnm" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"nUb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"lny" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/upper) -"nUi" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/clipboard, -/obj/item/toy/figure/cmo, -/obj/item/clothing/neck/stethoscope, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"nUy" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/obj/item/emergency_bed, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"nUL" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/cable, +/obj/machinery/firealarm/directional/west, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"nUS" = ( +/area/station/hallway/primary/central/fore) +"lnD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"lnU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"nVa" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"nVj" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/security/processing) +"lox" = ( +/obj/effect/turf_decal/trimline/green/line{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"loI" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"loO" = ( +/obj/machinery/airlock_sensor/incinerator_ordmix{ + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"nVm" = ( -/obj/machinery/computer/camera_advanced/xenobio{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) +"lpf" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/obj/machinery/computer/cargo, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"lpp" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"lpt" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/heads_quarters/captain) +"lpH" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/storage/box/monkeycubes, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"nVp" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/item/multitool, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool{ + pixel_x = 4 }, -/obj/structure/cable, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"nVz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/item/reagent_containers/cup/beaker/large, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"lql" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"nVT" = ( -/turf/closed/wall, -/area/station/service/cafeteria) -"nWd" = ( -/obj/machinery/airalarm/directional/east, /obj/structure/table, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 10; - pixel_y = -1 +/obj/effect/decal/cleanable/dirt, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio" }, -/obj/item/storage/box/gloves{ - pixel_x = -5; - pixel_y = 9 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/item/storage/box/masks{ - pixel_x = -5; - pixel_y = -1 +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"lqn" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/security/brig) +"lqp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"nWu" = ( -/obj/machinery/camera/autoname/directional/north, +/obj/effect/decal/cleanable/blood/oil, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"nWx" = ( -/turf/closed/wall, -/area/station/service/chapel) -"nWC" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/effect/spawner/random/trash/soap, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/theater) -"nWG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"nXe" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/effect/spawner/random/maintenance, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"nXt" = ( -/obj/structure/flora/bush/large, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lqy" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/stalky/style_random, /turf/open/floor/grass, /area/station/service/hydroponics/garden) -"nXw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"nXF" = ( -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - pixel_y = 12; - start_on = 1 +"lqC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless, +/area/station/maintenance/disposal/incinerator) +"lqE" = ( +/obj/machinery/power/solar_control{ + dir = 8; + id = "forestarboard"; + name = "Starboard Bow Solar Control" }, -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"nXL" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/explab) -"nXO" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"lqM" = ( +/obj/structure/table, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"lqN" = ( /obj/structure/table/wood, -/obj/item/storage/toolbox/artistic{ - pixel_x = -1; - pixel_y = 7 +/obj/item/storage/box/evidence{ + pixel_y = 4 }, -/obj/item/storage/toolbox/crafter{ - pixel_x = 2; - pixel_y = 1 +/obj/item/taperecorder{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"nXY" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"lqP" = ( +/obj/machinery/door/airlock/grunge{ + id_tag = "Cabin_1"; + name = "Cabin 1" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"nYj" = ( /obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"nYy" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/commons/locker) +"lqR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"lqU" = ( +/turf/closed/wall, +/area/station/engineering/atmos/pumproom) +"lrc" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/effect/spawner/surgery_tray/full/morgue, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"lre" = ( +/obj/machinery/status_display/evac/directional/west, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"nYK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes/corner{ +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"lrk" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nYT" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Three"; - space_dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"nZb" = ( -/obj/structure/closet/l3closet/virology, -/obj/effect/turf_decal/tile/green/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"lrp" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"nZo" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"lrq" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/prison) +"lrI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/eva) -"nZt" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/area/station/hallway/primary/port) +"lrO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/light/directional/west, -/obj/machinery/conveyor{ - dir = 1; - id = "QMLoad" +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"lrP" = ( +/obj/machinery/door/airlock/medical{ + id_tag = "Unit_1"; + name = "Unit 1" + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/commons/toilet/restrooms) +"lrR" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron, -/area/station/cargo/storage) -"nZv" = ( -/obj/item/radio/intercom/command/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"nZL" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/effect/spawner/random/clothing/wardrobe_closet_colored, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/cargo/boutique) -"nZW" = ( -/obj/structure/barricade/wooden, -/obj/machinery/atmospherics/components/binary/pump/on/green/visible{ +/area/station/hallway/primary/starboard) +"lrU" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"nZY" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"oac" = ( -/obj/machinery/mecha_part_fabricator{ - drop_direction = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/delivery, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"oag" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"lsb" = ( +/obj/effect/turf_decal/bot, /obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/pen{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/storage/box/beakers{ - pixel_x = 10; - pixel_y = 14 +/obj/machinery/recharger, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/storage/box/syringes{ - pixel_x = 10; - pixel_y = 4 +/turf/open/floor/iron, +/area/station/command/heads_quarters/hos) +"lsf" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"oas" = ( -/obj/structure/table, -/obj/item/phone{ - pixel_x = -3; - pixel_y = 3 +/turf/closed/wall, +/area/station/engineering/atmos) +"lst" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/food/popcorn{ - pixel_x = 7 +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"oaD" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/area/station/engineering/atmos) +"lsu" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" }, -/area/station/maintenance/department/cargo) -"oaF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/command/emergency_closet) -"oaG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/room) -"oaP" = ( -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oaR" = ( -/obj/structure/closet/crate/critter, -/mob/living/basic/mothroach, -/obj/item/stack/spacecash/c100, -/turf/open/space/basic, +/area/station/maintenance/solars/port/aft) +"lsE" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"oaY" = ( -/obj/effect/landmark/start/medical_doctor, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"obc" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "secentrylock"; - name = "Security Entry" +"lsS" = ( +/obj/machinery/newscaster/directional/west, +/obj/machinery/computer/prisoner/management{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance" +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"lsW" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Pure to Ports" }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"obx" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"obA" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/science) -"obD" = ( -/obj/effect/turf_decal/stripes/asteroid/line, -/turf/open/misc/asteroid, -/area/station/asteroid) -"obL" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, +/area/station/engineering/atmos) +"lsX" = ( +/obj/structure/sign/departments/restroom, +/turf/closed/wall, +/area/station/commons/locker) +"lsZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"obU" = ( -/obj/machinery/vending/wardrobe/robo_wardrobe, -/obj/effect/turf_decal/delivery, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"obV" = ( -/obj/structure/stairs/west, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/security/prison) -"occ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ocl" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/e_gun, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/end{ dir = 8 }, -/obj/machinery/camera/motion/directional/north{ - c_tag = "Security Armory - Lethals" - }, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"ocm" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron, +/area/station/service/hydroponics) +"lte" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ocq" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"ocB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"ocF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"lth" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ocJ" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"ocV" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron/white, -/area/station/science/research) -"odg" = ( -/obj/machinery/telecomms/server/presets/medical, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"odi" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/machinery/button/door/directional/south{ + id = "xeno5"; + name = "Creature Cell 5 Toggle"; + pixel_x = -24; + req_access = list("xenobiology") + }, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"odk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"odp" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "secentrylock2"; - name = "Security Entry" +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"lts" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance" +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"ltQ" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/disk/computer/ordnance, +/obj/item/disk/computer/ordnance, +/obj/item/disk/computer/ordnance, +/obj/item/circuitboard/aicore{ + pixel_y = 5 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/item/hand_labeler, +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/directional/west, +/obj/item/pai_card{ + pixel_x = 6 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/item/aicard, +/obj/item/taperecorder{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"lue" = ( +/obj/structure/sign/warning/fire/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"odG" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"odK" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"odL" = ( +/area/station/maintenance/starboard/aft) +"luh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"odS" = ( -/obj/structure/stairs/west, -/obj/structure/railing{ +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"luk" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/blood/oil, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"lun" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"odU" = ( -/obj/effect/landmark/start/mime, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"lux" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/service/theater) -"oed" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/security/courtroom) -"oel" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"oey" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"oez" = ( -/obj/structure/sign/directions/supply/directional/west{ - dir = 1; - pixel_y = 8; - pixel_x = 0 - }, -/obj/structure/sign/directions/security/directional/west{ - dir = 1; - pixel_x = 0 - }, -/obj/structure/sign/directions/science/directional/west{ - dir = 1; - pixel_y = -8; - pixel_x = 0 +/area/station/hallway/secondary/exit/departure_lounge) +"luA" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L5" }, -/turf/closed/wall, -/area/station/medical/pharmacy) -"oeL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 10 }, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"oeN" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/sign/departments/telecomms/alt/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/airalarm/directional/north, -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/iron, -/area/station/security) -"ofc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ofx" = ( -/obj/structure/chair/stool/directional/north, -/obj/effect/landmark/start/atmospheric_technician, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"ofE" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"ofG" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/box/red, -/obj/machinery/light/directional/south, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"ofL" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/station/maintenance/department/science) -"ogb" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/uppersouth) -"ogH" = ( -/obj/machinery/computer/atmos_alert/station_only, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/area/station/hallway/primary/central/fore) +"luI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"ogL" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"ogP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"ogU" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) -"ohe" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +"luK" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"ohh" = ( +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"luO" = ( +/obj/machinery/airalarm/directional/west, /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/commons/lounge) -"ohk" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"ohu" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"ohw" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ohz" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"ohA" = ( -/obj/structure/urinal/directional/north, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"ohF" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"luP" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input{ + dir = 4 + }, +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"luQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mechpad, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/mechbay) +"lvy" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"ohZ" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stack/sheet/cardboard{ - amount = 14 - }, -/obj/item/stack/package_wrap, +/area/station/service/bar) +"lvP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/security/prison/work) -"oix" = ( -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"oiC" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/table, -/obj/machinery/airalarm/directional/east, -/obj/structure/sign/departments/chemistry/pharmacy/directional/north, -/obj/item/storage/box/bandages, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ojc" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"ojv" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/structure/cable, -/obj/effect/landmark/start/chaplain, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"ojz" = ( -/turf/closed/wall, -/area/station/science/ordnance/testlab) -"ojB" = ( /obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"lvS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"ojC" = ( -/obj/machinery/smartfridge/extract, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"ojG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"lvV" = ( +/obj/machinery/computer/operating{ + dir = 1; + name = "Robotics Operating Computer" }, -/turf/open/floor/iron/textured, -/area/station/cargo/drone_bay) -"ojS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"oka" = ( -/obj/structure/table, -/obj/item/storage/box/disks{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags{ - pixel_x = -4; - pixel_y = 9 +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"okd" = ( +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"lwn" = ( +/obj/structure/closet/secure_closet/evidence, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"lwp" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/security/eva) +"lwu" = ( +/turf/closed/wall, +/area/station/security/medical) +"lwT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"lwV" = ( +/obj/machinery/button/door/directional/south{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Toggle"; + req_access = list("command") + }, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"lwW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/structure/cable, +/obj/effect/landmark/start/lawyer, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, /turf/open/floor/wood, /area/station/service/lawoffice) -"okf" = ( -/obj/machinery/light/directional/south, -/obj/structure/table, -/obj/item/clothing/mask/gas{ - pixel_x = 8 +"lxf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/item/clothing/mask/gas{ - pixel_x = 16; - pixel_y = 5 +/obj/item/radio/intercom/directional/north{ + freerange = 1; + frequency = 1447; + listening = 0; + name = "Private Channel" }, -/obj/item/clothing/mask/gas{ - pixel_x = 12; - pixel_y = 2 +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"lxo" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"lxp" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/delivery, +/obj/machinery/component_printer, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/obj/item/reagent_containers/dropper{ - pixel_x = -5; - pixel_y = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"lxu" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"lxw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/obj/item/reagent_containers/dropper{ - pixel_x = -5; - pixel_y = -2 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"okg" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"okm" = ( -/turf/open/floor/engine/hull/reinforced, -/area/station/asteroid) -"okC" = ( -/obj/machinery/computer/prisoner/gulag_teleporter_computer{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"lxE" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 }, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"okF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/station/service/chapel/monastery) +"lxG" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"okL" = ( -/obj/structure/railing{ +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lxL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"okV" = ( -/obj/machinery/shower/directional/south, -/obj/effect/landmark/start/prisoner, -/obj/item/radio/intercom/prison/directional/east, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"oli" = ( -/obj/structure/table, -/obj/item/hand_labeler{ - pixel_y = -2 - }, -/obj/item/hand_labeler, -/obj/item/hand_labeler_refill{ - pixel_x = 9; - pixel_y = 10 - }, -/obj/item/hand_labeler_refill{ - pixel_x = -8; - pixel_y = 8 +"lxP" = ( +/turf/closed/wall, +/area/station/service/bar/backroom) +"lxQ" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, /turf/open/floor/iron, -/area/station/cargo/sorting) -"olq" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/theater) -"olr" = ( +/area/station/hallway/primary/starboard) +"lxU" = ( +/obj/effect/turf_decal/bot, +/obj/item/storage/box/lights/mixed, +/obj/effect/spawner/random/structure/closet_empty/crate, +/turf/open/floor/iron, +/area/station/cargo/storage) +"lyb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"lyc" = ( +/obj/machinery/mecha_part_fabricator, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"lyd" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"lyk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"olC" = ( -/obj/effect/spawner/random/entertainment/slot_machine, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/security/prison) +"lyr" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"olE" = ( -/turf/open/floor/iron/white/smooth_corner, -/area/station/science/xenobiology) -"olM" = ( -/obj/effect/turf_decal/tile/neutral/full, +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"olN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"olR" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/service/library) -"olW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"omv" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"omw" = ( -/obj/structure/bed, -/obj/effect/spawner/random/bedsheet, -/obj/machinery/airalarm/directional/south, -/obj/item/pillow/random, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"omy" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/circuit, -/area/station/hallway/primary/central) -"omB" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/quantum_server, -/turf/open/floor/circuit, -/area/station/cargo/bitrunning/den) -"omE" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"omL" = ( -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"onb" = ( -/obj/machinery/iv_drip, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"ong" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/box, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/transit_tube/station/dispenser/reverse, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/closet/secure_closet/medical2, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"onm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/science/xenobiology) -"onn" = ( -/obj/machinery/blackbox_recorder, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"onB" = ( -/obj/structure/railing{ +/area/station/medical/virology) +"lyT" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/spawner/random/structure/musician/piano/random_piano, -/turf/open/floor/carpet, -/area/station/service/theater) -"onG" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/stairs/right, -/area/station/command/corporate_showroom) -"onK" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"onL" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"onW" = ( -/obj/machinery/light/warm/directional/north, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"ooy" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lab) -"ooE" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, +/area/station/command/eva) +"lzg" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"lzs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/locker) -"opG" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/security/processing) +"lzv" = ( +/turf/open/floor/circuit, +/area/station/ai/upload/chamber) +"lzF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"lAk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"opH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"lAr" = ( /obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P1-Central-Primary"; - location = "P15-Central-Primary" +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"opN" = ( -/obj/effect/turf_decal/arrows, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"opT" = ( -/obj/structure/reflector/box/anchored{ +/area/station/hallway/primary/starboard) +"lAs" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"opZ" = ( -/obj/machinery/power/solar{ - id = "foreport"; - name = "Fore-Port Solar Array" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/fore) -"oqb" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "bar_shutters"; - name = "Bar Shutters" +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"lAu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Medbay Security Post" }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/service/bar) -"oqj" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bucket, -/obj/item/mop, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oqp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/shower/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8; - icon_state = "siding_thinplating_new_end" +/area/station/security/checkpoint/medical) +"lAA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/south{ + c_tag = "Fore Hallway Vault"; + name = "fore camera" }, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"lAB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"lAC" = ( +/obj/machinery/door/poddoor/shutters{ + id = "maidbay"; + name = "Maid Bay" }, -/turf/open/floor/iron/checker, -/area/station/science/research) -"oqs" = ( -/obj/machinery/hydroponics/constructable{ +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"lAV" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, -/obj/effect/turf_decal/bot, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/service/hydroponics) -"oqz" = ( +/area/station/engineering/atmos) +"lAW" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"oqN" = ( -/obj/structure/lattice, -/obj/effect/landmark/start/hangover, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"oqP" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin2"; - name = "Cabin 4" +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/security/eva) +"lBj" = ( +/obj/structure/table/wood, +/obj/structure/cable, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"lBk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"lBB" = ( +/obj/structure/bed, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/stripes/corner, +/obj/item/bedsheet/medical, +/obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"lBN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/target/syndicate, +/turf/open/floor/engine, +/area/station/science/auxlab) +"lBO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"oqV" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/button/door/directional/south{ - id = "chemsat"; - name = "Shutter Control"; - req_access = list("plumbing") - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry/minisat) -"oru" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"ory" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/warm/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"orD" = ( -/obj/machinery/door/airlock/engineering{ - name = "Telecomms Storage" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage/tcomms) -"orE" = ( -/turf/closed/wall/rust, -/area/station/maintenance/central/lesser) -"orI" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"orJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "commissaryshutter"; - name = "Vacant Commissary Shutter" - }, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"orT" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/sand/plating, +/area/station/maintenance/starboard/fore) +"lBQ" = ( /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"osd" = ( +/area/station/maintenance/department/security) +"lBU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"lCa" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "psychprivacy"; + name = "Office Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/medical/psychology) +"lCs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"osp" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, -/obj/structure/rack, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron, -/area/station/cargo/boutique) -"osr" = ( -/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"lCz" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd","xeno") - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"oss" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"lCC" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"lCV" = ( +/obj/machinery/door/airlock/mining{ + name = "Auxiliary Base" }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"osK" = ( -/obj/machinery/light/cold/dim/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"osX" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/construction/mining/aux_base) +"lDa" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"otm" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/engine, -/area/station/science/explab) -"otA" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/computer/order_console/cook, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"otH" = ( -/obj/structure/closet/crate/cardboard, -/obj/item/relic, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"otJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"otY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, /obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"oue" = ( -/obj/machinery/door/airlock/medical{ - id_tag = "r2"; - name = "Room B" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/mapping_helpers/airlock/unres{ +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"lDb" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"ouk" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ouo" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Auxiliary Tool Storage" +/obj/machinery/power/terminal{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"ouq" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ouA" = ( -/obj/effect/landmark/blobstart, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"ouE" = ( -/obj/effect/decal/cleanable/blood/gibs/robot_debris/old, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/asteroid) -"ouF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/hos) -"ouH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"ovj" = ( -/obj/effect/turf_decal/trimline/yellow/arrow_cw{ +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/barricade/wooden, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"ovl" = ( +/area/station/engineering/supermatter/room) +"lDc" = ( +/obj/structure/lattice/catwalk, +/obj/effect/landmark/carpspawn, +/turf/open/space/basic, +/area/station/solars/port/fore) +"lDm" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ovr" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/button/curtain{ - id = "court"; - pixel_x = -24; - pixel_y = -8; - dir = 8 +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"ovB" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"ovD" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos/upper) -"ovW" = ( -/obj/structure/railing{ - dir = 10 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"lDu" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard) +"lDB" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, -/obj/effect/spawner/random/entertainment/musical_instrument, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/theater) -"owj" = ( -/obj/structure/weightmachine, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"owl" = ( -/turf/open/openspace, -/area/station/command/corporate_showroom) -"owp" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white/smooth_edge{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/area/station/science/research) -"owr" = ( -/obj/item/reagent_containers/cup/bottle/silicon{ - pixel_x = 6; - pixel_y = 6 +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"lDK" = ( +/obj/machinery/atmospherics/components/tank/air, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"lDS" = ( +/obj/structure/filingcabinet/security, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/sugar{ - pixel_x = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/reagent_containers/cup/bottle/silver{ - pixel_x = -6; - pixel_y = 6 +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"lDV" = ( +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 }, -/obj/item/reagent_containers/cup/bottle/sacid{ - pixel_y = 6 +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/item/reagent_containers/cup/bottle/water, -/obj/item/reagent_containers/cup/bottle/sulfur{ - pixel_x = -6 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/light/very_dim/directional/north, -/turf/open/floor/iron/dark/textured_edge, -/area/station/medical/pharmacy) -"owB" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/east, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/security/brig) +"lEf" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"lEi" = ( +/obj/item/kirbyplants, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"lEs" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/maintenance/starboard) +"lED" = ( +/obj/machinery/telecomms/message_server/preset, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"lEI" = ( +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"lEQ" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/chapel) -"owL" = ( -/obj/effect/turf_decal/stripes{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sign/warning/radiation/rad_area/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"oxe" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/modular_computer/preset/id, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" + }, +/obj/machinery/door/airlock/security{ + name = "Prison Wing" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"oxh" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/girder/displaced, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"oxB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"oxG" = ( -/obj/item/storage/box/syringes, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 +/area/station/security/execution/transfer) +"lFr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lFt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/botanist, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"lFB" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/light_switch/directional/south, /turf/open/floor/iron, -/area/station/service/hydroponics) -"oxN" = ( -/obj/machinery/door/airlock/multi_tile/public{ - dir = 4 +/area/station/hallway/secondary/exit/departure_lounge) +"lFC" = ( +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"lFN" = ( +/obj/structure/sign/departments/psychology/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"lFS" = ( +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = -7; + pixel_y = 2 }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 +/obj/item/reagent_containers/cup/glass/colocup{ + pixel_x = 3; + pixel_y = 3 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"oxU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/item/cigarette/rollie/cannabis{ + pixel_y = -3 }, +/turf/open/floor/plating/rust, +/area/station/maintenance/department/security) +"lGa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"oyC" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"lGs" = ( +/turf/closed/wall, +/area/station/security/warden) +"lGF" = ( +/obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/obj/effect/spawner/random/entertainment/money_medium, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"oyO" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/spawner/directional/south, -/mob/living/basic/butterfly, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"oyP" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"lGO" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ - dir = 1 + dir = 5 }, -/turf/open/openspace, -/area/station/security/prison/shower) -"oyS" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"oyV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"ozr" = ( -/obj/effect/turf_decal/box/corners{ +/turf/open/space/basic, +/area/space/nearstation) +"lGQ" = ( +/obj/effect/turf_decal/tile/purple{ dir = 4 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/ai/satellite/interior) -"ozx" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"lGS" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"ozy" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"ozF" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"lGV" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"lGY" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"ozU" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"oAa" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/maintenance/port/greater) +"lHk" = ( +/obj/structure/railing{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"lHy" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/mix) -"oAo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"oAs" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/lobby) -"oAt" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/structure/window/spawner/directional/east, +/obj/structure/table/optable, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"lHE" = ( +/obj/structure/table/wood, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/upper) -"oAH" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 +/obj/structure/sign/picture_frame/portrait/bar{ + pixel_y = 32 }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood, +/area/station/service/bar) +"lHX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"oAJ" = ( -/obj/effect/turf_decal/stripes{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"lIr" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/button/door/directional/north{ - id = "atmoshfr"; - name = "Protection Shutter Control" +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/security/processing) +"lIs" = ( +/turf/closed/wall/rust, +/area/station/security/execution/education) +"lIR" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "custodialwagon"; + name = "Custodial Bay" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"oAO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/effect/turf_decal/tile/yellow{ +/area/station/service/janitor) +"lJd" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"lJg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"oAT" = ( -/obj/structure/cable, -/obj/effect/landmark/start/atmospheric_technician, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oAV" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair/office{ - dir = 4 +/obj/machinery/camera/motion/directional/east{ + network = list("minisat"); + c_tag = "Satellite Foyer" }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"oAY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"lJw" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id = "ordnancemix"; + name = "Ordnance Lab Shutters" }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"oBe" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"lJA" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/lighter, +/turf/open/floor/wood, +/area/station/commons/locker) +"lJD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=S1-Security"; - location = "P11.5-Central-Primary" +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/storage) +"lJJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"oBg" = ( -/obj/structure/chair, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 +/area/station/service/hydroponics) +"lJL" = ( +/obj/machinery/requests_console/directional/north{ + department = "Security"; + name = "Security Requests Console" }, -/area/station/medical/exam_room) -"oBl" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/structure/filingcabinet, +/obj/machinery/camera/directional/north, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/security) -"oBo" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/engineering/atmos/upper) -"oBt" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"oBz" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/medical) +"lJR" = ( +/obj/machinery/button/crematorium/indestructible{ + pixel_x = -25 }, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"oBE" = ( -/obj/effect/turf_decal/tile/neutral, +/area/station/service/chapel/funeral) +"lJU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"oBH" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"lKi" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/item/storage/box/mousetraps{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"oBP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"oBU" = ( -/obj/machinery/food_cart, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"oCb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 +/obj/item/storage/box/mousetraps{ + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"oCi" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/mix) -"oCu" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/item/toy/figure/janitor{ + pixel_x = -8; + pixel_y = 6 }, -/obj/structure/chair{ - dir = 8 +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 8 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"oCx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"oCB" = ( +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"oCR" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/microwave, -/obj/structure/table, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"oDn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"oDw" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"oDC" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"oDH" = ( -/obj/machinery/power/solar{ - id = "portaft"; - name = "Aft-Port Solar Array" +/area/station/service/janitor) +"lKk" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Research Division"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/aft) -"oDI" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/chair/sofa/bench, -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"oDJ" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/formaldehyde{ - pixel_y = 5 - }, -/obj/item/reagent_containers/cup/bottle/nitrogen{ - pixel_x = -6 - }, -/obj/item/reagent_containers/cup/bottle/oxygen, -/obj/item/reagent_containers/cup/bottle/mercury{ - pixel_x = 6 +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"lKq" = ( +/turf/closed/wall, +/area/station/cargo/storage) +"lLa" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, -/turf/open/floor/iron/dark/textured_edge, -/area/station/medical/pharmacy) -"oDK" = ( -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"oDR" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/blue/full, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/storage) -"oDZ" = ( +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"lLc" = ( +/obj/effect/landmark/carpspawn, /obj/structure/cable, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/starboard/aft) +"lLi" = ( +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"oEo" = ( -/obj/machinery/light/directional/north, -/obj/item/assembly/mousetrap/armed, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) -"oEp" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"oEy" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"lLl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"lLp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"lLv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"oEB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/engineering) -"oEC" = ( -/obj/structure/table, -/obj/machinery/computer/records/medical/laptop{ - dir = 4; - pixel_y = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"oEN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, +/area/station/security/courtroom) +"lLH" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall, +/area/ruin/space/has_grav/abandoned_warehouse) +"lLN" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/massdriver_chapel, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"oEP" = ( -/obj/structure/window/spawner/directional/east, -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, +/area/station/service/chapel/funeral) +"lLY" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"oEZ" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oFa" = ( -/mob/living/carbon/human/species/monkey/angry, -/obj/item/knife/kitchen, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/medical/medbay/central) -"oFk" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/area/station/maintenance/port/fore) +"lMf" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"lMh" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/glass, +/area/station/service/hydroponics) +"lMo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"oFn" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"lMx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/components/binary/pump/on/layer4, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oFu" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/maintenance/port/greater) +"lMy" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"lMZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"lNe" = ( +/obj/docking_port/stationary/escape_pod, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oFy" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 3"; - name = "Cell 3 locker" +/area/station/maintenance/port/greater) +"lNn" = ( +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"lNp" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/flasher/directional/north{ - id = "Cell 3" - }, -/turf/open/floor/iron, -/area/station/security/brig) -"oFK" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 5 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/ai/upload/foyer) -"oGk" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/maintenance/disposal/incinerator) +"lNK" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"oGp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/no_decals, -/turf/open/floor/iron, -/area/station/command/bridge) -"oGw" = ( -/obj/structure/table, -/obj/item/food/energybar, -/turf/open/floor/iron, -/area/station/security/prison) -"oGB" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"oGD" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"oGO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"oGQ" = ( -/obj/structure/table, -/obj/structure/microscope, -/obj/item/storage/box/beakers{ - pixel_x = -14; - pixel_y = 18 - }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"oGX" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/lounge) -"oHd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"oHi" = ( +/area/station/engineering/lobby) +"lNP" = ( /obj/structure/cable, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"oHw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"oHC" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"oIh" = ( -/obj/machinery/monkey_recycler, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"oIo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"lOh" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"oIr" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/structure/bed/dogbed/mcgriff, -/mob/living/basic/pet/dog/pug/mcgriff, -/obj/machinery/button/flasher{ - id = "control1"; - pixel_x = 28; - pixel_y = 6 +/obj/effect/turf_decal/box/red, +/obj/machinery/camera/directional/east{ + c_tag = "Ordnance Test Lab"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/machinery/button/flasher{ - id = "control2"; - pixel_x = -6; - pixel_y = -23 +/obj/item/radio/intercom/directional/east, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/security/warden) -"oID" = ( -/obj/structure/lattice, -/obj/effect/spawner/random/structure/grille, -/turf/open/space/openspace, -/area/space/nearstation) -"oIQ" = ( -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"lOq" = ( +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"oIV" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"lOt" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 14; + name = "kilo arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/kilo; + shuttle_id = "arrival_stationary"; + width = 7 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"lOG" = ( +/turf/closed/wall/rust, +/area/station/service/chapel/monastery) +"lOX" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"lOY" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Evidence Closet" + }, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/cold/dim/directional/west, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"oJn" = ( -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 +/area/station/security/evidence) +"lOZ" = ( +/obj/effect/turf_decal/box, +/obj/machinery/shower/directional/west, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/item/bikehorn/rubberducky, +/obj/machinery/newscaster/directional/west, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/east{ + id = "Shower_1"; + name = "Shower 1 Privacy Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 }, -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"lPb" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"lPh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/machinery/requests_console/directional/west{ + department = "Security"; + name = "Security Requests Console" }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/computer/security/telescreen/engine, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"lPE" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/computer/dna_console{ + dir = 8 }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/item/storage/toolbox/electrical{ - pixel_x = -5; - pixel_y = 12 +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"lPK" = ( +/obj/machinery/door/airlock/external{ + name = "Departure Shuttle Airlock"; + space_dir = 4 }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"lPU" = ( +/obj/machinery/shower/directional/west, +/turf/open/floor/plastic, +/area/station/security/prison/shower) +"lPX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/xeno_mining/directional/north, +/obj/machinery/camera/directional/west{ + c_tag = "Port Quarter Solar"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/table, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"lPY" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) -"oJr" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/science/research) -"oJt" = ( -/obj/structure/lattice, -/obj/structure/disposaloutlet{ dir = 1 }, -/obj/structure/disposalpipe/trunk, -/turf/open/space/openspace, -/area/space/nearstation) -"oJv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/bed/pod, -/obj/item/clothing/glasses/sunglasses{ - desc = "A pair of sunglasses to provide eye protection against solar rays. Does not block flashes."; - flash_protect = 0 - }, -/turf/open/space/basic, -/area/space/nearstation) -"oJD" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 - }, -/obj/effect/spawner/random/structure/closet_private, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"oJE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lQj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/turf/open/floor/iron/white/smooth_corner{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/area/station/medical/pharmacy) -"oJG" = ( +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"lQu" = ( /obj/effect/turf_decal/stripes/corner, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"oJI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/reagent_dispensers/plumbed{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"lQw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"oJJ" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"oJQ" = ( -/obj/item/food/grown/poppy, -/obj/structure/table/wood, -/obj/item/food/grown/poppy{ - pixel_x = -8; - pixel_y = 8 - }, -/turf/open/floor/iron/chapel{ - dir = 4 - }, +/obj/effect/landmark/start/chaplain, +/turf/open/floor/iron/dark, /area/station/service/chapel) -"oJU" = ( +"lQB" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"oJW" = ( -/obj/structure/showcase/cyborg/old{ - dir = 4; - pixel_x = -9; - pixel_y = 2 - }, -/turf/open/floor/glass/reinforced/telecomms, -/area/station/ai/satellite/chamber) -"oKc" = ( -/obj/machinery/door/airlock{ - id_tag = "u5"; - name = "Unit 5" - }, /obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"oKr" = ( -/obj/effect/landmark/start/depsec/science, -/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"lQK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"oKx" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/area/station/medical/treatment_center) +"lRd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"oKy" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 - }, -/turf/open/floor/iron/edge{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/courtroom) +"lRg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"oKB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, /turf/open/floor/plating, -/area/station/engineering/atmos) -"oKF" = ( -/obj/structure/closet/toolcloset, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/area/station/maintenance/port/greater) +"lRk" = ( +/turf/closed/wall, +/area/station/maintenance/starboard/fore) +"lRl" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/item/lightreplacer, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/break_room) -"oKM" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ +/area/station/hallway/primary/aft) +"lRq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"lRE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"lRJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"oLe" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"oLh" = ( -/obj/effect/spawner/structure/window, +/area/station/security/processing) +"lRS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"lRZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/science/robotics/mechbay) -"oLj" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 9 +/area/station/science) +"lSg" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "mining" }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"oLy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"oLF" = ( -/obj/structure/bed/double, -/obj/item/pillow/clown, -/obj/item/bedsheet/clown/double, -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"oLH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"lSl" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Auxiliary Dock" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"oLL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio8"; - name = "Xenobio Pen 8 Blast Door" +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"lSt" = ( +/obj/structure/cable, +/obj/structure/bed/dogbed/ian, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"oLN" = ( -/obj/effect/turf_decal/tile/yellow{ +/mob/living/basic/pet/dog/corgi/ian{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"lSE" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "NTMSLoad"; + name = "off ramp" }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/door/poddoor{ + id = "freight_port"; + name = "Freight Bay Blast Door" }, -/area/station/engineering/atmos/mix) -"oLU" = ( -/obj/structure/lattice/catwalk, -/obj/structure/fence{ +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"lTc" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/west, +/obj/item/pickaxe, +/obj/item/shovel, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/openspace, -/area/station/cargo/storage) -"oMf" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"lTf" = ( +/turf/closed/wall/rust, +/area/station/security/medical) +"lTu" = ( +/obj/machinery/smartfridge/organ, +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Morgue Privacy Shutters"; + id = "morgueprivacy" }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"oMi" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"lTM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"oMk" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"oMn" = ( -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"oMr" = ( -/obj/machinery/door/airlock/public/glass, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"oMB" = ( -/obj/machinery/light_switch/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"oMJ" = ( -/obj/machinery/door/airlock/research{ - name = "Circuit Lab" +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/explab) -"oNo" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/eva) +"lTZ" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"oNC" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/north, +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"lUq" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel/storage) +"lUD" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oND" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/iron/dark/telecomms, -/area/station/science/server) -"oNM" = ( -/obj/machinery/door/window/brigdoor/right/directional/east{ - name = "Primary AI Core Access"; - req_access = list("ai_upload") +/area/station/security/courtroom) +"lUH" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/microscope{ + pixel_x = -1; + pixel_y = 1 }, -/obj/machinery/turretid{ - name = "AI Chamber turret control"; - pixel_x = 3; - pixel_y = -23 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"lUM" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/keycard_auth/wall_mounted/directional/south{ + pixel_x = 7; + pixel_y = -26 }, -/obj/machinery/flasher/directional/north{ - id = "AI" +/obj/machinery/light_switch/directional/south{ + pixel_x = -8 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "AI Core shutters"; - name = "AI Core Shutters" +/obj/machinery/button/door{ + id = "cmoprivacy"; + name = "Privacy Shutters Toggle"; + pixel_x = -7; + pixel_y = -39 }, -/obj/structure/cable, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/ai/satellite/chamber) -"oOb" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/button/door{ + id = "emmd"; + name = "Medical Lockdown Toggle"; + pixel_x = 7; + pixel_y = -39 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"lVe" = ( +/turf/closed/wall, +/area/station/science) +"lVf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/closet/athletic_mixed, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/east, -/obj/machinery/camera/autoname/directional/north, -/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"oOe" = ( -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"oOr" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ +/area/station/engineering/atmos) +"lVi" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"oOC" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"oOF" = ( -/obj/item/surgery_tray/deployed, -/turf/open/floor/iron, -/area/station/maintenance/department/medical) -"oOI" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/tool, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stack/sheet/paperframes/twenty, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"oOR" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/siding/green{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"lVj" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/textured_large, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, /area/station/hallway/primary/central) -"oOV" = ( +"lVo" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/cargo/storage) -"oOX" = ( -/obj/machinery/door/airlock/grunge{ - name = "Cell 2" +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"lVx" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"oPe" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/garden) -"oPl" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 +/area/station/service/bar/backroom) +"lVD" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"oPs" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"oPB" = ( +/obj/item/pen, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"oPC" = ( -/turf/open/floor/iron/stairs/right{ - color = "#795C32"; - dir = 8 - }, -/area/station/security/courtroom) -"oPD" = ( -/obj/structure/table/wood, -/obj/item/storage/crayons, -/obj/item/toy/crayon/spraycan{ - pixel_x = -4 +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/newscaster/directional/north, +/obj/machinery/button/door/directional/east{ + id = "bankvault"; + name = "Bank Door Lock"; + normaldoorcontrol = 1; + pixel_y = 8; + specialfunctions = 4 }, -/obj/item/toy/crayon/spraycan{ - pixel_x = -4 +/obj/machinery/button/door/directional/east{ + id = "bankshutter"; + name = "Bank Shutter Toggle"; + pixel_y = -8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"oPL" = ( -/obj/item/clothing/head/chameleon/broken, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"oPN" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"lVL" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security) -"oPO" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/white{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/corner{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/server) +"lWg" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/modular_computer/preset/civilian{ dir = 8 }, -/area/station/service/hydroponics/garden) -"oPT" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oQd" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"oQe" = ( -/obj/effect/turf_decal/siding/red{ - dir = 6 +/obj/machinery/requests_console/directional/east{ + department = "Robotics"; + name = "Robotics Requests Console" }, -/turf/open/floor/circuit, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"oQk" = ( -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +"lWm" = ( +/obj/machinery/door/airlock/engineering{ + name = "Starboard Bow Solar Access" }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"oQp" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"oQr" = ( -/obj/machinery/atmospherics/components/binary/pump/off{ - dir = 8; - name = "N2 To Pure" +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/maintenance/solars/starboard/fore) +"lWr" = ( +/obj/structure/table/glass, +/obj/item/storage/medkit/regular{ + pixel_x = 2 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"oQs" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/item/healthanalyzer, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"lWw" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 }, -/obj/machinery/computer/order_console/bitrunning, -/obj/item/storage/pill_bottle/mannitol{ - pixel_x = 7; - pixel_y = 16 +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"lWC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/south, +/obj/structure/lattice/catwalk, +/obj/machinery/light/directional/south, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"lWJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/circuit, -/area/station/cargo/bitrunning/den) -"oQy" = ( -/obj/structure/sign/warning/vacuum/external/directional/north, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"oQW" = ( -/turf/open/floor/engine, -/area/station/science/explab) -"oRa" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/commons/fitness/recreation) +"lWL" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"oRe" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/maintenance/port/lesser) +"lWQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/machinery/light/small/dim/directional/south, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/processor, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"oRf" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 +/area/station/engineering/storage/tech) +"lXe" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oRp" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = "triage"; - name = "Triage" +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"lXB" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"oRD" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"oRE" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - color = "#000000" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"lXK" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Chemistry West"; + network = list("ss13","medbay") }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/cargo/bitrunning/den) -"oRK" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/coffee_condi_display, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"oRM" = ( -/obj/machinery/door/airlock/freezer{ - name = "Showers" +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"oRR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"lXL" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 }, -/obj/effect/turf_decal/siding/blue{ +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/sign/warning/fire/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"oRU" = ( -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"lXP" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "NTMSLoad"; + name = "off ramp" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/vacuum/external/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/disposalpipe/junction/yjunction, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"oSa" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/bluespace_beacon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"oSd" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/structure/cable, -/mob/living/carbon/human/species/monkey/punpun, /turf/open/floor/iron/dark, -/area/station/service/bar) -"oSk" = ( -/turf/closed/wall/rock/porous, -/area/station/maintenance/central/greater) -"oSz" = ( -/obj/machinery/shower/directional/south{ - name = "emergency shower" +/area/ruin/space/has_grav/abandoned_warehouse) +"lYa" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/detective, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"lYb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/box, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/dark/small, -/area/station/engineering/atmos) -"oSB" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/atmospherics/components/binary/pump{ + name = "Gas to Chamber" }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"oSG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"oSJ" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"oSK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/engineering/supermatter/engine) +"lYg" = ( +/turf/closed/wall, +/area/station/science/robotics/lab) +"lYE" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery) -"oSP" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/railing/corner, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"lYG" = ( +/obj/structure/closet/secure_closet/evidence, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery) -"oSS" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"lYT" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"oTe" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"oTh" = ( -/obj/structure/cable/layer3, -/obj/structure/cable, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"oTv" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"oTJ" = ( -/obj/structure/chair/sofa/bench/right, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"lYX" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"oTN" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/area/station/security/brig) +"lZi" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/fore) +"lZn" = ( +/obj/structure/sign/departments/science, +/turf/closed/wall/rust, +/area/station/science/lab) +"lZr" = ( +/obj/structure/table/wood, +/obj/item/storage/box/deputy{ + pixel_y = 5 }, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ +/obj/item/taperecorder{ pixel_x = 5; - pixel_y = 9 + pixel_y = 5 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"oTW" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"oTX" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"oUd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"oUg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 1 +/obj/item/flashlight/seclite, +/obj/machinery/firealarm/directional/east, +/obj/machinery/light_switch/directional/north{ + pixel_x = 26 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"lZK" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/camera, +/obj/item/camera_film{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oUh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/dark, +/area/station/commons/storage/art) +"lZV" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/prison) -"oUk" = ( -/obj/effect/spawner/random{ - loot = list(/obj/item/cardboard_cutout/nuclear_operative,/obj/item/cardboard_cutout/nuclear_operative,/obj/structure/fluff/balloon_nuke); - spawn_all_loot = 1; - spawn_loot_chance = 5; - spawn_loot_double = 0; - spawn_scatter_radius = 1 +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"maj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) -"oUm" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +/obj/structure/sign/departments/science/directional/east{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/machinery/airalarm/directional/south, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"oUp" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/area/station/hallway/primary/central/fore) +"maA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"maK" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/mix) -"oUr" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate, -/obj/item/storage/box/prisoner, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"maN" = ( +/obj/machinery/power/emitter, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/fire/directional/north, /turf/open/floor/iron/dark, -/area/station/security/mechbay) -"oUw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/area/station/maintenance/port/fore) +"maW" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/disposalpipe/trunk/multiz, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"oUW" = ( -/obj/structure/chair/sofa/bench/left{ +/area/station/hallway/primary/central/fore) +"maX" = ( +/obj/machinery/computer/order_console/cook{ dir = 8 }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Kitchen Coldroom"; + name = "kitchen camera" }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"oVa" = ( -/obj/machinery/modular_computer/preset/cargochat/engineering{ +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"mbc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 10 +/obj/machinery/button/door/directional/north{ + id = "medbay_front_door"; + name = "Medbay Doors Toggle"; + normaldoorcontrol = 1; + req_access = list("medical") }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"oVn" = ( -/obj/structure/bed/dogbed/runtime, -/mob/living/basic/pet/cat/runtime, -/obj/item/toy/cattoy, -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"oVs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"oVC" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"oVF" = ( -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/mix) -"oVG" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"mbh" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"oVS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"oVV" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Xenobiology Lab - Secure Pen"; - network = list("ss13","rd","xeno") +/obj/machinery/duct, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"mbl" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" }, -/obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"oVX" = ( -/obj/structure/closet/secure_closet/paramedic, -/obj/effect/turf_decal/trimline/blue/filled/end{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/turf/open/floor/holofloor/dark, -/area/station/medical/paramedic) -"oWd" = ( /obj/structure/cable, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"oWg" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/science/lobby) -"oWr" = ( -/obj/machinery/atmospherics/components/binary/pump, -/obj/structure/fireaxecabinet/directional/east, +/area/station/maintenance/solars/starboard/fore) +"mbp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oWv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"oWy" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"oWE" = ( -/obj/structure/closet/radiation{ - anchored = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/ticket_machine/directional/north, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"oXa" = ( -/obj/structure/cable, -/obj/structure/railing{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/research) -"oXc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/cargo/storage) -"oXd" = ( -/obj/machinery/status_display/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_x = 32; - pixel_y = 32 +/area/station/hallway/primary/central) +"mbC" = ( +/obj/structure/transit_tube/curved{ + dir = 8 }, -/obj/machinery/status_display/door_timer{ - id = "Cell 2"; - name = "Cell 2"; - pixel_x = -32; - pixel_y = 32 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"mbE" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "departures-entrance" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"mbP" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/security/brig) -"oXh" = ( -/obj/machinery/requests_console/directional/east{ - department = "Security"; - name = "Security Requests Console" +/area/station/security/processing) +"mbS" = ( +/obj/machinery/door/airlock/engineering{ + name = "Starboard Quarter Solar Access" }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/maintenance/solars/starboard/aft) +"mbW" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/obj/item/paper/crumpled{ + default_raw_text = "This isn't funny, I'm trapped on the least fun room on the station."; + name = "poorly written complaint" }, -/obj/structure/chair{ +/turf/open/floor/iron/dark, +/area/station/science) +"mbY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/janitor, +/obj/structure/disposalpipe/junction{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"oXz" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"oXE" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ - dir = 8 +/turf/open/floor/iron, +/area/station/service/janitor) +"mcs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 6 }, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"oXI" = ( -/obj/structure/girder, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"oXW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron/large, -/area/station/hallway/secondary/exit/departure_lounge) -"oYu" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"oYv" = ( -/obj/machinery/door/airlock/external{ - name = "Server Room" +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"mcN" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) +"mda" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"oYC" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") + dir = 1 }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/engine, -/area/station/medical/chemistry) -"oYE" = ( -/obj/machinery/door/airlock/vault{ - name = "Vault" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/vault, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 +/area/station/engineering/supermatter/engine) +"mdl" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"mdp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig) +"mdw" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Research and Development" + }, +/obj/machinery/door/window/left/directional/north{ + name = "Research and Development Delivery Access"; + req_access = list("science") + }, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, -/area/station/command/vault) -"oZb" = ( -/obj/machinery/light/dim/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/maintenance/starboard) +"mdB" = ( +/obj/machinery/door/airlock/external{ + name = "External Freight Airlock" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"mdE" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/station/science/research) -"oZl" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/structure/rack, -/obj/item/clothing/suit/space/orange, -/obj/item/clothing/head/helmet/space/orange, -/obj/item/tank/internals/oxygen, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"oZp" = ( -/obj/structure/cable/multilayer/connected, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"oZt" = ( -/turf/closed/wall/r_wall, -/area/station/medical/virology) -"oZz" = ( -/turf/closed/wall/r_wall, -/area/station/security/brig) -"oZC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"oZK" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/commons/storage/primary) -"oZQ" = ( -/turf/open/openspace, -/area/station/cargo/storage) -"oZT" = ( -/obj/item/kirbyplants/random, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/light_switch/directional/north{ - pixel_x = 26 +/area/station/security/brig) +"mdX" = ( +/obj/effect/turf_decal/bot/right, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"mee" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"oZX" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/light/cold/dim/directional/west, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"paa" = ( +/area/station/hallway/primary/starboard) +"mej" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pae" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/arrows/red{ - dir = 1 - }, -/obj/machinery/ticket_machine/directional/west, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"paf" = ( -/obj/machinery/light/warm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"pat" = ( -/obj/effect/turf_decal/siding/red{ - dir = 8 +/obj/machinery/icecream_vat, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"pau" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"paC" = ( +/area/station/maintenance/department/bridge) +"mes" = ( +/obj/structure/table, +/obj/item/storage/bag/tray/cafeteria, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"mez" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/delivery, /obj/structure/table, /obj/item/storage/belt/utility, -/obj/item/storage/toolbox/electrical{ - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"paS" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"meO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"paW" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"pbn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/structure/closet/emcloset, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"pbA" = ( -/obj/machinery/air_sensor/incinerator_tank, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"pbB" = ( -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/spawner/random/contraband/prison, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner/skirt, -/obj/item/clothing/under/rank/prisoner/skirt, -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"pbD" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/ladder{ - icon_state = "ladder10" +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"meP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "ordnance sorting disposal pipe" }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"pbO" = ( -/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/science/ordnance, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"meU" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"mfd" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"pbP" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/basic, -/area/station/solars/starboard/fore) -"pbR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/gibs/robot_debris/limb, -/obj/item/flashlight/lamp, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pbX" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/airalarm/directional/south, /obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"mff" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"pbY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mfh" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance/office) +"mfs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "cmoprivacy"; + name = "Office Privacy Shutters" }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/storage/tech) -"pcc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 +/turf/open/floor/plating, +/area/station/medical/storage) +"mfD" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/openspace, -/area/station/engineering/main) -"pco" = ( -/obj/machinery/biogenerator, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters"; +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/command/vault) +"mfE" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/closed/wall, -/area/station/service/hydroponics) -"pcN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/machinery/camera/directional/west{ + c_tag = "Supermatter Terminal"; + name = "engineering camera"; + network = list("ss13","engine") }, +/obj/machinery/light_switch/directional/west, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"pcQ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"mfF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"pdg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/landmark/start/botanist, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/large, -/area/station/hallway/secondary/exit/departure_lounge) -"pdj" = ( -/obj/structure/rack, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"mfG" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"mfI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/structure/closet/cardboard, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mfJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/turf_decal/sand/plating, -/obj/item/stack/ducts{ - pixel_y = 3 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/item/stack/ducts, -/obj/item/stack/ducts{ - pixel_y = 7 +/area/station/hallway/primary/central/fore) +"mfM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "security disposal pipe" }, -/obj/item/storage/box/bandages, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"pdo" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/glass, -/area/station/ai/satellite/uppersouth) -"pdp" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"pdx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/mapping_helpers/mail_sorting/security/general, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"pdz" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/research) -"pdK" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 + dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security) -"pdR" = ( -/obj/effect/turf_decal/stripes{ +/area/station/security/office) +"mfT" = ( +/obj/structure/chair/sofa/right/maroon{ dir = 8 }, -/obj/effect/turf_decal/arrows/white{ +/obj/structure/railing{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"pdS" = ( -/obj/structure/railing/corner{ +/obj/machinery/newscaster/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"peo" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"mfU" = ( +/obj/effect/turf_decal/stripes/end{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/east, +/obj/item/radio/intercom/directional/east, +/obj/machinery/status_display/ai/directional/south, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"mfY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/area/station/science/research) -"peA" = ( +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"mgn" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/chapel{ +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"mgx" = ( +/obj/structure/bookcase/random/nonfiction, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/turf/open/floor/wood, +/area/station/service/library) +"mgA" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Bridge Port"; + name = "command camera" + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/area/station/service/chapel) -"peD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/warden) -"peL" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, +/turf/open/floor/iron, /area/station/command/bridge) -"peU" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +"mgC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room" }, -/obj/structure/chair/sofa/bench/tram/solo, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"pfg" = ( -/obj/structure/barricade/wooden, -/turf/open/misc/asteroid, -/area/station/asteroid) -"pfp" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pfv" = ( -/obj/machinery/shower/directional/west, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/obj/effect/turf_decal/siding/red/corner{ + dir = 4 }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"pfV" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/engineering/main) -"pgd" = ( -/obj/structure/chair{ - dir = 1; - name = "Prosecution" +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"mgR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"mha" = ( +/obj/machinery/porta_turret/ai, +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/box/red, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"pgk" = ( +/area/station/ai/satellite/interior) +"mhi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"pgm" = ( -/obj/machinery/button/door/directional/east{ - id = "Secure Storage"; - name = "Secure Storage Control" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/vending/wardrobe/engi_wardrobe, -/obj/effect/turf_decal/stripes/corner{ +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/starboard) +"mhP" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"pgv" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/item/storage/box/lights/mixed, -/obj/structure/rack, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"pgC" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Detective's Office"; - name = "Detective's Fax Machine" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"pgJ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"pgN" = ( -/obj/machinery/light/small/dim/directional/east, -/obj/structure/closet/crate/medical, -/obj/effect/spawner/random/medical/medkit, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"pgS" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"mid" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ - dir = 9 + dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"mii" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/checker, -/area/station/science/research) -"pgW" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"pha" = ( -/obj/structure/closet/crate/goldcrate, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/machinery/camera/motion/directional/south{ - c_tag = "Vault"; - network = list("vault") +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/vault) -"phi" = ( /obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"mij" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"phA" = ( -/obj/machinery/computer/exodrone_control_console{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/station/cargo/drone_bay) -"phG" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aiupload" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"phJ" = ( -/obj/structure/closet/secure_closet{ - name = "contraband locker"; - req_access = list("armory") - }, -/obj/effect/spawner/random/contraband/armory, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, /turf/open/floor/iron/dark, -/area/station/security/armory) -"phO" = ( -/obj/machinery/vending/wardrobe/chef_wardrobe, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"phP" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"phV" = ( -/obj/machinery/door/airlock/security{ - name = "Medbay Security Post" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/end{ - dir = 8 +/area/station/maintenance/port/aft) +"mis" = ( +/obj/structure/frame/machine, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/decal/cleanable/blood/oil, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"mit" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"pic" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "qm sorting disposal pipe" }, -/obj/item/radio/intercom/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/supply/qm_office, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/storage) -"pif" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/area/station/hallway/primary/starboard) +"miK" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4; + pixel_x = 24; + pixel_y = 8 }, -/obj/machinery/firealarm/directional/west, -/obj/machinery/light/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/plating/rust, +/area/station/security/prison/shower) +"miM" = ( +/obj/structure/chair, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/area/station/engineering/atmos/project) -"pih" = ( -/obj/machinery/power/solar{ - id = "forestarboard"; - name = "Fore-Starboard Solar Array" - }, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"piE" = ( -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"piF" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/storage) -"piS" = ( -/obj/structure/girder/displaced, -/obj/effect/turf_decal/sand/plating, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) -"pjk" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"pjl" = ( +"miS" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"pjn" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"pjt" = ( -/obj/structure/bed{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-entrance-left" }, -/obj/item/bedsheet/red{ - dir = 4 +/obj/machinery/door/airlock/security/glass{ + name = "Prison Wing" }, -/obj/effect/landmark/start/prisoner, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"pjw" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"pjE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"miW" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/turf_decal/delivery, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"mjc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/flashlight, +/obj/item/storage/toolbox/emergency{ + pixel_y = 5 + }, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"pjI" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/maintenance/port/greater) +"mjh" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/aft) +"mjn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"mjG" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/door_timer{ + id = "Cell 5"; + name = "Cell 5"; + pixel_x = -32 }, -/turf/open/floor/iron/stairs/left{ +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5"; + name = "Cell 5 locker" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/area/station/service/theater) -"pjL" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron, +/area/station/security/brig) +"mjU" = ( +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"pjN" = ( -/obj/structure/transit_tube/horizontal{ - dir = 2 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/lattice, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"pkl" = ( +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"mjW" = ( /turf/closed/wall, -/area/station/maintenance/solars/starboard/fore) -"pkn" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/area/station/cargo/miningdock) +"mkk" = ( +/turf/closed/wall/rust, +/area/station/hallway/secondary/entry) +"mkq" = ( +/obj/structure/table, +/obj/item/storage/briefcase{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"mkQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"pkt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table_frame, -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/blood/splatter, -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pkw" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"pkA" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/digital_clock/directional/west, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"pkN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"mle" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"pkP" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/loading_area/white{ - dir = 8 +/area/station/commons/fitness/recreation) +"mlj" = ( +/obj/structure/table, +/obj/item/storage/box/deputy, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/machinery/camera/directional/west{ + c_tag = "Warden's Office" }, -/obj/machinery/conveyor{ - dir = 8; - id = "sorter" +/obj/structure/reagent_dispensers/wall/peppertank/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/door/window/right/directional/south{ - name = "Crate Security Door"; - req_access = list("shipping") +/turf/open/floor/iron/dark, +/area/station/security/warden) +"mlm" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "chem_lockdown"; + name = "Chemistry Shutters" }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"pkR" = ( -/obj/structure/stairs/west, -/obj/structure/railing{ +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"mlv" = ( +/obj/structure/closet/secure_closet/hos, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/station/security/warden) -"pla" = ( -/obj/effect/landmark/start/cyborg, -/obj/structure/window/reinforced/spawner/directional/east, +/area/station/command/heads_quarters/hos) +"mlw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/recharge_floor, -/area/station/ai/upload/foyer) -"pld" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"plo" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineer AI Satellite Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/landmark/navigate_destination/minisat_access_ai, -/obj/effect/turf_decal/stripes/corner, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, -/turf/open/floor/iron/dark/small, -/area/station/engineering/transit_tube) -"plA" = ( -/turf/closed/wall/r_wall, -/area/station/security/office) -"plC" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"plH" = ( -/obj/machinery/button/door/directional/west{ - id = "cmoshower"; - name = "Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/effect/turf_decal/plaque{ + icon_state = "L7" }, -/obj/structure/curtain, -/obj/machinery/shower/directional/north, -/obj/item/soap, -/turf/open/floor/iron/freezer, -/area/station/command/heads_quarters/cmo) -"plV" = ( -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"mlx" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"plX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"pmp" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron, +/area/station/cargo/office) +"mlz" = ( +/obj/structure/table, +/obj/item/stack/medical/mesh, +/obj/item/stack/medical/suture, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/landmark/navigate_destination/chemfactory, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"pmC" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/machinery/wall_healer/directional/north, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"pmT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"pns" = ( -/obj/structure/cable, +/area/station/medical/medbay/lobby) +"mlB" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"mlC" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"mlD" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"mlH" = ( +/obj/effect/turf_decal/box/corners{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"pny" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"pnK" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"pnQ" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/area/station/cargo/storage) +"mlT" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/left/directional/north{ + name = "Inner Pipe Access"; + req_access = list("atmospherics") }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"pnS" = ( -/turf/closed/mineral/random/stationside/asteroid, -/area/station/asteroid) -"poe" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"pof" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"pog" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"poh" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 - }, -/area/station/maintenance/disposal/incinerator) -"poi" = ( -/turf/closed/wall, -/area/station/maintenance/department/cargo) -"poj" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/engineering/atmos) +"mma" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"poo" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/navigate_destination/bar, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/white{ dir = 8 }, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"pos" = ( -/obj/structure/table/wood, -/obj/item/pai_card, -/obj/item/pen/red, -/obj/item/pen/blue{ - pixel_x = 5; - pixel_y = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"poF" = ( /obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/obj/machinery/button/door/directional/south{ - id = "xenobio7"; - name = "pen 7 blast doors control"; - pixel_x = -6 - }, -/obj/machinery/button/door/directional/south{ - id = "xenobio8"; - name = "pen 8 blast doors control"; - pixel_x = 6 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"mmd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/science/xenobiology) -"poU" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/camera/directional/south{ + c_tag = "Autopsy Room"; + name = "detective camera" + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/detective, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/security/office) -"poV" = ( -/obj/effect/landmark/start/hangover, +/area/station/security/detectives_office) +"mmo" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/dresser, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/lobby) -"poZ" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ +/area/station/security/prison/safe) +"mmt" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mmu" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/west, +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"mmE" = ( +/obj/effect/turf_decal/siding/yellow{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/robotics/mechbay) -"ppb" = ( -/obj/structure/chair/comfy/brown{ - dir = 1; - name = "Chief Medical Officer" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"mmF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"ppk" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"ppp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"mmY" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"mnl" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"ppw" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"mno" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/power/energy_accumulator/grounding_rod/anchored, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/window/spawner/directional/south, -/obj/machinery/elevator_control_panel/directional/east{ - desc = "A small control panel used to move the kitchen dumbwaiter up and down."; - linked_elevator_id = "dumbwaiter_lift"; - name = "Dumbwaiter Control Panel"; - preset_destination_names = list("2"="Kitchen","3"="Hydroponics") +/area/station/engineering/supermatter/engine) +"mnE" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"ppz" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"mnG" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/medical/glass{ + name = "Pharmacy" }, +/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/warden) -"ppD" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/item/pickaxe/improvised, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"ppR" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/area/station/medical/pharmacy) +"mnK" = ( +/obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/chair/sofa/bench{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"mnO" = ( +/obj/item/radio/intercom/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/area/station/engineering/atmos/pumproom) -"pqd" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"pql" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"pqB" = ( -/obj/structure/chair/stool/directional/north, -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"mnR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron, +/area/station/security/office) +"mob" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"pqJ" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/ruin/space/has_grav/abandoned_warehouse) +"moc" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"mog" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"mol" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"mop" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"moz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"prc" = ( -/obj/machinery/field/generator, -/turf/open/floor/plating, -/area/station/engineering/storage) -"prg" = ( -/obj/structure/rack, -/obj/item/food/sandwich/peanut_butter_jelly, -/obj/effect/turf_decal/delivery/red, -/obj/item/toy/figure/roboticist, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/area/station/security/lockers) +"moD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Lab" }, -/turf/open/floor/iron/white/smooth_large, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"prh" = ( -/obj/effect/turf_decal/siding/purple, -/obj/machinery/door/firedoor/border_only{ +"moG" = ( +/obj/machinery/light_switch/directional/south, +/obj/structure/closet/secure_closet/security/engine, +/obj/item/crowbar, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"moK" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 +/obj/effect/decal/cleanable/ash, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"mpd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/area/station/science/research) -"prk" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/landmark/start/warden, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/item/kirbyplants/random, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"mpv" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/medical/pharmacy) +"mpF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"prr" = ( -/turf/closed/wall/r_wall/rust, -/area/station/command/corporate_showroom) -"prw" = ( -/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"mqa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Office" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/mapping_helpers/airlock/access/all/command/hop, +/obj/effect/landmark/navigate_destination/hop, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"mqn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"mqC" = ( +/turf/open/floor/iron, +/area/station/security/prison) +"mqF" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"prz" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/navigate_destination/hydro, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"prB" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"prI" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light_switch/directional/west, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"prS" = ( -/obj/structure/sign/departments/psychology/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/service/hydroponics) +"mqK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"mqU" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"prW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"prX" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"mrl" = ( +/turf/closed/wall, +/area/station/command/heads_quarters/cmo) +"mrt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mrz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/machinery/light/broken/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"mrB" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/door_timer{ + id = "Cell 6"; + name = "Cell 6"; + pixel_x = -32 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 6"; + name = "Cell 6 locker" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/machinery/light/directional/east, -/obj/item/kirbyplants/random, /turf/open/floor/iron, -/area/station/service/hydroponics) -"psi" = ( +/area/station/security/brig) +"mrI" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"psj" = ( -/obj/structure/sign/warning/vacuum/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/machinery/button/door/directional/east{ + id = "Arrival Shuttle Bay"; + name = "Arrival Shuttle Bay Toggle"; + pixel_y = 8; + req_access = list("command") }, -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 +/obj/machinery/modular_computer/preset/id, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/east{ + pixel_x = 24; + pixel_y = -3 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"pso" = ( -/obj/machinery/door/airlock/maintenance/glass, +/obj/machinery/camera/directional/east{ + c_tag = "Departures Checkpoint"; + name = "shuttle camera" + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/customs) +"mrR" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"psy" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet/crate, +/obj/item/vending_refill/snack{ + pixel_x = 4; + pixel_y = 4 }, +/obj/item/vending_refill/cola, +/obj/item/screwdriver, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"msb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/engineering/storage/tcomms) +"msL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 5 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"psF" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","engine") +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"msS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 6 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"psM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/plating, +/area/station/engineering/atmos) +"msW" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"psQ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/portable_atmospherics/pipe_scrubber, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"psT" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/ai/satellite/foyer) +"msY" = ( +/obj/structure/chair/pew/left{ dir = 8 }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"ptc" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"pth" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) +"msZ" = ( +/obj/structure/chair/office, +/obj/effect/turf_decal/siding/red{ dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"ptq" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"mtc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"pts" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/reagent_containers/cup/bottle/epinephrine{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/storage/box/rxglasses{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/stack/medical/wrap/gauze{ - pixel_x = 8 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ptP" = ( -/obj/machinery/door/firedoor, +/area/station/maintenance/starboard) +"mtq" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/research_director, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"mtr" = ( +/obj/structure/chair/office/light, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/corporate_dock) -"ptR" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/structure/noticeboard/directional/north{ - desc = "A memorial wall for pinning mementos upon."; - name = "memorial board" +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"mtw" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"mtA" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"ptX" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/box/red, +/obj/machinery/status_display/ai/directional/west, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"pui" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"pul" = ( -/obj/structure/table, -/obj/item/hfr_box/body/waste_output, -/obj/item/hfr_box/body/moderator_input, -/obj/item/hfr_box/body/fuel_input, -/obj/item/hfr_box/body/interface, -/obj/effect/turf_decal/stripes, -/obj/machinery/camera/autoname/directional/south, +/area/station/ai/satellite/chamber) +"mtI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"pum" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio7"; - name = "Xenobio Pen 7 Blast Door" +/area/station/security/eva) +"mtN" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/obj/machinery/door/airlock/research{ + name = "Genetics Lab" }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"puu" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/materials_market, -/turf/open/floor/iron, -/area/station/cargo/storage) -"pux" = ( -/obj/structure/cable, +/obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"puJ" = ( -/obj/machinery/dna_scannernew, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"puP" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-3" - }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"puQ" = ( -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"puS" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/vending/sustenance, -/turf/open/floor/iron, -/area/station/security/prison) -"puT" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "rdgene2"; + name = "Genetics Lab Shutters" }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"puV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/plating, +/area/station/science/genetics) +"mtV" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/port/greater) +"mtZ" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"puX" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"mua" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mug" = ( +/obj/machinery/telecomms/server/presets/service, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"mui" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"mun" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Brig" }, -/area/station/science/research) -"pve" = ( -/obj/structure/cable, -/obj/machinery/light/floor, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"muN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cardboard, +/obj/effect/spawner/random/maintenance/no_decals, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"mvm" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"mvz" = ( +/obj/machinery/door/airlock/research{ + name = "Ordnance Lab" }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 }, +/obj/machinery/door/firedoor/heavy, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance_storage, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"mvF" = ( +/obj/structure/chair/stool/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"pvo" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/clothing/ears/earmuffs{ - pixel_y = 7 - }, -/obj/item/radio/off{ - pixel_x = 4; - pixel_y = 3 - }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"pvp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "capshut"; - name = "shutter control"; - pixel_x = -8 - }, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth/wall_mounted/directional/south{ - pixel_x = 8; - pixel_y = -24 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"pvy" = ( -/obj/structure/window/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"pvG" = ( -/obj/machinery/telecomms/server/presets/science, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"pvT" = ( -/obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"pvX" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"mvW" = ( +/turf/open/floor/engine/plasma, +/area/station/engineering/atmos) +"mvX" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, +/turf/open/floor/iron/showroomfloor, /area/station/engineering/atmos) -"pwn" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/pill_bottle/mannitol, -/obj/item/reagent_containers/dropper{ - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"pwt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/pile{ - dir = 8 +"mwe" = ( +/obj/machinery/smartfridge, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"mwf" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "QM #2" }, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"pwx" = ( -/obj/machinery/vending/clothing, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/turf_decal/delivery, +/mob/living/basic/bot/mulebot, /turf/open/floor/iron/dark, -/area/station/commons/locker) -"pwE" = ( +/area/station/cargo/warehouse) +"mwj" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"mwn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Engineering Foyer" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/hallway) +"mwp" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 + dir = 4 }, -/obj/effect/turf_decal/box/red, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"pwO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/area/station/science/xenobiology) +"mwy" = ( +/obj/machinery/newscaster/directional/west, +/obj/machinery/airalarm/directional/north, +/obj/machinery/computer/accounting{ + dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"pwU" = ( -/obj/structure/fluff/iced_abductor, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"pwV" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/morgue) -"pwZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"pxh" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"mwA" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"mwG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"pxo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output{ - dir = 8 - }, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"pxu" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"pxM" = ( -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"pxR" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/medical/central) -"pya" = ( -/turf/open/floor/glass/reinforced/telecomms, -/area/station/ai/satellite/chamber) -"pyi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"pyo" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"pyq" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"pyx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"pyA" = ( -/obj/structure/broken_flooring/singular{ - dir = 4 - }, +/area/station/maintenance/starboard/aft) +"mwR" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"mxf" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/execution/transfer) +"mxh" = ( /obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/item/flashlight/lamp{ - pixel_x = -7; - pixel_y = 18; - start_on = 0 +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/cup/bottle/epinephrine{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/bottle/multiver{ + pixel_x = 7; + pixel_y = 12 }, -/obj/item/paper, -/obj/effect/spawner/random/bureaucracy/pen, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"mxo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pyB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/area/station/maintenance/starboard) +"mxx" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Engineering Foyer" }, -/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/engineering/hallway) +"mxH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"pyF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/security/brig) +"myc" = ( +/obj/structure/rack, +/obj/item/wirecutters{ + pixel_y = 5 }, -/turf/open/floor/iron, -/area/station/security/interrogation) -"pyH" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/item/circuitboard/machine/cyborgrecharger, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"pyK" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"pyO" = ( -/turf/open/openspace, -/area/station/maintenance/port/greater) -"pzo" = ( -/obj/vehicle/ridden/wheelchair{ - dir = 1 +/area/station/security/interrogation) +"myd" = ( +/obj/structure/mirror/directional/south, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"myg" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/machinery/light/cold/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"myp" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/garden) +"myS" = ( +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"myU" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 }, -/area/station/medical/exam_room) -"pzw" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/airless, -/area/station/hallway/secondary/exit/departure_lounge) -"pzx" = ( -/obj/machinery/iv_drip, -/obj/machinery/button/door/directional/west{ - id = "r1p"; - name = "Privacy Control"; - pixel_y = -6 - }, -/obj/machinery/button/door/directional/west{ - id = "r1"; - name = "Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 6; - specialfunctions = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"pzB" = ( -/obj/machinery/telecomms/server/presets/supply, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"pzC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/main) -"pzU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/security/prison/garden) +"mza" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"mzp" = ( +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"pAa" = ( -/obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"pAB" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/area/station/command/bridge) +"mzs" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wardrobe/hydro_wardrobe, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"mzB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/break_room) -"pAK" = ( -/obj/item/stack/cable_coil, -/turf/open/space/openspace, +/area/station/commons/fitness/recreation) +"mzI" = ( +/obj/structure/transit_tube/diagonal/crossing/topleft, +/turf/open/space/basic, /area/space/nearstation) -"pAP" = ( -/obj/effect/spawner/random/food_or_drink/seed{ - spawn_all_loot = 1; - spawn_random_offset = 1 - }, -/obj/effect/spawner/random/contraband/prison, -/obj/structure/closet/crate/hydroponics, -/obj/effect/turf_decal/siding/wood{ +"mAa" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/security/prison/garden) -"pBg" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/area/station/hallway/primary/aft) +"mAc" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"mAf" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/rack, -/obj/item/knife/combat/survival, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"pBk" = ( -/obj/machinery/power/tracker, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"mAj" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/aft) -"pBn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/computer/monitor{ dir = 8 }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/area/station/science/research) -"pBu" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Corporate Showroom" +/turf/open/floor/iron/dark, +/area/station/ai/satellite/maintenance/storage) +"mAH" = ( +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/storage/box/monkeycubes{ + pixel_x = 2; + pixel_y = 5 }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/item/storage/box/monkeycubes{ + pixel_y = 3 }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/siding/purple/corner{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"pBB" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "ext42" +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"mBm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"mBL" = ( +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = -5 }, -/turf/open/floor/engine, -/area/station/maintenance/port/lesser) -"pBC" = ( -/obj/structure/railing/corner/end{ - dir = 4 +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 5 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/project) -"pBJ" = ( -/obj/effect/turf_decal/box/white, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"pBN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/four, -/obj/machinery/light/small/dim/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"pBS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security) -"pBV" = ( -/obj/structure/closet/secure_closet/exile, -/obj/item/radio/intercom/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/gateway) -"pCd" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/item/geiger_counter, +/obj/item/geiger_counter, +/obj/structure/table, +/obj/structure/sign/warning/xeno_mining/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"mBS" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"pCf" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/bin, -/obj/effect/spawner/random/trash/botanical_waste, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"pCz" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, /turf/open/floor/iron, -/area/station/security/office) -"pCA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, +/area/station/command/bridge) +"mBW" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"mBX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"pCF" = ( -/obj/machinery/light/directional/south, -/obj/structure/chair/office{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"pCG" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"pCJ" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/edge{ - dir = 8 +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"mCg" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Morgue" }, -/area/station/hallway/secondary/exit/departure_lounge) -"pCK" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/medical/exam_room) -"pCO" = ( -/obj/machinery/vending/wardrobe/chap_wardrobe, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"pCT" = ( -/obj/machinery/door/poddoor/shutters{ - id = "secwarehouse"; - name = "Secure Warehouse Shutters" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pCX" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/machinery/light/warm/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"pDd" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/science/explab) -"pDe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry) -"pDs" = ( -/obj/structure/chair, -/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"pDu" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Boutique" - }, -/obj/effect/turf_decal/siding/wood{ +/area/station/medical/morgue) +"mCk" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/door/poddoor/shutters{ - id = "boutique"; - name = "Countertheft Shutters" +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/machinery/door/firedoor, +/area/station/hallway/primary/fore) +"mCm" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"mCs" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"pDx" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"mCt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"pDG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/airalarm/directional/east, /turf/open/floor/iron, -/area/station/security/office) -"pDP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 +/area/station/hallway/primary/starboard) +"mCu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/light/directional/north, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"pDQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pDU" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"mCE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/computer/atmos_control/nocontrol/master, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/security/warden) -"pEf" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/clothing/glasses/meson, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 +/area/station/engineering/atmos/storage/gas) +"mCF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"pEk" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mCO" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/newscaster/directional/south, +/obj/machinery/camera/autoname/directional/south{ + network = list("ss13","monastery") + }, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"mCT" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"mCV" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"pEH" = ( -/turf/closed/wall/rock/porous, -/area/station/cargo/miningoffice) -"pEO" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/spawner/random/structure/girder, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"pEP" = ( -/obj/effect/turf_decal/siding/purple/corner{ +/area/station/maintenance/disposal) +"mDj" = ( +/turf/closed/wall, +/area/station/science/research) +"mDD" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/abandoned_warehouse) +"mDM" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/light/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"pEZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pFa" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"pFd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/command/corporate_showroom) -"pFg" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/hallway) +"mDQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"pFl" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 +/turf/open/floor/engine, +/area/station/science/auxlab) +"mEg" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/prison/mess) +"mEt" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/item/storage/toolbox/electrical, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/storage) -"pFo" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") - }, -/obj/item/radio/intercom/directional/west, -/obj/machinery/computer/mechpad{ - dir = 1 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"mEH" = ( +/obj/effect/turf_decal/box/corners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"pFy" = ( -/obj/machinery/door/poddoor/preopen{ - id = "sealobs" +/area/station/cargo/storage) +"mER" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"pFC" = ( -/obj/structure/chair/sofa/bench/left{ +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light_switch/directional/west, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/components/tank/air/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"mEW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple{ dir = 8 }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"mFa" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 + dir = 4 }, -/obj/machinery/status_display/evac/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"pFE" = ( -/obj/machinery/camera/motion/directional/south{ - c_tag = "Secure - AI Upper External North"; - network = list("aicore") - }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"pFP" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/lawyer, +/area/station/maintenance/fore) +"mFb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"pGf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"mFt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"pGo" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"mFQ" = ( +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"mGj" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/engineering/hallway) +"mGo" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/belt/utility, +/obj/item/clothing/head/utility/welding, +/obj/item/clothing/glasses/welding, +/obj/structure/noticeboard/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"mGz" = ( +/obj/structure/table, +/obj/item/aicard, +/obj/item/ai_module/reset, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"mGG" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"pGq" = ( -/obj/machinery/vending/games, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"pGs" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/table/wood, -/obj/item/camera/detective{ - pixel_x = -6; - pixel_y = 5 +/area/station/security/processing) +"mGS" = ( +/obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/obj/item/storage/fancy/cigarettes{ - pixel_x = -4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"mHa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/item/taperecorder{ - pixel_x = 7; - pixel_y = 5 +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"mHc" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Office" }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"pGH" = ( -/obj/machinery/door/airlock/external{ - name = "Server Room" +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge-passthrough" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"mHd" = ( +/obj/machinery/ai_slipper{ + uses = 10 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"pGM" = ( -/obj/vehicle/ridden/wheelchair{ +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light_switch/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") - }, -/obj/item/radio/intercom/directional/east, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"mHe" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" }, -/area/station/medical/exam_room) -"pGO" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"pGS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +/area/station/service/library) +"mHf" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/service/chapel) +"mHm" = ( +/obj/effect/landmark/start/depsec/medical, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"pHr" = ( -/obj/item/pickaxe, -/obj/effect/turf_decal/stripes/asteroid/corner{ +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/medical) +"mHq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/radio/intercom/directional/south{ + freerange = 1; + frequency = 1447; + listening = 0; + name = "Private Channel" + }, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"mHu" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"pHv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/vending/tool, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"pHy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/brig) -"pHA" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/glass/reinforced, -/area/station/ai/satellite/foyer) -"pHP" = ( -/obj/effect/decal/cleanable/glass, +/area/station/hallway/secondary/exit/departure_lounge) +"mIe" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"pIa" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, /obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/storage) +"mIo" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pIk" = ( -/obj/structure/closet/crate/science{ - icon_state = "scicrateopen"; - opened = 1 +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"mIq" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Server Room" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/obj/item/tank, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"pIp" = ( -/obj/structure/railing{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) +"mIR" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"mIT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"pIF" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/right/directional/north{ - name = "Brig Control Desk"; - req_access = list("armory") +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"mIW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison) +"mIX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/cable/layer3, +/mob/living/basic/bot/secbot/pingsky, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"mJk" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "chemistry_shutters"; + name = "Chemistry Lobby Shutters" }, -/obj/machinery/door/window/right/directional/south, -/obj/structure/desk_bell, -/obj/machinery/flasher/directional/east{ - id = "control2" +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/medical/glass{ + name = "Pharmacy" }, -/turf/open/floor/plating, -/area/station/security/warden) -"pIN" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/teleporter) -"pIV" = ( -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"pJj" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "Supply Dock Loading Door" +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"mJo" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 8 }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Custodial"; + location = "Tools"; + name = "tools navigation beacon" }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/cargo/storage) -"pJk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/storage) -"pJp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos) -"pJt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/hallway/primary/central) +"mJA" = ( +/obj/structure/punching_bag, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"pJw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"pJF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"pJJ" = ( -/obj/machinery/computer/crew{ - dir = 1 +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"mJP" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Nitrogen Outlet" }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"pJL" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-157" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"pJN" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"mKv" = ( +/obj/structure/chair/comfy, +/obj/item/radio/intercom/command/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"pJU" = ( -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/iron/fifty, -/obj/item/clothing/glasses/welding, -/obj/item/disk/tech_disk{ - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/reagent_containers/dropper, -/obj/structure/table, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/white, -/area/station/science/lab) -"pKb" = ( -/obj/effect/spawner/random/trash/cigbutt{ - spawn_random_offset = 4; - spawn_scatter_radius = 1 +/turf/open/floor/iron, +/area/station/security/courtroom) +"mKw" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"mKC" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/ore_box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"pKg" = ( -/obj/machinery/computer/operating, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"pKA" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 +/area/station/maintenance/starboard) +"mKI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/turf/open/floor/iron/large, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"mKP" = ( +/obj/machinery/light/small/directional/east, +/turf/open/water/no_planet_atmos/deep, /area/station/service/hydroponics/garden) -"pKH" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/duct, +"mLb" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"pKI" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/science/research) -"pLd" = ( -/obj/machinery/door/airlock/security, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/warden) -"pLe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"pLj" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/rods/two, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"pLk" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 5 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"pLn" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/glass/airless, -/area/station/hallway/secondary/exit/departure_lounge) -"pLo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron, +/area/station/command/gateway) +"mLd" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"mLe" = ( +/obj/structure/sink/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery/theatre) -"pLx" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/mix) -"pLy" = ( -/obj/structure/toilet{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"mLE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"mLJ" = ( +/obj/machinery/ntnet_relay, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"mLN" = ( +/turf/closed/wall, +/area/station/maintenance/disposal/incinerator) +"mLP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"mMa" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/blood, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"mMb" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet{ + name = "suit closet" }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"pLA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"mMj" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/foyer) +"mMp" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry) -"pLB" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"mMv" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/station/solars/port/fore) +"mMy" = ( /turf/closed/wall/r_wall, -/area/space/nearstation) -"pLE" = ( -/obj/effect/turf_decal/sand/plating, +/area/station/security/execution/transfer) +"mMz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"pLM" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"pLN" = ( -/obj/structure/rack, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/food/grown/cannabis, -/obj/item/food/grown/cannabis, -/obj/item/storage/fancy/cigarettes/cigpack_cannabis, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"pLO" = ( -/obj/effect/turf_decal/siding/dark_blue/corner{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"mMB" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/engine) +"mME" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"mMJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"pLP" = ( -/turf/open/openspace, -/area/station/hallway/secondary/entry) -"pLW" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"pLX" = ( -/obj/machinery/modular_computer/preset/curator{ - dir = 8 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/engine/cult, -/area/station/service/library) -"pMo" = ( -/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"pMw" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"pMD" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/tile/neutral/full, +/area/station/maintenance/port/fore) +"mNm" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/execution/education) +"mNt" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/obj/machinery/camera/autoname/directional/south, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"pMG" = ( -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) -"pMJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/engineering/main) -"pMR" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"mNz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, -/turf/open/floor/iron/chapel{ - dir = 1 +/obj/machinery/door/airlock{ + name = "Bar Backroom" }, -/area/station/service/chapel) -"pMV" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom{ +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"mNT" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"pNa" = ( -/obj/machinery/door/window/left/directional/east, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"pNi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"pNk" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/port/fore) -"pNs" = ( -/obj/structure/cable, -/obj/effect/landmark/start/bitrunner, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"pNB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/turf/open/floor/iron, +/area/station/security/courtroom) +"mOa" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/plaques/kiddie/library{ + pixel_x = 32; + pixel_y = -32 }, +/obj/effect/landmark/blobstart, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"mOb" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"pNE" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + id_tag = "justicedoor"; + name = "Justice Chamber" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/obj/machinery/button/door/directional/west{ + id = "justicedoor"; + name = "Justice Door Lock"; + normaldoorcontrol = 1; + req_access = list("armory"); + silicon_access_disabled = 1; + specialfunctions = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"mOg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/cargo/sorting) -"pNI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/recharge_station, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"pNW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/chem_dispenser, +/area/station/engineering/atmos) +"mOt" = ( /obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"pOd" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"pOg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"pOi" = ( -/obj/structure/table, -/obj/item/clothing/head/utility/welding{ - pixel_x = 6; - pixel_y = 10 +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"mOz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/clothing/head/utility/welding{ - pixel_y = 7 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/item/clothing/head/utility/welding{ - pixel_x = -5; - pixel_y = 3 +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"mPo" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"pOv" = ( -/obj/structure/chair/pew{ - dir = 4 +/area/station/ai/satellite/maintenance/storage) +"mPC" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/airlock/engineering/glass{ + name = "Circuit Workshop" }, -/turf/open/floor/iron/chapel{ +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/turf/open/floor/plating, +/area/station/engineering/circuit_workshop) +"mPE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/area/station/service/chapel) -"pOw" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"mPM" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 9 +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/plasticflaps/kitchen, +/obj/machinery/door/airlock/medical{ + name = "Medical Cold Room" }, -/area/station/command/corporate_showroom) -"pOA" = ( -/obj/effect/spawner/random/trash/janitor_supplies, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"pOP" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/medical/coldroom) +"mPP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"pOQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"mPS" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"mPZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, +/turf/open/floor/iron, +/area/station/cargo/sorting) +"mQe" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) -"pPv" = ( -/obj/effect/turf_decal/box/corners{ +"mQk" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/atmos) -"pPx" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/area/station/construction/mining/aux_base) +"mQu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"mQB" = ( +/obj/effect/turf_decal/arrows/white, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"pPy" = ( +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"mQN" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer2, -/obj/machinery/meter/layer4, -/obj/machinery/light/small/directional/south, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"pPY" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white/textured_half, -/area/station/science/xenobiology) -"pQl" = ( -/obj/effect/spawner/random/structure/closet_private, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"pQm" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ - dir = 1 +/area/station/service/bar/atrium) +"mQR" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ +/obj/structure/table, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"pQn" = ( -/obj/structure/cable, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"pQs" = ( -/obj/structure/rack, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 +/obj/item/multitool/circuit{ + pixel_x = 7 }, -/obj/effect/spawner/random/maintenance, -/obj/item/electronics/airlock, -/obj/item/electronics/apc, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"pQt" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Engineering Security Post" +/obj/item/multitool/circuit, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"mQS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"mQW" = ( +/obj/effect/turf_decal/box/white{ + color = "#EFB341" }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, /turf/open/floor/iron, -/area/station/security/checkpoint/engineering) -"pQz" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, +/area/station/maintenance/disposal/incinerator) +"mQY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"pQE" = ( -/obj/structure/dresser, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"pQM" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/machinery/smartfridge/food, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pQN" = ( -/obj/structure/chair/stool/directional/east, -/turf/open/floor/wood, -/area/station/commons/lounge) -"pRk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"mRf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"pRl" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/warden) -"pRm" = ( -/obj/structure/cable/layer3, -/obj/machinery/button/elevator/directional/south{ - id = "aisat"; - pixel_x = 8; - pixel_y = -25 +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"mRi" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/stock_parts/micro_laser{ + desc = "A tiny laser used in certain devices. A lil left."; + pixel_x = -6 }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = -6; - pixel_y = -40 +/obj/item/stock_parts/micro_laser{ + desc = "A tiny laser used in certain devices. A lil left."; + pixel_x = -6 }, -/obj/machinery/camera/autoname/directional/south{ - network = list("aicore") +/obj/item/stock_parts/micro_laser{ + desc = "A tiny laser used in certain devices. A lil left."; + pixel_x = -6 }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/chamber) -"pRq" = ( -/obj/effect/turf_decal/trimline/yellow/arrow_cw{ - dir = 9 +/obj/item/stock_parts/micro_laser{ + desc = "A tiny laser used in certain devices. A lil left."; + pixel_x = -6 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"pRG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/item/stock_parts/micro_laser{ + desc = "A tiny laser used in certain devices. A lil left."; + pixel_x = -6 }, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"pRH" = ( -/obj/structure/disposalpipe/segment, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/capacitor{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/sign/poster/contraband/random/directional/east, /obj/effect/turf_decal/tile/neutral{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"pRM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"pRN" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"mRm" = ( +/obj/structure/table, +/obj/item/toy/cards/deck{ + pixel_x = -9 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"pRY" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 +/obj/item/storage/dice{ + pixel_x = -8; + pixel_y = 11 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"pSb" = ( -/obj/structure/railing{ - dir = 8 +/obj/item/storage/photo_album/prison{ + pixel_x = 8; + pixel_y = -3 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/end{ - dir = 1 +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"mRo" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"pSf" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"pSk" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/command/gateway) -"pSm" = ( -/obj/machinery/fax{ - fax_name = "Law Office"; - name = "Law Office Fax Machine" - }, -/obj/structure/table/wood, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"pSK" = ( -/obj/machinery/door/airlock/external{ - name = "Departure Lounge Airlock"; - space_dir = 2 +/area/station/security/courtroom) +"mRp" = ( +/turf/closed/wall/rust, +/area/station/security/evidence) +"mRF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/stripes/end, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"pSM" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/engineering/break_room) -"pSN" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"pSO" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/transit_tube) -"pSS" = ( -/obj/machinery/conveyor/auto{ - dir = 9; - id = "bridgedeliver" +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/window/brigdoor/left/directional/east{ + name = "Justice Windoor"; + req_access = list("armory") }, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"pSV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/welded, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"pTn" = ( -/obj/structure/kitchenspike, -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 +/obj/machinery/door/window/brigdoor/right/directional/west{ + name = "Justice Windoor"; + req_access = list("armory") }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"pTt" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "justiceshutter"; + name = "Justice Shutter" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"pTx" = ( -/obj/machinery/light/small/dim/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"pTC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"pTJ" = ( +/area/station/security/execution/education) +"mRV" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"pTO" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"pTP" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/loading_area, -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/area/station/maintenance/aft) +"mSf" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/engineering/transit_tube) -"pTU" = ( -/obj/machinery/conveyor{ - dir = 9; - id = "garbage" +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"mSj" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/light/small/directional/south, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"pUa" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - filter_type = list(/datum/gas/nitrogen) +/area/station/maintenance/fore) +"mSm" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"pUj" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"pUr" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"pUt" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Distro Staging to Filter" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"pUy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/library) -"pUE" = ( -/obj/structure/table, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/wrench, -/obj/item/stack/cable_coil, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"pUG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"pUH" = ( -/obj/machinery/holopad{ - pixel_x = 1 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"pUJ" = ( -/obj/machinery/light/warm/directional/north, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"pUW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"pUY" = ( -/obj/structure/rack, -/obj/item/paper_bin/construction, -/obj/item/airlock_painter, -/obj/item/rcl/pre_loaded, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/textured, -/area/station/commons/storage/art) -"pVd" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/structure/railing, -/turf/open/floor/carpet, -/area/station/service/theater) -"pVq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"pVx" = ( -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"pVB" = ( -/obj/structure/lattice, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 9 - }, -/turf/open/misc/asteroid, -/area/station/hallway/primary/starboard) -"pVC" = ( -/obj/machinery/computer/station_alert, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"pVG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1 +/obj/machinery/camera/directional/east{ + c_tag = "Incinerator Entrance"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 1 +/obj/item/hfr_box/body/fuel_input, +/obj/item/hfr_box/body/interface, +/obj/item/hfr_box/body/moderator_input, +/obj/item/hfr_box/body/waste_output, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"pWa" = ( -/obj/machinery/light/directional/west, -/obj/structure/table, -/obj/item/food/candy_trash/nicotine, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"pWg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pWh" = ( -/obj/machinery/computer/security/telescreen/interrogation/directional/east, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/security/interrogation) -"pWn" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ +/area/station/maintenance/disposal/incinerator) +"mSq" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/command/meeting_room) -"pWr" = ( -/obj/effect/landmark/start/chemist, -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"pWw" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"pWB" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/area/ruin/space/has_grav/abandoned_warehouse) +"mSu" = ( +/obj/structure/table, +/obj/machinery/light/directional/west, +/obj/item/clipboard, +/obj/item/airlock_painter{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/breakroom) -"pWC" = ( -/obj/machinery/photocopier/prebuilt, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +/obj/item/airlock_painter, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"pWE" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"pWG" = ( -/obj/effect/turf_decal/stripes/corner{ +/turf/open/floor/iron/dark, +/area/station/engineering/hallway) +"mSC" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, +/obj/machinery/duct, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"pWL" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 10 +"mSE" = ( +/obj/machinery/door/airlock/grunge{ + name = "Crematorium" }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"mSM" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"pWP" = ( -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"pWR" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"pWW" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, +/area/station/engineering/atmos/storage/gas) +"mST" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"mTk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/security/warden) -"pXn" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, -/obj/machinery/vending/cigarette, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/command/meeting_room) -"pXp" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - id = "neverstopgambling" + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"pXr" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"mTz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"mTJ" = ( +/obj/structure/toilet, +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/contraband/prison, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/vault, +/area/station/security/prison/shower) +"mTK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 5 }, -/turf/open/floor/iron, -/area/station/security/interrogation) -"pXs" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"pXA" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/floor/broken, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"mTM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"pXB" = ( -/obj/structure/sign/painting/library_secure{ - pixel_y = -32 +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"mUp" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/service/library) -"pXC" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/structure/window/spawner/directional/north, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pXL" = ( -/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ - name = "Port To Turbine" +/obj/structure/chair/office{ + dir = 8 }, -/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"mUs" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/abandoned_warehouse) +"mUA" = ( +/obj/effect/decal/cleanable/chem_pile, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"pXS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"pXV" = ( -/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron, +/area/station/security/prison) +"mUT" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"pXX" = ( -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/machinery/computer/quantum_console, +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"pYu" = ( +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"mVf" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"pYw" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/stool/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"mVh" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"mVo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"pYE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"pYF" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, +/area/station/engineering/hallway) +"mVu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/shaft_miner, /obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"pYM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/security/prison/garden) -"pYX" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"pYY" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/area/station/cargo/miningdock) +"mVL" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/box/bodybags{ + pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/locker) -"pZj" = ( -/obj/structure/toilet{ - dir = 1 +/obj/item/storage/medkit/regular{ + empty = 1; + name = "First-Aid (empty)" }, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"pZG" = ( -/turf/open/floor/iron/dark/textured_half, -/area/station/science/xenobiology) -"pZH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"pZK" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{ - name = "Burn Chamber Exterior Airlock" +/obj/item/storage/medkit/regular{ + empty = 1; + name = "First-Aid (empty)" }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/item/storage/medkit/regular{ + empty = 1; + name = "First-Aid (empty)" }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"pZP" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"qad" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/turf/open/openspace, -/area/station/science/xenobiology) -"qaz" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/brig/entrance) -"qaE" = ( -/obj/effect/landmark/start/janitor, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/janitor) -"qaF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/stack/package_wrap, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/machinery/camera/directional/north{ + c_tag = "Robotics Lab"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/effect/turf_decal/siding/white/corner, -/turf/open/floor/iron/half, -/area/station/service/hydroponics/garden) -"qaI" = ( -/obj/structure/chair{ +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"mVP" = ( +/obj/effect/turf_decal/arrows, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south{ - pixel_x = -10 - }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"qaO" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"qaS" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qaV" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/barricade/wooden, -/obj/machinery/light/floor, +/area/station/cargo/warehouse) +"mWg" = ( +/obj/effect/turf_decal/bot, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qbd" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 5 +/area/station/maintenance/port/aft) +"mWn" = ( +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"qbk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/greenglow/filled, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"qbA" = ( -/obj/structure/cable, +/area/station/engineering/gravity_generator) +"mWq" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"qbN" = ( -/turf/open/floor/iron/textured, -/area/station/security/courtroom) -"qbW" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 }, +/area/station/hallway/primary/port) +"mWy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison) +"mWM" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"mWR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/security) -"qbZ" = ( -/obj/machinery/component_printer, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/random/directional/south, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 +/area/station/hallway/primary/central) +"mWS" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"qcQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/plating, +/area/station/science/robotics/lab) +"mWV" = ( +/obj/structure/sign/warning/pods, +/turf/closed/wall, +/area/station/maintenance/port/aft) +"mWZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/structure/cable, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/abandoned_warehouse) +"mXI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"qcS" = ( -/obj/structure/table, -/obj/item/storage/box/chemimp{ - pixel_x = 6; - pixel_y = 19 +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/storage/box/handcuffs{ - pixel_x = -6; - pixel_y = 19 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/item/storage/box/flashbangs{ - pixel_x = 6; - pixel_y = 1 +/area/station/hallway/primary/central) +"mXM" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/storage/box/trackimp{ - pixel_x = -6; - pixel_y = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"mYv" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 +/turf/open/floor/glass/reinforced, +/area/station/service/chapel/monastery) +"mYV" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"qcU" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"qdc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/station/medical/medbay/lobby) +"mYX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/chapel) -"qdl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"qdo" = ( /obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"mZb" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"qdt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"mZn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/effect/spawner/random/entertainment/money_large, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"mZz" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"mZF" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"mZK" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"mZO" = ( +/obj/structure/chair, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/commons/locker) -"qdA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/area/station/commons/fitness/recreation) +"mZR" = ( +/obj/machinery/door/airlock/maintenance/external{ + name = "Transit Intersection" }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qdR" = ( -/obj/structure/table/wood, -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - start_on = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/carpet, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"mZS" = ( +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, /area/station/service/chapel) -"qdV" = ( -/turf/open/openspace, -/area/station/engineering/atmos/upper) -"qdW" = ( +"mZT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/turf/closed/wall/rust, +/area/space/nearstation) +"mZW" = ( +/turf/closed/wall/r_wall, +/area/station/service/bar/atrium) +"nam" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"nan" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/main) +"nas" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured, -/area/station/cargo/miningoffice) -"qeg" = ( -/obj/machinery/pdapainter/security, -/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/components/tank/air/layer4, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"qej" = ( -/obj/structure/rack, -/obj/item/flashlight, -/obj/item/clothing/gloves/color/fyellow, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = -3; - pixel_y = 3 +/area/station/maintenance/fore) +"naw" = ( +/obj/machinery/light/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/wiki/engineering_construction{ - pixel_x = 3; - pixel_y = -3 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/airlock_painter, -/obj/item/crowbar, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/north, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"qen" = ( -/obj/machinery/computer/upload/borg{ +/area/station/hallway/primary/aft) +"nax" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/fore) +"naC" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Medbay Lobby"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"qeo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"naG" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"qez" = ( -/obj/structure/cable, -/obj/structure/ladder, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"qeA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 10 +/obj/structure/railing{ + dir = 8 }, -/area/station/command/corporate_dock) -"qeN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/landmark/start/hangover, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"qeP" = ( -/obj/structure/frame/machine, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"qeW" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"naK" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"qfr" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/science/research) -"qfu" = ( -/obj/machinery/door/window/left/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"naQ" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"qfB" = ( -/turf/closed/wall, -/area/station/medical/pharmacy) -"qfJ" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/structure/table/wood/fancy/orange, -/obj/item/flashlight/lamp, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"qgc" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/area/station/engineering/supermatter/room) +"naY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination/techstorage, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"qgd" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"nbg" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/medical/office) +"nbn" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/structure/grille/broken, +/obj/item/wallframe/apc, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ +/turf/open/floor/plating, +/area/station/maintenance/aft) +"nbu" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/status_display/ai/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Bridge Starboard"; + name = "command camera" + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"qgn" = ( /obj/effect/turf_decal/tile/neutral{ - dir = 1 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"qgy" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/railing/corner, -/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/station/command/bridge) +"nby" = ( +/turf/closed/wall/r_wall, +/area/station/security/courtroom) +"nbC" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/item/radio/intercom/prison/directional/south, /turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"qgA" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/table, -/obj/item/dest_tagger{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/item/stamp/granted{ - pixel_x = 5; - pixel_y = 12 - }, -/obj/item/paper_bin/bundlenatural{ - pixel_x = -14; - pixel_y = -3 +/area/station/security/prison/mess) +"nbH" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/radio/intercom/directional/east, +/obj/machinery/camera/directional/north{ + c_tag = "Secure tech_storage"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/item/stamp/denied{ - pixel_x = -5; - pixel_y = 12 +/turf/open/floor/engine, +/area/station/engineering/storage/tech) +"nbI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"qgD" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"qgE" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"qgK" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/kirbyplants/random, +/area/station/hallway/primary/aft) +"nbJ" = ( +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security) -"qgY" = ( +/area/station/security/courtroom) +"nbO" = ( +/obj/structure/table, /obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"qhg" = ( +/obj/item/food/sausage, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"nbR" = ( +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/autoname, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"nbU" = ( /obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"nbZ" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/emergency_closet) -"qhm" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"qhu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"ncj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qhw" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/obj/machinery/space_heater, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"qhG" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"qhP" = ( -/turf/closed/wall/r_wall, -/area/station/security/execution/education) -"qhS" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +"ncz" = ( +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"ncB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"qia" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"qic" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"qie" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/security) -"qif" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qih" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/closet/radiation, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"qii" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_edge{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"ncC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/area/station/science/research) -"qil" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/item/kirbyplants/random, -/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"ncH" = ( /turf/open/floor/iron, -/area/station/hallway/primary/central) -"qio" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/cargo/storage) +"ncQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"ncS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"qir" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/maintenance/department/electrical) +"ncT" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"ndz" = ( +/obj/machinery/smartfridge/extract/preloaded, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"ndP" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/disposal/bin, -/obj/machinery/light/small/dim/directional/west, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron, -/area/station/security/warden) -"qiu" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"ndS" = ( +/obj/effect/turf_decal/loading_area{ dir = 4 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"qiJ" = ( -/obj/machinery/computer/mech_bay_power_console{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"ndT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"nec" = ( +/obj/effect/turf_decal/arrows/white{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, -/area/station/security/mechbay) -"qjc" = ( +/area/station/maintenance/disposal/incinerator) +"nep" = ( /obj/structure/cable, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" +/obj/machinery/modular_computer/preset/command, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"nes" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"nex" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Courtroom" }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"qjk" = ( -/obj/structure/broken_flooring/singular/directional/south, -/turf/open/space/openspace, -/area/space/nearstation) -"qjp" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/spawner/directional/north, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"qjw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"qjU" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "soup"; - name = "Radiation Chamber Shutters" +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"qjW" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/siding/brown{ - dir = 5 +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/light/warm/directional/south, -/turf/open/floor/iron, -/area/station/commons/lounge) -"qjY" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"qka" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/lawyer, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"qkc" = ( +/area/station/security/courtroom) +"neJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"qkv" = ( -/obj/machinery/door/airlock/public{ - name = "Jim Norton's Quebecois Coffee" +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "chem-passthrough" }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"qkw" = ( -/obj/machinery/computer/mecha{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"qkC" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/button/door/directional/south{ - id = "abrobo"; - name = "Shutter Control" +/area/station/maintenance/port/greater) +"nfa" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/rack, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/flashlight/seclite, -/obj/item/screwdriver, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) -"qlc" = ( -/obj/effect/spawner/random/structure/chair_comfy{ +"nfd" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall, +/area/station/cargo/storage) +"nfe" = ( +/obj/machinery/mecha_part_fabricator, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"nfD" = ( +/obj/structure/spirit_board, +/obj/machinery/light/very_dim/directional/south, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"nfI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"nfN" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/rnd_secure_all, +/obj/machinery/light/small/directional/south, +/obj/machinery/status_display/shuttle{ + pixel_y = -32 + }, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/engineering/storage/tech) +"nfR" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid, +/area/space/nearstation) +"nfX" = ( +/turf/closed/wall/r_wall, +/area/station/science/server) +"nfY" = ( +/turf/closed/wall, +/area/station/command/heads_quarters/qm) +"ngg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/security/brig) +"ngi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"qlh" = ( -/obj/structure/falsewall, +/area/station/science/research) +"ngl" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"qlE" = ( -/obj/structure/fence/post{ - dir = 8 +/area/ruin/space/has_grav/abandoned_warehouse) +"ngF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"ngI" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron, +/area/station/security/prison) +"ngT" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/catwalk_floor, -/area/station/cargo/storage) -"qlG" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"ngV" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "mining" }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"ngW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"nhc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table_frame, +/obj/machinery/camera/directional/north{ + c_tag = "Incinerator"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/area/station/science/breakroom) -"qlO" = ( -/obj/structure/table, -/obj/item/stock_parts/capacitor, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/broken_flooring/side/directional/south, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"qmc" = ( -/obj/machinery/disposal/bin, +/area/station/maintenance/disposal/incinerator) +"nhd" = ( +/obj/machinery/flasher/directional/north{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/chamber) +"nho" = ( +/obj/structure/closet/emcloset, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 5 }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"nhy" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/backpack/satchel/science, +/obj/item/analyzer, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"qmf" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"qmg" = ( -/obj/structure/table/wood, -/obj/item/stock_parts/power_store/cell/crap, -/obj/item/clothing/head/collectable/hop{ - name = "novelty HoP hat" +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"nhz" = ( +/obj/structure/sign/departments/security/directional/east, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"nhO" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"qml" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"qmn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/landmark/start/atmospheric_technician, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/main) -"qmo" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/station/engineering/atmos) +"nhZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"nie" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/station/maintenance/disposal/incinerator) +"nig" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/landmark/event_spawn, +/turf/open/misc/asteroid, +/area/space/nearstation) +"nim" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/structure/chair/stool/directional/south, /obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"qmp" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy/paper{ - loot = list(/obj/item/paper = 20, /obj/item/paper/crumpled = 2, /obj/item/paper/crumpled/muddy = 2, /obj/item/paper/construction = 1, /obj/item/paper/carbon = 1); - pixel_y = 5; - spawn_loot_count = 6; - spawn_random_offset = 3 - }, -/obj/item/stamp/granted, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"qms" = ( +/obj/effect/landmark/navigate_destination/incinerator, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"niy" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/box/white, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"niQ" = ( /obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/obj/machinery/door/firedoor, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/hallway/secondary/command) -"qmJ" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/sign/poster/greenscreen/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/station/maintenance/department/bridge) +"njd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"qmU" = ( -/obj/item/radio/intercom/command/directional/west, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"qmY" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron, +/area/station/command/bridge) +"njf" = ( +/obj/machinery/door/airlock/medical{ + id_tag = "Unit_3"; + name = "Unit 3" }, -/obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qnh" = ( -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"qnm" = ( -/obj/structure/urinal/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"qnq" = ( -/obj/structure/railing{ +/area/station/commons/toilet/restrooms) +"njL" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"njT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"qnQ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/robotics/lab) -"qob" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"nkd" = ( /obj/structure/table, -/obj/item/stock_parts/micro_laser{ - pixel_x = -6; - pixel_y = 4 +/obj/item/storage/briefcase, +/obj/item/clothing/neck/tie/red, +/obj/item/clothing/head/hats/bowler{ + pixel_y = 8 }, -/obj/item/stock_parts/micro_laser{ - pixel_x = -2; - pixel_y = 2 +/obj/item/cane, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/commons/locker) +"nkg" = ( +/obj/machinery/igniter/incinerator_atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"nki" = ( +/turf/closed/wall/rust, +/area/station/hallway/primary/fore) +"nkn" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"nkN" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance/bomb) +"nkQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" }, -/obj/item/stock_parts/micro_laser{ - pixel_x = 2 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"nkV" = ( +/obj/item/tgui_book/manual/infuser, +/obj/machinery/dna_infuser, +/obj/machinery/camera/directional/east{ + c_tag = "Genetics"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/item/stock_parts/micro_laser{ - pixel_x = 6; - pixel_y = -2 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/machinery/button/door/directional/east{ + id = "rdgene"; + name = "Primary Genetics Shutters Control"; + pixel_y = 6; + req_access = list("science") }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 +/obj/machinery/button/door/directional/east{ + id = "rdgene2"; + name = "Secondary Genetics Shutters Control"; + pixel_y = -6; + req_access = list("science") + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"nlA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"nlM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"qod" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/hallway/secondary/exit/departure_lounge) +"nlR" = ( +/turf/closed/wall/rust, +/area/station/medical/pharmacy) +"nmo" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"qof" = ( -/obj/structure/bed/medical{ +/turf/closed/wall/r_wall, +/area/station/maintenance/disposal/incinerator) +"nmq" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "packagereturn"; + name = "crate returns"; + pixel_x = 6; + pixel_y = 1 + }, +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/defibrillator_mount/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qog" = ( -/obj/effect/landmark/start/head_of_security, -/obj/machinery/shower/directional/south, -/obj/structure/curtain, -/obj/item/bikehorn/rubberducky/plasticducky, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/hos) -"qoj" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"qoB" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/bot, -/obj/item/analyzer, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/mix) -"qoC" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/motion/directional/east{ - network = list("minisat") +/obj/effect/turf_decal/box/corners, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/hallway/primary/starboard) +"nms" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Server Room" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"qoJ" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"qoO" = ( -/obj/structure/window/spawner/directional/south, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"qoQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 +/area/station/tcommsat/computer) +"nmu" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"qpb" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"nmR" = ( +/obj/machinery/modular_computer/preset/id{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"qpc" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("aicore") +/obj/effect/turf_decal/bot, +/obj/machinery/requests_console/directional/east{ + department = "Research Director's Desk"; + name = "Research Director's Requests Console" }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"qpj" = ( -/obj/machinery/turretid{ - control_area = /area/station/tcommsat/server; - name = "Telecomms turret control"; - req_access = list("tcomms") +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/closed/wall/r_wall, -/area/station/tcommsat/server) -"qpr" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"nny" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"nnA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/red{ + dir = 8 }, -/obj/effect/turf_decal/arrows/white{ +/obj/effect/landmark/start/depsec/supply, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"qpt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"qpD" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, +/area/station/security/checkpoint/supply) +"nnV" = ( /obj/structure/cable, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron, -/area/station/security/prison) -"qpO" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"qpR" = ( -/obj/structure/chair{ +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/teleporter) +"noj" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ dir = 8 }, -/mob/living/basic/mouse, -/obj/effect/mapping_helpers/mob_buckler, -/turf/open/floor/iron/checker, -/area/station/maintenance/department/medical) -"qpT" = ( -/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"nol" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"not" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"qqh" = ( -/obj/machinery/computer/apc_control{ +/area/station/hallway/primary/fore) +"noE" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"qqy" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/tcomms_all, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"qqz" = ( -/obj/structure/sign/departments/holy/directional/east, -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/exit/departure_lounge) -"qqB" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/light/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"qqH" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +"noM" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"noO" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/chair{ +/obj/structure/cable, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"npg" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Connector" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"npi" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/flasher/directional/east{ - id = "secentry" +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/disposalpipe/segment, +/area/station/science/robotics/mechbay) +"npo" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"qqL" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/directions/vault/directional/west, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"qqQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/hallway/primary/central/fore) +"npr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/commons/fitness/recreation) +"nps" = ( +/obj/structure/chair/pew/right{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/area/station/science/xenobiology) -"qrg" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"qrh" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"qrj" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/crayons{ - pixel_x = 2; - pixel_y = 2 +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"npx" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/service/theater) -"qrl" = ( -/turf/open/floor/wood, -/area/station/commons/lounge) -"qrm" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"qro" = ( -/obj/structure/table/glass, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 3 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"qrs" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/tile/brown{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) -"qrt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"qru" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench/right, -/obj/effect/landmark/start/prisoner, +"npy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/security/prison) -"qry" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, +/area/station/hallway/primary/starboard) +"npR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall, +/area/station/security/checkpoint/engineering) +"nqg" = ( +/obj/structure/closet/secure_closet/security/cargo, +/obj/effect/turf_decal/delivery, +/obj/item/crowbar, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"qrF" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/light/directional/south, +/area/station/security/checkpoint/supply) +"nqh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/cargo/storage) -"qrQ" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Xenobiology Maintenance" +/area/station/security/office) +"nqm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/grunge{ + name = "Morgue" }, +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"qrY" = ( -/obj/structure/railing{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"nqn" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/components/tank/air{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"nqs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" }, -/area/station/command/meeting_room) -"qsa" = ( -/obj/machinery/air_sensor/nitrous_tank, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"qsj" = ( +/turf/open/floor/engine, +/area/station/science/auxlab) +"nqx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/tank/oxygen{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"nqE" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"qsu" = ( -/obj/machinery/light/directional/north, -/obj/machinery/rnd/production/protolathe/department/engineering, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"nqR" = ( +/obj/structure/table, +/obj/item/clothing/under/rank/prisoner/skirt{ + pixel_x = -13; + pixel_y = 5 }, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"qsI" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/item/clothing/under/rank/prisoner/skirt{ + pixel_x = 9; + pixel_y = 5 + }, +/obj/item/clothing/under/rank/prisoner{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"nqX" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) +"nrh" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/area/station/command/gateway) -"qtc" = ( -/obj/effect/landmark/start/clown, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"qtg" = ( -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/service/janitor, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"nri" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"qtx" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"qtA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"nrv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"qtP" = ( +/area/station/hallway/primary/central) +"nrB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"nrF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"qtT" = ( -/obj/structure/safe, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/ballistic/shotgun/lethal, -/obj/item/stack/spacecash/c1000, -/obj/item/stack/spacecash/c1000, -/obj/item/stack/spacecash/c1000, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/vault) -"qug" = ( -/obj/machinery/door/airlock/mining{ - name = "Mining Office" +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"nrJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/effect/spawner/random/maintenance, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"nrN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/drone_dispenser, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"nrS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"nsl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"nsp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"quh" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, /turf/open/floor/wood, -/area/station/commons/lounge) -"qun" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/area/station/command/heads_quarters/hop) +"nsA" = ( +/turf/closed/wall/r_wall, +/area/station/commons/toilet/restrooms) +"nsM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/structure/grille/broken, +/obj/item/clothing/suit/hazardvest{ + pixel_x = 4; + pixel_y = 4 }, +/obj/item/clothing/mask/gas, /obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"nsQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"qup" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/vending/wardrobe/bar_wardrobe, -/obj/machinery/light_switch/directional/south, -/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"nsZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"qus" = ( -/obj/effect/turf_decal/siding/purple/corner{ +/area/station/service/chapel) +"ntb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"ntf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"quz" = ( -/obj/structure/tank_holder/anesthetic, -/obj/item/clothing/mask/breath/medical, /turf/open/floor/engine, -/area/station/medical/chemistry) -"quD" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"quI" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos) -"quM" = ( +/area/station/engineering/supermatter/room) +"ntn" = ( +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"quV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/siding/brown/corner{ + dir = 4 }, -/obj/structure/sign/painting/library{ - pixel_x = -32; +/obj/machinery/door/airlock/mining/glass{ + name = "Bitrunning Den" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/brown/end{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"qvA" = ( -/turf/closed/wall, -/area/station/medical/surgery) -"qvG" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qvK" = ( -/obj/machinery/computer/records/security{ +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"ntE" = ( +/obj/structure/sign/departments/security/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"qvN" = ( -/obj/structure/sink/directional/west, -/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"qvP" = ( -/obj/machinery/dna_scannernew, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/genetics) -"qvV" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/hallway/primary/aft) +"ntG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/machinery/light/small/directional/west, +/obj/item/stack/cable_coil{ + pixel_y = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"qwu" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/item/stack/rods/ten{ + pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"qwB" = ( -/obj/item/shovel/spade, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"qwG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/maintenance/department/electrical) +"ntH" = ( +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"qwM" = ( -/obj/structure/cable, +/area/station/maintenance/disposal/incinerator) +"ntR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qwQ" = ( -/obj/docking_port/stationary/mining_home{ +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/turf/open/space/openspace, -/area/space) -"qxo" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/station/security/processing) +"nuf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"nuh" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"nul" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"nuo" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"nuz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/security/office) +"nuF" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos) -"qxp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"qxr" = ( +/area/station/hallway/primary/starboard) +"nuL" = ( +/obj/structure/flora/rock/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"nuS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow, /obj/structure/cable, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"qxE" = ( -/obj/structure/frame/computer, -/obj/item/shard, -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/green/half/contrasted{ +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"qxG" = ( -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"nuZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"qxU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"nvq" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"qxW" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"nvA" = ( +/obj/machinery/suit_storage_unit/hos, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/security/processing) -"qxX" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Antechamber" +/area/station/command/heads_quarters/hos) +"nvE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "antesat" +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"nvH" = ( +/turf/closed/wall/r_wall/rust, +/area/station/medical/pharmacy) +"nvI" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"qyg" = ( -/obj/structure/railing{ - dir = 5 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"nvK" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security{ dir = 4 }, -/obj/structure/sign/poster/contraband/cc64k_ad/directional/west, -/turf/open/floor/iron/dark, -/area/station/cargo/bitrunning/den) -"qyq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"qyv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/structure/broken_flooring/pile, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qyz" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/chair/stool/directional/south, -/obj/machinery/airalarm/directional/west, +/obj/machinery/computer/security/telescreen/prison/directional/west, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"qyG" = ( -/obj/machinery/holopad/secure, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"qyI" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/light/dim/directional/south, +/area/station/security/warden) +"nvP" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qyK" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/commons/lounge) -"qyU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"nwf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"qzr" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/area/station/hallway/primary/starboard) +"nwh" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/ai_all, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/dark/corner{ +/area/station/engineering/storage/tech) +"nwp" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/engineering/atmos) -"qzu" = ( -/obj/machinery/vending/boozeomat, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"qzF" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "cargo" +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"nwE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"nwI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"qzZ" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port) -"qAh" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"qAo" = ( -/obj/structure/sign/directions/science/directional/south{ - dir = 4; - pixel_y = 10 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/structure/sign/directions/medical/directional/south{ - dir = 8; - pixel_y = -10 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/sign/directions/evac/directional/south{ - pixel_y = 0 +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nwN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 }, -/turf/closed/wall, -/area/station/hallway/secondary/exit/departure_lounge) -"qAp" = ( -/mob/living/basic/mining/goliath/ancient, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"qAI" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"qAS" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qAU" = ( -/obj/structure/sign/warning/explosives/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/vending/drugs, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"qBf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"nwP" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"nwW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/theater) -"qBj" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/science/auxlab) +"nwY" = ( /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/office) -"qBt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"qBu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"qBz" = ( /obj/effect/turf_decal/tile/yellow{ - dir = 4 + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/iron, +/area/station/engineering/hallway) +"nxa" = ( +/obj/machinery/door/airlock/external{ + name = "Science Escape Pod"; + space_dir = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/area/station/engineering/atmos/project) -"qBB" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/service_all, -/obj/effect/spawner/random/techstorage/arcade_boards, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"qBK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/landmark/navigate_destination/dockescpod2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"nxc" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "custodialwagon"; + name = "Custodial Bay" }, -/obj/structure/cable, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"nxi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "atmospherics sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qCd" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"nxj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/area/station/service/chapel) -"qCf" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qCo" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"nxx" = ( +/obj/structure/lattice/catwalk, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/space/basic, +/area/space/nearstation) +"nxY" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"nym" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"nyw" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/service/janitor, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"nyN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/computer/security/telescreen/research/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"nzz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"qCy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/structure/disposalpipe/trunk/multiz, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"nzD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"qCE" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"nzW" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"nAa" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_y = 5 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/iron/dark, +/area/station/security/brig) +"nAe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/area/station/security/execution/transfer) -"qCT" = ( -/obj/machinery/computer/rdconsole/unlocked, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"nAE" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qCU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"nAH" = ( /obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"qDb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"qDe" = ( +/area/station/service/hydroponics) +"nBc" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window{ - integrity_damage_max = 0.5 - }, /obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" + dir = 8; + id = "detective_shutters"; + name = "Detective's Office Shutter" }, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qDg" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/light/directional/north, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"qDl" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace/telecomms, -/area/station/ai/satellite/chamber) -"qDH" = ( -/obj/structure/chair/sofa/corner/maroon, -/obj/item/toy/plush/moth{ - name = "Mender Moff" - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"qDM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/box/red, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"qDP" = ( -/obj/structure/lattice/catwalk, +/area/station/security/detectives_office) +"nBd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"nBD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"qDQ" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/machinery/light_switch/directional/west, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"qDR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"nBE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"qDU" = ( -/obj/structure/table, -/obj/machinery/computer/records/medical/laptop, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/security/medical) -"qEf" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"nBZ" = ( +/obj/machinery/newscaster/directional/west, +/obj/structure/chair/comfy/teal{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"qEh" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"nCc" = ( +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/security) -"qEm" = ( +/area/station/hallway/primary/central) +"nCf" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"nCs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"qEn" = ( -/obj/structure/destructible/cult/item_dispenser/archives/library, -/obj/item/book/codex_gigas, -/turf/open/floor/engine/cult, -/area/station/service/library) -"qEr" = ( -/obj/machinery/light/floor, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"qEC" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"nCv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"nCA" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/fore) +"nCI" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"qEF" = ( -/obj/structure/punching_bag, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"qER" = ( -/obj/structure/chair/sofa/bench{ +/area/station/command/bridge) +"nCK" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/light/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"qET" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/engineering/atmos) +"nCL" = ( /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qEX" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/area/station/maintenance/port/lesser) +"nCU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/security) -"qFa" = ( -/obj/effect/turf_decal/siding/white, -/obj/item/ammo_casing/c357/spent, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"qFj" = ( +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"nDi" = ( +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"qFn" = ( -/obj/machinery/door/airlock/external/glass{ - name = "Supply Door Airlock" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"nDp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/meter/layer2, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/cargo/storage) -"qFA" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/area/station/maintenance/starboard) +"nDK" = ( +/obj/machinery/flasher/directional/east{ + id = "AI"; + name = "Meatbag Pacifier" }, -/obj/machinery/autolathe, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qFM" = ( -/obj/machinery/button/door/directional/north{ - id = "warehouse" +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"qFN" = ( -/obj/machinery/ai_slipper{ - uses = 10 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"nDM" = ( +/obj/machinery/button/door/directional/south{ + id = "ordnancemix"; + name = "Ordnance Lab Access"; + pixel_x = 24; + req_access = list("ordnance") }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"qFS" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"qGk" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/secondary/command) -"qGo" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "evashutter"; - name = "E.V.A. Storage Shutter" +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/command/eva) -"qGB" = ( -/obj/machinery/ticket_machine/directional/north, -/obj/structure/chair/sofa/bench, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"qGD" = ( -/obj/structure/table, /obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"nDS" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/item/stack/sheet/mineral/plasma, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"qGN" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/deck, -/obj/machinery/light/small/directional/north, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"qHd" = ( +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"nDX" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"nDZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/machinery/door/airlock/mining{ - name = "Cargo Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"qHf" = ( -/obj/item/storage/toolbox/emergency, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"nEe" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"qHi" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"qHp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"qHs" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"nEf" = ( +/obj/structure/lattice/catwalk, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"nEg" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/warm/directional/west, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"qHv" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/engineering/atmos) +"nEk" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id = "ordnancemix"; + name = "Ordnance Lab Shutters" }, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"qHx" = ( -/obj/machinery/porta_turret/ai{ +/obj/machinery/door/firedoor/heavy, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"qHE" = ( -/obj/effect/decal/cleanable/rubble, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"qHR" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/obj/effect/turf_decal/delivery, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"qIa" = ( -/obj/item/bedsheet/ian, -/obj/structure/bed, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"qIf" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"nEl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"qIo" = ( -/obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"qIr" = ( -/obj/structure/railing/corner, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/central/greater) -"qIt" = ( -/obj/effect/turf_decal/siding/purple, -/obj/machinery/light/dim/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"qIw" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/maintenance/starboard/aft) +"nEs" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"qIA" = ( -/obj/structure/girder, -/turf/open/misc/asteroid, -/area/station/asteroid) -"qIJ" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"qIP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qIS" = ( -/obj/machinery/cryo_cell, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"qJo" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/medical/medkit, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/light/cold/dim/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"qJs" = ( -/obj/structure/cable, -/obj/structure/railing{ +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"nEA" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, +/obj/item/kirbyplants/organic/plant10, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"nEQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"qJt" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/command/bridge) +"nEV" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"nFe" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"qJB" = ( -/obj/machinery/power/tracker, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port/fore) -"qJN" = ( -/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"nFg" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"nFm" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/science/server) -"qJR" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/light/directional/north, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/commons/storage/primary) +"nFu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Tool Storage" }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"nFy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/cargo/storage) -"qJV" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"qJX" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, +"nFN" = ( +/obj/machinery/igniter/incinerator_ordmix, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"nFT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"qKe" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/area/station/cargo/storage) +"nGt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/south, +/obj/structure/sign/departments/botany/directional/south, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"qKi" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"nGC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/area/station/holodeck/rec_center) -"qKj" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"nGE" = ( +/obj/structure/table/wood/fancy, +/obj/item/food/grown/poppy{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"nGH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"nGJ" = ( +/obj/effect/mapping_helpers/iannewyear, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"nGK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"nGM" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/engineering/atmos) -"qKH" = ( -/turf/open/floor/glass/reinforced, -/area/station/science/research) -"qLc" = ( -/obj/effect/landmark/blobstart, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +"nGT" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/left/directional/east{ + name = "Inner Pipe Access"; + req_access = list("atmospherics") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qLg" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ dir = 4 }, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qLk" = ( -/obj/structure/closet/bombcloset/security, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"qMd" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/landmark/start/bartender, +/area/station/engineering/atmos) +"nHd" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"qMf" = ( -/obj/structure/closet/crate/engineering, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/structure/sign/poster/official/random/directional/west, -/obj/item/storage/toolbox/emergency, -/obj/machinery/light_switch/directional/south{ - pixel_x = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/firealarm/directional/south{ - pixel_x = -6 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 10 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/area/station/command/emergency_closet) -"qMn" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"qMA" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres/delayed, /turf/open/floor/iron, -/area/station/cargo/sorting) -"qMC" = ( -/obj/structure/girder/displaced, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"qMI" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qMK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/commons/storage/primary) +"nHv" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/light/small/directional/north, +/obj/machinery/power/shieldwallgen, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"nHy" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nHC" = ( +/obj/structure/chair/office{ dir = 1 }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"qMV" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"nHO" = ( +/turf/closed/wall/rust, +/area/station/service/janitor) +"nHT" = ( +/obj/item/kirbyplants/organic/plant10, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"qNz" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/area/station/hallway/primary/port) +"nIg" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qNM" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"qNS" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, -/area/station/service/library) -"qOs" = ( -/obj/effect/spawner/random/structure/table_or_rack, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"qOz" = ( -/obj/structure/girder, +/area/station/maintenance/starboard) +"nIh" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"qOF" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/area/station/maintenance/aft) +"nIq" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/command/vault) +"nIw" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 2 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + desc = "Salt. From space oceans, presumably. A staple of modern medicine."; + pixel_x = -8; + pixel_y = 12 }, /turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"qOG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/item/airlock_painter/decal, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"qOP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/item/clothing/shoes/wheelys/rollerskates, -/obj/item/clothing/shoes/wheelys/rollerskates{ - pixel_y = 5 +/area/station/service/bar/atrium) +"nIx" = ( +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/warehouse) -"qOY" = ( +/area/station/hallway/primary/central/fore) +"nIR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/storage) -"qOZ" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" +/area/station/cargo/sorting) +"nIW" = ( +/obj/item/toy/plush/pkplush{ + desc = "Give HUG-E a hug!"; + name = "TH3R4PY-X09" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/flasher/directional/north{ + id = "IsolationFlash" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"qPp" = ( -/obj/structure/cable, +/area/station/security/prison/safe) +"nIX" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/holopad/secure, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"nJv" = ( +/obj/structure/filingcabinet, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"nJA" = ( +/obj/item/kirbyplants/organic/plant3, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"qPr" = ( -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood, -/area/station/service/theater) -"qPt" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, +/area/station/hallway/primary/central) +"nJF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"nJK" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, /area/station/science/robotics/lab) -"qPx" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ +"nJQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ dir = 9 }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"nJV" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"qPC" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"nKh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/storage) -"qPI" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/purple{ +/area/station/commons/locker) +"nKj" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 4 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"nKn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/machinery/coffeemaker, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"qPN" = ( -/obj/structure/disposalpipe/junction{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qPX" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nKr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 9 +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"nKu" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/door_timer{ + id = "Cell 2"; + name = "Cell 2"; + pixel_x = -32 }, -/area/station/command/meeting_room) -"qQm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2"; + name = "Cell 2 locker" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qQq" = ( -/obj/effect/landmark/carpspawn, -/obj/structure/lattice, -/turf/open/space/openspace, -/area/space/nearstation) -"qQK" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/service/theater) -"qRb" = ( +/area/station/security/brig) +"nKv" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"nKy" = ( +/obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"qRe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/structure/chair/office{ +"nKC" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/medical/virology) +"nKO" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) +"nKQ" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"nKV" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/loading_area{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"qRf" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/spawner/random/trash/bin, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"qRp" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"qRr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"nLm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"qRu" = ( -/obj/structure/chair/stool/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qRF" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"nLT" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 2 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"qRJ" = ( +/turf/open/space/basic, +/area/space) +"nLZ" = ( /obj/effect/turf_decal/stripes/corner{ - dir = 8 + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"qRK" = ( -/obj/machinery/power/terminal{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"nMj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/turf_decal/box, /obj/structure/cable, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"qRY" = ( -/obj/structure/railing, -/obj/structure/railing/corner{ - dir = 4 +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nMB" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"nMD" = ( +/turf/closed/wall/r_wall, +/area/station/security/mechbay) +"nMQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nNb" = ( /obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"qRZ" = ( -/turf/open/floor/iron/stairs/left{ - color = "#795C32"; - dir = 8 +/turf/open/space/basic, +/area/station/solars/starboard/aft) +"nNM" = ( +/obj/structure/cable, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"nNT" = ( +/obj/structure/sign/departments/custodian, +/turf/closed/wall, +/area/station/maintenance/fore) +"nNW" = ( +/obj/machinery/vending/wardrobe/robo_wardrobe, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"nOc" = ( +/obj/structure/bookcase/random/reference, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/wood, +/area/station/service/library) +"nOg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/checkpoint/engineering) +"nOp" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, /area/station/security/courtroom) -"qSb" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"qSg" = ( -/obj/machinery/newscaster/directional/north, +"nOI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"nOJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 10 }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"qSq" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"qSt" = ( -/obj/effect/turf_decal/siding/purple, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"qSG" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qTe" = ( -/obj/structure/railing{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"nOL" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/abandoned_warehouse) +"nOR" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"nPl" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"nPo" = ( +/obj/machinery/modular_computer/preset/id{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"nPw" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" }, -/turf/open/floor/iron, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/iron/dark, /area/station/engineering/lobby) -"qTA" = ( -/turf/closed/wall, -/area/station/security/warden) -"qTC" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"qTF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +"nPS" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/drone, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/eva) -"qTG" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/construction/mining/aux_base) +"nPT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"nPV" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/tank_holder, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/computer/security/mining, -/obj/machinery/requests_console/directional/north{ - department = "Security"; - name = "Security Requests Console" +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"nQk" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 4 }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"qTR" = ( -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"qTS" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"qUi" = ( -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/machinery/processor/slime, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"qUl" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"qUr" = ( -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qUx" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd","xeno") +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"nQo" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/openspace, -/area/station/science/xenobiology) -"qUz" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron/stairs/medium{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qUA" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/service/chapel) +"nQs" = ( +/obj/structure/chair/pew/left{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"qUT" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump/off/yellow/visible, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"nQx" = ( +/obj/effect/turf_decal/box, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"nQK" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/prison/shower) +"nQO" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "packagereturn"; + name = "crate return belt" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/plating, +/area/station/cargo/storage) +"nQX" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/wardrobe/mixed, +/obj/machinery/light/small/directional/south, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/engineering/atmos) -"qVe" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/machinery/light_switch/directional/east{ +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"nRC" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency{ pixel_y = 5 }, -/obj/machinery/firealarm/directional/east{ - pixel_y = -5 +/obj/item/stack/cable_coil, +/obj/item/wirecutters, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/west, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Recreation Arcade"; + name = "recreation camera" }, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"qVn" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"nSf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/east, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"nSh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/white{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"qVF" = ( -/turf/open/floor/plating/reinforced/airless, -/area/station/tcommsat/server) -"qVH" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"qVR" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"nSq" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, +/obj/item/crowbar/power, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/obj/structure/closet/crate/goldcrate/stocked, +/turf/open/floor/iron/dark, +/area/station/command/vault) +"nSy" = ( +/obj/structure/sign/warning/no_smoking, +/turf/closed/wall/rust, +/area/station/maintenance/port/greater) +"nSZ" = ( /obj/structure/table, -/obj/item/storage/toolbox/drone{ - pixel_x = -1; - pixel_y = -1 +/obj/item/storage/box/bodybags{ + pixel_x = 6 }, -/obj/item/storage/toolbox/drone{ - pixel_x = -1; - pixel_y = 11 +/obj/item/storage/box/gloves{ + pixel_x = -5 }, +/obj/machinery/light/directional/east, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"qVS" = ( -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/machinery/door/airlock/mining{ - name = "Cargo Bay" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/brown/fourcorners, +/area/station/service/chapel/funeral) +"nTd" = ( /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"nTo" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"nTr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qVV" = ( -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"qWh" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"qWq" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"qWs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"nTz" = ( +/obj/structure/table, +/obj/item/pen/fountain, +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = 6 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"qWt" = ( -/obj/machinery/smartfridge/extract/preloaded, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"qWu" = ( -/obj/effect/landmark/blobstart, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"qWB" = ( -/obj/machinery/porta_turret/ai, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/telecomms, -/area/station/ai/satellite/chamber) -"qWG" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/item/stamp/head/qm{ + pixel_x = 8; + pixel_y = 10 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) -"qWH" = ( -/obj/structure/cable/layer3, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"qWM" = ( -/obj/effect/landmark/start/roboticist, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/item/pen, +/obj/item/lighter{ + pixel_x = 11; + pixel_y = -7 }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"qWS" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ +/obj/item/cigarette/cigar{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/cigarette/cigar{ + pixel_x = 10; + pixel_y = -1 + }, +/obj/item/stamp/granted, +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) +"nTG" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"nTK" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"nUf" = ( +/obj/machinery/newscaster/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"nUi" = ( +/obj/structure/chair/sofa/right/maroon, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"nUZ" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"nVc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"qWT" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"qWW" = ( +/area/station/cargo/office) +"nVj" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"nVK" = ( /obj/structure/cable, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"qXa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"nWG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"qXj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"nWM" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"nWR" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"nWU" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"nWW" = ( +/obj/machinery/iv_drip, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"qXm" = ( /turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"qXp" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 +/area/station/medical/virology) +"nXp" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "Xenolab"; + name = "Containment Chamber Toggle"; + pixel_y = 4; + req_access = list("xenobiology") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/theater) -"qXy" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"nXu" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/security/checkpoint/customs) +"nXC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"qXB" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/security_all, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"qXE" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/sign/poster/official/wtf_is_co2/directional/north, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"qXF" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"qXK" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"qXN" = ( -/turf/open/floor/iron/stairs/right{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/area/station/hallway/secondary/exit/departure_lounge) -"qXY" = ( -/turf/open/misc/asteroid, -/area/station/cargo/miningoffice) -"qXZ" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/machinery/camera/motion/directional/south{ - c_tag = "AI Sat - Lower Left Exterior"; - network = list("minisat") - }, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/ai/satellite/foyer) -"qYe" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"qYm" = ( -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"nXW" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"qYn" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/warning/no_smoking/circle/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"qYt" = ( -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/atmos) -"qYL" = ( -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"qYV" = ( -/obj/effect/landmark/event_spawn, +/area/station/hallway/primary/aft) +"nYa" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"qYW" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"qZh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"qZo" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/cargo/bitrunning/den) -"qZr" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/science/genetics) -"qZB" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Holodeck - Fore"; - name = "holodeck camera" - }, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/station/holodeck/rec_center) -"qZR" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil{ - pixel_y = 3 - }, -/obj/item/stack/cable_coil{ - pixel_y = 3 - }, -/obj/item/multitool, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 +/area/station/command/heads_quarters/hos) +"nYo" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/engineering{ + pixel_y = 5 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/item/assembly/signaler{ + desc = "Used to remotely activate devices. Allows for syncing when using a secure signaler on another. Slightly scooted."; + pixel_x = 4; + pixel_y = 4 }, -/area/station/medical/chemistry/minisat) -"qZX" = ( -/obj/structure/sign/xenobio_guide/directional/north, -/obj/structure/tank_holder/extinguisher, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/white/textured_half, -/area/station/science/xenobiology) -"qZZ" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 +/obj/item/assembly/signaler{ + desc = "Used to remotely activate devices. Allows for syncing when using a secure signaler on another. Slightly scooted."; + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"rab" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rai" = ( -/turf/open/openspace, -/area/station/security) -"rak" = ( -/obj/structure/tank_holder/anesthetic, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/surgery, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"rap" = ( -/obj/structure/table/reinforced, -/obj/machinery/digital_clock/directional/east, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"ray" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, +/area/station/commons/storage/primary) +"nYp" = ( +/obj/machinery/telecomms/hub/preset, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"nYD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/north{ - id = "chemsat"; - name = "Shutters Control Button"; - req_access = list("plumbing") - }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"raz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"raA" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 10 - }, -/obj/machinery/button/door/directional/south{ - id = "bridgespace" - }, -/obj/item/aicard, -/obj/item/restraints/handcuffs, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"raR" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"raT" = ( -/obj/effect/turf_decal/tile/neutral{ +/area/station/maintenance/port/aft) +"nYP" = ( +/turf/closed/wall, +/area/station/hallway/primary/starboard) +"nZt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"raX" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "hopdesk" +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/under/rank/civilian/lawyer/black{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/spawner/structure/window/hollow/reinforced/end, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"raZ" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/obj/item/clothing/under/rank/civilian/lawyer/black, +/obj/item/clothing/neck/tie/black{ + pixel_x = 6 }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/misc/asteroid, -/area/station/science/research) -"rbe" = ( -/obj/effect/spawner/random/structure/grille{ - spawn_loot_chance = 76 +/obj/item/clothing/neck/tie/red, +/obj/item/clothing/mask/animal/small/jackal, +/obj/item/clothing/mask/animal/small/jackal, +/obj/machinery/button/door/directional/west{ + id = "bank"; + name = "Bank Vault Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"nZC" = ( +/obj/effect/turf_decal/bot, +/obj/structure/punching_bag, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/noticeboard/directional/east, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"rbg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs/medium{ +/area/station/maintenance/fore) +"nZE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/command/bridge) -"rbs" = ( -/obj/machinery/turretid{ - control_area = "/area/station/ai/upload/chamber"; - name = "AI Upload Turret Control"; - pixel_x = -28 +/turf/open/floor/iron, +/area/station/security/processing) +"nZF" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 9 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/window/brigdoor/left/directional/south, -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"rbt" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"rbw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"rbF" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"rbH" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 - }, -/turf/open/floor/iron/edge{ - dir = 8 +/area/station/engineering/atmos/storage/gas) +"nZG" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/button/door/directional/east{ + id = "Arrival Shuttle Bay"; + name = "Arrival Shuttle Bay Toggle"; + req_access = list("command") }, -/area/station/hallway/secondary/exit/departure_lounge) -"rce" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 +/obj/machinery/light/directional/east, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/entry) +"nZJ" = ( +/obj/machinery/door/poddoor{ + id = "Arrival Shuttle Bay"; + name = "Arrival Shuttle Bay" }, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"rcl" = ( -/turf/closed/wall/r_wall, -/area/station/security/execution/transfer) -"rcs" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"rcx" = ( -/obj/structure/cable, -/obj/structure/railing{ +/area/station/hallway/secondary/exit/departure_lounge) +"nZM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/red{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/research) -"rcy" = ( -/obj/machinery/light/small/broken/directional/north, -/obj/structure/table, -/obj/item/food/spaghetti/pastatomato, -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - pixel_x = -10; - pixel_y = 4; - start_on = 1 - }, -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - pixel_x = 10; - pixel_y = 4; - start_on = 1 - }, -/turf/open/floor/iron/checker, -/area/station/maintenance/department/medical) -"rcz" = ( -/obj/machinery/computer/security{ - dir = 4 +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"nZZ" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/chair/stool/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"oam" = ( +/turf/closed/wall, +/area/station/maintenance/disposal) +"oat" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rcG" = ( -/obj/machinery/mech_bay_recharge_port{ +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"oay" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 1 }, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/security/mechbay) -"rcH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/wrench, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"rcP" = ( -/obj/effect/turf_decal/stripes/asteroid/corner, -/turf/open/misc/asteroid, -/area/station/asteroid) -"rcR" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/modular_computer/preset/civilian{ +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"oaF" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/item/disk/computer/ordnance{ - pixel_x = 1 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"rdm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"rdn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_corner, -/area/station/science/xenobiology) -"rdE" = ( -/obj/machinery/chem_mass_spec, -/obj/machinery/light/cold/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"oaK" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, +/turf/open/space/basic, +/area/space/nearstation) +"oaU" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white/smooth_edge{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/area/station/medical/pharmacy) -"rdI" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/ai_module/reset, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"rdK" = ( -/obj/machinery/telecomms/processor/preset_one, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"rdP" = ( -/obj/machinery/chem_dispenser, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 +/area/station/hallway/primary/fore) +"obh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"obi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"obM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/grunge{ + name = "Restrooms" }, -/turf/open/floor/iron/white/smooth_corner{ +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"obU" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/latex, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/storage/box/monkeycubes, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/dropper, +/obj/structure/reagent_dispensers/wall/virusfood/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/medical/pharmacy) -"rdR" = ( -/obj/structure/broken_flooring/pile, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"oce" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"ocg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/tile/wood, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"rdU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, +/area/ruin/space/has_grav/abandoned_warehouse) +"ocn" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"rdX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"rdY" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L10" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"ocq" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"oct" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"ocv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"rec" = ( -/obj/effect/landmark/observer_start, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"reg" = ( -/obj/structure/lattice, /obj/structure/cable, -/obj/structure/transit_tube/curved/flipped{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"reh" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/junction{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"ocx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ocz" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"rej" = ( +/area/station/security/brig) +"ocE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"ocL" = ( /obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/commons/lounge) -"reD" = ( -/turf/closed/wall/r_wall, -/area/station/service/hydroponics) -"reG" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"reI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"ocO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"reK" = ( -/obj/effect/turf_decal/sand/plating, +/area/station/hallway/primary/central/fore) +"ocQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"reS" = ( -/obj/effect/turf_decal/siding/dark, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron, -/area/station/command/corporate_showroom) -"rfd" = ( -/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"ocS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"rfi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"rfQ" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"ocZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/line{ + dir = 6 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/sorting) -"rgp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"rgs" = ( -/obj/structure/holosign/barrier/atmos, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"rgy" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 +/area/station/service/hydroponics) +"odc" = ( +/obj/machinery/door/poddoor/preopen{ + id = "brigfrontdoor"; + name = "Front Security Blast Door" }, -/area/station/science/xenobiology) -"rgE" = ( -/obj/machinery/iv_drip, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"odd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/airlock/research/glass{ + name = "Slime Euthanization Chamber" }, -/area/station/medical/exam_room) -"rgF" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/station/solars/port) -"rgI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"rgN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white{ dir = 4 }, -/turf/open/floor/iron/large, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"odA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/starboard/aft) +"odE" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/pointy/style_random, +/turf/open/floor/grass, /area/station/service/hydroponics/garden) -"rgT" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +"oeF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"oeS" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rgU" = ( -/obj/machinery/deepfryer, -/obj/machinery/requests_console/auto_name/directional/west, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/firealarm/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"rgX" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/ai_all, -/turf/open/floor/circuit, -/area/station/engineering/storage/tech) -"rhc" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/security/warden) -"rhh" = ( -/obj/machinery/plumbing/sender{ +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"ofa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/grille/broken, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"ofe" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"ofg" = ( +/turf/closed/wall, +/area/station/medical/pharmacy) +"ofp" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_half{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"ofq" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/area/station/medical/chemistry/minisat) -"rhi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"rhn" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_x = -7; - pixel_y = 14; - start_on = 0 - }, -/obj/effect/spawner/random/bureaucracy/crayon, +/area/station/hallway/primary/aft) +"ofr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random/directional/north, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/greater) -"rhs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ofs" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"rhP" = ( -/obj/structure/chair/stool/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"rhR" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"rhS" = ( -/turf/open/floor/iron, -/area/station/engineering/main) -"rhW" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/destructive_scanner, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/turf/open/floor/wood, -/area/station/service/library) -"rhY" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron, -/area/station/security/prison) -"ria" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/station/medical/virology) -"ril" = ( -/obj/effect/turf_decal/trimline/yellow/arrow_cw{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"rin" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/table, -/obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = 1 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"oft" = ( +/obj/machinery/power/solar_control{ + dir = 8; + id = "aftstarboard"; + name = "Starboard Quarter Solar Control" }, -/obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = -2 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"riv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/north, /obj/structure/sign/warning/vacuum/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"rix" = ( -/obj/structure/closet/secure_closet/medical1, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 +/area/station/maintenance/solars/starboard/aft) +"ofx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "brigcelldoor"; + name = "Cell Blast Door" }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"riE" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"ofz" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"ofB" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"riJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"ogg" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"riQ" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"riS" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ +/area/station/hallway/primary/fore) +"ogk" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ogA" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/lowpressure, +/area/space/nearstation) +"ogM" = ( +/obj/structure/table/wood/fancy, +/obj/effect/turf_decal/siding/wideplating/dark/corner, +/obj/item/food/grown/poppy{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/item/food/grown/poppy{ + pixel_x = 6; + pixel_y = 6 }, -/area/station/engineering/atmos) -"riT" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/table, -/obj/effect/spawner/random/entertainment/cigarette, +/obj/item/food/grown/poppy, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"riY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"riZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/area/station/service/chapel) +"ohj" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/security/execution/education) -"rjf" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"rjg" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/machinery/button/door/directional/west{ - id = "teleporterhubshutters"; - pixel_y = -6 +/area/station/engineering/hallway) +"ohq" = ( +/obj/structure/cable, +/obj/structure/chair/sofa/corp/right{ + dir = 8 }, -/obj/machinery/disposal/bin, -/obj/machinery/firealarm/directional/north, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"rji" = ( -/turf/closed/wall/rock/porous, -/area/station/maintenance/department/science) -"rjk" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"rjn" = ( +/area/station/hallway/secondary/service) +"ohR" = ( +/obj/structure/sign/warning/docking, /turf/closed/wall, -/area/station/commons/lounge) -"rjp" = ( -/obj/structure/grille, -/turf/open/space/openspace, -/area/space/nearstation) -"rjr" = ( -/obj/effect/landmark/start/geneticist, -/obj/structure/chair/office{ +/area/station/cargo/miningdock) +"oic" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/effect/turf_decal/siding/purple/corner{ +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"oig" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"rjs" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/west{ - name = "Baked Goods"; - req_one_access = list("service","maint_tunnels") - }, -/obj/item/food/hotcrossbun{ - pixel_x = 1; - pixel_y = 10 - }, -/obj/item/food/cakeslice/pound_cake_slice{ - pixel_x = 1; - pixel_y = -2 +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"oiq" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, -/obj/effect/turf_decal/siding/red{ +/obj/structure/disposalpipe/junction{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) -"rjx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"oiu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/office/light{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/interrogation) -"rjG" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"rjH" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rjL" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -3; - pixel_y = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"oix" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, -/obj/item/radio/intercom/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"rjO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/greenscreen_camera{ - dir = 8; - pixel_x = -4; - pixel_y = 6 +/obj/effect/turf_decal/box, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"rjX" = ( -/turf/closed/wall, -/area/station/security/courtroom) -"rka" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"rkm" = ( -/obj/machinery/washing_machine, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"rkp" = ( -/obj/effect/turf_decal/stripes, -/obj/item/stack/sheet/plasteel/fifty, -/obj/item/stack/cable_coil{ - pixel_x = -1; - pixel_y = -3 +/area/station/maintenance/disposal/incinerator) +"oiE" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/supply{ + pixel_y = -32 }, -/obj/item/stack/cable_coil{ - pixel_x = -1; - pixel_y = -3 +/obj/machinery/camera/directional/south{ + c_tag = "Mining Dock"; + name = "cargo camera"; + network = list("ss13","qm") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/table, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"rkr" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/light/directional/south, +/area/station/cargo/miningdock) +"oiJ" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"rkt" = ( -/obj/machinery/door/airlock/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"oiK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, -/area/station/security/evidence) -"rkw" = ( -/obj/structure/chair/office{ - dir = 1 +/area/station/cargo/warehouse) +"oiO" = ( +/turf/closed/wall/mineral/bronze, +/area/station/maintenance/department/chapel) +"oiS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"oiV" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/item/clothing/neck/tie/detective, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"ojj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"rkz" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/wall_healer/directional/east, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"ojs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rkA" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/machinery/button/curtain{ - id = "law"; - pixel_x = -26; - pixel_y = -8 +/obj/machinery/newscaster/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Law Office" }, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/stamp/law, -/obj/item/pen/red, -/turf/open/floor/carpet, +/turf/open/floor/carpet/green, /area/station/service/lawoffice) -"rkI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{ - dir = 10 - }, +"ojG" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"ojW" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"rkL" = ( -/obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 +/area/station/security/lockers) +"ojZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"okc" = ( +/obj/machinery/light/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"oki" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable, +/obj/machinery/power/smes/full, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/machinery/light/cold/directional/west, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"rkS" = ( -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" +/area/station/engineering/gravity_generator) +"okk" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"okp" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/supermatter/engine) +"okq" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"rkZ" = ( -/obj/machinery/suit_storage_unit/ce, -/obj/machinery/requests_console/directional/south{ - department = "Chief Engineer's Desk"; - name = "Chief Engineer's Request Console" +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"okr" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 }, -/obj/machinery/computer/security/telescreen/ce/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"rlp" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/paramedic) -"rls" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/dark/side{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"rlt" = ( -/obj/machinery/camera/autoname/motion/directional/north{ - network = list("minisat") +/area/station/service/chapel/funeral) +"okt" = ( +/obj/machinery/door/window/left/directional/east{ + name = "Creature Cell"; + req_access = list("xenobiology") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"rlw" = ( -/turf/closed/wall, -/area/station/science/xenobiology/hallway) -"rlZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"okJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/security) -"rmi" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line, -/obj/item/stack/sheet/mineral/plasma, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"rmm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/structure/disposalpipe/junction{ +/area/station/hallway/primary/starboard) +"okN" = ( +/turf/closed/wall/rust, +/area/station/service/bar/backroom) +"okQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"olq" = ( +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/engineering/lobby) -"rms" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"rmx" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable/layer3, -/obj/machinery/firealarm/directional/south, -/obj/structure/rack, +/area/station/cargo/miningdock) +"olv" = ( +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"olz" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Security Hallway" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"olL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"rmy" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"rmF" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/space/openspace, -/area/space/nearstation) -"rmU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"rmX" = ( -/obj/machinery/light/small/dim/directional/north, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"rnb" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/airalarm/directional/east, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"rnk" = ( -/turf/closed/wall, -/area/station/maintenance/department/medical/central) -"rnB" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"olN" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/commons/locker) -"rnJ" = ( +/area/station/command/heads_quarters/hop) +"olP" = ( +/obj/machinery/door/airlock/atmos{ + name = "Filter Chamber" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"olQ" = ( +/obj/machinery/button/door/directional/east{ + name = "Security Mech Garage Door Controls"; + id = "secmechbay"; + req_access = list("security") + }, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"omi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/medical_doctor, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/explab) -"rnU" = ( -/obj/machinery/ai_slipper{ - uses = 10 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/box, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"omH" = ( +/obj/machinery/door/poddoor/shutters{ + id = "Skynet_launch"; + name = "Mech Bay" + }, +/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"rnY" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/area/station/science/robotics/mechbay) +"omN" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/obj/effect/spawner/random/food_or_drink/seed_flowers, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"rot" = ( -/turf/closed/wall/r_wall, -/area/station/science/cytology) -"rox" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Pure to Port" +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"roB" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/service/hydroponics) +"omO" = ( +/obj/effect/landmark/start/hangover, +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/station/holodeck/rec_center) +"omQ" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"roG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security) -"roW" = ( -/obj/machinery/door/window/right/directional/west{ - name = "Fitness Ring" +/area/station/security/brig) +"onc" = ( +/obj/effect/landmark/start/roboticist, +/obj/structure/cable, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"rpy" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/area/station/science/robotics/mechbay) +"onm" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"rpD" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"rpM" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/turf_decal/siding/wood, +/obj/item/radio/intercom/directional/north, +/obj/item/circuitboard/machine/telecomms/bus{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/circuitboard/machine/telecomms/broadcaster, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/machinery/camera/directional/north{ + c_tag = "Telecomms Storage"; + name = "engineering camera"; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/item/circuitboard/machine/telecomms/processor, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"onr" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"ons" = ( /obj/machinery/recharger{ - pixel_x = 16; - pixel_y = 3 + pixel_x = -7 }, -/obj/item/folder/red{ - pixel_x = 2; - pixel_y = 9 +/obj/machinery/recharger{ + pixel_x = 7 }, -/obj/item/stamp/head/hos{ - pixel_x = 2; - pixel_y = 11 +/obj/item/toy/figure/warden, +/obj/structure/table, +/obj/item/radio/intercom/directional/north{ + pixel_x = 32 }, -/obj/machinery/computer/records/security/laptop{ - dir = 1 +/obj/machinery/button/door/directional/north{ + id = "sidearmory"; + name = "Armoury Shutter Toggle"; + pixel_x = -8; + req_access = list("armory") }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"rpP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/button/door/directional/north{ + id = "prisonblast"; + name = "Prison Lockdown"; + pixel_x = 8; + req_access = list("brig") + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"oou" = ( +/obj/machinery/telecomms/receiver/preset_right, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/camera/directional/north{ + c_tag = "Telecomms Server SMES"; + name = "telecomms camera"; + network = list("ss13","tcomms") + }, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"oow" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rpR" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"ooR" = ( +/obj/structure/transit_tube/crossing, /obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"opE" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"opL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"rpS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/medical/glass{ + name = "Pharmacy" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"opV" = ( +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"oqa" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rqc" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/flora/grass/jungle, -/turf/open/water/no_planet_atmos, -/area/station/service/hydroponics/garden) -"rqe" = ( -/obj/structure/table, -/obj/item/stock_parts/scanning_module{ - pixel_x = -5; - pixel_y = 7 +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 }, -/obj/item/stock_parts/scanning_module{ - pixel_x = 5; - pixel_y = 7 +/turf/open/floor/plating, +/area/station/science) +"oqu" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L9" }, -/obj/item/stock_parts/scanning_module{ - pixel_x = -5 +/obj/machinery/camera/directional/north{ + c_tag = "Fore Hallway Centre"; + name = "fore camera" }, -/obj/item/stock_parts/scanning_module{ - pixel_x = 5 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"rqh" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"rqi" = ( -/obj/structure/lattice, -/obj/effect/landmark/start/hangover, -/turf/open/openspace, -/area/station/service/bar) -"rqj" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"oqA" = ( +/obj/structure/flora/grass/jungle/b/style_5, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"oqN" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"oqW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"rqw" = ( -/obj/machinery/power/shieldwallgen, -/obj/structure/window/spawner/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/command/emergency_closet) -"rqy" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5 - }, -/obj/item/clothing/mask/balaclava{ - pixel_x = -7 +/area/station/engineering/atmos/pumproom) +"ore" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/item/assembly/flash/handheld{ - pixel_y = -12 +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"orm" = ( +/obj/machinery/power/smes, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"rqC" = ( -/obj/machinery/camera/motion/directional/north{ - c_tag = "Secure - AI Upper External South"; - network = list("aicore") +/obj/machinery/status_display/shuttle{ + pixel_y = -32 }, -/turf/open/space/openspace, -/area/space/nearstation) -"rqJ" = ( -/obj/machinery/air_sensor/plasma_tank, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"rqP" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"rqW" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/solars/starboard/fore) +"orz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"orD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/brown{ + dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"rri" = ( -/turf/open/openspace, -/area/station/security/prison/garden) -"rrn" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, /turf/open/floor/iron, -/area/station/security/warden) -"rrq" = ( +/area/station/cargo/storage) +"orT" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/tcommsat/computer) +"orY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lab) -"rrz" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"rrF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/east, +/area/station/science/xenobiology) +"ose" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder/red, +/turf/open/floor/iron, +/area/station/security/courtroom) +"osn" = ( +/obj/structure/sign/departments/xenobio, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard) +"osy" = ( +/turf/closed/wall/rust, +/area/station/commons/toilet/restrooms) +"osR" = ( /obj/structure/cable, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/plating, -/area/station/security/prison/work) -"rrR" = ( -/obj/machinery/mass_driver/trash{ - dir = 8 +/obj/machinery/computer/shuttle/labor, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"rrZ" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/engine, -/area/station/science/explab) -"rsl" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"osT" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"osW" = ( +/turf/closed/wall/rust, +/area/station/engineering/atmos) +"otb" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/theater) -"rss" = ( -/obj/structure/chair/stool/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/lounge) -"rst" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/station/solars/starboard/fore) -"rsw" = ( -/obj/structure/closet/secure_closet/engineering_chief, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/item/food/cracker, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"rsI" = ( -/obj/structure/displaycase/labcage, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"rsK" = ( -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/secondary/service) -"rsZ" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"rti" = ( +/area/station/hallway/primary/port) +"otr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/auxlab) +"otA" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"rts" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"rtx" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/spawner/random/bureaucracy/briefcase, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"rtA" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 4 +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"otF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, +/obj/machinery/light/small/directional/west, +/obj/structure/bookcase/random, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"rtL" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/service/library) +"otO" = ( +/obj/structure/table, +/obj/item/taperecorder, +/obj/structure/sign/warning/electric_shock/directional/south, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"otP" = ( +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"otS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"rtN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"rtO" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"ruc" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"ouk" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) -"rup" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"oup" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"ruq" = ( +/area/station/engineering/atmos) +"ouC" = ( +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"rus" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"ruE" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"ruL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/research) -"ruN" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ruP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/commons/lounge) -"ruZ" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) -"rvg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"rvo" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"rvp" = ( -/obj/machinery/light/warm/directional/south, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"rvs" = ( -/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"ouD" = ( +/obj/machinery/light/directional/south, +/obj/machinery/light_switch/directional/south, /obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"rwf" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"rwn" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/structure/table/glass, +/obj/item/mod/module/thermal_regulator, +/obj/item/mod/module/plasma_stabilizer, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"ouE" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/rack, -/obj/structure/disposalpipe/junction/flip{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ dir = 4 }, /turf/open/floor/iron, -/area/station/security) -"rwq" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rwt" = ( -/obj/machinery/power/shieldwallgen/xenobiologyaccess{ - anchored = 1 +/area/station/maintenance/disposal/incinerator) +"ouK" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/east, +/obj/machinery/requests_console/directional/east{ + department = "Pharmacy"; + name = "Pharmacy Requests Console" }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/machinery/chem_dispenser, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"ouM" = ( /obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"rwu" = ( -/obj/structure/closet/crate/silvercrate, +/obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, -/obj/item/radio/intercom/directional/north, -/obj/item/piggy_bank/vault, -/turf/open/floor/iron/dark, -/area/station/command/vault) -"rwx" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, /turf/open/floor/iron, -/area/station/engineering/main) -"rwD" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner{ +/area/station/hallway/primary/port) +"ouV" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/space/basic, +/area/space/nearstation) +"ouX" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"rwE" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"rwF" = ( -/obj/effect/turf_decal/box/corners{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/atmos) -"rwG" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/spawner/random/structure/table, -/obj/machinery/airalarm/directional/south, -/obj/item/stack/medical/bruise_pack, +"ova" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"rwU" = ( -/obj/structure/sign/painting/large/library{ +"ovd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/door/window/left/directional/west{ - req_access = list("library") +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"ovm" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 }, -/turf/open/floor/carpet/royalblue, -/area/station/service/library) -"rwW" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"rwX" = ( -/obj/structure/sign/painting/large/library_private{ - dir = 8; - pixel_x = -29 +/obj/structure/cable, +/obj/effect/turf_decal/stripes/end{ + dir = 1 }, -/obj/item/storage/photo_album/library{ - pixel_x = 4 +/obj/machinery/light_switch/directional/north, +/turf/open/floor/circuit/red, +/area/station/security/mechbay) +"ovo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdprivacy"; + name = "Director's Privacy Blast Door" }, -/obj/item/camera{ - pixel_x = -4 +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/command/heads_quarters/rd) +"ovv" = ( +/turf/closed/wall, +/area/station/service/hydroponics/garden) +"ovw" = ( +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 4 }, -/obj/structure/table/wood, -/turf/open/floor/engine/cult, -/area/station/service/library) -"rxn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 +/obj/structure/table, +/obj/structure/noticeboard/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"rxv" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"rxw" = ( +/area/station/service/bar) +"ovN" = ( /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 + dir = 5 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"rxC" = ( -/turf/open/floor/iron/white/smooth_corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/hallway/primary/fore) +"owm" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/area/station/science/xenobiology) -"rxE" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/east{ - id = "Cell 1"; - name = "Cell 1" +/obj/machinery/camera/directional/north{ + c_tag = "Medbay Central"; + name = "medical camera"; + network = list("ss13","medical") }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/security/brig) -"rxK" = ( -/obj/machinery/modular_computer/preset/command, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"rxW" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/siding/blue{ dir = 1 }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"rxX" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"owq" = ( +/obj/machinery/vending/cytopro, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"owA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/cargo/storage) -"ryb" = ( -/obj/effect/decal/cleanable/rubble, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"ryt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +"owC" = ( +/obj/structure/chair/pew/left{ + dir = 8 }, -/obj/item/radio/intercom/directional/west, -/obj/structure/chair, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ryu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"ryy" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/station/service/chapel) +"owG" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"ryz" = ( -/turf/closed/wall, -/area/station/medical/patients_rooms/room_b) -"ryC" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/engineering/storage) -"ryE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/area/station/maintenance/central) +"owJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/shower/directional/east, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"ryG" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/right/directional/east{ + name = "Fitness Ring" }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"ryP" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 2"; - name = "Cell 2 locker" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"owT" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/flasher/directional/west{ - id = "Cell 2" +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 10 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig) -"ryR" = ( -/obj/structure/bodycontainer/morgue/beeper_off, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"ryV" = ( -/obj/structure/table/optable, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/light/small/dim/directional/north, -/mob/living/carbon/human/monkeybrain{ - ai_controller = /datum/ai_controller/monkey/angry - }, -/turf/open/floor/iron/white/herringbone, -/area/station/maintenance/department/medical/central) -"rzb" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"rzg" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-55" +/area/station/engineering/atmos/pumproom) +"owX" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"rzB" = ( -/turf/open/floor/iron/white/smooth_half{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/area/station/commons/fitness/recreation) -"rzD" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 +/obj/effect/turf_decal/tile/red, +/obj/item/kirbyplants/organic/plant21, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"oxp" = ( +/obj/machinery/light/directional/west, +/obj/structure/closet/secure_closet/psychology, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"oxC" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"rzI" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"rzJ" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/turf/open/misc/asteroid, -/area/station/hallway/secondary/entry) -"rzP" = ( -/obj/structure/statue/sandstone/assistant, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/textured, -/area/station/commons/storage/art) -"rAa" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/structure/bed/medical/emergency, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"rAi" = ( -/obj/machinery/door/window/brigdoor/left/directional/north{ - req_access = list("shipping") - }, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"oxD" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"oxK" = ( +/obj/structure/table, +/obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, +/obj/item/clothing/gloves/color/black, +/obj/item/crowbar/red, +/obj/item/flashlight/seclite, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"rAq" = ( -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"oye" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ +/turf/open/floor/plating, +/area/station/service/chapel) +"oyA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Starboard Hallway Research Desk"; + name = "starboard camera" + }, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"rAu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/airalarm/directional/east, -/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/security/evidence) -"rAx" = ( -/obj/structure/railing{ - dir = 4 +/area/station/hallway/primary/starboard) +"oyP" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"ozd" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/box, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"ozk" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 9 }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/upper) -"rAK" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"ozt" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/depsec/medical, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/medical) +"ozw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/tank/internals/oxygen/empty, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"ozz" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"rAP" = ( -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/project) -"rBb" = ( +"ozI" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"ozO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"rBj" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Atmospherics Tank - Nitrous Oxide" - }, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"rBt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/window/brigdoor/left/directional/north{ - pixel_y = 1; - req_access = list("ordnance") +/area/station/hallway/primary/starboard) +"ozV" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/medkit/o2, +/obj/item/tank/internals/emergency_oxygen, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"rBv" = ( -/obj/item/flashlight/flare/candle/infinite{ - pixel_x = -16; - pixel_y = -16 +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"ozZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"rBw" = ( /obj/effect/mapping_helpers/broken_floor, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rBI" = ( -/obj/structure/filingcabinet, -/obj/item/toy/figure/scientist{ - pixel_x = -1; - pixel_y = 15 - }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lab) -"rBT" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/transit_tube/station/dispenser/reverse{ +/area/station/maintenance/port/greater) +"oAg" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/starboard/aft) +"oAk" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/engineering/transit_tube) -"rBU" = ( -/obj/machinery/door/airlock/engineering{ - name = "Auxiliary Base Construction" - }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"oAo" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/landmark/navigate_destination, -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/wooden/crude, +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"rBZ" = ( -/obj/structure/cable, -/obj/machinery/turretid{ - control_area = "/area/station/ai/satellite/interior"; - name = "AI Antechamber turret control"; - pixel_y = 27; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"rCd" = ( -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Command Desk"; - req_access = list("command") +/area/station/hallway/primary/port) +"oAJ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 4 +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "QMLoad"; + name = "off ramp" }, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"rCv" = ( -/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"oAN" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) -"rCz" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"rCL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/railing{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"rCN" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/siding/white{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/turf_decal/caution/stand_clear, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"rCW" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"oAO" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"rCY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/filingcabinet, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"rDa" = ( -/obj/structure/urinal/directional/north, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"rDg" = ( -/turf/open/openspace, -/area/station/service/bar) -"rDl" = ( -/obj/effect/turf_decal/siding/red{ - dir = 1 +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"oAS" = ( +/obj/machinery/light/directional/south, +/obj/machinery/requests_console/directional/south{ + department = "Janitorial"; + name = "Janitorial Requests Console" }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/stripes/corner, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"rDs" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/holopad, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"rDx" = ( -/obj/machinery/vending/wardrobe/viro_wardrobe, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rDD" = ( -/obj/structure/stairs/west, -/turf/open/floor/iron/stairs/left{ - dir = 4 - }, -/area/station/engineering/main) -"rDE" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/table/wood, -/obj/item/toy/figure/qm{ - pixel_x = 5; - pixel_y = 3 +/area/station/service/janitor) +"oBe" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/right/directional/north{ + name = "Emergency Storage"; + req_access = list("command") }, -/obj/item/reagent_containers/cup/beaker/jar{ - pixel_x = -5; - pixel_y = 5 +/obj/machinery/suit_storage_unit/standard_unit{ + desc = "An industrial suit storage device carrying retro space suits. This one is blue."; + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/blue; + suit_type = /obj/item/clothing/suit/space/syndicate/blue }, -/obj/item/coffee_cartridge/fancy{ - pixel_y = 18 +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"rDI" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"oBf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/engineering/storage) -"rEp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"oBy" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"rEv" = ( -/obj/machinery/rnd/server, -/obj/effect/turf_decal/siding/blue{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/circuit/telecomms/server, -/area/station/science/server) -"rEw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/engineering/atmos) -"rEK" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/station/command/bridge) +"oBA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/eva) +"oBP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/station_engineer, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"rFb" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/closet/emcloset, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"rFd" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/turf/open/floor/iron, +/area/station/engineering/lobby) +"oBT" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"rFt" = ( -/obj/machinery/shower/directional/west, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"rFK" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/rubble, -/turf/open/floor/plating, -/area/station/asteroid) -"rFL" = ( -/obj/structure/chair/office/light{ - dir = 4 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"rFN" = ( -/obj/machinery/bouldertech/refinery/smelter{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 6; - id = "brm" +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"oCd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"rFV" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/power/terminal{ dir = 1 }, -/mob/living/basic/bot/secbot/beepsky/officer, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"rFX" = ( -/obj/effect/turf_decal/siding/dark_blue/corner{ - dir = 4 +/obj/machinery/camera/directional/west{ + c_tag = "Gravity Generator Foyer"; + name = "engineering camera"; + network = list("ss13","engine") }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"rFZ" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 8; - name = "plasma mixer" +/obj/structure/cable, +/obj/machinery/button/door/directional/west{ + id = "gravity"; + name = "Gravity Generator Lockdown"; + req_one_access = list("command","tech_storage") }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rGg" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"oCo" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"rGr" = ( -/obj/effect/baseturf_helper/reinforced_plating, -/turf/open/floor/glass/reinforced/plasma, -/area/station/engineering/supermatter/room) -"rGu" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"rGv" = ( -/obj/machinery/light/directional/north, +/turf/open/floor/iron, +/area/station/engineering/main) +"oCr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/reagent_dispensers/wall/peppertank/directional/west, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"rGM" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 + dir = 1 }, -/obj/structure/chair/office{ - dir = 4 +/turf/open/floor/iron, +/area/station/security/office) +"oCt" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"rGO" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/station/solars/port/fore) -"rGQ" = ( +/area/station/hallway/primary/aft) +"oCu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/chapel{ - dir = 4 +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 }, -/area/station/service/chapel) -"rGX" = ( -/obj/structure/table, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"oCC" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/syringe/contraband/fentanyl, -/obj/item/reagent_containers/syringe/contraband/space_drugs{ - pixel_x = 3; - pixel_y = 7 +/obj/effect/turf_decal/box/corners, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"oCE" = ( +/obj/machinery/door/airlock{ + name = "Cleaning Closet" }, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"rHm" = ( -/obj/structure/lattice/catwalk, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/space/openspace, -/area/space/nearstation) -"rHq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/recharge_station, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"rHF" = ( -/obj/machinery/bci_implanter, -/turf/open/floor/iron/white, -/area/station/science/explab) -"rHG" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"rHU" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"rHV" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/photo_album/prison, -/turf/open/floor/iron, -/area/station/security/prison) -"rIb" = ( -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ +/area/station/security/prison/safe) +"oCI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"rIw" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"rIG" = ( -/obj/effect/turf_decal/tile/red{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/office) -"rIH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) -"rIJ" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"rIP" = ( +/turf/open/floor/wood, +/area/station/service/library) +"oCJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"oDh" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 6; + pixel_y = -6 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 6 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = -2 }, +/obj/item/crowbar, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"rJb" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/engineering/main) +"oDt" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"rJg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, +/turf/open/space/basic, +/area/space/nearstation) +"oDG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/machinery/vending/coffee, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"rJs" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"oDV" = ( /obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/holosign_creator/atmos{ +/obj/item/storage/box/hug{ pixel_x = 4; - pixel_y = 7 + pixel_y = 3 + }, +/obj/item/razor{ + pixel_x = -8; + pixel_y = 3 }, +/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, -/area/station/engineering/main) -"rJz" = ( +/area/station/security/execution/transfer) +"oFf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rJD" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"oFl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"oFo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos) -"rJK" = ( -/obj/machinery/door/airlock/security{ - name = "Detective's Closet" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/security/detective, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"rJW" = ( -/obj/machinery/computer/shuttle/labor{ - dir = 8 +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"oFt" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"oFC" = ( +/obj/structure/table, +/obj/item/storage/box/syringes{ + pixel_y = 2 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 +/obj/item/storage/box/beakers{ + pixel_x = 4; + pixel_y = 6 }, -/obj/machinery/airalarm/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"rKb" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/item/hand_labeler, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"rKi" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"rKq" = ( -/obj/structure/sign/warning/vacuum/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/area/station/service/hydroponics) +"oGo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"oGu" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"rKH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/machinery/door/airlock/grunge{ + name = "Monastery Atmos" + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/department/chapel/monastery) +"oGO" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/cold/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"rKW" = ( -/obj/machinery/photocopier/prebuilt, -/obj/effect/turf_decal/bot_red, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"rKY" = ( -/obj/structure/table, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"rKZ" = ( -/obj/machinery/prisongate, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"rLb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"rLw" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"rLz" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"oGV" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"oHe" = ( +/obj/structure/table/reinforced, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/mod/module/thermal_regulator, +/turf/open/floor/iron/dark, +/area/station/security/office) +"oHh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rLH" = ( -/obj/effect/turf_decal/siding/white, -/obj/item/ammo_casing/c357/spent, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"rLJ" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"rLK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 8 +/obj/machinery/camera/directional/south{ + c_tag = "Fore Hallway Robotics Bay"; + name = "fore camera" }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"rLQ" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"rLT" = ( -/obj/machinery/door/window/left/directional/east, -/obj/effect/decal/cleanable/ash, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"oHj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_corner{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/science/breakroom) -"rMj" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rMx" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "ext42" - }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rMz" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port) -"rMP" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"oHm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/science/xenobiology) -"rMQ" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/service/library) -"rNf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/wall_healer/directional/north, -/turf/open/floor/iron/white, -/area/station/science/research) -"rNs" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"oHD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"rNJ" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) -"rOe" = ( -/obj/structure/table/reinforced, -/obj/machinery/coffeemaker{ - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"rOq" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"rOD" = ( -/obj/structure/lattice/catwalk, -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace/xenobio, -/area/station/science/xenobiology) -"rOF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/plaque{ + icon_state = "L4" }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/office) -"rOL" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"rPe" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/command/meeting_room) -"rPg" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" +/area/station/hallway/primary/central/fore) +"oHP" = ( +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/door/airlock/security/glass{ + name = "Research Security Post" }, -/obj/machinery/door/firedoor, -/obj/item/holosign_creator/robot_seat/restaurant, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"rPh" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/south, -/obj/structure/broken_flooring/pile, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"oHR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/science/ordnance) -"rPi" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/north, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"rPk" = ( -/obj/effect/turf_decal/siding/white{ +/area/station/maintenance/starboard) +"oIg" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, -/obj/machinery/light/warm/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"rPt" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/effect/decal/cleanable/vomit/old, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"rPA" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron, -/area/station/cargo/storage) -"rPC" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/area/station/hallway/primary/port) +"oIn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"oIu" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, -/obj/structure/table, -/obj/item/pipe_dispenser, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/west, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"rPR" = ( -/obj/effect/turf_decal/siding/green{ - dir = 5 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"rPT" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = 16; - pixel_y = 1 +/area/station/hallway/secondary/exit/departure_lounge) +"oIy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/item/reagent_containers/syringe{ - pixel_x = 8; - pixel_y = 10 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"rQe" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"rQg" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"rQx" = ( -/obj/machinery/door/airlock/research{ - name = "Mech Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/area/station/commons/storage/primary) +"oIS" = ( /obj/machinery/door/firedoor, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"rQC" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/obj/machinery/door/airlock/security/glass{ + name = "Engineering Security Post" }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/warm/dim/directional/south, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"rQI" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, +/area/station/security/checkpoint/engineering) +"oIU" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"rQO" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/airlock/research{ - name = "Xenobiology" +/area/station/maintenance/port/lesser) +"oJa" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/small/directional/north, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "QM #1" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/blood/oil, +/mob/living/basic/bot/mulebot, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"oJd" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/right/directional/east{ + name = "Mail Chute"; + req_access = list("shipping") }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"rQP" = ( -/obj/item/food/grown/banana, -/obj/structure/rack, -/turf/open/misc/asteroid, -/area/station/asteroid) -"rQS" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"rQY" = ( -/obj/effect/landmark/start/warden, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"rRb" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/library) -"rRd" = ( -/obj/machinery/hydroponics/constructable{ - dir = 8 - }, -/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/service/hydroponics) -"rRs" = ( -/obj/structure/broken_flooring/corner/directional/north, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"rRt" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/engineering/break_room) -"rRy" = ( -/mob/living/carbon/human/species/monkey, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"rRz" = ( +/area/station/cargo/sorting) +"oJm" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_half, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) -"rRK" = ( -/turf/closed/wall/r_wall, -/area/station/security/brig/entrance) -"rRL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"oJq" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"rRO" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"rRY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/trapdoor_remote/preloaded, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"rSh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"rSq" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "CO2 to Pure" - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ +/area/station/command/heads_quarters/hop) +"oJr" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/turf/open/floor/iron/dark, /area/station/engineering/atmos) -"rSF" = ( -/obj/effect/turf_decal/siding, +"oJs" = ( /obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"rSL" = ( -/obj/effect/turf_decal/tile/purple, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"rSS" = ( -/obj/machinery/light/directional/north, -/obj/structure/disposaloutlet{ +/obj/item/clipboard, +/obj/item/folder/red, +/obj/item/pen/blue, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"oJH" = ( +/obj/machinery/suit_storage_unit/medical, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/south, -/obj/machinery/conveyor{ - dir = 8; - id = "sorter" - }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"rTc" = ( -/obj/structure/railing{ +/obj/machinery/light_switch/directional/west, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"oJU" = ( +/obj/docking_port/stationary/syndicate/northwest{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 10 +/turf/open/space/basic, +/area/space) +"oJV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/area/station/command/meeting_room) -"rTi" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/flasher/directional/south{ - id = "Cell 4" +/obj/structure/chair/stool/directional/north, +/turf/open/floor/wood, +/area/station/service/library) +"oKp" = ( +/obj/structure/chair/office/light{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/security/brig) -"rTo" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"rTs" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"rTw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"oKJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"rTA" = ( -/obj/structure/closet/secure_closet{ - req_access = list("brig") - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, -/area/station/security/brig) -"rTC" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"rTH" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"oKV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"rTM" = ( -/turf/closed/wall/r_wall, -/area/station/security/mechbay) -"rTV" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"rUf" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, -/obj/machinery/door/airlock/grunge{ - name = "Coroner Office" - }, -/obj/effect/turf_decal/stripes/red/end{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"rUi" = ( -/obj/machinery/computer/security, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron, -/area/station/command/bridge) -"rUp" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ +/turf/open/floor/wood, +/area/station/service/library) +"oKW" = ( +/turf/closed/wall, +/area/station/security/office) +"oLa" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/holodeck{ dir = 4 }, -/area/station/engineering/atmos) -"rUu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"rUC" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/commons/locker) -"rUZ" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white/textured_large, +/turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"rVj" = ( -/obj/machinery/light/dim/directional/south, +"oLp" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"oLs" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"oLG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"rVo" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/stripes/line, +/obj/item/t_scanner, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"oLH" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/starboard) +"oLQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/light/warm/directional/south, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/service/bar) -"rVv" = ( -/obj/machinery/door/airlock/security{ - id_tag = "IsolationCell"; - name = "Isolation Cell" +/obj/machinery/oven/range, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"oLR" = ( +/obj/structure/sign/poster/official/twelve_gauge, +/turf/closed/wall, +/area/station/maintenance/starboard/fore) +"oLT" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/supermatter/room) +"oMq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"oMr" = ( +/obj/machinery/flasher/portable, +/obj/machinery/camera/motion/directional/east{ + c_tag = "Armoury Internal" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"rVy" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"rVA" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/light/very_dim/directional/south, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/security/armory) +"oMA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"rVD" = ( -/obj/structure/sign/directions/supply/directional/east{ - dir = 8; - pixel_x = 0 +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 3 }, -/turf/closed/wall/r_wall, -/area/station/command/gateway) -"rVL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/clothing/glasses/welding, +/turf/open/floor/iron/dark, +/area/station/science/research) +"oMJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"rVT" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rVZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"oMU" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"oMZ" = ( +/turf/open/water/no_planet_atmos/deep, +/area/station/service/hydroponics/garden) +"oNf" = ( +/obj/structure/table, +/obj/item/instrument/harmonica, +/obj/item/camera{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"oNk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rWf" = ( -/obj/structure/sign/poster/official/cleanliness/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/landmark/start/botanist, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"oNo" = ( /obj/effect/turf_decal/bot, -/obj/item/reagent_containers/condiment/sugar{ - pixel_y = 4 +/obj/structure/rack, +/obj/effect/decal/cleanable/blood/old, +/obj/item/weldingtool{ + pixel_x = -2; + pixel_y = 6 }, -/obj/item/storage/pill_bottle/happinesspsych{ - pixel_x = -4; - pixel_y = -1 +/obj/item/clothing/head/utility/welding{ + pixel_y = 5 }, -/obj/item/storage/box/coffeepack, -/obj/item/storage/box/coffeepack/robusta, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/reagent_containers/condiment/milk, -/obj/structure/closet/secure_closet/freezer/empty/open, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"rWh" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/item/crowbar/red, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"oNr" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"oNH" = ( +/obj/structure/disposalpipe/junction/flip, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"rWj" = ( +/area/station/security/brig) +"oNI" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"oNO" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/cargo/office) +"oOW" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "rndlab2"; - name = "Secondary Research and Development Shutter" - }, /turf/open/floor/plating, -/area/station/science/lab) -"rWl" = ( -/obj/machinery/light/no_nightlight/directional/west, +/area/station/maintenance/disposal/incinerator) +"oPf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"oPh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"rWs" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/service/theater) +"oPn" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Xenobiology Cell 5"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"rWv" = ( -/obj/structure/railing{ - dir = 4 +/obj/machinery/light/small/directional/west, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"oPr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"oPO" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"rWI" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"oPX" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/engineering/storage) -"rWL" = ( +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"oQe" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"oQg" = ( +/turf/closed/wall/r_wall, +/area/station/science/auxlab) +"oQk" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"oQl" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/box, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) -"rWM" = ( -/obj/machinery/rnd/production/circuit_imprinter, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +"oQm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"oQv" = ( +/obj/structure/bookcase/random, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"oQz" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security{ + name = "Interrogation" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"oQH" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/break_room) -"rWO" = ( -/obj/item/radio/intercom/prison/directional/west, +/area/station/hallway/primary/central/fore) +"oQL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/loading_area, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security/prison) -"rWQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"rWV" = ( -/obj/effect/landmark/start/chief_engineer, +/area/station/cargo/storage) +"oRt" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/disposalpipe/segment, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/obj/item/dest_tagger, +/obj/item/dest_tagger{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"oRz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, -/obj/machinery/holopad, +/obj/machinery/light/directional/south, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"rWZ" = ( -/obj/structure/chair{ - dir = 1 +/area/station/hallway/primary/fore) +"oRA" = ( +/mob/living/carbon/human/species/monkey, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/grass, +/area/station/science/auxlab) +"oRI" = ( +/obj/effect/spawner/random/structure/table, +/obj/item/flashlight/flare/candle{ + pixel_x = -5 }, -/obj/effect/landmark/start/lawyer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"rXd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "qmprivacy"; - name = "Privacy Shutters" +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_x = 5; + pixel_y = 1 }, -/obj/structure/cable, /turf/open/floor/plating, -/area/station/command/heads_quarters/qm) -"rXf" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 6 - }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"rXg" = ( -/obj/structure/spirit_board, -/obj/item/storage/box/bodybags{ - pixel_y = 16 - }, -/turf/open/floor/cult, -/area/station/service/chapel/office) -"rXj" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"rXp" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/structure/closet/secure_closet/security/cargo, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"rXq" = ( -/obj/structure/lattice, -/obj/structure/cable, -/obj/structure/transit_tube/curved/flipped, +/area/station/maintenance/department/crew_quarters/bar) +"oRK" = ( +/obj/structure/chair/office/light, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"rXt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"rXD" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Prisoner Processing" - }, -/obj/machinery/door/firedoor, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "perma-entrance" - }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"oRT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"rXG" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"rXO" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/area/station/engineering/atmos/project) -"rXQ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing{ +/turf/open/floor/iron, +/area/station/security/office) +"oSf" = ( +/obj/machinery/atmospherics/components/binary/pump{ dir = 8 }, -/turf/open/openspace, -/area/station/security/prison/garden) -"rXS" = ( -/obj/machinery/computer/rdconsole/unlocked, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/freezerchamber) +"oSs" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/siding/purple, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/information, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"rXT" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid, +/area/space/nearstation) +"oSD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 6 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rXZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/white{ + dir = 8 }, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"rYe" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 1 - }, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/box/red, -/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"rYg" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/lobby) -"rYh" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"rYo" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"rYs" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/turf_decal/siding/white, +/area/station/service/bar) +"oSG" = ( /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/plasticflaps/kitchen, +/obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/white, -/area/station/medical/coldroom) -"rYy" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/stairs/medium{ +/area/station/security/prison/mess) +"oSI" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/area/station/medical/storage) -"rYJ" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"rYU" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/effect/spawner/random/bedsheet{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/item/pillow/random, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"rYZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"rZb" = ( -/obj/machinery/power/smes/engineering, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/main) -"rZc" = ( -/turf/open/floor/cult, -/area/station/service/chapel/office) -"rZg" = ( -/mob/living/carbon/human/species/monkey, -/turf/open/misc/asteroid, -/area/station/asteroid) -"rZz" = ( -/obj/machinery/door/airlock{ - name = "Maintenance Bathroom" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/structure/broken_flooring/side/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"rZB" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 10 +/area/station/hallway/primary/starboard) +"oSK" = ( +/obj/docking_port/stationary/laborcamp_home/kilo{ + dir = 2 }, -/obj/structure/lattice, /turf/open/space/basic, -/area/space/nearstation) -"rZC" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 +/area/space) +"oSS" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "Bridge" }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/preopen{ + id = "brige-maint"; + name = "Bridge Blast Door" }, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rZE" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"oSX" = ( +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"rZJ" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"rZK" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/effect/turf_decal/tile/yellow{ +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"oTd" = ( +/obj/machinery/door/morgue{ + name = "Mass Driver"; + req_access = list("chapel_office") }, -/area/station/engineering/atmos) -"saa" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"oTg" = ( +/obj/machinery/conveyor{ + id = "NTMSLoad2"; + name = "on ramp" }, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"sab" = ( -/obj/effect/landmark/start/research_director, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"sad" = ( -/obj/machinery/door/airlock/hatch{ - name = "Secure Pen" +/obj/machinery/door/poddoor{ + id = "freight_port"; + name = "Freight Bay Blast Door" }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"sae" = ( -/obj/machinery/door/airlock/engineering{ - name = "Relay Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"sap" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"sas" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Emergency Spatial Evacuation" +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"oTt" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/photocopier, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"oTw" = ( +/obj/machinery/telecomms/processor/preset_one, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"oTD" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) +"oTE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"say" = ( -/obj/machinery/door/airlock{ - id_tag = "u3"; - name = "Unit 3" - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"saA" = ( -/obj/machinery/door/window/right/directional/east{ - name = "Corpse Arrivals"; - req_access = list("morgue_secure") - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"saH" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"saJ" = ( -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"saN" = ( -/turf/open/openspace, -/area/station/engineering/atmos/mix) -"saQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"saY" = ( -/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"oTP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/old, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sbc" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"sbd" = ( -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"sbf" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"sbn" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"oTU" = ( +/obj/effect/turf_decal/box/corners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sbo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"sbp" = ( -/obj/structure/toilet, +/turf/open/floor/iron, +/area/station/security/courtroom) +"oUc" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sby" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"sbL" = ( -/obj/machinery/door/airlock/engineering{ - name = "Aft Port Solar Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed, +/area/station/maintenance/department/crew_quarters/bar) +"oUg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"sbR" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"sbS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"sbU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"sbZ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"scg" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/glass/reinforced, -/area/station/ai/upload/foyer) -"sco" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"scs" = ( -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"scw" = ( -/obj/machinery/door/airlock/mining{ - name = "Mining Office" +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/cargo/storage) -"scS" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/asteroid) -"scT" = ( -/obj/structure/table, -/obj/item/toy/balloon, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"scU" = ( -/obj/item/reagent_containers/spray/plantbgone, -/obj/item/reagent_containers/spray/pestspray{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/bottle/nutrient/ez, -/obj/item/reagent_containers/cup/bottle/nutrient/rh{ - pixel_x = 2; - pixel_y = 1 - }, +/area/station/hallway/primary/starboard) +"oUj" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/table/wood, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"sdc" = ( -/turf/closed/wall, -/area/station/cargo/storage) -"sdn" = ( -/obj/machinery/keycard_auth/wall_mounted/directional/south, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"sdA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 + dir = 1 }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"sdB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/north, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"sdW" = ( -/obj/structure/railing{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"sed" = ( -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"sep" = ( +"oUz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/miningoffice) +"oUA" = ( +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, +/obj/structure/lattice/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"oUH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 + dir = 1 }, +/obj/structure/chair/office, +/obj/structure/sign/painting/library_private{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/librarian, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"set" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 1 +/area/station/service/library) +"oUL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/area/station/science/xenobiology) -"seJ" = ( -/obj/machinery/light/dim/directional/north, -/obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"seV" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/landmark/start/hangover, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"seW" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/power/apc/auto_name/directional/north, +/area/station/command/teleporter) +"oUS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/bag/trash, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"sfh" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"oVc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"sfl" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/area/station/science/xenobiology) +"oVl" = ( +/obj/machinery/door/airlock/external{ + name = "Satellite External Airlock" }, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "teleporterhubshutters"; - name = "Teleporter Shutters" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"sfm" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/ai/satellite/atmos) +"oVz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"oVP" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/rock, +/turf/open/misc/asteroid, +/area/station/hallway/secondary/exit/departure_lounge) +"oVY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/office) -"sfs" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/obj/item/toy/plush/plasmamanplushie{ + name = "Lithium II" }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"sfu" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"oWc" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"oWj" = ( +/obj/machinery/atmospherics/components/binary/tank_compressor{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 1; - id = "QMLoad2" +/obj/effect/turf_decal/delivery, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"sfF" = ( -/obj/item/robot_suit, -/obj/effect/turf_decal/siding/red{ - dir = 9 +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"oWm" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/obj/machinery/door/airlock/maintenance{ + name = "Genetics Maintenance" }, +/turf/open/floor/plating, +/area/station/science/genetics) +"oWx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"oWG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit, -/area/station/science/robotics/lab) -"sfH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"oWI" = ( +/obj/structure/table/reinforced, +/obj/structure/reagent_dispensers/servingdish, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"oWQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"sfT" = ( -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"sfY" = ( -/obj/structure/stairs/east, -/obj/structure/railing{ - dir = 1 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"oWX" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/shieldgen, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"sgc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"sge" = ( -/turf/closed/wall/r_wall, -/area/station/science/robotics/storage) -"sgg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"sgk" = ( +/area/station/engineering/supermatter/room) +"oXa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/area/station/engineering/atmos/mix) -"sgq" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/commons/locker) -"sgu" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, +/area/station/commons/fitness/recreation) +"oXe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"sgz" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/hop) -"sgB" = ( -/obj/machinery/door/airlock{ - id_tag = "u4"; - name = "Unit 4" +/obj/machinery/door/poddoor/preopen{ + id = "prisonblast"; + name = "Prison Blast Door" }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"sgG" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"sgW" = ( -/obj/structure/chair/office/tactical{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"oXm" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/office) -"sha" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - id = "boutique"; - name = "Countertheft Shutters" +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/cargo/boutique) -"shc" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/pumproom) -"she" = ( -/obj/machinery/door/airlock/atmos{ - name = "Incinerator" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"oXx" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"shl" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/item/pen, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"shs" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"shG" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock{ - name = "Kitchen" +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 }, -/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"oXK" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/landmark/navigate_destination/kitchen, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sia" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/treatment_center) -"sid" = ( -/obj/structure/chair/sofa/bench/left{ +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"siG" = ( -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"siH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"oYc" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Recreation Area" }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"siK" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"siQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"siR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"siS" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/blobstart, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"siX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/machinery/meter/monitored/waste_loop, -/obj/effect/turf_decal/tile/yellow{ +/area/station/commons/fitness/recreation) +"oYd" = ( +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/pumproom) -"siZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/iv_drip, -/obj/machinery/light/cold/dim/directional/north, -/obj/machinery/vitals_reader/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"sji" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 10 +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_x = 5 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"sjl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"sjo" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/storage/art) -"sjB" = ( -/obj/machinery/light/cold/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"sjD" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"sjF" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/plating, -/area/station/medical/virology) -"sjJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, /turf/open/floor/iron, -/area/station/cargo/storage) -"sjL" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/engineering/atmos/storage/gas) +"oYi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"sjN" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"sjR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/all_access, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"sjW" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"sjX" = ( -/obj/machinery/atmospherics/components/tank/air{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"skb" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"skc" = ( -/obj/effect/spawner/random/trash/mess, -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"skj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"skr" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/effect/mapping_helpers/airlock/autoname, -/turf/open/floor/iron, -/area/station/security/office) -"skw" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/ai/satellite/foyer) -"skH" = ( +/area/station/hallway/primary/central) +"oYu" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"skL" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/cargo/storage) -"skQ" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"skV" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/locker) -"slb" = ( -/obj/machinery/iv_drip, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"oYx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/blobstart, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sln" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/area/station/maintenance/port/fore) +"oYN" = ( +/obj/machinery/air_sensor/nitrous_tank, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"oYV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/item/restraints/handcuffs/cable/red, +/obj/item/clothing/suit/apron/surgical, +/obj/item/weldingtool/mini, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"oZb" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/iron/stairs/right{ + dir = 1 + }, +/area/station/service/chapel) +"oZE" = ( +/turf/closed/wall/r_wall, +/area/station/security/processing) +"oZP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"oZS" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/obj/structure/secure_safe/caps_spare, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"oZX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"slr" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/broken_bottle, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"slu" = ( -/obj/structure/transit_tube/curved, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"slx" = ( /obj/structure/cable, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"slG" = ( -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"pab" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/command/bridge) +"pac" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"pah" = ( +/obj/structure/table/wood/fancy/blue, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/airalarm/directional/west, +/obj/item/reagent_containers/cup/glass/bottle/wine/unlabeled, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"pai" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"slL" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"slM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/janitor) -"sme" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"smh" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/welded, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"smi" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "custodial sorting disposal pipe" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"smn" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"smD" = ( +/area/station/hallway/primary/starboard) +"pal" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 + dir = 4 }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/decal/cleanable/dirt, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"smE" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/turf/open/floor/grass, -/area/station/science/research) -"smG" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"smH" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"smM" = ( +/area/station/engineering/atmos/pumproom) +"paM" = ( /obj/structure/cable, +/turf/open/floor/wood, +/area/station/maintenance/port/greater) +"paN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"paU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/boutique) -"smQ" = ( -/obj/machinery/power/solar_control{ - id = "forestarboard"; - name = "Starboard Bow Solar Control" - }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"smT" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench/right{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/item/radio/intercom/directional/south, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"smZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"pbk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/interrogation) -"snk" = ( -/obj/structure/table/wood/poker, -/obj/item/storage/dice, -/obj/machinery/light/small/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"snl" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sns" = ( -/obj/structure/table/wood, -/obj/structure/railing{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/book/manual/wiki/security_space_law, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"snF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"pbs" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/rust, +/area/station/maintenance/disposal) +"pbx" = ( +/obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"pbL" = ( +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"pbY" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/station/hallway/primary/fore) +"pcc" = ( +/obj/effect/turf_decal/loading_area{ dir = 1 }, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"sok" = ( -/obj/machinery/newscaster/directional/west, -/obj/machinery/computer/records/medical/laptop, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"sot" = ( -/obj/structure/table, -/obj/structure/sign/departments/medbay/directional/north, -/obj/item/circuitboard/machine/chem_master, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"soA" = ( -/obj/effect/landmark/start/chaplain, -/obj/structure/chair{ +/area/station/service/chapel/dock) +"pcl" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"soB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"soC" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"pcC" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"soG" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north{ - pixel_y = 35 +"pcG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/light/small/directional/west, +/obj/machinery/duct, /turf/open/floor/iron/showroomfloor, -/area/station/science/research) -"soW" = ( -/obj/effect/landmark/event_spawn, +/area/station/medical/pharmacy) +"pcJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"soZ" = ( -/obj/structure/transport/linear/public, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"spd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"pcO" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/directional/east{ + c_tag = "E.V.A. Storage"; + name = "command camera" + }, +/obj/machinery/light/directional/east, +/obj/machinery/suit_storage_unit/standard_unit{ + desc = "An industrial suit storage device carrying retro space suits. Neat!"; + helmet_type = /obj/item/clothing/head/helmet/space; + suit_type = /obj/item/clothing/suit/space + }, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"pdg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"spf" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"spg" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/painting/library{ - pixel_y = -32 +/obj/effect/turf_decal/siding/purple{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"spl" = ( -/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"pdq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"pdz" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/generic/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/sunny/style_random, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"spr" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 +/turf/open/floor/grass, +/area/station/command/heads_quarters/hop) +"pdE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","engine") +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4 }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"pdI" = ( /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"spw" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/airlock/engineering/glass{ - name = "Emitter Room" - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"pdR" = ( /obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"spA" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"spG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"spS" = ( -/obj/item/mop, -/obj/effect/spawner/random/trash/bucket, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"sqb" = ( +/area/station/medical/medbay/central) +"pdZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/caution_sign, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sqk" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"pem" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"pet" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"sqo" = ( -/obj/machinery/light/warm/directional/north, -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox/renault, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"sqw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/main) -"sqx" = ( -/obj/structure/window/spawner/directional/east, /turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"sqz" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/area/station/engineering/atmos) +"peu" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, /obj/machinery/light/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"sqF" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 1 +/area/station/ai/satellite/atmos) +"peC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/openspace, -/area/station/engineering/main) -"sqJ" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") - }, -/obj/structure/sign/warning/fire/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"sqL" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"sqZ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 +/area/station/maintenance/starboard/fore) +"peF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) -"srd" = ( -/obj/machinery/vending/wardrobe/jani_wardrobe, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"srh" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/machinery/firealarm/directional/west, -/obj/item/kirbyplants/random, -/obj/item/trash/chips, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"srj" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"peJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"srq" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/turf_decal/siding/green/corner{ - dir = 8 +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"peT" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"srs" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/foyer) -"srv" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"srE" = ( +/area/station/hallway/primary/aft) +"peY" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /obj/structure/cable, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"srI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/suit_storage_unit/industrial/loader, /turf/open/floor/iron, -/area/station/cargo/warehouse) -"srO" = ( -/obj/machinery/light/cold/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"srR" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/cargo/office) +"peZ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/newscaster/directional/west, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/west{ + id = "Cabin_4Privacy"; + name = "Cabin 4 Privacy Toggle"; + pixel_y = -24 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/commons/locker) +"pfc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output{ dir = 4 }, -/obj/structure/closet/secure_closet/atmospherics, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/engine/air, /area/station/engineering/atmos) -"ssg" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/item/toy/figure/rd{ - pixel_y = 10 - }, +"pfr" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"ssJ" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/chapel/monastery) +"pfH" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/pen, +/obj/machinery/door/window/left/directional/south{ + name = "Cargo Desk"; + req_access = list("shipping") }, -/obj/structure/disposalpipe/junction{ +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"pfM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/office{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ssN" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"pfO" = ( +/obj/structure/rack, +/obj/item/restraints/handcuffs, +/obj/item/assembly/flash/handheld, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security) -"ssS" = ( +/area/station/security/execution/transfer) +"pfV" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"pgA" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"pgG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"pgQ" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/commons/locker) -"ssZ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"phh" = ( +/obj/structure/sign/poster/contraband/red_rum, +/turf/closed/wall/rust, +/area/station/maintenance/port/greater) +"phF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"phH" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"phK" = ( +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"sti" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/science, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"stj" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 4 +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"phL" = ( +/obj/machinery/door/window/left/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"phQ" = ( +/obj/structure/flora/bush/pale/style_random, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid, +/area/space/nearstation) +"phX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"stp" = ( -/obj/structure/railing{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"phY" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"pig" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Xenobiology Labs"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/obj/structure/closet/secure_closet/cytology, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/engineering/main) -"stq" = ( -/obj/structure/table, -/obj/machinery/door/window/right/directional/east, -/obj/item/wheelchair{ - pixel_y = -3 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"pii" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{ + dir = 4 }, -/obj/item/wheelchair, -/obj/item/wheelchair{ - pixel_y = 3 +/obj/effect/landmark/blobstart, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) +"pik" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/fireaxecabinet/jawsofrecovery/directional/west, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/holofloor/dark, -/area/station/medical/paramedic) -"stw" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "roboticsprivacy"; - name = "Robotics Shutters" +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"pio" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/meter/layer2, /turf/open/floor/plating, -/area/station/science/robotics/lab) -"stz" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"stE" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"stF" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/riot_shield, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/airalarm/directional/north, +/area/station/maintenance/starboard) +"piu" = ( /turf/open/floor/iron/dark, -/area/station/security/armory) -"stP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"stQ" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"stS" = ( +/area/station/service/chapel/monastery) +"piB" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"sug" = ( -/obj/machinery/sparker/directional/south{ - id = "Xenobio" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"suo" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" +/obj/machinery/duct, +/obj/structure/railing/corner{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"piD" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/engineering/supermatter/room) +"piH" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"sup" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"suq" = ( -/obj/effect/landmark/start/station_engineer, +/area/station/security/prison/safe) +"piN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" }, -/turf/open/floor/iron, -/area/station/engineering/main) -"sut" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"piQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"suw" = ( -/obj/machinery/chem_master, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"suB" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur{ - pixel_x = -5; - pixel_y = 16 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar{ - pixel_x = 5; - pixel_y = 16 +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel{ - pixel_x = 15; - pixel_y = 16 +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/obj/item/storage/fancy/coffee_condi_display{ - pixel_x = 4; - pixel_y = 2 +/area/station/hallway/primary/port) +"piW" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"suK" = ( -/obj/machinery/disposal/bin, -/obj/machinery/button/door/directional/east{ - id = "geneshut"; - name = "Genetics Shutters" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/structure/disposaloutlet, /obj/structure/disposalpipe/trunk{ - dir = 1 + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/obj/structure/sign/warning/vacuum/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"piX" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"suO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"suV" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"svf" = ( +/area/station/science/robotics/mechbay) +"piZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"pji" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"svl" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"svF" = ( -/obj/structure/closet/secure_closet/hop, -/obj/effect/turf_decal/siding/dark_blue{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"pjm" = ( /obj/structure/cable, -/obj/item/storage/box/stickers, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"svK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"svL" = ( -/turf/open/floor/iron/stairs/right{ +/area/station/command/teleporter) +"pjC" = ( +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/science/lab) -"svS" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"swi" = ( -/turf/closed/wall/r_wall, -/area/station/science/robotics/mechbay) -"swj" = ( -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"swl" = ( -/obj/structure/railing{ - dir = 1 +/obj/machinery/camera/directional/south{ + c_tag = "Recreation Fitness Ring"; + name = "recreation camera" }, -/turf/open/floor/iron/stairs{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/area/station/ai/satellite/foyer) -"swv" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"pjE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"swH" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("shipping") +/area/station/maintenance/starboard/fore) +"pjV" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/east, +/obj/item/paper_bin{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"pjX" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/hydroponics, +/obj/structure/sign/poster/contraband/kudzu/directional/east, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"pjZ" = ( +/obj/machinery/status_display/ai/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"swP" = ( -/obj/machinery/light/small/dim/directional/north, -/obj/machinery/power/apc/auto_name/directional/west, +/area/station/hallway/primary/aft) +"pka" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"pkg" = ( /obj/structure/cable, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/chapel/monastery) +"pkr" = ( +/obj/machinery/light/directional/east, +/obj/machinery/newscaster/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/eva) -"swS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/engineering/atmos) +"pkC" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 }, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"swU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"sxa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, +/obj/effect/turf_decal/tile/purple/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"pkE" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 }, -/obj/machinery/disposal/bin, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"pkI" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"sxk" = ( -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/chapel, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel{ + dir = 4 + }, /area/station/service/chapel) -"sxl" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"sxC" = ( -/obj/structure/table/wood, -/obj/structure/secure_safe/directional/east, -/obj/item/flashlight/lamp/green{ - pixel_x = 4; - pixel_y = 12 - }, -/obj/item/restraints/handcuffs, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"sxK" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_all, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"sxL" = ( +"pkK" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/recharge_station, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sxV" = ( -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"sye" = ( -/obj/structure/table, -/obj/item/paper/pamphlet/radstorm, -/turf/open/floor/iron/dark/side{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/area/station/maintenance/radshelter/medical) -"syl" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"syF" = ( -/obj/effect/landmark/start/prisoner, -/obj/item/plant_analyzer, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"syL" = ( -/obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"syR" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"syX" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, -/turf/open/misc/asteroid, -/area/station/asteroid) -"szc" = ( -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"szi" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"szk" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/server) -"szp" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/area/station/command/bridge) +"pkM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"szq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/maintenance/starboard) +"pkY" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"szt" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ - dir = 4 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"szD" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/science/research) -"szK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/side{ - dir = 8 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"plj" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"szO" = ( -/obj/machinery/computer/monitor{ - name = "bridge power monitoring console" - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"szR" = ( -/obj/effect/baseturf_helper/space, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"sAc" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom, -/turf/open/floor/carpet, -/area/station/service/theater) -"sAf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/science/xenobiology) -"sAr" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Centre" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/structure/cable, +/area/station/security/brig) +"plm" = ( +/turf/closed/wall/rust, +/area/station/maintenance/solars/starboard/fore) +"plp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"sAs" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) -"sAy" = ( -/obj/effect/landmark/start/scientist, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/purple{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"sAD" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/command/meeting_room) -"sAI" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"sAJ" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"plx" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"sAK" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, +/area/station/hallway/secondary/entry) +"plG" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"sAN" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 - }, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, +/area/station/maintenance/starboard/fore) +"plT" = ( +/obj/effect/turf_decal/delivery, /obj/structure/table, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd") - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"sAO" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/pen, +/obj/item/stamp/granted{ + pixel_x = 8; + pixel_y = 2 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sBb" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = 6 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"sBe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/item/pen/red{ + pixel_x = -5; + pixel_y = -5 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"sBl" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 5 +/obj/item/multitool, +/obj/item/toy/figure/cargotech{ + pixel_x = 9; + pixel_y = 15 }, -/area/station/command/meeting_room) -"sBm" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"sBr" = ( -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 +/obj/item/toy/figure/miner{ + pixel_x = 6; + pixel_y = 14 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"sBv" = ( -/obj/structure/railing, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/ai/satellite/foyer) -"sBG" = ( -/obj/machinery/light/warm/directional/north, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"plX" = ( +/turf/closed/wall, +/area/station/commons/storage/art) +"pmd" = ( +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"sBH" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"sBO" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"sBR" = ( -/obj/machinery/wall_healer/directional/west, -/turf/open/floor/iron/white/smooth_half{ - dir = 8 - }, -/area/station/science/xenobiology) -"sBZ" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"sCp" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/engineering/main) -"sCD" = ( -/obj/machinery/power/tracker, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"sCE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"sCL" = ( -/obj/structure/rack, -/obj/item/integrated_circuit/loaded/hello_world, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/purple/filled/line{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"sCO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"pmk" = ( +/obj/structure/chair/sofa/right/brown{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"sCT" = ( -/obj/structure/closet/secure_closet/psychology, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"sDd" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"sDh" = ( -/obj/structure/rack, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"sDq" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/light/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"sDr" = ( +/area/station/cargo/miningoffice) +"pmq" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"sDH" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"sDK" = ( -/obj/structure/table/wood, -/obj/item/toy/crayon/spraycan/lubecan, -/obj/item/bikehorn{ - pixel_x = 6 - }, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/red/opposingcorners{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"pms" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/service/theater) -"sDP" = ( -/obj/effect/turf_decal/stripes/asteroid/corner{ - dir = 8 - }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"sEe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"sEv" = ( +/area/station/maintenance/fore) +"pmu" = ( /obj/structure/table, -/obj/machinery/recharger{ +/obj/item/analyzer{ pixel_y = 4 }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"sEC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/item/analyzer{ + pixel_x = 2 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/requests_console/directional/west{ + department = "Tool Storage"; + name = "Tool Storage Requests Console" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"sEY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/comfy{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"sFa" = ( +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"pmy" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"pmA" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall, +/area/station/maintenance/port/fore) +"pmD" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"sFd" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/wardrobe/cargo_wardrobe, -/turf/open/floor/iron, -/area/station/cargo/storage) -"sFg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/pharmacy) -"sFq" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 4 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/security) -"sFz" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"pmI" = ( +/obj/item/kirbyplants/random, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai/upload/chamber) +"pmM" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"pnd" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"pnl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/obj/effect/spawner/random/food_or_drink/plant_produce, -/obj/structure/table/wood, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"sFB" = ( -/obj/item/bedsheet/hop, -/obj/structure/bed, -/obj/effect/landmark/start/head_of_personnel, -/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/office) +"pns" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"sFT" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) +"pnA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"sFX" = ( +/area/station/maintenance/starboard) +"pnE" = ( +/obj/structure/cable, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/stack/sheet/glass/fifty, +/obj/structure/closet/crate/engineering/electrical, +/obj/structure/sign/warning/xeno_mining/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"pnI" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"sGj" = ( -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" }, -/obj/machinery/door/airlock/maintenance{ - name = "Disposal Access" +/obj/machinery/door/airlock/research{ + name = "Auxiliary Research" }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/dark, +/area/station/science) +"pnJ" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" + }, +/obj/effect/turf_decal/bot, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = 4; + pixel_y = 4 }, +/turf/open/floor/engine, +/area/station/science/auxlab) +"pnK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"sGk" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/maintenance/fore) +"pog" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/courtroom) +"pon" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"sGs" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/turf/open/floor/iron, +/area/station/security/brig) +"pop" = ( +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sGt" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"poK" = ( +/obj/machinery/suit_storage_unit/ce, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/light/floor, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"sGu" = ( -/obj/structure/table, -/obj/machinery/processor{ - pixel_y = 12 +/area/station/command/heads_quarters/ce) +"poU" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sGz" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/turf/open/misc/asteroid, +/area/space/nearstation) +"poZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"sGE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 9 +/obj/machinery/flasher/directional/east{ + id = "AI"; + name = "Meatbag Pacifier" }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/structure/cable, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"sHa" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/ai/satellite/chamber) +"ppd" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"sHg" = ( +/area/station/security/checkpoint/customs) +"ppl" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"sHh" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"sHn" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 +/area/station/maintenance/department/bridge) +"ppy" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = -5; + pixel_y = 7 }, -/obj/structure/chair/sofa/bench/right{ - dir = 1 +/obj/item/pen{ + pixel_x = 8; + pixel_y = 5 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"sHo" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = 3; - pixel_y = 6 +/obj/item/pen/red{ + pixel_x = 5; + pixel_y = 1 }, -/obj/item/construction/plumbing{ - pixel_x = 34; +/obj/item/toy/figure/detective, +/obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"ppB" = ( +/obj/structure/table, +/obj/item/storage/box/syringes{ + pixel_x = 4; pixel_y = 6 }, -/obj/item/stack/ducts/fifty{ - pixel_x = 26; +/obj/item/storage/box/beakers{ pixel_y = 2 }, -/obj/item/stack/ducts/fifty{ - pixel_x = 25; - pixel_y = 1 +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/button/door/directional/south{ + id = "xeno2"; + name = "Creature Cell 2 Toggle"; + pixel_x = -24; + req_access = list("xenobiology") }, -/obj/item/stack/ducts/fifty{ - pixel_x = 24; - pixel_y = -1 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/item/stack/ducts/fifty{ - pixel_x = 23; - pixel_y = -3 +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"ppH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/trimline/blue/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 }, -/obj/item/stack/ducts/fifty{ - pixel_x = 23; - pixel_y = -5 +/turf/open/floor/iron, +/area/station/service/hydroponics) +"pqb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/eva) +"pqh" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/structure/grille/broken, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/machinery/light/small/directional/west, +/obj/item/relic, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"pqm" = ( +/obj/effect/turf_decal/siding/purple{ dir = 1 }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"sHz" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"pqu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"sHO" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 +/area/station/service/hydroponics) +"pqw" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" }, -/obj/structure/closet/radiation, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"sIl" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_y = 12 +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/item/stack/sheet/mineral/plasma{ - pixel_y = -3 +/obj/item/pen, +/obj/item/toy/figure/md{ + pixel_x = 8; + pixel_y = 6 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"sIv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"sIx" = ( +/area/station/medical/office) +"pqB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/lobby) -"sIJ" = ( -/obj/machinery/light/small/directional/north{ - bulb_power = 0.8 +/area/station/hallway/primary/central/fore) +"pqD" = ( +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"pqF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer's Office" }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"sIM" = ( -/obj/structure/filingcabinet/security, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/security/evidence) -"sIN" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"sIQ" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"pqH" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/light/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"pqS" = ( +/turf/open/floor/carpet, +/area/station/medical/psychology) +"pra" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"sIV" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"sIW" = ( -/obj/structure/transport/linear/public, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"sIX" = ( -/obj/effect/turf_decal/arrows{ - dir = 4; - pixel_x = -7 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/area/station/cargo/miningdock) +"pri" = ( +/obj/structure/window/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"sJo" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"sJt" = ( /obj/structure/table, -/obj/item/rag{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 +/obj/machinery/computer/records/medical/laptop{ + dir = 4 }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/light/directional/west, -/obj/structure/fish_mount/bar/directional/west, /turf/open/floor/iron/dark, -/area/station/service/bar) -"sJD" = ( -/obj/structure/tank_holder/extinguisher/advanced, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) -"sJG" = ( -/obj/effect/turf_decal/stripes{ +/area/station/medical/morgue) +"prn" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"sJI" = ( -/obj/structure/chair/sofa/bench/left{ +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"prq" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"prr" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + name = "euthanization chamber freezer" + }, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/newscaster/directional/west, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"sJT" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/uppersouth) -"sKa" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/science/xenobiology) +"prK" = ( +/obj/machinery/disposal/bin/tagger, +/obj/machinery/firealarm/directional/south, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"prP" = ( /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"sKs" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/area/station/hallway/primary/aft) +"prW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"prX" = ( +/obj/machinery/status_display/shuttle, +/turf/closed/wall, +/area/station/engineering/storage/tech) +"prY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, /obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sKt" = ( -/turf/open/floor/carpet, -/area/station/medical/psychology) -"sKF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/maintenance/starboard/fore) +"prZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/techstorage/custom_shuttle, +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"sKL" = ( -/turf/open/floor/plating/airless, -/area/station/solars/port/fore) -"sKM" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sLa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/sign/poster/contraband/pwr_game/directional/east, -/turf/open/floor/iron/stairs{ - dir = 1 +/area/station/engineering/storage/tech) +"psn" = ( +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 }, -/area/station/cargo/bitrunning/den) -"sLn" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/airlock{ - name = "Bar Storage" +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/airalarm/directional/west, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"sLr" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, -/obj/machinery/airlock_sensor/incinerator_ordmix{ - pixel_y = -24 +/area/station/security/armory) +"psv" = ( +/turf/closed/wall/rust, +/area/station/medical/psychology) +"psC" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/service/chapel/dock) +"psF" = ( +/obj/structure/sink/directional/east, +/obj/effect/landmark/start/roboticist, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"sLt" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"sLv" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ +/area/station/science/robotics/lab) +"psP" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"sLy" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"sLJ" = ( -/obj/machinery/door/poddoor/lift/preopen{ - transport_linked_id = "cargo" - }, -/obj/effect/turf_decal/stripes{ +/area/station/hallway/primary/aft) +"ptu" = ( +/obj/machinery/air_sensor/oxygen_tank, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"ptL" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/poster/random_contraband, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ptQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_half{ +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/area/station/cargo/storage) -"sLU" = ( -/obj/machinery/light/cold/dim/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"sLW" = ( -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"puy" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/generic/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/sunny/style_random, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/grass, +/area/station/command/heads_quarters/hop) +"puB" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"sMs" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible{ +/obj/structure/closet/secure_closet/exile, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"puJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"sMO" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/structure/sign/warning/cold_temp/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/machinery/door/window/left/directional/west{ + name = "Creature Cell"; + req_access = list("xenobiology") }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"sMT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"puS" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/power/emitter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"pvb" = ( +/obj/structure/sign/warning/secure_area, +/obj/item/multitool, +/turf/closed/wall/r_wall, +/area/station/command/vault) +"pvf" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 }, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"sMV" = ( -/obj/structure/railing, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/door/firedoor/border_only, +/area/station/service/kitchen) +"pvi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/storage) -"sMX" = ( -/mob/living/basic/chicken{ - name = "Kentucky"; - real_name = "Kentucky" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"sNh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/area/station/engineering/atmos/storage/gas) +"pvs" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance" }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"sNi" = ( -/obj/machinery/light/directional/north, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/chair/sofa/bench/left{ +/obj/effect/mapping_helpers/airlock/access/all/security/detective, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"pvu" = ( +/obj/machinery/vending/wardrobe/atmos_wardrobe, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"sNj" = ( -/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"pvA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/light/small/directional/west, /turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"sNu" = ( -/obj/structure/sign/warning/electric_shock, -/turf/closed/wall/r_wall, -/area/station/security/prison/garden) -"sNy" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sNE" = ( -/obj/machinery/computer/dna_console, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"sNJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/maintenance/fore) +"pvF" = ( +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/main) -"sNP" = ( +/area/station/security/checkpoint/customs) +"pvH" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"pvK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"sNT" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/engineering/lobby) -"sNU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/area/station/hallway/secondary/entry) +"pwa" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"sOr" = ( -/obj/effect/spawner/random/gizmo, -/turf/open/floor/engine, -/area/station/science/explab) -"sOA" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark, +/area/station/ai/satellite/maintenance/storage) +"pwo" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sPi" = ( -/obj/structure/closet/firecloset, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"sPv" = ( -/obj/structure/table/wood, -/obj/item/stamp/head/hop, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"sPy" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_y = 3 }, -/area/station/maintenance/central/greater) -"sPC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"pwx" = ( +/obj/machinery/vending/autodrobe, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/wood, +/area/station/service/theater) +"pwy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"pwF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_large, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) -"sPD" = ( -/obj/effect/spawner/structure/window/reinforced, +"pwT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/security/checkpoint/science) -"sPH" = ( +/area/station/maintenance/port/lesser) +"pxe" = ( +/turf/closed/wall/mineral/plastitanium, +/area/station/maintenance/port/aft) +"pxE" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/hop) +"pxH" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/railing/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"pxN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"pya" = ( +/obj/machinery/computer/crew{ + dir = 4 + }, +/obj/machinery/requests_console/directional/west{ + department = "Head of Security's Desk"; + name = "Head of Security's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"pyg" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "forestarboard"; + name = "Fore-Starboard Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/fore) +"pyr" = ( +/turf/closed/wall, +/area/station/medical/coldroom) +"pyJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"pzc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"pzm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"pzC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"pzP" = ( +/obj/machinery/telecomms/bus/preset_one, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"pAq" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/siding/white{ dir = 4 }, -/area/station/engineering/atmos) -"sPV" = ( -/obj/machinery/atmospherics/components/binary/passive_gate{ - on = 1; - target_pressure = 600 +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"pAr" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Supply Door Airlock" }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, -/area/station/engineering/atmos/pumproom) -"sPW" = ( -/obj/machinery/light/floor, -/obj/structure/railing/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"pAx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/official/random/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"sPY" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"pAE" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"pAQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"pBd" = ( +/turf/closed/wall/rust, +/area/station/medical/paramedic) +"pBh" = ( +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"pBi" = ( +/obj/docking_port/stationary/mining_home/kilo{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"pBR" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"sQd" = ( -/obj/structure/cable/multilayer/connected, +/area/station/hallway/secondary/entry) +"pBU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"pCa" = ( +/obj/machinery/door/poddoor/preopen{ + id = "xeno3"; + name = "Creature Cell 3" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/left/directional/east{ + name = "Creature Cell"; + req_access = list("xenobiology") + }, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"sQe" = ( -/obj/structure/disposalpipe/segment{ +/area/station/science/xenobiology) +"pCb" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron, +/area/station/security/office) +"pCj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"sQC" = ( -/obj/structure/chair/pew/left{ +/area/station/maintenance/department/electrical) +"pCu" = ( +/turf/open/floor/plating, +/area/station/hallway/primary/fore) +"pCF" = ( +/obj/structure/door_assembly/door_assembly_ext{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"pCP" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/iron, +/area/station/security/prison) +"pCX" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, /obj/effect/turf_decal/siding/wood/corner{ - dir = 4 + dir = 8 }, -/obj/machinery/button/door/directional/south{ - id = "chapel_shutters_parlour"; - name = "chapel shutters control" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"sQD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"pDd" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"sQP" = ( -/obj/effect/turf_decal/tile/purple/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/xenobiology) -"sRj" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/siding/purple{ - dir = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"pDm" = ( +/obj/structure/sign/warning/no_smoking{ + pixel_x = -30 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"pDs" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 }, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"sRl" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/explab) -"sRo" = ( -/obj/machinery/power/solar_control{ - dir = 1; - id = "portaft"; - name = "Aft Port Solar Control" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/dead_body_placer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"pDF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/command/vault) +"pDK" = ( +/turf/closed/wall, +/area/station/tcommsat/computer) +"pDM" = ( +/turf/closed/wall/rust, +/area/station/maintenance/aft) +"pDP" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"pDT" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"sRq" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"sRH" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"sRI" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"sRJ" = ( -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"pDY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"sRP" = ( -/obj/machinery/photocopier/prebuilt, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"sRU" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"sRV" = ( -/obj/item/kirbyplants/organic/plant21, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"sSm" = ( -/obj/machinery/door/airlock/maintenance_hatch, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"pEc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"pEt" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, /obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 8 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/medical/central) +"pEu" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/storage/medkit/emergency, /turf/open/floor/iron, /area/station/commons/locker) -"sSL" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +"pEA" = ( +/obj/structure/table, +/obj/machinery/camera/directional/east{ + c_tag = "Courtroom Jury"; + name = "command camera" }, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"pED" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"pEL" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"pFl" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"sSN" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"pFq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"sSP" = ( -/obj/structure/chair/office/light{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"pFs" = ( +/obj/structure/cable, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"sSX" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/disposalpipe/trunk{ +/obj/machinery/computer/rdconsole/unlocked{ dir = 4 }, -/obj/machinery/digital_clock/directional/west, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"sTb" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/effect/spawner/random/entertainment/deck, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sTg" = ( -/obj/structure/table, -/obj/item/electronics/apc, -/obj/item/electronics/apc, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"sTj" = ( +/area/station/command/bridge) +"pFw" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"pFS" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"pFT" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"sTl" = ( -/obj/effect/spawner/random/decoration/statue{ - spawn_loot_chance = 50 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Theatre Room" }, -/obj/structure/sign/painting/library_secure{ - pixel_x = 32 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/service/library) -"sTw" = ( -/obj/structure/cable, -/turf/closed/wall/r_wall, -/area/station/engineering/main) -"sTB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"pFY" = ( +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 }, -/obj/structure/railing{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"pGe" = ( +/obj/item/kirbyplants, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"sTC" = ( -/obj/item/hatchet, -/obj/item/cultivator, -/obj/item/crowbar, -/obj/item/reagent_containers/cup/watering_can, -/obj/item/plant_analyzer, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"pGg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/light/small/directional/east, -/obj/structure/table/wood, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics/garden) -"sTS" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/security/warden) -"sUc" = ( -/obj/item/bodypart/arm/left, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"sUn" = ( -/obj/structure/table, -/obj/item/papercutter, -/obj/item/paper_bin/bundlenatural, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"sUz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"pGj" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/brig) -"sUD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"pGA" = ( +/obj/structure/sink/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, +/obj/structure/mirror/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"pGD" = ( /obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/central/lesser) -"sUI" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 }, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"sUM" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/openspace, -/area/station/security/warden) -"sUY" = ( -/obj/structure/chair/stool/directional/east, -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"sVn" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) -"sVt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"pGE" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/light/directional/east, +/obj/structure/rack, +/obj/item/mod/module/thermal_regulator, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/stack/cable_coil, +/obj/item/electronics/apc, +/obj/item/stack/cable_coil, +/obj/item/electronics/apc, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"pGM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"sVv" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"sVM" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" +/area/station/maintenance/fore) +"pGS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"sVT" = ( -/obj/structure/fluff/minepost, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"sWd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/side, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/cargo/warehouse) -"sWn" = ( -/obj/machinery/light/warm/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"sWp" = ( -/obj/machinery/status_display/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_x = -32; - pixel_y = -32 - }, -/obj/machinery/status_display/door_timer{ - id = "Cell 4"; - name = "Cell 4"; - pixel_x = 32; - pixel_y = -32 +/area/station/maintenance/fore) +"pHx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/security/brig) -"sWv" = ( -/obj/effect/spawner/random/decoration/showcase, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"sWy" = ( -/obj/structure/reagent_dispensers/servingdish, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron, -/area/station/security/prison/mess) -"sWC" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"pHy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine" }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"sWN" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/siding/yellow/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/multilayer/connected, -/turf/open/floor/engine, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"sWT" = ( -/obj/structure/cable, +"pHD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/storage/tech) -"sWY" = ( -/obj/machinery/door/airlock/external/glass{ - name = "Mining Dock Airlock" - }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"sXf" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency{ - pixel_x = -2; - pixel_y = -3 - }, -/obj/item/multitool, -/obj/item/wrench, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron, -/area/station/command/bridge) -"sXG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/hallway/primary/port) +"pHE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/glass/reinforced, -/area/station/science/genetics) -"sXI" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/openspace, -/area/space/nearstation) -"sXJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/exam_room) -"sXL" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/ice{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/food/donkpocket/pizza{ - pixel_x = 12 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron, -/area/station/service/cafeteria) -"sYb" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/area/station/cargo/drone_bay) +"pIa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/turf/open/floor/iron, +/area/station/security/courtroom) +"pIb" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 4; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 + }, /turf/open/floor/iron, -/area/station/cargo/storage) -"sYc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" +/area/station/cargo/miningdock) +"pIl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"sYi" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "departures-entrance" }, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"sYn" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"sYs" = ( -/obj/machinery/light/warm/directional/north, -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/area/station/hallway/secondary/exit/departure_lounge) +"pIy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"sYu" = ( -/obj/structure/closet/crate/wooden/toy, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 +/obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/status_display/ai/directional/south, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"pID" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/storage/box/stickers, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/iron, -/area/station/service/theater) -"sYy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"sYB" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Engineering Security Post" +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/security/checkpoint/engineering) -"sYD" = ( -/obj/item/toy/plush/lizard_plushie{ - name = "Scared-Of-Heights" +/area/station/hallway/secondary/exit/departure_lounge) +"pIK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/obj/structure/closet/crate/freezer{ + name = "organ storage" }, -/turf/open/floor/plating, -/area/station/hallway/primary/central) -"sYH" = ( -/obj/effect/landmark/blobstart, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/organ/tail/cat, +/obj/item/organ/tail/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/ears/cat, +/obj/item/organ/heart, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"sYI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"pIO" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/heads_quarters/ce) +"pIS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/fax/heads/hos, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"sYU" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Air to Port" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"sYZ" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"sZl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, +/area/station/command/heads_quarters/hos) +"pIT" = ( +/obj/machinery/vending/wardrobe/chem_wardrobe, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"pIX" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"sZs" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"sZy" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/item/clothing/gloves/color/fyellow, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"sZF" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"sZG" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"sZH" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#EFB341" +/obj/structure/window/reinforced/spawner/directional/west, +/obj/item/megaphone{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"sZK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"sZS" = ( -/obj/effect/spawner/random/engineering/vending_restock, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/maintenance, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"sZT" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Prison Showers" +/area/station/commons/fitness/recreation) +"pJr" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Medical"; + name = "Medical Fax Machine" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"pJs" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall, +/area/station/maintenance/starboard) +"pJz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"sZV" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/entertainment/coin{ - spawn_loot_count = 5; - spawn_random_offset = 5; - spawn_scatter_radius = 1 +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"pJJ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 }, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"tab" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/command/eva) -"tac" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 +/area/station/engineering/atmos/pumproom) +"pJK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/machinery/disposal/bin, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"taj" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/barricade/wooden, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"taw" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"taD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/item/toy/basketball, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"taI" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/siding/purple{ - dir = 6 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"taK" = ( -/obj/machinery/telecomms/server/presets/security, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"taP" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"taT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"tbb" = ( +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"pJM" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"pKf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"pKm" = ( /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"tbe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/library) -"tbk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/security/prison/shower) +"pKt" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"tbp" = ( -/obj/item/flashlight/flare/candle/infinite{ - pixel_x = -16; - pixel_y = 16 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"tbH" = ( -/turf/open/floor/iron, -/area/station/command/bridge) -"tbU" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/firedoor, +/obj/machinery/newscaster/directional/east, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"pKv" = ( +/obj/machinery/computer/cargo, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/machinery/requests_console/directional/north{ + department = "Quartermaster's Desk"; + name = "Quartermaster's Requests Console" }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"tbV" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock{ - name = "Kitchen" +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/extinguisher_cabinet/directional/north{ + pixel_x = 32 }, -/obj/structure/cable, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"tbZ" = ( -/obj/structure/chair/comfy/brown{ - dir = 4; - name = "Head Of Security" +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/qm) +"pKB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"tcx" = ( -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/science/server) -"tcN" = ( -/obj/item/dice/d1, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tdh" = ( -/obj/structure/closet/crate/trashcart/filled, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/area/station/maintenance/disposal) +"pKM" = ( +/obj/machinery/mass_driver{ + id = "trash" }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"tdk" = ( -/obj/structure/sign/departments/science/directional/east, -/obj/effect/landmark/navigate_destination/research, -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"pKQ" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, +/obj/machinery/light/directional/east, +/obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/iron/white, -/area/station/science/lobby) -"tdm" = ( -/obj/effect/turf_decal/tile/neutral{ +/area/station/security/prison/mess) +"pKR" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/starboard/aft) +"pLe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/obj/item/training_toolbox{ - pixel_y = 5 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/item/training_toolbox, -/obj/structure/table, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"tdq" = ( -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"tdH" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/flora/bush/lavendergrass/style_2, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"tdW" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 +/area/station/cargo/drone_bay) +"pLi" = ( +/obj/item/stack/sheet/cardboard{ + amount = 14 }, -/obj/machinery/rnd/production/techfab/department/security, -/turf/open/floor/iron, -/area/station/security/office) -"teg" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"tel" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"teG" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"teT" = ( +/obj/item/stack/package_wrap, /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_blue, +/turf/open/floor/plating, +/area/station/security/prison) +"pLl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"pLs" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/pumproom) +"pLu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"teV" = ( -/obj/structure/sink/directional/north, -/obj/effect/turf_decal/tile/green/anticorner/contrasted, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"tft" = ( -/obj/structure/closet/secure_closet/security/science, -/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"tfx" = ( -/obj/structure/closet/crate/coffin, -/obj/machinery/door/window/left/directional/east{ - name = "Coffin Storage"; - req_access = list("chapel_office") +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"tfC" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"tfZ" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"tgf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"tgj" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"tgr" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/turf/open/space/basic, -/area/space/nearstation) -"tgv" = ( -/obj/machinery/computer/crew{ - dir = 8 +/turf/open/floor/iron, +/area/station/engineering/lobby) +"pLv" = ( +/obj/structure/sign/directions/evac{ + pixel_y = -24 }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"tgw" = ( -/obj/machinery/power/smes/full, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/airalarm/directional/north, +/turf/closed/wall, +/area/station/maintenance/port/aft) +"pLw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/directional/west, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/vomit/old, +/obj/structure/sign/poster/contraband/random/directional/north, +/mob/living/basic/goose/vomit, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"pLB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"tgW" = ( -/obj/machinery/door/airlock/medical{ - name = "Primary Surgical Theatre" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"tgZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron/recharge_floor, -/area/station/hallway/primary/central) -"thb" = ( +/area/station/service/kitchen) +"pLC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"pLO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"thf" = ( -/turf/closed/wall, -/area/station/science/breakroom) -"thg" = ( -/obj/machinery/mass_driver/chapelgun, -/obj/machinery/light/small/dim/directional/north, -/obj/effect/turf_decal/stripes/end{ +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/item/radio, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"thj" = ( -/obj/structure/sign/directions/security/directional/east{ - dir = 1; - pixel_y = 8; - pixel_x = 0 - }, -/obj/structure/sign/directions/supply/directional/east{ - dir = 1; - pixel_x = 0 +/area/station/hallway/primary/fore) +"pLV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/sign/directions/engineering/directional/east{ - pixel_y = -8; - pixel_x = 0 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/closed/wall, -/area/station/maintenance/port/lesser) -"tho" = ( -/obj/machinery/power/port_gen, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 5 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"pMe" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/area/station/command/emergency_closet) -"tht" = ( -/obj/machinery/button/door/directional/east{ - id = "gateshutter"; - name = "Gateway Shutter Control"; - req_access = list("command") +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"pMj" = ( +/obj/effect/landmark/start/paramedic, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"pMS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"pMT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/server) +"pNe" = ( /obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"thw" = ( -/obj/structure/cable, +/area/station/security/office) +"pNg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/turf/closed/wall, +/area/station/maintenance/disposal/incinerator) +"pNA" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"pNL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"thH" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"pNV" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/airalarm/directional/east, -/obj/structure/closet/secure_closet/security/sec, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"thT" = ( -/turf/open/openspace, -/area/station/security/warden) -"thW" = ( -/obj/machinery/computer/piratepad_control/civilian{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"thX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/area/station/hallway/primary/aft) +"pNY" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining" }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"thZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"tiv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks, -/obj/structure/holosign/barrier, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"pNZ" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"tiB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"tiF" = ( -/obj/structure/ladder, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/wall_healer/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"tiI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"tiL" = ( -/obj/structure/railing/corner{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/trimline/red/filled/arrow_cw, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/security) -"tiP" = ( +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"pOb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"tiT" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/neutral/half{ +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"pOd" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/sign/warning/fire/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/edge{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"pOo" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/item/plant_analyzer, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"pOq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/exodrone, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo Drones"; + name = "cargo camera"; + network = list("ss13","qm") }, -/area/station/hallway/secondary/exit/departure_lounge) -"tiY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/science/explab) -"tjc" = ( -/obj/structure/cable, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/stairs{ - dir = 4; - icon = 'icons/obj/stairs.dmi'; - icon_state = "stairs_wood" +/obj/structure/sign/poster/random/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/area/station/service/chapel) -"tjd" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/pharmacy) -"tjn" = ( /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"tjq" = ( -/obj/machinery/shower/directional/south, -/obj/effect/turf_decal{ - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny" +/area/station/cargo/drone_bay) +"pOy" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"pOG" = ( +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/airlock_sensor/incinerator_atmos{ + pixel_x = 24 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"tju" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"pOI" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/rack, -/obj/effect/spawner/random/bureaucracy/pen{ - spawn_loot_count = 3; - spawn_random_offset = 2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station/dispenser/reverse{ + dir = 8 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"tjz" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/plating, +/area/station/hallway/primary/central/fore) +"pOO" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 }, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tjD" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"pOS" = ( +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 }, -/obj/effect/turf_decal/plaque{ - icon_state = "L5" +/obj/item/pen, +/obj/item/stamp/head/captain{ + pixel_x = 8; + pixel_y = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/pen/fountain/captain, +/obj/item/radio/intercom/directional/south, +/obj/structure/table/wood, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"pOV" = ( +/turf/closed/wall, +/area/station/service/chapel/storage) +"pOW" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tka" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"pPe" = ( +/obj/effect/turf_decal/loading_area, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "Queue Shutters" + }, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"tkh" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ +/area/station/command/heads_quarters/hop) +"pPj" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/departments/science/alt/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"tki" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/chapel) -"tkr" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"pPw" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tkD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"tkH" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/floor/broken, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tkR" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/north{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/obj/structure/desk_bell, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"tla" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"tlb" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"tld" = ( -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"tlp" = ( +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"pPC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"tlC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"tlE" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/teleporter{ - dir = 1 +/area/station/maintenance/disposal/incinerator) +"pPD" = ( +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/sunny/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"pPZ" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Hazard Closet" }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light_switch/directional/west, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"tlW" = ( +/area/station/maintenance/port/aft) +"pQd" = ( /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"tmg" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ + pixel_y = 5 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/mix) -"tmk" = ( -/obj/machinery/door/airlock/grunge{ - name = "Prison Workshop" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/security/prison/work) -"tmn" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"pQi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/medical/medbay/lobby) -"tms" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/area/station/maintenance/port/aft) +"pQo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck" }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "holodeck" }, -/area/station/medical/pharmacy) -"tmQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"tmR" = ( -/obj/structure/bed/maint, -/obj/item/bedsheet/yellow{ +/area/station/commons/fitness/recreation) +"pQr" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/central) +"pQx" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"pQC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/port_gen/pacman/pre_loaded, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"pQM" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 1; + id = "NTMSLoad"; + name = "off ramp" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"pQT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/grimy, -/area/station/maintenance/port/greater) -"tmT" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"pRf" = ( /obj/structure/table, -/obj/machinery/button/flasher{ - id = "pbrig"; - pixel_y = 26 - }, -/obj/item/clothing/shoes/sneakers/orange{ - pixel_x = -6; - pixel_y = -8 +/obj/item/folder/white, +/obj/item/restraints/handcuffs, +/obj/item/pen, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/item/clothing/shoes/sneakers/orange{ - pixel_x = -6; - pixel_y = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"pRu" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/window/left/directional/south{ + name = "Cargo Disposal"; + req_access = list("shipping") }, -/obj/item/clothing/shoes/sneakers/orange{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/clothing/shoes/sneakers/orange{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/clothing/under/rank/prisoner{ - pixel_x = 8; - pixel_y = 5 +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort2"; + name = "mail belt"; + pixel_x = 5; + pixel_y = 6 }, -/obj/item/clothing/under/rank/prisoner{ - pixel_x = 8; - pixel_y = 5 +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/obj/item/clothing/under/rank/prisoner{ - pixel_x = 8; - pixel_y = 5 +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "packagereturn"; + name = "crate returns"; + pixel_x = -6; + pixel_y = 6 }, -/obj/item/clothing/under/rank/prisoner{ - pixel_x = 8; - pixel_y = 5 +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"tnp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/sorting) +"pRw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/atmos) -"tnu" = ( -/obj/machinery/gateway/centerstation{ - bound_height = 96; - bound_width = 64; - bound_x = 0; - bound_y = -32; - dir = 8 +/area/station/hallway/primary/aft) +"pRF" = ( +/obj/docking_port/stationary/random{ + dir = 4; + name = "lavaland"; + shuttle_id = "pod_4_lavaland" }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"tnv" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/turf/open/space/basic, +/area/space/nearstation) +"pRO" = ( +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tny" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes{ - dir = 6 +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/atmos/storage/gas) +"pRP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"pSe" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai/upload/foyer) -"tnD" = ( -/obj/item/bodypart/leg/left, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"tnI" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"tnL" = ( -/obj/item/stack/tile/glass/sixty, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"pSh" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/rods/twentyfive, /obj/item/wrench, -/obj/structure/closet/crate/engineering, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"toc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 +/obj/item/hand_labeler, +/obj/item/crowbar, +/obj/item/electronics/airlock{ + pixel_x = -6; + pixel_y = 6 }, -/obj/machinery/flasher/directional/south{ - id = "pbrig" +/obj/item/stack/package_wrap, +/obj/item/electronics/airlock{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/iron, -/area/station/security/prison) -"tom" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"pSj" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 6 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"tot" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/item/storage/toolbox/emergency, +/obj/item/crowbar/red, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/structure/fireaxecabinet/directional/south, +/obj/machinery/door/window/right/directional/north{ + name = "Emergency Storage"; + req_access = list("command") }, -/area/station/command/meeting_room) -"tox" = ( +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"pSu" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/obj/machinery/suit_storage_unit/atmos, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"toz" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/power/terminal{ dir = 4 }, /obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"toC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"toD" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/storage/fancy/candle_box{ - pixel_x = -12; - pixel_y = 3 +/area/station/maintenance/department/electrical) +"pSE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Atmos to Loop" }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/iron/chapel{ - dir = 1 +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/area/station/service/chapel) -"toJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"toT" = ( -/obj/machinery/telecomms/bus/preset_two, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"toV" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/clothing/glasses/science, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker - }, -/obj/item/multitool, -/turf/open/floor/iron/white, -/area/station/science/lab) -"tpj" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"pSG" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"pSN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"tpl" = ( -/obj/structure/sign/warning/rad_shelter/directional/west, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tpz" = ( -/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron, +/area/station/security/prison) +"pST" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/port/greater) -"tpC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/welded, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/turf_decal/siding/wood{ +/area/station/maintenance/solars/port/fore) +"pSW" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"tpN" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"tqk" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3 - }, -/obj/machinery/door/window/left/directional/north{ - name = "Danger: Conveyor Access"; - req_access = list("maint_tunnels") - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"tqx" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/components/binary/valve/digital/on{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"pTc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"tqz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ +/obj/machinery/light/directional/south, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"pTC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/security/prison) +"pTL" = ( +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"pTR" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/storage) -"tqD" = ( -/obj/structure/railing{ - dir = 4 +/area/station/hallway/primary/central/fore) +"pUb" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"tqJ" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/ai/directional/west, +/obj/item/flashlight/lantern, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"pUj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/service/janitor) -"tqN" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"tqV" = ( -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"tra" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/cargo/storage) +"pUk" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/door/window/brigdoor/right/directional/north{ - pixel_y = 1; - req_access = list("ordnance") - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"trs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"trz" = ( -/obj/effect/turf_decal/box/corners, -/obj/machinery/holopad, /turf/open/floor/iron, -/area/station/engineering/atmos) -"trK" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/area/station/security/courtroom) +"pUA" = ( +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/paper_bin, +/obj/item/taperecorder, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"pUH" = ( +/obj/structure/cable, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"pVd" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/side{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/area/station/security/execution/transfer) -"trL" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"trP" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"tsf" = ( -/obj/structure/bed/double{ +/area/station/hallway/primary/central/fore) +"pVz" = ( +/turf/closed/wall, +/area/station/maintenance/port/fore) +"pVF" = ( +/obj/machinery/meter/monitored/waste_loop, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 4 }, -/obj/item/bedsheet/cmo/double{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"tsj" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"tsk" = ( -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron, -/area/station/security/prison) -"tsm" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"pVP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/cable, +/obj/machinery/camera/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"pVQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"tsq" = ( -/obj/structure/chair/sofa/bench/right{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"tsz" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Two"; - space_dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central) +"pVS" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/item/reagent_containers/condiment/sugar, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"pWj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"pWo" = ( +/obj/machinery/door/airlock/maintenance/external{ + name = "Transit Intersection" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/effect/landmark/navigate_destination/dockescpod2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"tsI" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/area/station/maintenance/fore) +"pWC" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tsJ" = ( -/obj/machinery/computer/cargo/request{ - dir = 8 +/obj/machinery/status_display/supply{ + pixel_y = -32 }, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"tsP" = ( -/obj/structure/cable, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"tsU" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/cargo/storage) +"pXf" = ( +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tsX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/biohazard, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"tth" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ttt" = ( -/turf/closed/wall/r_wall, -/area/station/command/emergency_closet) -"ttv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/item/storage/medkit/o2{ + pixel_x = 3; + pixel_y = 3 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ttz" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/storage/medkit/o2, +/obj/item/storage/medkit/o2{ + pixel_x = -3; + pixel_y = -3 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/table/glass, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/left/directional/west{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"pXh" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/area/station/engineering/atmos/upper) -"ttL" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ttT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, -/area/station/command/gateway) -"tui" = ( -/obj/machinery/vatgrower{ +/area/station/maintenance/port/aft) +"pXi" = ( +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"tus" = ( -/obj/machinery/plumbing/sender{ +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/service/chapel) +"pXt" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/stripes/red/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark/textured_half{ +/turf/open/floor/iron, +/area/station/command/bridge) +"pXN" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/newscaster/directional/east, +/obj/effect/landmark/start/hangover, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/commons/locker) +"pXU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/medical/chemistry/minisat) -"tuA" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"tuE" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 +/area/station/security/brig) +"pYb" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tuF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/effect/turf_decal/bot_white, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"tuH" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"tuL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" +/area/station/medical/morgue) +"pYm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"tuR" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tuT" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/ordnance/directional/south, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"tuY" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 1 - }, +/area/station/maintenance/port/lesser) +"pYO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"pYZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"tvc" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"pZe" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/item/poster/random_contraband{ + pixel_x = 6; + pixel_y = 6 }, +/obj/item/poster/random_contraband, +/obj/machinery/light/small/directional/north, +/obj/item/food/grown/mushroom/glowshroom, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"pZj" = ( +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/cargo/lobby) -"tve" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"tvj" = ( -/obj/structure/sign/poster/random/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"tvy" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/area/station/hallway/secondary/entry) +"pZx" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lobby Lockdown Shutters"; - id = "cargolobbylockdown" - }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/cargo/lobby) -"tvB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/area/station/hallway/primary/starboard) +"pZA" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"pZI" = ( +/obj/machinery/modular_computer/preset/cargochat/security{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"tww" = ( +/area/station/security/office) +"pZM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"twx" = ( -/turf/open/openspace, -/area/station/maintenance/disposal) -"twR" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"twW" = ( -/obj/structure/kitchenspike, -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"txo" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"pZO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"txw" = ( -/obj/structure/table, -/obj/effect/spawner/round_default_module, -/obj/machinery/flasher/directional/north, -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"txx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"pZT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"txy" = ( -/obj/machinery/door/airlock/hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"txF" = ( -/obj/structure/table/optable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"txK" = ( -/obj/structure/cable, -/obj/machinery/computer/warrant, +/area/station/hallway/primary/starboard) +"qaa" = ( +/obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/digital_clock/directional/north, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"qai" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"tyd" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space) -"tye" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"qaF" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"qaI" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"tyg" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "incstorage"; - name = "Incinerator Storage Shutters" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"typ" = ( -/obj/effect/spawner/random/structure/chair_comfy{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/textured_large, -/area/station/command/bridge) -"tyu" = ( -/obj/effect/turf_decal/siding/purple/corner{ +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"qaR" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall, +/area/station/medical/office) +"qaZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{ dir = 1 }, -/obj/structure/disposalpipe/junction/flip{ +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"qbc" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/dresser, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) +"qbf" = ( +/obj/effect/turf_decal/siding/red{ dir = 4 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"tyQ" = ( -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"tzk" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/security/office) -"tzs" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"tzw" = ( -/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"qbh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"tzy" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"tzT" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tzW" = ( -/obj/structure/table/wood, -/obj/item/storage/medkit{ - pixel_x = -10 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"tAf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/hallway/primary/central/fore) +"qbk" = ( +/turf/closed/wall/rust, +/area/station/medical/treatment_center) +"qbv" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"tAk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/light/warm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"tAo" = ( -/obj/structure/lattice, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"tAr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/machinery/door/airlock/security/glass{ + name = "Brig" }, -/turf/open/floor/iron/large, -/area/station/hallway/secondary/exit/departure_lounge) -"tAt" = ( -/obj/machinery/power/smes, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"tAw" = ( -/obj/structure/toilet{ +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"qbA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32; - spawn_loot_chance = 50 +/obj/effect/landmark/start/head_of_personnel, +/obj/structure/chair/office, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/button/door/directional/west{ - id = "u5"; - name = "privacy bolt control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"qbB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "hosspace"; + name = "Space Blast Door" }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"tAx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/hos) +"qbE" = ( +/obj/structure/altar/of_gods, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"tAz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine/cult, -/area/station/service/library) -"tAL" = ( -/obj/item/exodrone, -/obj/machinery/exodrone_launcher, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"tAQ" = ( -/obj/effect/turf_decal/stripes{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Gas Bypass" +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"qbJ" = ( +/obj/structure/sign/departments/medbay/alt/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"tAV" = ( -/obj/effect/turf_decal/siding/purple, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/science/genetics) -"tBe" = ( -/obj/machinery/computer/pod/old/mass_driver_controller/trash{ - pixel_x = -32; - pixel_y = 6; - range = 5 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/button/door/directional/west{ - id = "Disposal Exit"; - name = "Disposal Vent Control"; - pixel_x = -32; - pixel_y = -6; - req_access = list("maint_tunnels") +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"qbO" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"tBg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"tBi" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/structure/rack, -/obj/effect/spawner/random/clothing/gloves, -/obj/effect/spawner/random/clothing/bowler_or_that, -/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/cargo/boutique) -"tBo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/area/station/hallway/secondary/exit/departure_lounge) +"qbP" = ( +/obj/machinery/firealarm/directional/south, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"tBt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{ +/obj/machinery/wall_healer/directional/south, +/turf/open/floor/iron/stairs/left{ dir = 4 }, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"tBC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 4 +/area/station/service/chapel) +"qbV" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -4; + pixel_y = 5 }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"tBF" = ( -/obj/structure/closet/secure_closet/chief_medical, -/obj/item/screwdriver, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"tBK" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 6 +/obj/machinery/camera/directional/west{ + c_tag = "Kitchen"; + name = "kitchen camera" }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"tBL" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/item/toy/figure/chef{ + pixel_x = 4 + }, +/obj/item/holosign_creator/robot_seat/restaurant{ + pixel_y = -5 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"tCb" = ( +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"qbY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"tCm" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/chair/wood{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"tCt" = ( -/obj/machinery/computer/shuttle/mining{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron, +/area/station/security/brig) +"qci" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"qcv" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/textured, -/area/station/cargo/miningoffice) -"tCE" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"qcI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tCH" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 - }, -/obj/effect/landmark/blobstart, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"tCJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/door/firedoor, -/obj/structure/displaycase/forsale/kitchen{ - pixel_y = 8 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"tCR" = ( -/obj/structure/stairs/east, -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"tDa" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/locker) -"tDf" = ( -/turf/closed/wall, -/area/station/service/bar/backroom) -"tDg" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"tDk" = ( -/obj/effect/turf_decal/siding/purple/corner, +/area/station/hallway/primary/aft) +"qdd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"tDl" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"tDm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/area/station/cargo/storage) +"qdk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "robotics_shutters"; + name = "Robotics Privacy Shutters" }, -/obj/item/radio/intercom/directional/east, -/obj/structure/tank_holder/oxygen, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"tDw" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/turf/open/floor/plating, +/area/station/science/robotics/lab) +"qdM" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"qdR" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Containment Chamber Blast Door" }, -/obj/effect/turf_decal/tile/neutral/full, -/obj/structure/disposalpipe/trunk{ +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"qew" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"tDL" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 +/obj/effect/turf_decal/tile/dark/half/contrasted, +/obj/machinery/atmospherics/components/binary/valve/digital{ + dir = 4 }, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"tDQ" = ( -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"qez" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, -/obj/effect/turf_decal/plaque{ - icon_state = "L9" +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/medical{ + name = "Psychology" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tDS" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/psychology) +"qeH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"tEb" = ( -/obj/effect/turf_decal/siding/purple, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"qeJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/science/genetics) -"tEd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown"; - dir = 8 +/obj/machinery/door/airlock/engineering{ + name = "Telecomms Storage" }, -/turf/open/floor/plating/airless, -/area/station/cargo/storage) -"tEn" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) +"qeO" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"tEp" = ( -/obj/structure/table, -/obj/item/toy/talking/ai, -/obj/item/toy/minimeteor, -/obj/effect/turf_decal/tile/red/diagonal_edge, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron/dark, -/area/station/security/warden) -"tEu" = ( +/area/station/service/chapel) +"qeT" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"qeX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"tEy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"tEH" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/area/station/maintenance/starboard/aft) +"qeZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"qfe" = ( +/turf/closed/wall/r_wall/rust, +/area/space/nearstation) +"qfg" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"tEI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/crate, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"tEM" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"tEW" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"qfq" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tFa" = ( -/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"tFf" = ( /obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"qfu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tFD" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"tFH" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/power/apc/auto_name/directional/west, +/area/station/maintenance/fore) +"qgu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/structure/sign/poster/random/directional/north, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/central) +"qgz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/cargo/sorting) -"tFW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/hallway/primary/starboard) +"qgC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/trinary/filter/atmos{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/lobby) -"tGb" = ( -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"tGc" = ( -/obj/structure/girder, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"tGt" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/station/engineering/atmos) +"qgE" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/light/warm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/commons/lounge) -"tGu" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/commons/storage/primary) +"qgV" = ( +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison) -"tGw" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/area/ruin/space/has_grav/abandoned_warehouse) +"qhf" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"qht" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"tGE" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"qhx" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"tGJ" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/megaphone/sec, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"tGM" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/neutral/full, +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/primary/central) -"tGR" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 + dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 8 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry) -"tGW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/server) +"qhC" = ( +/obj/structure/rack, +/obj/item/storage/crayons, +/obj/item/storage/crayons, +/obj/item/airlock_painter, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"tGZ" = ( +/area/station/commons/storage/art) +"qhH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/door/airlock/command{ + name = "Research Director's Office" }, -/turf/open/floor/iron/chapel, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"qhT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"qhZ" = ( +/obj/machinery/light/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, /area/station/service/chapel) -"tHh" = ( -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/three, +"qic" = ( +/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"tHr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tHA" = ( -/obj/structure/closet/l3closet, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ +/area/station/hallway/primary/port) +"qih" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"tHE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/west{ - id = "zaza" - }, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"tHF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/cargo) +"qij" = ( +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"qip" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tHR" = ( -/obj/structure/chair/sofa/bench/right{ +/obj/machinery/computer/records/medical{ dir = 8 }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"qiB" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"tHS" = ( -/obj/structure/railing/corner{ - dir = 8 +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"qiL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark/corner{ - dir = 8 +/obj/effect/turf_decal/siding/red{ + dir = 9 }, -/area/station/command/meeting_room) -"tIr" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/warden) -"tIE" = ( -/obj/effect/landmark/secequipment, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"tIH" = ( -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"tIO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"tIT" = ( -/obj/effect/turf_decal/tile/neutral, +/area/station/hallway/secondary/exit/departure_lounge) +"qiM" = ( +/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tJk" = ( -/obj/structure/sign/warning/directional/north, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, -/area/station/asteroid) -"tJx" = ( -/obj/structure/chair/plastic{ +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"qjq" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/turf_decal/delivery, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/radio/intercom/directional/south, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/crowbar, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/light/small/directional/west, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/textured_corner, -/area/station/science/breakroom) -"tJB" = ( -/obj/machinery/door/window/right/directional/east{ - req_access = list("chapel_office") - }, -/obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"tJC" = ( -/obj/effect/turf_decal/tile/brown, -/obj/structure/railing/corner, -/obj/structure/cable, +/area/station/security/checkpoint/customs) +"qjr" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating/rust, +/area/station/maintenance/department/crew_quarters/bar) +"qjv" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"qjK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, -/area/station/cargo/lobby) -"tJO" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/secondary/exit/departure_lounge) +"qjM" = ( +/turf/closed/wall/r_wall, +/area/station/medical/paramedic) +"qkf" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/station/security/processing) +"qkm" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Blast Doors" + }, +/turf/open/floor/plating, +/area/station/engineering/lobby) +"qkn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/west, +/obj/effect/landmark/start/hangover, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, /turf/open/floor/iron, -/area/station/service/bar) -"tJS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/hallway/primary/starboard) +"qks" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"tJT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/airlock/engineering, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"tJX" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" +/obj/effect/turf_decal/plaque{ + icon_state = "L14" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos) -"tKm" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"tKX" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -1; - pixel_y = 4 +/area/station/hallway/primary/central/fore) +"qku" = ( +/obj/machinery/button/door/directional/south{ + id = "aux_base_shutters"; + name = "Public Shutters Control"; + req_access = list("aux_base") }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron, -/area/station/command/bridge) -"tLg" = ( -/turf/closed/indestructible/reinforced, -/area/space/nearstation) -"tLh" = ( -/obj/machinery/atmospherics/components/binary/tank_compressor{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"tLs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"tLv" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"tLH" = ( -/obj/item/storage/fancy/candle_box, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/construction/mining/aux_base) +"qkA" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"tLI" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/commons/lounge) -"tLO" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/electric_shock/directional/south, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, /turf/open/floor/plating, -/area/station/science/xenobiology) -"tLX" = ( -/obj/structure/table/wood, -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - start_on = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet, -/area/station/service/chapel) -"tMf" = ( -/obj/item/modular_computer/laptop/preset/civilian, -/obj/structure/table/wood, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"tMp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/utility/fire/firefighter, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"tMu" = ( -/obj/structure/railing, -/obj/effect/spawner/random/structure/closet_private, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"tMz" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/maintenance/port/lesser) +"qld" = ( +/obj/effect/turf_decal/box, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/obj/machinery/power/shieldwallgen/xenobiologyaccess, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/sign/warning/gas_mask/directional/north, /turf/open/floor/plating, /area/station/science/xenobiology) -"tMD" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +"qlg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "chem-passthrough" }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"tME" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/disablers, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, -/obj/machinery/requests_console/auto_name/directional/south, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/iron/dark, -/area/station/security/armory) -"tMF" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/area/station/maintenance/port/greater) +"qlk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"tMK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/engine, +/area/station/command/vault) +"qlw" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/captain/private) -"tMO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tMP" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"tMT" = ( -/obj/effect/turf_decal/siding/purple/corner{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"qly" = ( +/obj/structure/frame/computer{ + anchored = 1; dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/bot_white, +/obj/machinery/newscaster/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/science/research) -"tMV" = ( -/obj/structure/railing/corner{ +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"qlC" = ( +/turf/closed/wall/rust, +/area/station/maintenance/fore) +"qlD" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"qlX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/structure/table, +/obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 1 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"tNh" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/loading_area, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"tNn" = ( -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P9-Central-Primary"; - location = "P8-Central-Primary" +/obj/effect/turf_decal/trimline/purple/filled/corner, +/obj/item/flashlight/lamp, +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"qlY" = ( +/obj/machinery/door/window/brigdoor/left/directional/east{ + name = "Cytology Pen"; + req_access = list("research") }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tNx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/blobstart, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"tNy" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 +/obj/effect/turf_decal/box/corners, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/interrogation) -"tNz" = ( -/obj/effect/turf_decal/tile/neutral/half{ - dir = 4 - }, -/turf/open/floor/iron/edge{ +/area/station/science/auxlab) +"qms" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"qmx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/area/station/hallway/secondary/exit/departure_lounge) -"tNE" = ( -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"tNK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos, -/obj/machinery/airlock_sensor/incinerator_atmos{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/courtroom) +"qmR" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"tNN" = ( -/obj/effect/decal/cleanable/blood/old{ - icon_state = "floor6-old" +"qmW" = ( +/turf/open/floor/engine, +/area/station/science/xenobiology) +"qmZ" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Atmospherics Tank - Air"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"tNP" = ( -/obj/machinery/door/airlock/medical{ - id_tag = "r1"; - name = "Room A" +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"qnc" = ( +/obj/machinery/atmospherics/components/binary/valve, +/obj/machinery/door/window/right/directional/north{ + name = "Justice Windoor" }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"tNQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"tNR" = ( -/obj/structure/chair/sofa/bench{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"qny" = ( +/obj/machinery/mineral/stacking_machine{ + input_dir = 2 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"tOa" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue" +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, -/obj/effect/turf_decal/trimline/neutral/filled/warning{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"qnH" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/east, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/power/energy_accumulator/grounding_rod/anchored, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/engineering/supermatter/engine) +"qnK" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"qnL" = ( +/obj/machinery/vending/wardrobe/law_wardrobe, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/delivery, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"qoi" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"tOl" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Plasma to Incinerator" }, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"tOm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"tOp" = ( -/obj/machinery/telecomms/processor/preset_three, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"tOs" = ( -/obj/machinery/telecomms/bus/preset_one, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"tOw" = ( -/obj/item/crowbar/large/old, -/turf/open/misc/asteroid, -/area/station/asteroid) -"tOG" = ( -/obj/structure/marker_beacon/yellow, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"tOH" = ( +/area/station/maintenance/disposal/incinerator) +"qoo" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Atmospherics Port Tanks"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"tOL" = ( -/obj/machinery/button/door/directional/east{ - id = "rdoffice"; - name = "Privacy Control" +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"qos" = ( +/mob/living/carbon/human/species/monkey, +/turf/open/floor/grass, +/area/station/science/auxlab) +"qox" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) -"tOV" = ( -/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/port) +"qoF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/half{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"qoT" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/area/station/service/hydroponics/garden) -"tPb" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/openspace, -/area/station/engineering/storage/tech) -"tPW" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"tQh" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"qoW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"tQt" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/station/commons/lounge) -"tQy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tQF" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"tQI" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"tQS" = ( -/obj/structure/table/glass, -/obj/item/binoculars, -/turf/open/floor/glass/reinforced, -/area/station/command/meeting_room) -"tQV" = ( -/obj/structure/railing{ - dir = 8 +/area/ruin/space/has_grav/abandoned_warehouse) +"qpj" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) +"qpw" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 16 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/item/hemostat, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"tQX" = ( -/obj/structure/closet/radiation{ - anchored = 1 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"qpx" = ( +/obj/structure/rack, +/obj/item/storage/briefcase{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/briefcase, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/bot, +/obj/item/taperecorder{ + pixel_x = 5 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"qpI" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"qpJ" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron, -/area/station/engineering/main) -"tQY" = ( -/obj/effect/turf_decal/tile/yellow{ +/area/station/hallway/primary/starboard) +"qpP" = ( +/obj/structure/chair/office/light, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"qpT" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"qpZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/warning/no_smoking{ + pixel_x = -30 + }, /obj/structure/cable, -/turf/open/floor/iron/checker{ +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"qqB" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/area/station/engineering/atmos/upper) -"tRb" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/machinery/defibrillator_mount/directional/west, +/obj/machinery/stasis{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/box, +/obj/machinery/vitals_reader/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"qqJ" = ( +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"tRf" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/pile{ +/obj/machinery/disposal/bin/tagger, +/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"tRg" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/cargo/drone_bay) -"tRl" = ( -/obj/structure/rack/skeletal, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/engine/cult, -/area/station/service/library) -"tRp" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/area/station/maintenance/disposal/incinerator) +"qqM" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"tRX" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/structure/table, -/obj/item/paper_bin/bundlenatural, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"tRZ" = ( /obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"tSc" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/security/prison) -"tSj" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/riot_helmet, -/obj/effect/spawner/random/armory/bulletproof_helmet, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/camera/motion/directional/north{ - c_tag = "Security Armory" + dir = 6 }, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"tSn" = ( -/obj/structure/chair/office/light{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"qqV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/purple{ dir = 4 }, -/obj/effect/turf_decal/siding/blue{ +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"tSX" = ( -/obj/item/stack/tile/iron/white/smooth_large, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"tTe" = ( -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"qqZ" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/fore) -"tTl" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"tTz" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hooded/ablative, -/obj/item/gun/energy/temperature/security, -/obj/item/gun/energy/ionrifle, -/obj/item/gun/ballistic/automatic/battle_rifle{ - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/structure/steam_vent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"qrk" = ( +/obj/machinery/power/smes, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"tTE" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"tTJ" = ( -/obj/structure/railing{ +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"qrn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/turf/open/floor/iron/stairs/right, -/area/station/hallway/primary/central) -"tTK" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"tTS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/photocopier/prebuilt, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/station/service/library) -"tUb" = ( -/obj/structure/railing{ +/area/station/commons/fitness/recreation) +"qrP" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/item/storage/backpack, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"qrS" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/area/station/command/meeting_room) -"tUc" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/disposal/incinerator) -"tUk" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"qrU" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"tUn" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tUo" = ( +/area/station/maintenance/department/crew_quarters/bar) +"qsb" = ( /turf/closed/wall/r_wall, -/area/station/maintenance/radshelter/medical) -"tUp" = ( +/area/station/command/eva) +"qsn" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"tUD" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/meeting_room) -"tUF" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/keycard_auth/wall_mounted/directional/north, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"tUG" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qsv" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/commons/lounge) -"tUR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/area/station/maintenance/disposal/incinerator) +"qsy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qsA" = ( +/obj/structure/table, +/obj/structure/disposalpipe/segment, +/obj/machinery/fax{ + fax_name = "Engineering Lobby"; + name = "Engineering Lobby Fax Machine" }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tUS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"qth" = ( +/obj/machinery/light_switch/directional/west{ + pixel_y = 26 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/machinery/dna_scannernew, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"tVH" = ( -/obj/machinery/door/airlock/security/glass, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/area/station/science/genetics) +"qtA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/effect/turf_decal/stripes/full, /turf/open/floor/iron/dark, -/area/station/security/processing) -"tVI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 +/area/station/security/checkpoint/customs) +"qug" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/screwdriver{ + pixel_y = 18 }, -/obj/effect/mapping_helpers/mail_sorting/medbay/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"tVJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"tVP" = ( -/obj/item/instrument/musicalmoth, -/obj/effect/spawner/random/entertainment/musical_instrument, -/obj/item/flashlight/flare/candle{ - pixel_x = -9; - pixel_y = 12 +/obj/item/radio/intercom/directional/south, +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"tVQ" = ( -/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"qur" = ( +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"quu" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/station/maintenance/disposal) -"tVT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/ruin/space/has_grav/abandoned_warehouse) +"quv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/button/door/directional/south{ + id = "engsm"; + name = "Radiation Shutters Toggle"; + req_access = list("engineering") + }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"tVV" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/extinguisher, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd","xeno") +"quy" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"tWi" = ( +/turf/open/floor/wood, +/area/station/commons/locker) +"quG" = ( +/obj/machinery/door/airlock/maintenance, /obj/structure/cable, -/obj/effect/turf_decal/plaque{ - icon_state = "L7" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=C1-Command"; - location = "P9-Central-Primary" +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"quX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "qmprivacy"; + name = "Privacy Shutters"; + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"tWl" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"tWs" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"tWV" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/storage/box/deputy, -/obj/item/storage/fancy/cigarettes{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/area/station/command/heads_quarters/qm) +"qvc" = ( +/obj/machinery/door/airlock/external{ + name = "Satellite External Airlock" }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/office) -"tWY" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/area/station/ai/satellite/atmos) +"qvh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/light_switch/directional/north{ + pixel_x = -4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"tXc" = ( -/obj/structure/railing{ - dir = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"tXf" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer2{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"qvi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Desk" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"tXi" = ( +/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/duct, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"tXn" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "kitchen_counter"; - name = "Kitchen Counter Shutters" +/turf/open/floor/iron/dark, +/area/station/medical/office) +"qvq" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"qvG" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"qvJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/structure/desk_bell{ - pixel_x = 7 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"qvV" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/food/pie/cream{ - pixel_x = -12 +/obj/item/pen, +/obj/item/toy/figure/atmos{ + pixel_x = 8; + pixel_y = 6 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"tXp" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tXr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"tXt" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"tXM" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"qwa" = ( +/obj/structure/chair{ dir = 8 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"tXS" = ( -/obj/machinery/mechpad, -/obj/machinery/light_switch/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"tYs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/area/station/hallway/secondary/exit/departure_lounge) +"qwe" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 14 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tYw" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"tYy" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 6; + pixel_y = -2 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"tYD" = ( -/obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/item/emergency_bed{ - pixel_y = 3 +/obj/item/toy/figure/lawyer{ + pixel_x = 5; + pixel_y = 5 }, -/obj/item/emergency_bed{ - pixel_y = 6 +/obj/item/pen{ + pixel_x = -8; + pixel_y = -4 }, -/obj/item/emergency_bed{ - pixel_y = 11 +/obj/item/pen/red{ + pixel_x = -6; + pixel_y = -1 }, -/turf/open/floor/holofloor/dark, -/area/station/medical/paramedic) -"tYI" = ( -/obj/effect/landmark/start/head_of_security, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/turf/open/floor/carpet/green, +/area/station/service/lawoffice) +"qwi" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Transferring Centre" }, -/obj/structure/chair/office/tactical, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"tYQ" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"tZt" = ( -/obj/machinery/airalarm/directional/north, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"tZv" = ( -/obj/item/radio/intercom/command/directional/east, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"tZA" = ( -/turf/open/floor/iron/dark/side{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/area/station/command/corporate_showroom) -"tZF" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/processing) +"qwx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/research) -"tZL" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"tZO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"qwB" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qwH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"qwK" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"qwR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Research Lab Maintenance" }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"tZW" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-maint-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"qxh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, /turf/open/floor/wood, -/area/station/service/theater) -"uab" = ( +/area/station/command/heads_quarters/captain) +"qxA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/disposal/incinerator) -"uac" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/clothing/head/soft/mime, -/obj/item/clothing/mask/surgical, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/engine) -"uak" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/obj/structure/sign/warning/gas_mask/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"uat" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"uaw" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Office" }, -/obj/effect/turf_decal/siding/purple{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/command/hop, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"uay" = ( +/area/station/command/heads_quarters/hop) +"qxC" = ( +/obj/effect/landmark/start/cargo_technician, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/security/prison) -"uaC" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"uaH" = ( -/obj/machinery/iv_drip, -/obj/machinery/button/door/directional/west{ - id = "r2"; - name = "Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 6; - specialfunctions = 4 +/area/station/cargo/storage) +"qxD" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/obj/machinery/button/door/directional/west{ - id = "r2p"; - name = "Privacy Control"; - pixel_y = -6 +/obj/structure/chair/stool/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"uaK" = ( -/obj/machinery/libraryscanner, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"uaM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/showcase/machinery/oldpod{ - desc = "An old NT branded sleeper, decommissioned after the lead acetate incident. None of the functional machinery remains inside."; - name = "decommissioned sleeper" +/area/station/security/prison/mess) +"qxI" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"qxQ" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/freezer, -/area/station/maintenance/department/medical/central) -"uaN" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"qyn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uaT" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"uaY" = ( -/obj/item/kirbyplants/random/dead, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/misc/grass, -/area/station/command/heads_quarters/rd) -"uba" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"ubd" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/brig/entrance) -"ubk" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/area/station/maintenance/department/electrical) +"qyo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ubl" = ( -/obj/structure/stairs/east, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/iron/stairs/medium{ - dir = 8 +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, /area/station/medical/storage) -"ubm" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/work) -"ubn" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/science/xenobiology) -"ubo" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ubs" = ( -/obj/structure/closet/lasertag/red, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"ubV" = ( -/obj/structure/chair{ +"qyA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"qyQ" = ( +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/restraints/handcuffs, -/obj/effect/decal/cleanable/blood, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"uca" = ( -/obj/machinery/modular_computer/preset/engineering, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"ucb" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ucg" = ( -/obj/effect/turf_decal/siding/purple{ +/area/station/security/office) +"qyR" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"ucm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"ucG" = ( +/turf/open/floor/engine/vacuum, +/area/station/maintenance/disposal/incinerator) +"qzg" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/starboard/fore) +"qzu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"qzv" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"qzz" = ( +/obj/machinery/firealarm/directional/south, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"udi" = ( -/obj/effect/spawner/random/entertainment/arcade{ +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"qzA" = ( +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"udt" = ( +/turf/open/floor/iron/dark, +/area/station/science/lab) +"qzD" = ( +/obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/theater) -"udu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ +/area/station/maintenance/port/aft) +"qzJ" = ( +/obj/effect/turf_decal/box, +/turf/open/floor/plating, +/area/station/hallway/primary/fore) +"qAa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ dir = 5 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"udG" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"udH" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/area/station/science/xenobiology) -"udO" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"udQ" = ( -/obj/machinery/vending/assist, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/east, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"qAc" = ( +/obj/structure/chair{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"udW" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/security/courtroom) +"qAg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"ued" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/airalarm/directional/west, -/obj/structure/table, -/obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/pen, /turf/open/floor/iron, -/area/station/engineering/main) -"uei" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4; - name = "Cooling Loop Bypass" +/area/station/security/prison) +"qAn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Cargo Security Post" + }, +/obj/effect/turf_decal/siding/red/corner{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"qAo" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"uep" = ( -/obj/item/cardboard_cutout/nuclear_operative, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"qAx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"uet" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/asteroid) -"uex" = ( -/mob/living/basic/axolotl{ - habitable_atmos = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 1, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0); - name = "harbringer of doom" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"qAK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ueA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"ueC" = ( -/obj/item/stack/rods/ten, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"ueI" = ( -/obj/machinery/computer/operating, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/blue/full, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"ueJ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ +/area/station/maintenance/fore) +"qAR" = ( +/turf/closed/wall, +/area/station/cargo/miningoffice) +"qBe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/openspace, -/area/station/science/xenobiology) -"ueX" = ( -/obj/machinery/exodrone_launcher, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qBs" = ( +/turf/closed/wall/rust, +/area/station/commons/vacant_room/commissary) +"qBz" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qBC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/start/cook, /turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"ufr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"ufv" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/area/station/service/kitchen) +"qBR" = ( +/obj/structure/chair/comfy/brown{ + color = "#c45c57"; + dir = 8 }, +/obj/effect/landmark/start/head_of_security, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"ufA" = ( -/obj/item/pickaxe, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"ufV" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, +/area/station/security/office) +"qCi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external/directional/west, +/obj/machinery/light/small/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/security/execution/education) +"qCj" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/chem_dispenser, /turf/open/floor/iron/dark, -/area/station/command/gateway) -"ufW" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 +/area/station/medical/pharmacy) +"qCu" = ( +/obj/structure/flora/bush/large/style_random, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/medical/medbay/central) +"qCI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/table, -/obj/item/restraints/handcuffs/cable/yellow, -/obj/item/restraints/handcuffs, -/obj/machinery/computer/security/telescreen/normal/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"ugh" = ( -/obj/machinery/door/airlock/research{ - name = "Research and Development Lab" +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"qCX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge, -/area/station/science/lab) -"ugs" = ( -/obj/item/kirbyplants/random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"ugu" = ( -/obj/effect/spawner/random/trash/mess, +/area/station/hallway/primary/port) +"qCZ" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"ugI" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"ugJ" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/closet, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"ugN" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/turf/open/floor/iron/dark/textured_half, -/area/station/engineering/storage/tech) -"ugP" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 +/area/station/command/heads_quarters/hos) +"qDp" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"ugV" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/turf/open/space/basic, +/area/space/nearstation) +"qDt" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "bankshutter"; + name = "Bank Shutter" }, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qDA" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"qDE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, -/area/station/engineering/main) -"uhc" = ( -/turf/open/floor/grass, -/area/station/science/genetics) -"uhe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/maintenance/disposal/incinerator) +"qDG" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end{ dir = 4 }, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel/monastery) +"qDI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"uhi" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/radshelter/civil) -"uhs" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"uhz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/light/directional/south, -/obj/structure/closet/emcloset, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"uhC" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"uhD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"uhE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/on, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"uhK" = ( -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Funeral Room" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"qDX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"uif" = ( -/obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"uig" = ( -/obj/machinery/recharge_station, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"uik" = ( -/obj/structure/table/wood, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/book/bible{ - pixel_x = 16; - pixel_y = 3 +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/area/station/service/chapel) -"uin" = ( -/obj/structure/table, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/core, -/obj/machinery/light_switch/directional/south, -/obj/effect/turf_decal/stripes{ - dir = 6 +/turf/open/floor/iron, +/area/station/security/brig) +"qDZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"uir" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"uit" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"qEf" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"uiu" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"uiy" = ( -/obj/effect/spawner/random/engineering/vending_restock, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"uiH" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/teleport/hub, -/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/departments/evac/directional/north, +/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, -/area/station/command/teleporter) -"uiL" = ( +/area/station/hallway/primary/starboard) +"qEh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/holopad, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/cargo/storage) -"uiO" = ( -/obj/item/flashlight/lamp/bananalamp, -/turf/open/misc/asteroid, -/area/station/asteroid) -"uiP" = ( -/obj/structure/railing/corner/end{ +/area/station/security/brig) +"qEs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"uiU" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"ujo" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, /area/station/hallway/primary/fore) -"ujt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/bin, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ujv" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/sign/directions/arrival/directional/west{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"ujx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"ujE" = ( -/obj/effect/turf_decal/siding/wood{ +"qED" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"ujT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ dir = 4; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 }, /turf/open/floor/plating, -/area/station/medical/pharmacy) -"ukl" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/maintenance/starboard/aft) +"qEJ" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"ukv" = ( -/obj/machinery/lift_indicator/directional/west{ - linked_elevator_id = "medbay1" - }, -/obj/machinery/button/elevator/directional/west{ - id = "medbay1" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/commons/toilet/restrooms) +"qEM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ukw" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 6 }, -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"qER" = ( +/obj/structure/chair/pew{ + dir = 8 + }, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) +"qEV" = ( +/obj/structure/chair/wood{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"ukx" = ( -/obj/item/stack/rods/two, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"ukK" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"ukO" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ +/obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/structure/cable, -/obj/item/kirbyplants/random/dead, -/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"qFb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"ukY" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"ulc" = ( +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"qFs" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/machinery/light/directional/east, +/turf/open/floor/grass, +/area/station/service/chapel) +"qFw" = ( +/obj/machinery/door/airlock/research{ + name = "Auxiliary Research" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"qFN" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"uld" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/spawner/random/structure/crate, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qFV" = ( +/obj/effect/landmark/start/quartermaster, +/obj/structure/chair/office, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"ull" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/south{ - name = "Reception Window" +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) +"qGi" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"qGq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"qGK" = ( +/turf/closed/wall, +/area/station/medical/storage) +"qHe" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/eva) +"qHu" = ( +/obj/item/kirbyplants/organic/plant14, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"qHy" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 }, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Security Desk"; - req_access = list("security") +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/door/firedoor, -/obj/structure/desk_bell, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"qHV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"qId" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ - id = "brigdesk"; - name = "Warden Desk Shutters" + id = "Unit_1Privacy"; + name = "Unit 1 Privacy Shutter" }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qIv" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"ulA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"ulL" = ( -/obj/effect/turf_decal/siding/wood{ +/area/station/hallway/primary/starboard) +"qJf" = ( +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"qJi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/station/service/bar) -"ulQ" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/obj/machinery/wall_healer/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/lobby) -"ulU" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/service/bar) -"ulV" = ( -/obj/machinery/door/airlock/grunge{ - name = "Chapel" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/turf/open/floor/iron, +/area/station/cargo/sorting) +"qJs" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/burgundy{ + name = "landing marker" }, +/turf/open/space/basic, +/area/space/nearstation) +"qJB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/chapel) -"ulY" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"umg" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"umh" = ( -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron, -/area/station/cargo/storage) -"umo" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk/multiz{ +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"umt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"umv" = ( -/obj/machinery/button/door/directional/south{ - id = "brigdesk"; - name = "shutter control"; - pixel_y = 0; - pixel_x = 10 +/area/station/command/bridge) +"qJO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/red{ + dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/security/processing) -"umA" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"umK" = ( -/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"qJR" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/port/aft) +"qJY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"umO" = ( -/obj/structure/chair/pew/left{ +/area/station/maintenance/port/greater) +"qKf" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad/secure, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"qKv" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"umT" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qKx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"umZ" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell, -/obj/machinery/door/window/left/directional/west{ - req_access = list("shipping") - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"una" = ( -/obj/structure/chair/comfy/shuttle/tactical{ - name = "tactical head of security chair" - }, -/obj/effect/landmark/start/head_of_security, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 4 }, -/turf/open/floor/iron, -/area/station/security/office) -"unk" = ( -/turf/closed/wall/rock/porous, -/area/station/asteroid) -"unA" = ( -/obj/machinery/air_sensor/nitrogen_tank, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"unC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"unE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/mining_weather_monitor/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"unF" = ( +/area/station/hallway/primary/fore) +"qKE" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office, -/turf/open/floor/iron, -/area/station/cargo/storage) -"unL" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/bedsheet/brown{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"qKH" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"unR" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"uoi" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uoo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"uoY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 1 +/obj/item/toy/plush/plasmamanplushie{ + name = "Dianion XV" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"upd" = ( +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"qKI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/space_heater, +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/south, +/obj/structure/sign/poster/contraband/fun_police/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"upj" = ( -/obj/effect/landmark/navigate_destination/hydro, -/obj/machinery/door/airlock/hydroponics/glass{ - name = "Hydroponics" +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"qKP" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ups" = ( -/obj/docking_port/stationary/escape_pod, -/turf/open/space/basic, -/area/space) -"upw" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable/layer3, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/chamber) -"upy" = ( -/obj/effect/turf_decal/tile/yellow/diagonal_centre, -/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"upE" = ( -/obj/machinery/door/airlock{ - name = "Custodial Closet" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/janitor, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/janitor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/service/janitor) -"upF" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"upS" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"upW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, +/area/station/maintenance/port/lesser) +"qKR" = ( +/obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/commons/locker) -"uqh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/area/station/maintenance/disposal/incinerator) +"qKS" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uqn" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/status_display/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_x = -32 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3"; + name = "Cell 3 locker" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"uqr" = ( -/obj/machinery/door/airlock/maintenance, +/turf/open/floor/iron, +/area/station/security/brig) +"qKX" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"qLb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"uqy" = ( -/obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"uqA" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/power/energy_accumulator/grounding_rod/anchored, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"uqI" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/chair/office{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/crowbar, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"uqM" = ( -/obj/structure/table/reinforced, -/obj/item/stamp/head/ce, -/obj/item/folder/yellow, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/librarian, +/obj/effect/landmark/navigate_destination/library, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"qLh" = ( +/obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/cable, -/obj/machinery/keycard_auth/wall_mounted/directional/west{ - pixel_y = -10 +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/pen/screwdriver, -/obj/item/stamp/head/ce, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"ura" = ( -/obj/structure/closet/crate/science{ - icon_state = "scicrateopen"; - opened = 1 +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/effect/decal/cleanable/greenglow/radioactive, -/turf/open/misc/asteroid, -/area/station/asteroid) -"urc" = ( -/obj/effect/landmark/start/station_engineer, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"qLi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/engineering/main) -"urh" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/lab) -"url" = ( +/area/station/cargo/storage) +"qLB" = ( +/obj/structure/sign/departments/holy, +/turf/closed/wall, +/area/station/medical/morgue) +"qLO" = ( +/obj/machinery/door/airlock/mining{ + name = "Auxiliary Base" + }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/construction/mining/aux_base) +"qMC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"uro" = ( -/obj/machinery/light/small/directional/south, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"urx" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/area/station/engineering/hallway) +"qNb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/light/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"qNh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"urC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "chemsat" - }, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"urI" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/atmos/project) -"urP" = ( -/obj/effect/turf_decal/tile/neutral{ +/area/station/hallway/primary/port) +"qNr" = ( +/turf/closed/wall, +/area/station/hallway/primary/central/fore) +"qNH" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/cyan, +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/aft) +"qNJ" = ( +/obj/machinery/modular_computer/preset/id{ dir = 8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"urS" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil{ - amount = 1 +/obj/machinery/button/flasher{ + id = "hopflash"; + pixel_x = 36; + pixel_y = 6 }, -/turf/open/space/basic, -/area/station/solars/port/fore) -"urT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/light_switch/directional/east{ + pixel_x = 36; + pixel_y = -6 + }, +/obj/machinery/button/ticket_machine{ + name = "Increment Ticket Counter"; + pixel_x = 24; + pixel_y = 24 + }, +/obj/machinery/button/door/directional/east{ + id = "hopqueue"; + name = "Queue Shutters Toggle"; + pixel_y = -6; + req_access = list("hop") + }, +/obj/machinery/button/door/directional/east{ + id = "hop"; + name = "Privacy Shutters Toggle"; + pixel_y = 6; + req_access = list("hop") + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"urY" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"qNL" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/delivery, +/obj/machinery/newscaster/directional/south, +/obj/machinery/button/door/directional/south{ + id = "chemistry_shutters_2"; + name = "Hall Shutters Toggle"; + pixel_x = 24; + req_access = list("medical") }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"urZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/south, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"usa" = ( +/area/station/medical/pharmacy) +"qOd" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/service/chapel/storage) +"qOi" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/north, +/obj/machinery/light_switch/directional/north, +/obj/item/pickaxe/mini, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"qOq" = ( +/obj/effect/turf_decal/loading_area, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"qOv" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"usq" = ( -/obj/effect/turf_decal/tile/red, -/obj/structure/disposalpipe/junction{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"usr" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +"qOz" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/wood{ +/obj/machinery/camera/directional/north, +/obj/item/radio/intercom/chapel/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"qOB" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"usF" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 }, -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"usH" = ( -/mob/living/basic/chicken{ - name = "Featherbottom"; - real_name = "Featherbottom" +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"qOG" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/item/storage/box/lights/bulbs, +/obj/machinery/firealarm/directional/south, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"usL" = ( -/obj/machinery/lift_indicator{ - linked_elevator_id = "aisat"; - pixel_x = -6; - pixel_y = -3 +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"qOQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/interior) -"usQ" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"usT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"utc" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ +/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"qOT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"utf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"uto" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"qPf" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/yellow, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"utw" = ( -/obj/machinery/door/airlock/grunge{ - name = "Cell 1" +/obj/machinery/door/window/right/directional/west{ + name = "Atmospherics Desk"; + req_access = list("atmospherics") + }, +/obj/structure/desk_bell{ + pixel_x = 8; + pixel_y = 10 }, +/turf/open/floor/plating, +/area/station/engineering/atmos/storage/gas) +"qPz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) -"utM" = ( -/turf/closed/wall/r_wall, -/area/station/command/eva) -"utP" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"utT" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Mix to Port" - }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"utU" = ( -/turf/open/floor/catwalk_floor/airless, -/area/space/nearstation) -"utV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"utY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/airlock{ - id_tag = "Toilet_Research"; - name = "Theater Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/obj/machinery/door/firedoor, -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"uuh" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uuu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uuM" = ( -/obj/effect/turf_decal/bot/left, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"uuN" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"uuW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/cable, +/area/station/hallway/primary/aft) +"qPE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qPU" = ( +/obj/structure/bookcase/random/reference, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"qPX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uvd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/corner{ +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"uvl" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Biohazard Gear" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/effect/turf_decal/tile/green/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"qQc" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"qQf" = ( +/obj/machinery/vending/wardrobe/chap_wardrobe, +/obj/structure/sign/poster/official/bless_this_spess/directional/north, +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"uvx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"qQj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"uvN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"uww" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/effect/spawner/random/entertainment/lighter, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "bar_shutters"; - name = "Bar Shutters" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"uwx" = ( -/obj/machinery/light/directional/south, -/obj/structure/disposalpipe/trunk/multiz/down{ +/area/station/hallway/primary/central/fore) +"qQq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"uwI" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"qQQ" = ( +/obj/effect/turf_decal/siding/blue{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage) -"uwW" = ( -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) -"uxt" = ( -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"uxy" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"uxH" = ( +/area/station/command/bridge) +"qRf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/security_officer, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"uxJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/office) +"qRh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"uxO" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable, +/obj/structure/disposalpipe/junction/flip, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"uxR" = ( -/obj/machinery/door/airlock/hatch{ - name = "Cyborg Break Room" +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"qRm" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted, +/obj/machinery/recharge_station, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"qRp" = ( /obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"uxS" = ( -/obj/machinery/computer/atmos_control/oxygen_tank{ - dir = 8 +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/machinery/door/airlock/atmos/glass{ + name = "Distribution Loop" }, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ dir = 4 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"uya" = ( -/obj/effect/turf_decal/box/corners{ +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"qRr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 24 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qRv" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"uyj" = ( +/area/station/hallway/primary/aft) +"qRD" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"qRK" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/light_switch/directional/south{ + pixel_x = -8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/structure/filingcabinet, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"uym" = ( -/obj/machinery/light/small/dim/directional/south, -/obj/structure/chair/office{ - dir = 4; - name = "grimy chair" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uyo" = ( +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) +"qRS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/bombcloset/security, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"qRT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"uyu" = ( -/obj/structure/railing/corner{ - dir = 8 +/area/station/service/chapel/funeral) +"qSa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/green{ + dir = 1 }, -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/cargo/storage) -"uyx" = ( +/area/station/service/hydroponics) +"qSe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"qSg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/bridge) -"uyA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"uyB" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/training_machine, -/obj/item/target, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"uyC" = ( -/obj/structure/ladder{ - icon_state = "ladder10" +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/medical/central) -"uyL" = ( /turf/open/floor/iron, -/area/station/cargo/storage) -"uyZ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, +/area/station/hallway/primary/port) +"qSB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/project) -"uzg" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - location = "Engineering" +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"uzh" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/office) -"uzv" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"qSC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"uzB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/area/station/command/corporate_showroom) -"uzH" = ( /turf/open/floor/iron, -/area/station/commons/locker) -"uzQ" = ( -/turf/open/floor/iron/white/textured_large, /area/station/commons/fitness/recreation) -"uzV" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"uAe" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +"qSJ" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"uAn" = ( -/obj/structure/rack, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/assault_pod/mining, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"uAt" = ( -/obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/spawner/directional/south, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"qSN" = ( +/obj/machinery/door/airlock/medical{ + id_tag = "Unit_2"; + name = "Unit 2" }, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/commons/toilet/restrooms) +"qSO" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"uAH" = ( -/obj/structure/punching_bag, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"uAW" = ( +/obj/machinery/modular_computer/preset/cargochat/medical{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"qTg" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/shieldgen, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"qTC" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/bar/atrium) +"qTJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/iron, -/area/station/cargo/storage) -"uAX" = ( +/area/station/cargo/warehouse) +"qTT" = ( +/obj/docking_port/stationary/random{ + name = "lavaland"; + shuttle_id = "pod_2_lavaland" + }, +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"qTY" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table/optable, +/obj/machinery/vitals_reader/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"qUb" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/storage/box/hug/medical{ + pixel_y = 4 + }, +/obj/item/crowbar, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"qUj" = ( +/obj/machinery/smartfridge/food, +/turf/open/floor/iron/showroomfloor, +/area/station/service/kitchen) +"qUp" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/cargo) -"uBe" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"uBf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"uBm" = ( -/obj/structure/chair/office{ +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"qUw" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/status_display/evac/directional/south, +/obj/structure/rack, +/obj/item/electropack, +/obj/item/electropack, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"qUJ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/main) +"qUO" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"qUU" = ( +/turf/closed/wall/rust, +/area/station/security/checkpoint/engineering) +"qUZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron/white/textured_large, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"qVc" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/science/xenobiology) -"uBn" = ( -/obj/effect/decal/cleanable/dirt/dust, +"qVk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/construction/mining/aux_base) -"uBy" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/brown{ +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"qVs" = ( +/obj/effect/turf_decal/siding/red{ dir = 1 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lobby Lockdown Shutters"; - id = "cargolobbylockdown" +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"uBz" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/iron/dark/corner{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"qVz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/area/station/engineering/atmos) -"uBI" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron, -/area/station/cargo/storage) -"uBT" = ( +/area/station/service/hydroponics) +"qVA" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + name = "disposal supplies" + }, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/item/shovel, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"qVC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"uBU" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, +/turf/open/floor/iron, +/area/station/command/bridge) +"qVD" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"uCj" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/theater) -"uCl" = ( -/obj/structure/sign/directions/evac/directional/north{ - dir = 2; - pixel_y = 10 - }, -/obj/structure/sign/directions/command/directional/north{ - dir = 8; - pixel_y = -10 - }, -/obj/structure/sign/directions/science/directional/north{ - dir = 4; - pixel_y = 0 - }, -/turf/closed/wall, -/area/station/science/lobby) -"uCo" = ( -/obj/machinery/power/shieldwallgen, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/emergency_closet) -"uCp" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Xenobiology Space Bridge" +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 4 +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/hallway/primary/fore) +"qVF" = ( +/obj/machinery/holopad, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"uCr" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Xenobiology Desk"; - name = "Xenobiology's Fax Machine" - }, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"uCw" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"qVJ" = ( /obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/bridge) -"uCy" = ( -/obj/structure/rack, -/obj/structure/window/spawner/directional/north, -/obj/machinery/door/window/left/directional/west{ - name = "Magboot Storage"; - req_access = list("eva") - }, -/obj/machinery/door/window/right/directional/east{ - name = "Magboot Storage"; - req_access = list("eva") +/area/station/hallway/primary/starboard) +"qVM" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/open/space/basic, +/area/space/nearstation) +"qVN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 }, -/obj/item/clothing/shoes/magboots{ - pixel_x = -4; - pixel_y = 3 +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots{ - pixel_x = 4; - pixel_y = -3 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"uCS" = ( -/obj/machinery/telecomms/receiver/preset_right, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"uDd" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"qVQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset{ + name = "plasmaperson emergency closet" }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/station/service/library) -"uDk" = ( -/obj/structure/broken_flooring/side/directional/west, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/under/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/clothing/head/helmet/space/plasmaman, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/broken_bottle, /turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"uDp" = ( -/obj/structure/railing{ +/area/station/maintenance/port/greater) +"qVR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"qVW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/binoculars, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"qWh" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uDA" = ( -/obj/structure/rack, -/obj/effect/spawner/random/bureaucracy/briefcase, -/obj/effect/spawner/random/bureaucracy/crayon, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"uDB" = ( -/turf/closed/wall, -/area/station/cargo/drone_bay) -"uDE" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"uDG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/security/office) -"uDZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"uEb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"uEf" = ( -/obj/structure/rack, -/obj/item/storage/belt/utility, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, -/area/station/engineering/lobby) -"uEg" = ( +/area/station/cargo/storage) +"qWz" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/secure_area/directional/east, +/turf/open/space/basic, +/area/space/nearstation) +"qWA" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/airless, +/area/station/hallway/secondary/entry) +"qWB" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"qWC" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/security) -"uEo" = ( -/turf/closed/wall, -/area/station/service/chapel/office) -"uEp" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "antesat" - }, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Antechamber" - }, -/obj/structure/cable/layer3, -/obj/machinery/elevator_control_panel/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = 8; - pixel_y = -29 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"uEr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"uEO" = ( -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/decal/cleanable/blood/old, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"uES" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/disposalpipe/junction{ dir = 1 }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"qWJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron, -/area/station/security) -"uEV" = ( -/obj/effect/turf_decal/stripes/white/line{ +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/north, +/obj/machinery/light/small/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"qWN" = ( +/obj/machinery/plate_press, +/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plating, +/area/station/security/prison) +"qWT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ dir = 1 }, +/turf/open/floor/engine/plasma, +/area/station/engineering/atmos) +"qWZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/table, +/obj/effect/spawner/random/armory/barrier_grenades, +/obj/item/key/security, +/obj/item/key/security, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"qXa" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"qXc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/motion/directional/south{ + c_tag = "Vault"; + name = "vault camera"; + network = list("vault") + }, +/turf/open/floor/engine, +/area/station/command/vault) +"qXn" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"uEW" = ( -/obj/structure/railing{ +/area/station/maintenance/department/bridge) +"qXv" = ( +/obj/effect/turf_decal/siding/blue{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/command/bridge) +"qXA" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"qXJ" = ( +/obj/structure/girder, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"qXX" = ( +/obj/structure/closet{ + name = "evidence closet" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"qYr" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uEX" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"uFa" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"uFb" = ( -/turf/closed/wall, -/area/station/maintenance/department/engine) -"uFc" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"uFC" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/room) -"uFK" = ( -/obj/structure/sign/warning/secure_area{ - desc = "A warning sign which reads 'BOMB RANGE"; - name = "BOMB RANGE" - }, -/turf/closed/wall, -/area/station/science/ordnance/bomb) -"uFN" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"uFW" = ( -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"uGv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 6 - }, +/area/station/maintenance/aft) +"qYt" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, /turf/open/floor/iron, -/area/station/security/prison) -"uGS" = ( -/obj/structure/chair/office/tactical{ - dir = 8 - }, -/obj/effect/landmark/start/security_officer, +/area/station/hallway/secondary/exit/departure_lounge) +"qYv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/office) -"uGW" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"uHA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"uHE" = ( -/obj/machinery/computer/pandemic, -/obj/effect/turf_decal/tile/green/anticorner/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"uHL" = ( -/obj/structure/lattice/catwalk, -/obj/structure/statue/bronze/marx, -/turf/open/space/basic, -/area/space/nearstation) -"uHQ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"qYy" = ( +/turf/closed/wall/r_wall/rust, +/area/station/medical/paramedic) +"qYN" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/science/server) -"uIa" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" +/obj/docking_port/stationary{ + dir = 2; + dwidth = 2; + height = 11; + name = "port bay 2"; + shuttle_id = "ferry_home"; + width = 5 }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"uIb" = ( -/obj/structure/table/reinforced/rglass, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"qZc" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/mob/living/carbon/human/species/monkey, +/obj/structure/flora/bush/ferny/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/grass, +/area/station/science/genetics) +"qZf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/kirbyplants/organic/plant16, +/obj/structure/extinguisher_cabinet/directional/east, /obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 + dir = 4 }, -/obj/machinery/recharger, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"uIj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"uIx" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/bed/double{ +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/port) +"qZl" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/mechbay) +"qZx" = ( +/turf/closed/wall/r_wall/rust, +/area/station/tcommsat/server) +"qZL" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/bedsheet/qm/double{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/item/pillow/random, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"uIF" = ( -/obj/machinery/power/shieldwallgen/xenobiologyaccess{ - anchored = 1 +/turf/open/floor/iron, +/area/station/service/janitor) +"qZS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 }, /obj/structure/cable, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"uIM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"uIU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"qZX" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) +"rah" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"uIW" = ( -/obj/machinery/light/small/directional/east, +/area/station/engineering/atmos) +"raM" = ( +/obj/machinery/light/directional/west, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"raN" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"uJc" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port) -"uJq" = ( -/obj/machinery/computer/records/medical, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/computer/security/telescreen/med_sec/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"uJt" = ( -/obj/effect/mapping_helpers/engraving, -/turf/closed/wall, -/area/station/maintenance/department/science) -"uJA" = ( -/obj/effect/turf_decal/sand/plating, -/obj/item/rack_parts, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uJH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"uJR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"uJV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"uKg" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/rods/two, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"uKh" = ( -/obj/effect/turf_decal/tile/neutral{ +"raS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/east, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/computer/operating{ dir = 1 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"uKm" = ( -/turf/closed/wall, -/area/station/asteroid) -"uKu" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineral_chance = 20 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/area/station/cargo/miningoffice) -"uKv" = ( -/obj/machinery/requests_console/directional/east{ - department = "Chief Medical Officer's Desk"; - name = "Chief Medical Officer's Request Console" +/obj/machinery/vitals_reader/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"raY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) +"rbk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"uKA" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-14" +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"rbn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output{ + dir = 4 }, -/turf/open/openspace, -/area/station/ai/satellite/interior) -"uKC" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"rbp" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/computer/station_alert{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"uLh" = ( -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/engineering/main) +"rbz" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"uLi" = ( -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/dockarrival, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/hallway/secondary/entry) -"uLj" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 8; - id = "gateshutter"; - name = "Gateway Access Shutter" - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/gateway) -"uLm" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"uLz" = ( -/turf/open/floor/iron/stairs/right{ - dir = 8 - }, -/area/station/science/lobby) -"uLP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 6 +/obj/structure/sign/warning/secure_area/directional/west, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/structure/railing{ - dir = 6 +/obj/machinery/camera/directional/west{ + c_tag = "Brig Prison Access" }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"rbH" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/hand_labeler, +/obj/item/taperecorder, +/obj/machinery/computer/security/telescreen/normal/directional/east, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"rbO" = ( /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"uLR" = ( -/obj/structure/lattice, -/turf/open/openspace/airless, -/area/station/asteroid) -"uLS" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/cable, +/area/station/service/hydroponics) +"rbT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/area/station/engineering/atmos/project) -"uLU" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"uLY" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/storage/primary) -"uMa" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "Supply Dock Loading Door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, -/obj/effect/turf_decal/stripes/line{ +"rcp" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"uMo" = ( -/obj/machinery/flasher/directional/south{ - id = "control1" - }, -/turf/open/floor/iron/textured_large, -/area/station/security/warden) -"uMp" = ( -/obj/structure/chair/sofa/bench/left, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"uMz" = ( -/obj/structure/chair/office{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/turf/open/floor/iron/textured, -/area/station/cargo/drone_bay) -"uMA" = ( -/obj/structure/bed{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"rcB" = ( +/turf/open/floor/grass, +/area/station/service/chapel) +"rcI" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 5 }, -/obj/item/bedsheet/captain{ - dir = 4 +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"rcJ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_x = -32 }, -/obj/effect/landmark/start/captain, -/obj/structure/cable, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) -"uMT" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1"; + name = "Cell 1 locker" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/turf/open/floor/iron, +/area/station/security/brig) +"rcM" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/captain) +"rcN" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Xenobiology Maintenance" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"uMY" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/closet/secure_closet/bar/all_access, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"uNc" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/vending_restock, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"uNd" = ( -/obj/structure/chair/office{ - dir = 1 +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"rcS" = ( +/obj/structure/chair/pew/left{ + dir = 8 }, -/obj/effect/landmark/start/medical_doctor, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"uNt" = ( -/obj/effect/turf_decal/siding/wideplating_new, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"uNy" = ( -/obj/structure/table, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/assembly/signaler{ - pixel_x = 12; - pixel_y = 6 +/turf/open/floor/iron/chapel{ + dir = 8 }, -/obj/item/assembly/signaler{ - pixel_x = 12; - pixel_y = 6 +/area/station/service/chapel) +"rcY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"rdb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/west, +/obj/structure/plaque/static_plaque/golden{ + pixel_x = -32 }, -/obj/item/assembly/signaler{ - pixel_x = 12; - pixel_y = 6 +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/item/assembly/signaler{ - pixel_x = 12; - pixel_y = 6 +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Security Office"; + name = "Security Office Fax Machine" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"uNR" = ( +/area/station/security/office) +"rdc" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/ordnance/bomb) +"rdk" = ( +/obj/item/book/granter/action/spell/smoke/lesser, +/obj/structure/table/wood, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"rdl" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"rdo" = ( /obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"uNZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/tank_dispenser{ - plasmatanks = 0 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"rdp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"uOb" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"uOf" = ( -/obj/docking_port/stationary/laborcamp_home{ - dir = 8 +/area/station/commons/storage/primary) +"rdD" = ( +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Starboard Hallway Departure Checkpoint"; + name = "starboard camera" }, -/turf/open/space/basic, -/area/space) -"uOm" = ( -/obj/machinery/door/airlock/medical{ - name = "Primary Surgical Theatre" +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/unres{ +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"rdI" = ( +/obj/machinery/computer/security/telescreen/monastery/directional/north, +/turf/open/floor/iron/stairs/left{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/theatre) -"uOo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"uOx" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"uOF" = ( -/obj/structure/disposalpipe/segment{ +/area/station/hallway/primary/fore) +"rdM" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/commons/fitness/recreation) +"rdV" = ( +/obj/structure/chair/pew/left{ dir = 4 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/newscaster/directional/west, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"rea" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"uOJ" = ( -/obj/machinery/door/poddoor/lift{ - transport_linked_id = "medbay1" - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/medbay/central) -"uOY" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/purple, -/turf/open/space/openspace, -/area/space/nearstation) -"uOZ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/large, -/area/station/service/hydroponics/garden) -"uPg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "medbay1"; - pixel_x = -32 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"uPi" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/effect/decal/cleanable/dirt, +/area/station/engineering/supermatter/room) +"rec" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uPv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uPL" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Lab" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark/airless, -/area/station/science/ordnance) -"uPM" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"uQl" = ( -/obj/item/flashlight/flare/candle/infinite{ - pixel_x = 16; - pixel_y = 16 +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"rel" = ( +/obj/structure/falsewall{ + name = "suspicious wall" }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"uQG" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uQM" = ( -/obj/structure/rack, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/medical/treatment_center) -"uQO" = ( -/obj/structure/table/wood, -/obj/machinery/coffeemaker/impressa{ - pixel_x = 5; - pixel_y = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/storage/box/coffeepack, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/science) +"reo" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Ordnance Storage"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"uRb" = ( -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery) -"uRc" = ( -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; - id = "theater_curtains"; - name = "Theater Curtains" +/area/station/science/ordnance/storage) +"ret" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"reJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/research/glass{ + name = "Break Room" }, -/turf/open/floor/wood, -/area/station/service/theater) -"uRG" = ( -/turf/open/openspace, -/area/station/security/prison/shower) -"uRI" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 8 +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/siding/purple/end, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"reT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/vending/autodrobe, -/turf/open/floor/iron, -/area/station/command/meeting_room) -"uRO" = ( -/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"reX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/cargo/miningoffice) -"uRT" = ( +/area/station/security/prison) +"rfg" = ( +/obj/structure/chair/bronze, /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/bronze, +/area/station/maintenance/department/chapel) +"rfm" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"uSe" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"rfo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light/small/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"uSA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uSG" = ( -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plating/elevatorshaft, -/area/station/service/kitchen) -"uSH" = ( -/obj/effect/landmark/start/chief_engineer, +/area/station/maintenance/fore) +"rfD" = ( +/obj/machinery/shieldgen, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/fore) +"rfF" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/door/airlock/security/glass{ + name = "Cargo Security Post" }, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"uSN" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"rfM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uSS" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"rfX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"rgv" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"rgF" = ( +/turf/closed/wall/r_wall/rust, +/area/station/hallway/primary/fore) +"rgY" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"rha" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"uSX" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"rhd" = ( +/turf/closed/wall/r_wall, +/area/station/security/lockers) +"rhf" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"rhs" = ( +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Coroner's Office"; + req_access = list("morgue_secure") + }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, -/area/station/science/server) -"uTa" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/table, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -14 - }, -/obj/item/storage/medkit/regular{ - pixel_y = 5 +/area/station/medical/morgue) +"rhy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"rhK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research/glass{ + name = "Research Lab" }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "research_shutters"; + name = "Research Privacy Shutter" }, -/obj/structure/cable, -/obj/structure/disposalpipe/trunk/multiz{ +/turf/open/floor/iron/dark, +/area/station/science/lab) +"rhN" = ( +/turf/closed/wall, +/area/station/commons/locker) +"rhT" = ( +/turf/closed/wall, +/area/station/service/lawoffice) +"rif" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/wall_healer/directional/north, -/turf/open/floor/iron/white, -/area/station/security/medical) -"uTk" = ( -/obj/machinery/light/warm/dim/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"riB" = ( +/obj/machinery/computer/shuttle/labor{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"uTy" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/structure/sign/warning/vacuum/external/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Transferring Centre Dock" }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/processing) +"riC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security) -"uUj" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 }, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/chamber) -"uUk" = ( -/obj/structure/rack, -/obj/item/storage/briefcase{ - pixel_x = -3; - pixel_y = 2 +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/obj/item/storage/briefcase/secure{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/taperecorder, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/glasses/sunglasses/big, -/turf/open/floor/wood, -/area/station/service/lawoffice) -"uUr" = ( -/obj/machinery/atmospherics/components/tank/air, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uUt" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect"; - name = "Security Shutters" +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"riI" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/folder/yellow, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"riN" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Chamber" }, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"uUA" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/medical_all, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"uUF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uUP" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/carpet/red, -/area/station/command/heads_quarters/qm) -"uUX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"riQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"uUZ" = ( +/area/station/service/library) +"riS" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/east{ + name = "Cargo Desk"; + req_access = list("shipping") + }, +/obj/item/clipboard{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/folder{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/structure/desk_bell{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/floor/plating, +/area/station/cargo/office) +"riW" = ( /obj/effect/turf_decal/siding/wood{ - dir = 8 + dir = 6 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"riX" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/hobo_squat, -/obj/machinery/button/curtain{ - id = "neverstopgambling"; - pixel_y = 32; - dir = 1 - }, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"uVi" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/stairs/left{ +/obj/effect/decal/cleanable/blood/splatter/oil, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"rja" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/effect/turf_decal/delivery, +/obj/item/gun/energy/e_gun/mini, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/medical/storage) -"uVk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"rjg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"rjR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/random/clothing/costume, +/obj/effect/spawner/random/clothing/costume, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"rjU" = ( +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security) -"uVI" = ( -/obj/structure/grille, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"rkn" = ( +/obj/item/stack/cable_coil, /turf/open/misc/asteroid/airless, -/area/station/asteroid) -"uVP" = ( -/obj/machinery/computer/atmos_control/air_tank{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ +/area/space/nearstation) +"rko" = ( +/obj/structure/sign/warning/explosives, +/turf/closed/wall/r_wall/rust, +/area/station/science/ordnance/bomb) +"rky" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) -"uVU" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/area/station/hallway/primary/port) +"rkG" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/lockers) +"rkT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uWb" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/hallway/primary/central) -"uWj" = ( -/obj/effect/landmark/start/chaplain, -/obj/machinery/holopad, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"uWl" = ( -/turf/closed/wall, -/area/station/cargo/sorting) -"uWr" = ( -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/modular_computer/preset/cargochat/service{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/secondary/service) -"uWt" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 4 +/area/station/hallway/primary/aft) +"rkU" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "sidearmory"; + name = "Side Armoury Shutter" }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/research) -"uWy" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 9; - pixel_y = 4 +/obj/machinery/button/door/directional/south{ + id = "sidearmory"; + name = "Armoury Shutter Toggle"; + req_access = list("armory") }, -/obj/machinery/recharger, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"uWB" = ( -/turf/open/floor/iron/stairs{ - dir = 1 +/area/station/security/armory) +"rkV" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4 }, -/area/station/command/heads_quarters/qm) -"uXe" = ( -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/east, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/security/execution/education) +"rll" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"rlx" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"uXp" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 9; - height = 25; - name = "emergency evac bay"; - shuttle_id = "emergency_home"; - width = 29 - }, -/turf/open/space/basic, -/area/space) -"uXD" = ( -/turf/closed/wall, -/area/station/hallway/secondary/entry) -"uXP" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/area/station/engineering/hallway) +"rlM" = ( +/obj/structure/chair/pew{ dir = 8 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) +"rlT" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"rmd" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/item/taperecorder, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"rmu" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/engineering/circuit_workshop) +"rmJ" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"uXQ" = ( -/obj/structure/chair/office{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"rmK" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + name = "mail belt" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"rmT" = ( +/obj/machinery/light_switch/directional/east, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"uXR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uXS" = ( -/obj/structure/barricade/wooden, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uXZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"uYe" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/mix) -"uYg" = ( -/obj/effect/turf_decal/loading_area/white{ +/area/station/security/office) +"rmU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"rna" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/white{ dir = 8 }, -/obj/machinery/conveyor{ - dir = 8; - id = "sorter" +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"rnj" = ( +/obj/item/clothing/suit/hooded/techpriest{ + pixel_y = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/clothing/suit/hooded/techpriest{ + pixel_y = 6 }, -/obj/machinery/door/window/left/directional/south{ - name = "Crate Security Door"; - req_access = list("shipping") +/obj/item/clothing/suit/hooded/techpriest{ + pixel_y = 4 }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"uYk" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/rack, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"rnp" = ( +/obj/structure/sign/poster/contraband/missing_gloves/directional/east, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"rnB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/door/window/right/directional/west{ + name = "Fitness Ring" + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"rnG" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/secondary/service) +"rnJ" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"rnP" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"rnW" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"uYl" = ( -/obj/machinery/door/airlock/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 9 }, -/turf/open/floor/iron, -/area/station/security/office) -"uYt" = ( -/obj/machinery/power/supermatter_crystal/engine, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"uYG" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/aft/upper) -"uYH" = ( +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"uYI" = ( -/obj/structure/cable, +/area/station/maintenance/port/lesser) +"rol" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"ron" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"ror" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"uYT" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"uYV" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +/area/station/maintenance/department/crew_quarters/bar) +"rot" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"uZa" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/structure/sink/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"rou" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"uZc" = ( -/turf/closed/wall/r_wall, -/area/station/security) -"uZg" = ( -/obj/machinery/icecream_vat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"uZx" = ( -/turf/closed/wall, -/area/station/hallway/primary/central) -"uZG" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"rov" = ( /obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"roy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/corner{ - dir = 8 + dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/engine, -/area/station/command/corporate_dock) -"uZQ" = ( -/obj/machinery/vending/wardrobe/det_wardrobe, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/security/detectives_office) -"vaf" = ( -/obj/effect/turf_decal/tile/red{ +/area/station/engineering/supermatter/room) +"roF" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) +"roI" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"roO" = ( +/obj/structure/grille/broken, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"roT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security) -"vau" = ( -/obj/structure/table/glass, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 +/area/station/command/bridge) +"roV" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 }, -/obj/item/storage/box/syringes, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 8 +/obj/structure/sign/warning/secure_area/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/box/red, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"vaC" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"vaU" = ( -/obj/item/toy/plush/lizard_plushie/space/green{ - name = "Delaminates-The-Supermatter" +/area/station/ai/satellite/chamber) +"rpl" = ( +/turf/closed/wall, +/area/station/maintenance/department/electrical) +"rpB" = ( +/obj/structure/urinal/directional/north, +/turf/open/floor/plating/rust, +/area/station/security/prison/shower) +"rpD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown{ + dir = 4 }, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"vaY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/broken_flooring/pile, -/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/office) +"rpF" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/turf/open/floor/iron, +/area/station/cargo/storage) +"rpN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/cargo/warehouse) -"vaZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vbd" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"vbF" = ( -/obj/effect/spawner/random/structure/grille, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"vbV" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"vbY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/painting/large/library{ - pixel_y = -35 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"vck" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"vcn" = ( -/obj/machinery/door/airlock/research{ - name = "Ordnance Lab" +/area/station/hallway/primary/starboard) +"rqi" = ( +/obj/structure/sign/poster/official/pda_ad, +/turf/closed/wall, +/area/station/command/heads_quarters/hop) +"rqm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance_storage, -/obj/machinery/door/firedoor/heavy, +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"rqn" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/button/door/directional/south{ + id = "ordnancestorage"; + name = "Ordnance Storage Access"; + req_access = list("ordnance") + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"rqp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) +"rqq" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"vcs" = ( -/turf/open/floor/fakespace, -/area/station/maintenance/port/lesser) -"vcu" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Art Cabinet" }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"vcV" = ( -/obj/machinery/door/airlock/grunge{ - name = "Chapel Morgue" +/turf/open/floor/iron, +/area/station/commons/storage/art) +"rqs" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"vdb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/light/cold/directional/north, -/obj/structure/closet/wardrobe/white/medical, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"vdD" = ( -/obj/effect/turf_decal/siding/purple{ +/turf/open/floor/iron/dark, +/area/station/security/office) +"rqu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_corner, -/area/station/science/research) -"vdJ" = ( +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"rqx" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"rqG" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing/corner{ + dir = 8 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"vdO" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/light_switch/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/service/bar) -"vdR" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vdZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, +/area/station/service/chapel) +"rqJ" = ( +/obj/effect/turf_decal/box, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"rqL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/storage) -"ved" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/primary/fore) -"veh" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"vel" = ( -/obj/structure/stairs/west, -/obj/structure/railing, +/area/station/cargo/warehouse) +"rqV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/warden) -"vem" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/washing_machine{ - name = "washashing machinine" +/area/station/maintenance/disposal/incinerator) +"rqW" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central) +"rrc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"vew" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Departure Lounge Airlock" +/area/station/maintenance/port/lesser) +"rrm" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/turf_decal/stripes/end{ +/obj/item/pen, +/obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"veW" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/closed/wall, -/area/station/hallway/primary/central) -"vfg" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"rrs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"rrG" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 10 }, -/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/miningoffice) -"vfq" = ( -/obj/structure/railing{ - dir = 9 +/area/ruin/space/has_grav/abandoned_warehouse) +"rrK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-maint-passthrough" }, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"vfy" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Pharmacy" +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"rrO" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"vfG" = ( -/obj/structure/sign/warning/vacuum/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"rrQ" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"rrS" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, +/turf/open/space/basic, +/area/space/nearstation) +"rrY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"vfJ" = ( -/turf/closed/wall, -/area/station/maintenance/department/science) -"vfL" = ( -/obj/effect/turf_decal/stripes{ +/obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/open/floor/iron, +/area/station/security/brig) +"rsb" = ( /obj/structure/cable, -/obj/structure/sign/warning/vacuum/external/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"vfM" = ( -/obj/effect/landmark/start/depsec/science, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"vfR" = ( -/obj/structure/fluff/minepost, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"vgd" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"vge" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/pdapainter/supply, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"vgh" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "secentrylock"; - name = "Security Entry" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"vgq" = ( -/obj/structure/railing{ +/obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/structure/cable/layer3, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"vgz" = ( +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"rsd" = ( +/turf/closed/wall/rock/porous, +/area/space/nearstation) +"rso" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"rsw" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, /obj/effect/turf_decal/tile/neutral, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"vgI" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron, -/area/station/security/execution/transfer) -"vgM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"vgP" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"vgW" = ( -/obj/structure/lattice, -/turf/open/floor/engine/airless, -/area/space/nearstation) -"vhf" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/medical/central) -"vhz" = ( +"rsT" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "psychshutter"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/psychology) -"vhH" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/item/gun/ballistic/shotgun/doublebarrel, -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/west, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"vhT" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +/turf/open/floor/plating, +/area/station/tcommsat/server) +"rsX" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"rsY" = ( +/obj/machinery/door/airlock/external{ + name = "External Freight Airlock" }, -/turf/open/floor/iron, -/area/station/security/courtroom) -"vhW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"rsZ" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"rtc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"vhZ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"rtr" = ( +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/reagent_containers/cup/bottle/epinephrine{ + pixel_x = -6 + }, +/obj/item/reagent_containers/syringe, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"vib" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ +/area/station/medical/pharmacy) +"rtw" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "ordnancestorage"; + name = "Ordnance Storage Shutters" + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"rtx" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"rtD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/item/radio/intercom/prison/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"viK" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"rtF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"viM" = ( -/obj/structure/sign/directions/engineering/directional/south{ - pixel_y = 10 - }, -/obj/structure/sign/directions/supply/directional/south{ - dir = 8; - pixel_y = -10 +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"rtK" = ( +/obj/structure/table, +/obj/item/folder, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = -4 }, -/obj/structure/sign/directions/security/directional/south{ - dir = 8; - pixel_y = 0 +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 4 }, -/turf/closed/wall, -/area/station/hallway/primary/central) -"viT" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd","xeno") +/obj/item/reagent_containers/dropper, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 1 }, -/turf/open/floor/iron/white/smooth_half{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, +/turf/open/floor/iron/dark, /area/station/science/xenobiology) -"viX" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/grassy/style_random, -/turf/open/floor/grass, -/area/station/science/research) -"vja" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 +"rtN" = ( +/obj/structure/mop_bucket/janitorialcart, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/half, -/area/station/service/hydroponics/garden) -"vjm" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"rtT" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"vjq" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"vjv" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/white, -/area/station/science/research) -"vjy" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"ruc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"vjA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/warden) -"vjB" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "ordauxgarage" - }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/science/ordnance) -"vjD" = ( -/obj/structure/cable, -/obj/structure/sign/poster/random/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vjQ" = ( -/obj/effect/turf_decal/siding/blue{ +/area/station/hallway/secondary/exit/departure_lounge) +"ruo" = ( +/obj/machinery/computer/records/security{ dir = 8 }, -/turf/open/floor/circuit/telecomms/server, -/area/station/science/server) -"vjT" = ( -/obj/effect/landmark/start/librarian, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine/cult, -/area/station/service/library) -"vjZ" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"vkn" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/medical/exam_room) -"vkp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"vks" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "mechbay"; - name = "Mech Bay Shutters" - }, -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"vkv" = ( -/obj/item/stock_parts/power_store/cell/bluespace{ - pixel_x = -5; - pixel_y = -8; - corrupted = 1 +/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"vkx" = ( -/obj/machinery/recycler{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"rup" = ( +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"vkM" = ( -/obj/machinery/light_switch/directional/north, -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_twentythree, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/textured, -/area/station/commons/storage/art) -"vkO" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"vkR" = ( +/obj/machinery/disposal/bin/tagger, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/status_display/supply{ + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"ruB" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/service/hydroponics) -"vla" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/area/station/hallway/primary/aft) +"ruU" = ( +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/obj/structure/chair/comfy/black{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"vlc" = ( -/obj/machinery/light/directional/south, -/turf/open/openspace, -/area/station/security/warden) -"vlk" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"ruW" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"rvj" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"rvk" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/turf/open/floor/iron, /area/station/engineering/atmos) -"vlD" = ( -/obj/structure/table/wood, -/obj/machinery/light_switch/directional/north, -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"vlJ" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation" - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +"rvz" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet/secure_closet/personal, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/abandoned_warehouse) +"rvA" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/turf_decal/bot, +/obj/item/taperecorder, +/obj/item/tape/random, +/obj/item/tape/random, +/turf/open/floor/engine, +/area/station/science/auxlab) +"rvD" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/transit_tube/crossing, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"rvR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/area/station/security/interrogation) -"vlM" = ( -/obj/structure/bodycontainer/crematorium{ - dir = 4; - id = "crematoriumChapel" +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"vlR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vmf" = ( -/obj/structure/closet/wardrobe/orange, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"rvU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/yellow{ dir = 8 }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/security/brig) -"vmk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"vmB" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"vmH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/fluff/broken_canister_frame, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"vnb" = ( -/obj/machinery/door/poddoor/incinerator_atmos_aux, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"vnj" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/box, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"vno" = ( -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/structure/table/reinforced, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/area/station/engineering/lobby) +"rvW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"vnr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/theater) -"vnG" = ( -/obj/machinery/disposal/bin, -/obj/machinery/requests_console/directional/north{ - department = "Chapel"; - name = "Chapel Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"vnV" = ( -/obj/structure/sign/warning/directional/east, -/obj/effect/spawner/random/trash/caution_sign, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vnX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/research) -"vog" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/security/warden) -"voq" = ( -/obj/structure/closet/crate/secure/science, -/obj/effect/spawner/random/entertainment/money_medium, -/obj/effect/spawner/random/entertainment/money_medium, -/turf/open/misc/asteroid, -/area/station/asteroid) -"vos" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"rvZ" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/lobby) -"vot" = ( +/area/station/commons/storage/primary) +"rwa" = ( +/obj/structure/table, +/obj/machinery/firealarm/directional/south, +/obj/item/storage/toolbox/mechanical, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"rwh" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/bridge) -"voy" = ( -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P15-Central-Primary"; - location = "P14-Central-Primary" +/area/station/hallway/primary/aft) +"rwr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"rwu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/secure_area/directional/north{ + desc = "A warning sign which reads 'SERVER ROOM'."; + name = "SERVER ROOM" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"voB" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Engineering Lobby"; - name = "Engineering Lobby Fax Machine" +/turf/open/floor/plating, +/area/station/science/server) +"rwy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"rwD" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Blast Doors" }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/station/engineering/lobby) -"voI" = ( -/obj/structure/chair/comfy/brown{ - dir = 8; - name = "Chief Engineer" - }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"voQ" = ( -/obj/machinery/computer/rdconsole/unlocked, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lab) -"voY" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"vpn" = ( -/obj/machinery/power/emitter/welded{ +"rwM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"vpq" = ( -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom/directional/west, -/obj/structure/tank_holder/anesthetic, -/turf/open/floor/iron/white/smooth_half, -/area/station/science/robotics/lab) -"vpz" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/maintenance/fore) +"rwR" = ( +/obj/machinery/rnd/destructive_analyzer, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"rwW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"rxi" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security) -"vpD" = ( -/obj/machinery/light/directional/west, +/area/station/security/brig) +"rxl" = ( +/obj/machinery/cryo_cell, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"rxo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"vpI" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/maintenance/starboard) +"rxp" = ( +/obj/structure/railing{ dir = 1 }, -/obj/machinery/recharger{ - pixel_x = -6; - pixel_y = 2 +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 }, -/obj/machinery/recharger{ - pixel_x = 6; - pixel_y = 2 +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"rxt" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, +/obj/machinery/fax/heads/captain, /turf/open/floor/iron/dark, -/area/station/security/lockers) -"vpK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "warneverchanges" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"vqm" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ +/area/station/command/heads_quarters/captain) +"rxu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"vqo" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/engineering/glass{ - name = "Circuit Workshop" +/obj/machinery/camera/directional/west{ + c_tag = "Satellite Transit Access"; + name = "satellite camera"; + network = list("minisat") }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/button/door/directional/west{ + id = "transittube_ai"; + name = "Transit Tube Lockdown Toggle"; + req_access = list("command") }, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"vqq" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"rxD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chem_lockdown"; + name = "Chemistry Shutters" }, -/obj/structure/girder/reinforced, -/obj/structure/grille, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vqr" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ +/area/station/maintenance/port/greater) +"rxJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "lawyer_shutters"; + name = "Law Office Shutters" + }, +/turf/open/floor/plating, +/area/station/service/lawoffice) +"rxQ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"vqt" = ( -/turf/open/floor/wood/tile, -/area/station/service/bar) -"vqv" = ( -/turf/open/floor/iron/white/smooth_edge{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/science/research) -"vqC" = ( -/obj/effect/turf_decal/stripes/line, -/turf/closed/wall, -/area/station/maintenance/department/medical/central) -"vqH" = ( -/obj/structure/chair/sofa/bench, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"vqI" = ( -/obj/effect/landmark/atmospheric_sanity/mark_all_station_areas_as_goal, /turf/open/floor/iron, -/area/station/engineering/lobby) -"vqN" = ( -/obj/machinery/vending/cytopro, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"vqP" = ( -/obj/structure/rack, -/obj/item/controller, -/obj/item/controller, -/obj/item/compact_remote, -/obj/item/compact_remote, -/obj/effect/turf_decal/bot, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"vqY" = ( -/obj/structure/table, -/obj/item/clipboard, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/large, -/area/station/commons/locker) -"vrF" = ( -/turf/open/floor/iron/stairs/right{ - dir = 8 - }, -/area/station/service/theater) -"vrN" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/window/left/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") +/area/station/commons/storage/primary) +"rxW" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 }, +/obj/effect/decal/cleanable/vomit/old, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"rxX" = ( /obj/structure/table, -/obj/item/storage/medkit/regular{ - pixel_x = 3; +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/fyellow{ pixel_y = 6 }, -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/o2, -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"vrR" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/wood, -/area/station/commons/lounge) -"vrU" = ( -/obj/machinery/computer/security/hos{ +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"ryn" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"ryC" = ( +/obj/effect/turf_decal/stripes/white/line{ dir = 1 }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"vse" = ( /obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"vsx" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"vsD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"ryK" = ( /obj/structure/table, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"vsJ" = ( -/obj/structure/sign/directions/security/directional/south{ - dir = 8; - pixel_y = -10 - }, -/obj/structure/sign/directions/engineering/directional/south{ - dir = 4; - pixel_y = 10 +/obj/structure/sign/departments/medbay/alt/directional/east, +/obj/structure/sign/poster/official/help_others/directional/south, +/obj/item/storage/box/bodybags{ + pixel_y = 5 }, -/obj/structure/sign/directions/supply/directional/south{ - dir = 8; - pixel_y = 0 +/obj/item/clothing/glasses/eyepatch{ + pixel_y = 4 }, -/turf/closed/wall, -/area/station/hallway/secondary/exit/departure_lounge) -"vsO" = ( +/obj/item/clothing/mask/surgical, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"ryW" = ( /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/service/dormitories, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"vsQ" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +/area/station/hallway/primary/port) +"ryZ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 }, -/obj/structure/chair{ - dir = 8; - name = "Judge" +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"vtg" = ( -/obj/structure/table/wood/fancy/green, -/obj/effect/spawner/random/aimodule/harmless, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/circuit/green, -/area/station/ai/upload/chamber) -"vtv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/medical/morgue) -"vtN" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"rzr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"rzB" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/light_switch/directional/north, +/obj/machinery/computer/operating, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"rzE" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/modular_computer/preset/id{ +/turf/open/floor/iron, +/area/station/command/bridge) +"rzJ" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"rzR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"vtP" = ( -/obj/machinery/computer/mech_bay_power_console, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"vtW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"vub" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"rzV" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"rAr" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/west, +/obj/machinery/firealarm/directional/west, +/obj/machinery/suit_storage_unit/standard_unit{ + desc = "An industrial suit storage device carrying retro space suits. Neat!"; + helmet_type = /obj/item/clothing/head/helmet/space; + suit_type = /obj/item/clothing/suit/space }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vuh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"vuj" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"vuq" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vvC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/command/eva) +"rAA" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/service/theater) -"vvE" = ( +/area/station/maintenance/disposal/incinerator) +"rAB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"vvG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/light/dim/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/office) -"vvP" = ( -/obj/structure/rack, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/toy/plush/lizard_plushie/green{ - name = "Makes-The-Robots" - }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"vvY" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 - }, +/area/station/security/courtroom) +"rAD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"rAL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/emcloset, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"vwf" = ( -/obj/structure/girder, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vwh" = ( +/area/station/maintenance/starboard) +"rAO" = ( +/obj/structure/sign/departments/xenobio, +/turf/closed/wall, +/area/station/science) +"rAQ" = ( /obj/structure/cable, +/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"vwn" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, +/turf/open/floor/plating, +/area/station/maintenance/central) +"rBa" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"vwu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 9 +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/chapel/dock) +"rBd" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/stack/rods/ten, +/obj/machinery/light/directional/south, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"rBj" = ( +/obj/structure/transit_tube/curved/flipped, +/turf/open/space/basic, +/area/space/nearstation) +"rBq" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mining" }, -/turf/open/openspace, -/area/station/engineering/main) -"vwD" = ( -/obj/effect/landmark/start/clown, -/obj/structure/chair/stool/bar/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, -/area/station/service/theater) -"vwK" = ( /obj/machinery/light/directional/north, -/obj/effect/spawner/random/structure/table, -/obj/item/toy/nuke, -/turf/open/floor/iron/dark, -/area/station/command/corporate_showroom) -"vwL" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/machinery/bouldertech/refinery{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"vwU" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"rBE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance" }, -/obj/structure/chair{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"rBO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rBS" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Virology Monkey Pen"; + name = "medical camera"; + network = list("ss13","medical") }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"vwZ" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vxl" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/spawner/random/entertainment/slot_machine{ - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"vxn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"rBV" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/mmi, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/multi_tile/public/glass, -/obj/effect/mapping_helpers/airlock/autoname, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"vxp" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/space_heater, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"rCi" = ( +/turf/closed/wall, +/area/station/hallway/secondary/entry) +"rCH" = ( /obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) -"vxx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"vxA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"vxZ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"vyj" = ( -/obj/structure/stairs/east, -/obj/structure/railing, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) -"vyp" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/siding/purple{ - dir = 9 +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"vyL" = ( -/obj/structure/mop_bucket/janitorialcart, -/obj/item/reagent_containers/cup/bucket, -/obj/item/mop, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/service/janitor) -"vyO" = ( -/obj/machinery/chem_master, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/area/station/engineering/atmos) +"rDd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "rdgene"; + name = "Genetics Lab Shutters" }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 +/turf/open/floor/plating, +/area/station/science/genetics) +"rDe" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 +/obj/item/stack/rods/fifty{ + pixel_y = 5 }, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/obj/item/storage/toolbox/mechanical, +/obj/machinery/requests_console/directional/east{ + department = "EVA"; + name = "EVA Requests Console" }, -/turf/open/floor/iron/white/smooth_corner{ +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/medical/pharmacy) -"vyZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/central/lesser) -"vze" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/command/eva) +"rDh" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/structure/chair/sofa/bench/left{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"vzi" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/shuttle/mining/common{ - pixel_x = 2 +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"rDi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"vzj" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"vzu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"vzC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, -/turf/open/floor/iron, -/area/station/engineering/main) -"vzG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"rDj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"vzP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"rDl" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"rDO" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 }, -/obj/effect/turf_decal/box/red, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"rEi" = ( +/obj/structure/table/glass, +/obj/machinery/computer/records/medical/laptop, +/obj/machinery/vending/wallmed/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"rEu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/shaft_miner, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"vzU" = ( +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"rEE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + name = "mail belt" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"rER" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security) -"vzW" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/booze, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) -"vAa" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/security/warden) -"vAj" = ( +/area/station/hallway/primary/fore) +"rEV" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/hydroponics/garden) +"rEW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"rFc" = ( +/obj/effect/turf_decal/bot, /obj/structure/table, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -7; - pixel_y = 7 +/obj/item/storage/belt/utility, +/obj/item/radio{ + pixel_x = 4; + pixel_y = 6 }, -/obj/item/stack/sheet/plasteel{ - amount = 10; - pixel_x = 7; - pixel_y = 7 +/obj/item/radio{ + pixel_y = 2 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/item/flashlight/flare, /turf/open/floor/iron, -/area/station/engineering/storage) -"vAm" = ( -/obj/structure/lattice/catwalk, -/obj/effect/decal/remains/human, -/turf/open/openspace, -/area/station/engineering/break_room) -"vAo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/area/station/command/eva) +"rFg" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/structure/railing{ - dir = 10 +/turf/open/floor/iron/dark, +/area/station/command/eva) +"rFh" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"vAp" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"rFi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Tools"; + location = "Engineering"; + name = "engineering navigation beacon" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"rFt" = ( /turf/closed/wall, -/area/station/commons/fitness/recreation) -"vAs" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/area/station/security/checkpoint/medical) +"rFx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/misc/asteroid, -/area/station/science/research) -"vAu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, /turf/open/floor/iron, -/area/station/security/breakroom) -"vAB" = ( -/turf/open/openspace/telecomms, -/area/station/ai/satellite/chamber) -"vAD" = ( -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Dormitories" +/area/station/hallway/primary/port) +"rFD" = ( +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/locker) -"vAE" = ( -/obj/structure/closet/wardrobe/green, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"vAY" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vBp" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/command/eva) -"vBs" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"rFK" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"vBD" = ( -/obj/structure/chair/office/light{ +/area/station/security/lockers) +"rFL" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/head/utility/welding, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white/smooth_half{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"rFN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"rFS" = ( +/obj/structure/chair/sofa/left/maroon{ dir = 8 }, -/area/station/science/xenobiology) -"vBV" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/railing{ dir = 4 }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"vBW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/oil, -/obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"vCw" = ( -/obj/effect/turf_decal/tile/neutral{ +/area/station/service/bar/atrium) +"rGx" = ( +/obj/structure/flora/bush/jungle/c/style_2, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"rGK" = ( +/obj/structure/railing{ dir = 1 }, -/obj/structure/closet/boxinggloves, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"vCy" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/light/directional/north, -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"vCI" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/command/corporate_showroom) -"vCL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Hydroponics Shutters"; - id = "hydroponics_shutters"; - dir = 8 +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"rHc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/service/hydroponics) -"vCQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"vDa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/asteroid) -"vDn" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd","xeno") +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/open/openspace, -/area/station/science/xenobiology) -"vDw" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"vDK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"rHi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"vEh" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) -"vEm" = ( -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"vEp" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vEq" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/area/station/maintenance/starboard) +"rHm" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "xeno_blastdoor"; + name = "Xenobiology Containment Blast Door" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 9 }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"vEt" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science) +"rHs" = ( +/obj/structure/table, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos) -"vEu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"vED" = ( -/obj/structure/closet/secure_closet/warden, -/obj/item/gun/energy/laser, -/obj/item/radio/intercom/directional/north, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"vEE" = ( +/obj/item/clothing/under/rank/security/officer, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"rHz" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"vEI" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner, -/turf/open/openspace, -/area/station/engineering/main) -"vEL" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"vES" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/pen, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vEX" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/half, -/area/station/security/breakroom) -"vEZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"vFf" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"vFg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"vFl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"vFq" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"vFr" = ( -/obj/machinery/light/dim/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"rHX" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "evashutter"; + name = "E.V.A. Storage Shutter" }, +/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron/dark, -/area/station/service/chapel/office) -"vFs" = ( -/obj/effect/spawner/structure/window, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vFy" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"vFz" = ( +/area/station/command/eva) +"rIk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced, -/obj/machinery/light/small/dim/directional/east, -/obj/item/coin/titanium, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"vFD" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/west{ - id = "Cell 4"; - name = "Cell 4" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/brig) -"vFG" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/stairs/north, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark/textured_large, /area/station/engineering/storage/tech) -"vFH" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 +"rIl" = ( +/obj/structure/sign/departments/holy{ + pixel_y = 30 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"vFL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/turf/open/floor/iron/stairs/right{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"vFM" = ( +/area/station/hallway/primary/fore) +"rIm" = ( +/obj/machinery/airalarm/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"vFT" = ( -/obj/structure/toilet{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/landmark/start/hangover, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32; - spawn_loot_chance = 50 - }, -/obj/machinery/light/small/dim/directional/north, -/obj/machinery/button/door/directional/south{ - id = "u2"; - name = "privacy bolt control"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"rIq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/gulag_item_reclaimer{ + dir = 8; + pixel_x = 30 }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"vFY" = ( -/turf/open/floor/wood, -/area/station/service/cafeteria) -"vGd" = ( +/obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/processing) +"rIy" = ( +/obj/structure/mop_bucket/janitorialcart, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/engineering/atmos/mix) -"vGn" = ( -/turf/closed/wall, -/area/station/medical/patients_rooms/room_a) -"vGs" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/textured_edge, -/area/station/maintenance/department/medical/central) -"vGv" = ( -/obj/structure/broken_flooring/singular, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table_frame, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vGy" = ( -/obj/structure/transit_tube/crossing, -/obj/structure/lattice, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"rJw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"vGz" = ( -/obj/structure/bed/dogbed/ian, -/mob/living/basic/pet/dog/corgi/ian, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"rJJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"vGG" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/light/directional/east, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1, -/obj/machinery/portable_atmospherics/pipe_scrubber, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos) -"vGJ" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"vGZ" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/turf/open/floor/iron/dark/corner{ + dir = 4 }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/suit_storage_unit/rd, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"vHa" = ( -/obj/structure/closet{ - name = "plasmaman supply closet" +/area/station/hallway/primary/port) +"rJN" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"rJO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/plasmaman/full, -/obj/item/tank/internals/plasmaman/belt/full, -/obj/item/tank/internals/plasmaman/belt/full, -/obj/item/toy/plush/plasmamanplushie, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/textured, -/area/station/engineering/lobby) -"vHf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 10 }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"vHh" = ( -/obj/structure/sign/warning/xeno_mining/directional/south, -/obj/effect/spawner/random/structure/grille, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vHi" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, -/obj/structure/chair{ - dir = 8; - name = "Judge" +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"rJS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/hydroponics/constructable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"vHm" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/power/energy_accumulator/tesla_coil/anchored, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"rKa" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"rKf" = ( +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"vHA" = ( -/obj/structure/cable, +/area/station/engineering/supermatter/room) +"rKj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"vHI" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Council Chamber" }, -/turf/open/floor/iron/checker, -/area/station/science/research) -"vHL" = ( -/obj/structure/extinguisher_cabinet/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/theater) -"vHY" = ( -/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"vIa" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/science/genetics) -"vIi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"vIt" = ( -/obj/effect/mapping_helpers/dead_body_placer{ - bodycount = 1 +/area/station/command/bridge) +"rKk" = ( +/obj/machinery/smartfridge/organ, +/turf/open/floor/plating, +/area/station/medical/surgery/theatre) +"rKm" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/atmos_alert, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"rKn" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/effect/turf_decal/trimline/neutral/filled/warning{ - dir = 6 +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"rKI" = ( +/obj/machinery/rnd/production/protolathe/department/science, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/east{ + c_tag = "Research Lab"; + name = "science camera"; + network = list("ss13","rd") }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"vIB" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/science/lab) +"rKN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"vIO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"vJf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"vJE" = ( +/area/station/command/eva) +"rKT" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" + }, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/medical/office) +"rKV" = ( +/obj/machinery/power/emitter/welded{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"rKY" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) -"vJF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white/smooth_corner, -/area/station/medical/pharmacy) -"vJG" = ( -/obj/machinery/ai_slipper{ - uses = 8 +/obj/structure/sign/departments/security/directional/north, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"vKd" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/machinery/light/small/directional/west, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"vKx" = ( -/obj/structure/table/wood, -/obj/item/storage/box/coffeepack, -/obj/item/trash/sosjerky, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"vKM" = ( -/obj/structure/barricade/wooden/crude, -/turf/open/misc/asteroid, -/area/station/maintenance/central/greater) -"vKR" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/tile/green/opposingcorners{ +/area/station/maintenance/starboard) +"rLh" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"rLs" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/cup/watering_can, /obj/effect/turf_decal/bot, -/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /turf/open/floor/iron, /area/station/service/hydroponics) -"vKV" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 8 +"rLy" = ( +/obj/structure/table, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"vKY" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/item/folder/documents, +/obj/item/clothing/neck/stethoscope{ + pixel_y = 5 }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vLa" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/science/research) -"vLs" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/fence, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"vLx" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/iodine{ - pixel_x = -6 - }, -/obj/item/reagent_containers/cup/bottle/iron, -/obj/item/reagent_containers/cup/bottle/lithium{ - pixel_x = 6 - }, -/turf/open/floor/iron/dark/textured_edge, -/area/station/medical/pharmacy) -"vLy" = ( -/obj/structure/railing/corner{ - dir = 4 +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/command/vault) +"rLG" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/pale/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid, +/area/space/nearstation) +"rLN" = ( +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/research) -"vLH" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/power/smes/full, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/maintenance/storage) +"rLR" = ( +/obj/structure/railing{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"vLN" = ( /obj/structure/table, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/electropack, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"vLQ" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/storage/belt/utility/full/engi, -/turf/open/floor/iron, -/area/station/security/office) -"vMb" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/machinery/microwave, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"rLW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"rMi" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"vMm" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"rMl" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"vMA" = ( -/obj/structure/railing{ - dir = 9 +/obj/item/radio/intercom/directional/west, +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 }, -/turf/open/floor/carpet, -/area/station/service/theater) -"vMC" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/airlock{ - name = "Bar Storage" +/turf/open/floor/iron, +/area/station/security/brig) +"rMA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"vME" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" +/obj/effect/turf_decal/tile/purple{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"vMN" = ( -/obj/structure/flora/coconuts, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"vMR" = ( -/obj/machinery/door/poddoor/incinerator_ordmix, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"vNa" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"rMI" = ( +/obj/structure/table, +/obj/machinery/newscaster/directional/west, +/obj/structure/cable, +/obj/item/wrench, +/obj/machinery/recharger, +/obj/item/restraints/handcuffs, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"rMJ" = ( +/obj/structure/sign/departments/cargo/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/corner{ dir = 1 }, -/area/station/engineering/atmos/upper) -"vNc" = ( -/obj/machinery/modular_computer/preset/id{ +/area/station/hallway/primary/fore) +"rNe" = ( +/obj/structure/chair/sofa/right/brown{ dir = 1 }, -/obj/machinery/button/flasher{ - id = "hopflash"; - pixel_x = 24; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/requests_console/auto_name/directional/south, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/announcement, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"vNg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, +/obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"vNB" = ( -/obj/machinery/vending/tool, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"vNE" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, +/area/station/cargo/miningoffice) +"rNg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"vNH" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vNM" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"vNT" = ( -/obj/effect/spawner/random/entertainment/slot_machine, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"vNZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"vOa" = ( -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"vOe" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/corporate_showroom) -"vOg" = ( -/obj/structure/broken_flooring/pile, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/hallway/primary/aft) +"rNj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/wooden/crude, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"vOu" = ( -/turf/closed/wall, -/area/station/cargo/warehouse/upper) -"vOH" = ( -/obj/structure/railing{ - dir = 1 +/area/station/maintenance/port/greater) +"rNk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"vOJ" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/structure/cable/layer3, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/plating, -/area/station/ai/satellite/maintenance/storage) -"vOT" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"rNo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/locker) -"vPe" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/item/reagent_containers/cup/mortar, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"rNx" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel) +"rNJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"vPn" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"rNN" = ( +/obj/structure/chair{ + name = "Judge" + }, +/obj/structure/noticeboard/directional/north, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"vPF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/grille, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"vPG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vPP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/yjunction, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/security/office) -"vPT" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/area/station/security/courtroom) +"rNO" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Supply Door Airlock" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"vQa" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"rNP" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/cargo/storage) -"vQb" = ( -/obj/structure/grille, +/area/station/hallway/primary/aft) +"rNR" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"vQf" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("command") +/area/station/maintenance/disposal) +"rNX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"rNZ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/dim/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/central) +"rOq" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/command/bridge) -"vQn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/hallway/primary/starboard) +"rOz" = ( +/turf/closed/wall/rust, +/area/station/service/chapel/funeral) +"rOC" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"vQw" = ( +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"rOF" = ( +/obj/machinery/button/door{ + id = "sci_experimentor"; + name = "Experimentor Containment Control"; + pixel_x = -7; + pixel_y = 6; + req_access = list("science") + }, +/turf/closed/wall/r_wall, +/area/station/science/auxlab) +"rOJ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "boutique"; - name = "Countertheft Shutters" +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "research_shutters"; + name = "Research Privacy Shutter" }, /turf/open/floor/plating, -/area/station/cargo/boutique) -"vQB" = ( -/turf/closed/wall, -/area/station/cargo/boutique) -"vQT" = ( -/obj/structure/sign/poster/official/moth_hardhat/directional/north, -/obj/structure/table, -/obj/item/storage/toolbox/emergency, +/area/station/science/lab) +"rON" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"vRi" = ( -/mob/living/basic/bot/cleanbot/medbay, -/obj/effect/turf_decal/trimline/blue/filled/line, +/area/station/engineering/atmos) +"rOR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"vRm" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/command/eva) -"vRt" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"vRw" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/door/airlock/hatch{ - name = "Telecomms Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "antesat" - }, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"vRA" = ( -/turf/open/openspace, -/area/station/science/research) -"vRC" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"rOS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/commons/storage/primary) +"rOX" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/tower{ + pixel_y = -6 }, -/obj/structure/chair/office{ - dir = 8 +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"rPl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1 }, -/obj/effect/turf_decal/trimline/dark_red/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"vRJ" = ( -/obj/effect/spawner/random/entertainment/arcade{ +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"vRP" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"rPo" = ( +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"vRZ" = ( -/obj/effect/turf_decal/siding/red{ +/area/station/maintenance/department/bridge) +"rPx" = ( +/obj/structure/bed{ dir = 4 }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"vSd" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ +/obj/effect/landmark/start/assistant, +/obj/effect/spawner/random/bedsheet{ dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) -"vSj" = ( -/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/item/pillow/random, +/turf/open/floor/wood, +/area/station/commons/locker) +"rPy" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"rPN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"vSn" = ( -/obj/structure/noticeboard/directional/south, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"vSr" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - dir = 8; - id = "atmoshfr" +"rPO" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/directions/evac{ + dir = 1; + pixel_y = 24 }, /turf/open/floor/plating, -/area/station/engineering/atmos) -"vSt" = ( -/obj/structure/railing/corner{ +/area/station/maintenance/port/greater) +"rPU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/grey_tide/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"rQl" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L11" + }, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"vSv" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vSy" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"vSH" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Plasma to Pure" +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"rQs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/item/toy/talking/ai{ + pixel_x = -6; + pixel_y = -1 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"rQx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/area/station/engineering/atmos) -"vST" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"vTd" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/corner{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"rQG" = ( +/obj/structure/bodycontainer/crematorium, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vTp" = ( -/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/chapel/funeral) +"rQH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) -"vTt" = ( -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/fakebasalt, -/area/station/maintenance/department/medical) -"vTx" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vTN" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"vTO" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/fyellow, -/obj/item/stack/cable_coil, -/obj/effect/spawner/random{ - loot = list(/obj/item/storage/belt/utility=1); - spawn_loot_chance = 50 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"vTU" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/area/station/service/chapel) -"vUa" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/service/janitor) -"vUj" = ( -/obj/structure/cable, -/obj/machinery/power/solar{ - id = "aft"; - name = "Aft Solar Array" - }, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port) -"vUk" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ +/area/station/hallway/primary/starboard) +"rQM" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"vUn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/security/warden) -"vUo" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"vUJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"vUO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"vVe" = ( -/obj/structure/lattice/catwalk, +/area/station/science/auxlab) +"rQQ" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"rQZ" = ( /obj/structure/cable, -/obj/structure/railing{ - dir = 10 +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"rRb" = ( +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 }, -/turf/open/openspace, -/area/station/security/prison/garden) -"vVg" = ( -/obj/effect/turf_decal/siding/wood/end{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/effect/spawner/random/structure/closet_private, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"vVj" = ( -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"rRm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"rRu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"vVk" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"rRw" = ( +/obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"vVl" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Fore Primary Hallway" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"rRx" = ( +/obj/machinery/computer/records/medical, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"rRz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"rRA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ dir = 8 }, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"vVp" = ( -/obj/effect/turf_decal/tile/neutral{ +/area/station/hallway/primary/aft) +"rRC" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"vVq" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","rd") +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/dna_infuser, -/obj/item/tgui_book/manual/infuser, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) -"vVr" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Quarters" +/turf/open/floor/iron/dark, +/area/station/ai/satellite/maintenance/storage) +"rRD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/warning/xeno_mining/directional/north, +/obj/machinery/door/airlock/external/glass{ + name = "External Freight Airlock" }, -/obj/effect/turf_decal/siding/dark_blue{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"vVs" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"vVC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/area/ruin/space/has_grav/abandoned_warehouse) +"rRJ" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Satellite External Fore"; + name = "exterior camera"; + network = list("minisat"); + start_active = 1 }, -/obj/structure/railing{ - dir = 1 +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"rRM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/machinery/computer/prisoner/management, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"rRU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"vVW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vWo" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"vWx" = ( -/obj/structure/barricade/wooden, -/turf/open/misc/asteroid, -/area/station/maintenance/port/greater) -"vWF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"rRW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/meter, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/education) +"rRY" = ( +/turf/closed/wall/r_wall, +/area/station/security/interrogation) +"rRZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"vWH" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"vWI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"vWK" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"vWN" = ( -/obj/structure/sign/warning/electric_shock/directional/north, -/obj/structure/rack, -/obj/item/wrench, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) -"vXi" = ( -/obj/machinery/gulag_teleporter, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/station/security/processing) -"vXp" = ( -/obj/structure/table/wood, -/obj/machinery/microwave{ - pixel_x = 1; - pixel_y = 6 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/service/cafeteria) -"vXt" = ( -/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"rSe" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/power/emitter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rSi" = ( +/turf/closed/wall/rust, +/area/station/medical/break_room) +"rSk" = ( +/obj/structure/transit_tube/curved/flipped, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"rSL" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vXS" = ( -/obj/structure/broken_flooring/side, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"vYg" = ( -/obj/effect/turf_decal/bot/right, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"vYv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/maintenance/department/electrical) +"rSN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/trimline/green/end{ dir = 8 }, /turf/open/floor/iron, -/area/station/command/corporate_showroom) -"vYz" = ( +/area/station/service/hydroponics) +"rST" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard) +"rTi" = ( +/obj/structure/grille, /turf/closed/wall/r_wall, -/area/station/medical/chemistry/minisat) -"vYC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/area/station/engineering/atmos) +"rTk" = ( +/turf/closed/wall, +/area/station/service/chapel/office) +"rTp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"rTu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"rTv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution{ + pixel_y = -12 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/engineering/main) -"vYL" = ( -/obj/machinery/computer/atmos_control/nitrous_tank, -/obj/effect/turf_decal/tile/yellow{ +/area/station/hallway/primary/central) +"rTB" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/effect/spawner/random/armory/disablers, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"rTD" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/transit_tube/station/dispenser/reverse{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/stripes/end{ dir = 1 }, -/area/station/engineering/atmos) -"vYQ" = ( -/obj/structure/bodycontainer/morgue, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"vZb" = ( +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"rTS" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"vZn" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/station/commons/locker) -"vZF" = ( -/obj/structure/dresser, -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/figure/mime{ - pixel_y = 12 - }, -/turf/open/floor/plating, -/area/station/service/theater) -"vZJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/port/greater) +"rUh" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"vZL" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery/theatre) -"vZP" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Security Desk"; - req_access = list("security") +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"rUj" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"rUD" = ( +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"rUO" = ( +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"vZX" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 +/area/station/hallway/primary/starboard) +"rUP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/station/command/meeting_room) -"wad" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"wag" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"waj" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"rUQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wan" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"war" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ +/area/station/maintenance/port/greater) +"rVj" = ( +/obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/structure/sign/plaques/kiddie/badger{ - pixel_x = 32 +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"rVp" = ( +/obj/machinery/computer/crew{ + dir = 1 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"wat" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/medical/treatment_center) -"way" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/area/station/security/checkpoint/medical) +"rVt" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 }, -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"waJ" = ( +/obj/item/stack/cable_coil/cut, +/turf/open/floor/wood, +/area/ruin/space/has_grav/abandoned_warehouse) +"rVw" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/interrogation) -"waS" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/hallway/primary/central) -"waT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"waZ" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Minisat" +/area/station/maintenance/department/crew_quarters/bar) +"rVA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"wbf" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"wbC" = ( -/obj/effect/turf_decal/siding/dark_blue{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"wbE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/area/station/hallway/primary/port) +"rVE" = ( +/obj/item/kirbyplants/organic/plant10, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, /turf/open/floor/iron, -/area/station/security/interrogation) -"wbM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/hallway/primary/aft) +"rVY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet/l3closet/virology, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"rWg" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/lobby) -"wbS" = ( -/obj/structure/railing/corner/end{ - dir = 8 - }, -/obj/effect/turf_decal/arrows{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"rWT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"wbT" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/rack, -/obj/item/storage/box/drinkingglasses, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wca" = ( -/obj/structure/bodycontainer/morgue, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"wcb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/area/station/engineering/atmos/storage/gas) +"rXp" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/camera/directional/south{ + c_tag = "Aft Hallway Security Firelock"; + name = "aft camera" + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"wcm" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/cold/directional/north, -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_y = 7 - }, -/obj/item/multitool, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"wcp" = ( -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"wcH" = ( -/obj/effect/decal/cleanable/dirt/dust, +/area/station/hallway/primary/aft) +"rXv" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor_switch/oneway{ - id = "hoptroll" +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/turf/open/floor/plating/reinforced, -/area/station/command/emergency_closet) -"wdc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"wdm" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/area/station/hallway/primary/aft) +"rYa" = ( +/obj/effect/turf_decal/tile/brown{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"wds" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Ore Refinery" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"wdu" = ( -/obj/structure/table, -/obj/item/taperecorder, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1423; - listening = 0; - name = "Interrogation Intercom" - }, -/turf/open/floor/iron/dark/textured, -/area/station/security/interrogation) -"wdx" = ( -/obj/structure/broken_flooring/side{ +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wdz" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"wdI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry/minisat) -"wdO" = ( +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"rYc" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/station/maintenance/port/greater) +"rYf" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"wdV" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"weg" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 +/turf/open/floor/wood, +/area/station/service/library) +"rYh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room" }, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"weu" = ( -/obj/structure/lattice/catwalk, /obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/port/aft) -"weB" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rYi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"weD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"weK" = ( -/obj/effect/spawner/random/structure/chair_comfy{ +"rYx" = ( +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"weR" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/warden) -"wfi" = ( -/obj/effect/turf_decal/stripes{ +/obj/effect/turf_decal/tile/blue{ dir = 4 }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"rYK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wfl" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/satellite/maintenance/storage) -"wfs" = ( -/obj/structure/sign/directions/security/directional/north{ - dir = 8; - pixel_y = 10 +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"rZb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/sign/directions/engineering/directional/north{ - dir = 4; - pixel_y = 0 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"rZc" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/flashlight/lantern{ + pixel_x = 6; + pixel_y = 6 }, -/obj/structure/sign/directions/command/directional/north{ - pixel_y = -10 +/obj/item/flashlight/lantern{ + pixel_x = -6; + pixel_y = 6 }, -/turf/closed/wall/r_wall, -/area/station/engineering/transit_tube) -"wfy" = ( +/obj/item/flashlight/lantern, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"rZi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"rZE" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"wfz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/basic, -/area/space/nearstation) -"wfH" = ( -/obj/structure/table, -/obj/item/multitool{ - pixel_x = -8; - pixel_y = 11 - }, -/obj/item/multitool{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/holosign_creator/atmos{ - pixel_x = 9; - pixel_y = 11 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"wfN" = ( -/turf/open/floor/iron/textured, -/area/station/engineering/atmos) -"wfW" = ( -/obj/structure/lattice/catwalk, -/obj/item/food/pie/cream, -/turf/open/openspace, -/area/station/engineering/break_room) -"wgk" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"rZK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, /turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"wgm" = ( -/obj/effect/decal/cleanable/dirt/dust, +/area/station/maintenance/department/electrical) +"rZN" = ( +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/maintenance/storage) +"rZO" = ( +/obj/effect/turf_decal/box/corners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"rZU" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/central) +"rZV" = ( +/turf/closed/wall, +/area/station/maintenance/starboard) +"rZW" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"sac" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"wgw" = ( -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P14-Central-Primary"; - location = "P13-Central-Primary" +/turf/open/misc/asteroid, +/area/space/nearstation) +"sav" = ( +/obj/structure/flora/bush/pale/style_random, +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"saz" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wgH" = ( +/turf/open/misc/asteroid, +/area/space/nearstation) +"saA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"saE" = ( /obj/structure/railing{ - dir = 8 + dir = 1 }, -/turf/open/floor/catwalk_floor/iron_white, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, /area/station/science/lobby) -"wgI" = ( -/obj/machinery/air_sensor/ordnance_burn_chamber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"whn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"whq" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"saW" = ( +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"sbd" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ + name = "Burn Chamber Interior Airlock" }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"whx" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/structure/broken_flooring/side/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"whG" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/folder/blue, -/obj/item/disk/computer/medical, -/obj/item/stamp/head/cmo, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"whM" = ( -/obj/machinery/ntnet_relay, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"whY" = ( -/obj/machinery/door/airlock/grunge{ - name = "Prison Workshop" +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_x = -32 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"wie" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) +"sbf" = ( +/obj/structure/table/wood, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "bar sorting disposal pipe" }, +/obj/effect/mapping_helpers/mail_sorting/service/bar, +/turf/open/floor/wood, +/area/station/service/bar) +"sbh" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"wim" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"sby" = ( +/obj/effect/turf_decal/siding/white{ dir = 4 }, -/obj/effect/turf_decal/plaque{ - icon_state = "L13" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wiy" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"sbz" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/siding/wood/end{ dir = 1 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"wiA" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/captain/private) +"sbB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"sbJ" = ( +/obj/machinery/light/directional/west, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"sbX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"wiK" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/barricade/wooden, +/obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wiT" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"wje" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/preopen{ - id = "ceshut" +/area/station/maintenance/department/crew_quarters/bar) +"sbZ" = ( +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/plunger, +/obj/item/plunger, +/obj/structure/sign/departments/chemistry/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Chemistry East"; + network = list("ss13","medbay") }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/ce) -"wjj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/button/door/directional/north{ + id = "chem_lockdown"; + name = "chemistry lockdown control"; + req_access = list("pharmacy") + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"wjC" = ( /turf/open/floor/iron/showroomfloor, -/area/station/cargo/storage) -"wjI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/medical/chemistry) +"scc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"scg" = ( +/obj/machinery/suit_storage_unit/captain, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"scp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wjJ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/textured, -/area/station/security/warden) -"wjM" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" +/area/ruin/space/has_grav/abandoned_warehouse) +"scE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"wjP" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"wjW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wkf" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wkg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/hallway/primary/port) +"scJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wkr" = ( -/obj/structure/lattice/catwalk, -/obj/structure/fence/post{ - dir = 8 +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/openspace, -/area/station/cargo/storage) -"wku" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"scN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"wkA" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"scR" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"wkF" = ( -/obj/machinery/door/poddoor/lift/preopen{ - transport_linked_id = "cargo" +/obj/item/clothing/glasses/hud/security/sunglasses/gars{ + pixel_x = 3; + pixel_y = -2 }, -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/item/clothing/glasses/hud/security/sunglasses/gars{ + pixel_x = 3; + pixel_y = 2 }, -/obj/effect/turf_decal/stripes{ - dir = 8 +/obj/item/clothing/glasses/hud/security/sunglasses{ + pixel_x = -3; + pixel_y = 2 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" +/obj/item/clothing/glasses/hud/security/sunglasses{ + pixel_x = -3; + pixel_y = -2 }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/armory) +"scT" = ( +/obj/structure/rack, +/obj/item/wrench, +/obj/item/crowbar/red, +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/bot, +/obj/item/stack/sheet/glass{ + amount = 20 }, -/area/station/cargo/sorting) -"wkG" = ( +/obj/item/stack/sheet/iron/twenty, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"scX" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/commons/storage/primary) +"sda" = ( /obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/glass, -/area/station/science/ordnance/testlab) -"wkK" = ( +/obj/structure/sign/warning/secure_area/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"sdd" = ( /obj/structure/table, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/machinery/door/window/right/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") +/obj/item/clipboard, +/obj/item/folder, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/light/cold/dim/directional/west, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"wkP" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing, -/turf/open/openspace, -/area/station/security/prison/garden) -"wkR" = ( -/obj/structure/table/wood, -/obj/item/storage/crayons, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"wkX" = ( -/mob/living/basic/mining/hivelord, -/turf/open/misc/asteroid/airless, -/area/station/asteroid) -"wlc" = ( -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"wlf" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"wlo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"sde" = ( +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "kitchenshutters"; + name = "Kitchen Shutters" }, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/engineering/atmos) -"wlq" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 +/area/station/service/kitchen) +"sdm" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ + pixel_y = 5 }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wlF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/noticeboard/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"sdp" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/fax/heads/ce, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"sdT" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"wlG" = ( -/obj/effect/turf_decal/stripes, +/area/station/maintenance/fore) +"see" = ( /obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/machinery/light/directional/south, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"wlO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/area/station/engineering/hallway) +"sex" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/box/red, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"seB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"wlR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"wlV" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/station/engineering/main) -"wmc" = ( -/obj/machinery/status_display/evac/directional/south, -/obj/structure/cable, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +"seG" = ( +/obj/machinery/doppler_array{ + dir = 4 }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"wmd" = ( -/obj/machinery/telecomms/bus/preset_four, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"wmg" = ( -/obj/structure/bed{ - dir = 1 +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/obj/item/bedsheet{ +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"seK" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"seN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"seO" = ( +/obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, -/obj/machinery/flasher/directional/west{ - id = "Cell 1" +/obj/machinery/door/poddoor/shutters{ + id = "commissaryshutter"; + name = "Vacant Commissary Shutter" }, -/turf/open/floor/iron, -/area/station/security/brig) -"wmr" = ( -/obj/effect/turf_decal/stripes, +/obj/structure/table/reinforced, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"seU" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/electronics/apc, +/obj/item/electronics/airlock{ + pixel_y = 6 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool, /turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"wmN" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 +/area/station/engineering/storage/tech) +"seW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/bot, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"sfd" = ( +/obj/structure/railing{ + dir = 1 }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"sfi" = ( +/obj/item/bedsheet/red, +/obj/structure/bed, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/prisoner, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"sft" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/cable/layer1, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wmO" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"wmX" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/security/courtroom) -"wnw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemsat" - }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"sfw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"wny" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"wnA" = ( -/turf/open/floor/iron/white/smooth_half{ - dir = 8 +/area/station/maintenance/port/greater) +"sfx" = ( +/obj/machinery/button/door/directional/south{ + id = "freight_port"; + name = "Freight Bay Control" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/area/station/science/xenobiology) -"wnL" = ( /turf/open/floor/plating, -/area/station/medical/medbay/central) -"wnM" = ( +/area/ruin/space/has_grav/abandoned_warehouse) +"sfI" = ( /obj/structure/girder, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"wnT" = ( -/obj/structure/filingcabinet/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/area/station/maintenance/aft) +"sfV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"wnY" = ( -/turf/open/floor/carpet/executive, -/area/station/command/corporate_showroom) -"woo" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/portable_atmospherics/canister, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"wou" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"wow" = ( -/obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark, -/area/station/security/armory) -"woz" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"woI" = ( -/obj/structure/cable, +/area/station/engineering/atmos) +"sgh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"woJ" = ( -/obj/structure/cable/layer3, -/obj/structure/sign/departments/maint/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"woL" = ( -/turf/closed/wall/rock, -/area/station/maintenance/port/greater) -"wpc" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/item/folder/blue, -/turf/open/floor/iron, -/area/station/security/courtroom) -"wpi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"wpn" = ( -/obj/structure/stairs/west, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wpr" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/glass/reinforced/telecomms, -/area/station/ai/satellite/chamber) -"wps" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"sgj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/corporate_showroom) -"wpv" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"wpG" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"wpH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/crayon, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"wpJ" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/door/airlock{ - name = "Hydroponics Backroom" +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/duct, /turf/open/floor/iron, /area/station/service/hydroponics) -"wpM" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"wpU" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Waiting Room" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"wqc" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"wql" = ( -/obj/machinery/telecomms/server/presets/command, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"wqq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"wqB" = ( +"sgn" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"wqG" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace/telecomms, -/area/station/science/xenobiology) -"wqK" = ( -/obj/structure/table, -/obj/item/circular_saw, -/obj/item/scalpel{ - pixel_y = 16 - }, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"wqM" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"wqU" = ( -/obj/structure/disposalpipe/junction{ - dir = 4 - }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"sgA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, /turf/open/floor/iron, -/area/station/engineering/lobby) -"wqW" = ( -/obj/effect/mapping_helpers/apc/full_charge, -/obj/effect/mapping_helpers/apc/cell_5k, -/obj/machinery/power/apc/auto_name/directional/east, +/area/station/security/processing) +"sgC" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit/green, -/area/station/command/vault) -"wrx" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/security) -"wrG" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/toilet/secret{ - dir = 4; - secret_type = /obj/item/storage/toolbox/mechanical/old - }, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"wrK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/firealarm/directional/west, -/obj/item/analyzer{ - pixel_x = -4; - pixel_y = 8 +/obj/machinery/door/airlock/security/glass{ + name = "Security E.V.A. Storage" }, -/obj/item/analyzer{ - pixel_x = -4; - pixel_y = 1 +/obj/effect/mapping_helpers/airlock/red_alert_access, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/turf/open/floor/iron/dark, +/area/station/security/office) +"shk" = ( +/obj/machinery/telecomms/bus/preset_four, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"shC" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig" }, -/obj/item/wrench{ - pixel_x = 6; - pixel_y = 15 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-entrance-right" }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/machinery/door/firedoor, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"wrU" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/security/brig) +"shE" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel/monastery) +"shH" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wsa" = ( -/obj/structure/table, -/obj/item/paper, -/obj/effect/spawner/random/bureaucracy/crayon, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"wsb" = ( -/obj/structure/statue/bananium/clown{ - custom_materials = list(/datum/material/bananium=2000) +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"shO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ + dir = 1 }, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/carpet/orange, -/area/station/service/theater) -"wsc" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"wsi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"shP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/chapel{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"shS" = ( +/obj/effect/turf_decal/siding/purple/corner{ dir = 8 }, -/area/station/service/chapel) -"wsI" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/loading_area/white{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wsM" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/primary/central) -"wsS" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"shW" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"wsW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/structure/cable, +/area/station/cargo/drone_bay) +"shZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 6 }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"wsX" = ( -/obj/machinery/duct, /obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"sij" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"wtf" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, +/obj/machinery/duct, +/obj/machinery/door/airlock/maintenance{ + name = "Paramedic Dispatch Maintenance" }, -/obj/machinery/light/small/directional/north, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/maintenance/department/medical/central) +"siF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/organic/plant16, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance/testlab) -"wtr" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/maintenance/department/science) -"wts" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"wtu" = ( +/turf/open/floor/iron, +/area/station/command/gateway) +"siH" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/service/chapel/dock) +"siI" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"wtv" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Antechamber" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/restaurant_portal/restaurant, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "antesat" +/obj/effect/turf_decal/delivery/red, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"siL" = ( +/obj/structure/table/bronze, +/obj/machinery/light/small/directional/west, +/obj/item/toy/plush/ratplush, +/turf/open/floor/bronze/filled, +/area/station/maintenance/department/chapel) +"siS" = ( +/obj/machinery/door/airlock/external{ + name = "Prison External Airlock" }, -/obj/structure/cable/layer3, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/interior) -"wtw" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "kilo-maint-1" }, -/turf/open/floor/iron/dark/side, -/area/station/maintenance/radshelter/medical) -"wtF" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold, -/turf/open/space/basic, -/area/space/nearstation) -"wtH" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/ce) -"wtI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"wtW" = ( -/obj/structure/window/spawner/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) -"wtZ" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase/secure{ - desc = "A large briefcase with a digital locking system, and the Nanotrasen logo emblazoned on the sides."; - name = "\improper Nanotrasen-brand secure briefcase exhibit"; - pixel_y = 2 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/area/station/maintenance/port/lesser) +"sjd" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Dock Maintenance" }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"wub" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/rack, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"sjo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/east, /obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/east, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, -/obj/item/rag, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wum" = ( -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/obj/structure/table/wood/fancy/red, -/obj/structure/secure_safe/hos{ - pixel_x = 36; - pixel_y = 28 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"wun" = ( +/area/station/maintenance/starboard) +"sjG" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/service/chapel) +"sjV" = ( /obj/machinery/door/airlock/maintenance, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wur" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, -/turf/open/floor/iron/textured_large, -/area/station/medical/treatment_center) -"wus" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/barricade/wooden/crude, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"wuS" = ( -/obj/machinery/door/window/right/directional/east{ - name = "Engineering Deliveries"; - req_access = list("engineering") - }, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"skA" = ( /obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) -"wvc" = ( -/obj/structure/railing{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 2"; + name = "Cell 2"; + req_access = list("security") }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/siding/wood{ +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"skB" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/command/vault) +"skC" = ( +/turf/closed/wall/rust, +/area/station/security/brig) +"skM" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/hallway/primary/starboard) +"skP" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"wvh" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/structure/reflector/double/anchored{ + dir = 6 }, -/turf/open/floor/iron/dark/corner{ - dir = 4 +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"skR" = ( +/obj/structure/closet{ + name = "maid locker" }, -/area/station/engineering/atmos) -"wvi" = ( -/obj/effect/decal/cleanable/blood/oil, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/entertainment/arcade{ - dir = 4 +/obj/item/clothing/gloves/color/white, +/obj/item/clothing/accessory/maidapron{ + pixel_x = -4; + pixel_y = -4 }, +/obj/item/clothing/shoes/laceup, +/obj/structure/mirror/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"wvs" = ( -/obj/structure/chair/sofa/bench, -/obj/effect/landmark/start/prisoner, +/area/station/maintenance/fore) +"slh" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/item/radio/intercom/directional/south, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"slo" = ( /obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/prison) -"wvt" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/machinery/door/poddoor/shutters{ - id = "boutique"; - name = "Countertheft Shutters" +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/ai/upload/chamber) +"slr" = ( +/obj/structure/railing/corner{ + dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/maintenance/department/medical/central) -"wvB" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/stripes/corner{ +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"sls" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/airlock_pump{ dir = 8 }, /turf/open/floor/iron, -/area/station/engineering/atmos) -"wvC" = ( -/obj/machinery/vending/wardrobe/medi_wardrobe, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"wvM" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +/area/station/cargo/storage) +"slu" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"wvS" = ( -/obj/machinery/light/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/corner{ +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"slB" = ( +/obj/structure/chair/pew/left{ dir = 8 }, -/obj/effect/turf_decal/trimline/purple/filled/arrow_ccw{ - dir = 5 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/xenobiology/hallway) -"wwe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/geiger_counter{ - pixel_x = 7; - pixel_y = 3 +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/chapel{ + dir = 1 }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"wwj" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"wwB" = ( -/obj/structure/table, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"wwD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/area/station/service/chapel) +"slC" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 }, /turf/open/floor/iron, -/area/station/commons/locker) -"wwR" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 - }, +/area/station/hallway/secondary/entry) +"smb" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/pickaxe, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wwY" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 5 +/area/station/maintenance/starboard) +"smi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"smn" = ( +/obj/effect/landmark/event_spawn, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wxa" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"wxh" = ( -/turf/open/openspace, -/area/station/maintenance/central/greater) -"wxi" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/surgery_tray/full/morgue/deployed, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"wxk" = ( -/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/engineering/lobby) -"wxu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/treatment_center) -"wxv" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/area/station/engineering/storage_shared) +"smo" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/massdriver_ordnance, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmos_shield_gen/active{ + dir = 1 + }, +/obj/machinery/atmos_shield_gen/active, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"smq" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"smC" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"wxF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/engineering, -/obj/item/stack/tile/iron{ - amount = 30 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wxH" = ( -/obj/structure/chair/comfy/brown{ - dir = 4; - name = "Captain" +/area/station/security/prison/garden) +"smI" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"wxQ" = ( -/obj/machinery/computer/operating{ +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/station/service/chapel/monastery) +"smR" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"wxW" = ( -/obj/structure/table/wood, -/obj/item/toy/talking/ai{ - name = "\improper Nanotrasen-brand toy AI"; - pixel_y = 6 - }, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"wyb" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/structure/chair/sofa/bench/tram/solo{ +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"sne" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"wyh" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/openspace, -/area/station/hallway/secondary/exit/departure_lounge) -"wyi" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/cup/bowl, -/obj/effect/spawner/random/contraband/prison, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/storage/box/drinkingglasses, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/box/drinkingglasses, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) -"wyl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"wyq" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table, -/obj/item/pai_card, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wyK" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wyZ" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/atmos) -"wze" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/maintenance/storage) -"wzC" = ( -/obj/structure/railing/corner{ +/area/station/hallway/primary/central/fore) +"sni" = ( +/obj/structure/sign/warning/fire, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall, +/area/station/engineering/atmos) +"snn" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/chapel/monastery) +"snw" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/lobby) -"wzX" = ( -/obj/structure/flora/tree/palm/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"wAa" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/table, -/obj/item/reagent_containers/cup/bottle/multiver{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/item/reagent_containers/cup/bottle/epinephrine{ - pixel_x = 8; - pixel_y = 9 +/area/station/cargo/office) +"snL" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/delivery, +/obj/machinery/byteforge, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"snU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" }, -/obj/item/reagent_containers/syringe{ - pixel_y = -3 +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/ce) +"snW" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -3; + pixel_y = 15 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -6; + pixel_y = 3 }, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/item/reagent_containers/cup/glass/bottle/beer{ + desc = "A station exclusive. Consumption may result in seizures, blindness, drunkenness, or even death."; + list_reagents = list(/datum/reagent/consumable/ethanol/thirteenloko=30); + name = "Kilo-Kocktail"; + pixel_x = 5; + pixel_y = 5 }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"wAm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/green, +/area/station/service/lawoffice) +"son" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"wAv" = ( -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wAx" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ - dir = 1 +/area/station/medical/medbay/central) +"sow" = ( +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/plating, -/area/station/ai/satellite/uppersouth) -"wAy" = ( -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge, -/area/station/science/research) -"wAB" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/commons/lounge) -"wAT" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment, -/turf/open/space/openspace, -/area/space/nearstation) -"wBc" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) -"wBd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"wBe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/turf/open/floor/iron, +/area/station/security/processing) +"soB" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"soC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"soI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wBk" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/turf_decal/arrows/white, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"wBw" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Cargo Office"; - name = "Cargo Office Fax Machine" - }, -/obj/effect/turf_decal/bot_red, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"wBC" = ( -/turf/closed/wall/r_wall, -/area/station/security/interrogation) -"wBH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/main) -"wBO" = ( -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/structure/table/glass, -/obj/item/book/manual/hydroponics_pod_people, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/structure/window/spawner/directional/north, +/obj/effect/turf_decal/tile/purple, /obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"wBV" = ( +/obj/machinery/duct, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"soL" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/carbon/human/species/monkey/angry, -/obj/item/knife/kitchen, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/food/grown/banana, -/obj/structure/sign/warning/biohazard/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/station/maintenance/central) +"soZ" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 2 }, -/obj/structure/sign/warning/directional/east, -/turf/open/misc/grass, -/area/station/cargo/boutique) -"wCj" = ( -/obj/machinery/portable_atmospherics/canister/water_vapor, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/service/janitor) -"wCm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 2 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wCr" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Secure Gear Storage" +/obj/item/toy/figure/prisoner{ + pixel_x = 3; + pixel_y = 6 }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"spi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"wCv" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 +/obj/machinery/door/airlock/public/glass{ + name = "Security Hallway" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/departments/security/directional/west, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"spr" = ( +/obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"wCC" = ( -/obj/effect/spawner/random/trash/mopbucket, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"wCG" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"spw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/engineering/main) -"wCO" = ( -/obj/structure/cable, +/area/station/security/brig) +"spE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/science/robotics/lab) -"wCP" = ( -/obj/structure/cable, -/obj/structure/broken_flooring/singular, -/obj/machinery/airalarm/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"wCR" = ( -/obj/structure/table, -/obj/item/clothing/head/utility/welding{ - pixel_y = 9 - }, -/obj/item/plunger{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") - }, -/turf/open/floor/iron/dark/textured_half{ +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/area/station/medical/chemistry/minisat) -"wCV" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"wCY" = ( -/obj/machinery/computer/teleporter{ +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/lawoffice) +"spG" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 }, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"spQ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"wDa" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ +/area/station/command/bridge) +"spV" = ( +/obj/structure/table, +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/siding/green{ dir = 8 }, -/turf/open/floor/plating, -/area/station/science/genetics) -"wDb" = ( -/obj/structure/chair/office{ +/obj/item/storage/bag/plants/portaseeder, +/obj/machinery/light/small/directional/east, +/obj/item/crowbar/red, +/obj/item/plant_analyzer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"spX" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"wDe" = ( -/obj/effect/turf_decal/siding/white{ +/obj/machinery/space_heater, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"spZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"wDo" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, /turf/open/floor/iron, -/area/station/security/interrogation) -"wDr" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/railing/corner{ - dir = 8 +/area/station/hallway/primary/central/fore) +"sqg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Law Office" }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"wDu" = ( -/obj/structure/chair/sofa/bench/left{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"wDv" = ( -/obj/effect/turf_decal/tile/brown, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wDy" = ( -/obj/item/kirbyplants/random, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"wDD" = ( -/obj/effect/turf_decal/siding/red{ - dir = 5 +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/service/lawyer, +/obj/effect/landmark/navigate_destination/lawyer, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"sql" = ( +/obj/structure/flora/bush/fullgrass/style_random, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/science/robotics/lab) -"wDH" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"wDJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"wDW" = ( -/obj/machinery/modular_computer/preset/id{ +/turf/open/floor/grass, +/area/station/science/auxlab) +"sqs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"wDX" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"wEc" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"sqK" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/obj/item/storage/box/lights/mixed{ + pixel_x = -4; + pixel_y = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"wEd" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/item/storage/box/lights/mixed{ + pixel_x = -4; + pixel_y = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wEe" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"wEg" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"wEs" = ( -/obj/item/target, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 }, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/bomb) -"wEA" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"wED" = ( -/obj/structure/closet/masks, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white/textured_large, -/area/station/commons/fitness/recreation) -"wEF" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 }, -/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"sqM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wEK" = ( -/obj/machinery/door/window/left/directional/east{ - pixel_x = 4 +/obj/machinery/computer/records/security{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"wEL" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/light/directional/west, -/obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/stack/cable_coil/thirty{ - pixel_x = 14; - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wEM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"srf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Brig" }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"wEW" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, /turf/open/floor/iron/dark, -/area/station/command/gateway) -"wFb" = ( -/obj/structure/cable, +/area/station/security/brig) +"srg" = ( +/obj/structure/sign/warning/biohazard/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) -"wFw" = ( +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"srs" = ( +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"srx" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table/optable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /obj/structure/cable, -/obj/structure/closet/emcloset, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"srA" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/turf_decal/caution/stand_clear, /obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"srR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"srW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"wFy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Detective's Office" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/detective, +/obj/effect/landmark/navigate_destination/det, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"srX" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, -/turf/open/floor/iron/dark/corner, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, /area/station/engineering/atmos) -"wFG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, +"ssg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wFI" = ( -/obj/machinery/computer/robotics{ - dir = 8 +/area/station/ai/upload/chamber) +"ssi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 +/obj/machinery/requests_console/directional/west{ + department = "Security"; + name = "Security Requests Console" }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"wFR" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lobby) -"wFS" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/mix) -"wFZ" = ( +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, -/area/station/maintenance/radshelter/civil) -"wGg" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Courtroom" +/area/station/security/checkpoint/customs) +"ssk" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/detective{ + pixel_y = 4 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/dark{ +/obj/item/camera, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/courtroom) -"wGu" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"wGZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ - dir = 8 +/area/station/maintenance/port/greater) +"ssr" = ( +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wHa" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/fitness/recreation) -"wHb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"ssw" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/crowbar/red, +/obj/item/gps/mining, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/directional/north, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wHj" = ( -/obj/structure/closet, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"wHl" = ( -/obj/structure/girder, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) -"wHs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"wHJ" = ( -/turf/closed/wall/r_wall, -/area/station/ai/satellite/interior) -"wIr" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"wIB" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"wIN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"wIQ" = ( /obj/effect/turf_decal/tile/yellow{ - dir = 8 + dir = 4 }, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"ssx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/mix) -"wIT" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, /turf/open/floor/iron, -/area/station/security/brig/entrance) -"wIV" = ( +/area/station/hallway/primary/port) +"ssF" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/wood, -/area/station/commons/lounge) -"wIX" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/reagent_dispensers/wall/peppertank/directional/south, /turf/open/floor/iron, -/area/station/security) -"wJk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment{ +/area/station/security/prison) +"ssI" = ( +/obj/structure/chair/pew/right{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"wJy" = ( -/turf/closed/wall, -/area/station/medical/storage) -"wJC" = ( -/obj/structure/sign/poster/contraband/communist_state/directional/east, -/turf/open/space/basic, -/area/space/nearstation) -"wJN" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"wKo" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/deck, -/obj/effect/spawner/random/entertainment/deck, -/turf/open/floor/wood, -/area/station/commons/lounge) -"wKE" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"wKJ" = ( -/obj/structure/showcase/cyborg/old{ - dir = 8; - pixel_x = 9; - pixel_y = 2 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/foyer) -"wKO" = ( -/turf/open/floor/glass, -/area/station/maintenance/department/medical) -"wKR" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"wKT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) +"ssU" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"wKY" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/turf/open/misc/asteroid, +/area/space/nearstation) +"ssV" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"wLi" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/structure/table, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 2 +"str" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"wLj" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"stu" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"stx" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"wLq" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"wLr" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/starboard/aft) +"stA" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"stF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/office) -"wLu" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/light/directional/south, -/obj/structure/railing/corner{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"suj" = ( +/obj/machinery/door/airlock/external{ + name = "External Freight Airlock" }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"wLA" = ( -/obj/structure/bed{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/spawner/random/bedsheet{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"wLL" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"suo" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"suA" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/storage) +"suF" = ( +/obj/machinery/light/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/area/station/engineering/atmos/mix) -"wLP" = ( +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"suQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/chemistry) -"wMb" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"wMe" = ( -/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"suU" = ( +/obj/docking_port/stationary/escape_pod, +/turf/open/space/basic, +/area/space) +"svk" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/greater) +"svp" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"svC" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"svW" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"svZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry/minisat) -"wMn" = ( -/obj/structure/table, -/obj/item/storage/box/prisoner{ - pixel_x = -6; +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"swc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"swA" = ( +/obj/item/reagent_containers/cup/glass/flask/gold{ + pixel_x = 3; pixel_y = 8 }, -/obj/item/storage/box/prisoner{ - pixel_x = -6; +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = -4; pixel_y = 4 }, -/obj/item/storage/box/hug{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/storage/box/bodybags{ - pixel_x = 8; +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 7; pixel_y = 4 }, -/obj/item/radio/intercom/prison/directional/south, -/obj/item/razor{ - pixel_x = -8; - pixel_y = 3 - }, -/obj/item/paper/fluff/genpop_instructions, -/turf/open/floor/iron/dark/textured, -/area/station/security/execution/transfer) -"wMt" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/rods/fifty, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron, -/area/station/engineering/storage) -"wMu" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, +/obj/structure/table/wood, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"swR" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/engine) -"wMB" = ( -/obj/effect/turf_decal/siding, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/science/lobby) -"wMY" = ( /obj/structure/cable, -/obj/structure/dresser, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"swW" = ( +/obj/structure/chair/sofa/corner/maroon, +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"wMZ" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/starboard/fore) +"swY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron/white/herringbone, -/area/station/science/breakroom) -"wNa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) -"wNk" = ( -/turf/closed/wall, -/area/station/tcommsat/server) -"wNp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"swZ" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/airlock/security{ + name = "Armoury" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"sxi" = ( +/turf/closed/wall/r_wall, +/area/station/service/chapel/office) +"sxl" = ( +/obj/machinery/door/airlock/atmos{ + name = "Filter Chamber" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"sxn" = ( +/obj/structure/table/reinforced, +/obj/item/crowbar/red, +/obj/item/radio/headset/headset_sec, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/red{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/lighter, +/turf/open/floor/iron/dark, +/area/station/security/office) +"sxB" = ( +/turf/closed/wall/r_wall, +/area/station/science/lobby) +"sxC" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/item/storage/briefcase, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron, +/area/station/security/courtroom) +"sxF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wNA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 +/area/station/command/heads_quarters/ce) +"sxM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 8 }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"syu" = ( +/obj/structure/sign/warning/deathsposal, +/turf/closed/wall, +/area/station/science/xenobiology) +"syF" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"syZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/structure/closet/boxinggloves, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wNH" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/paper_bin, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/window/right/directional/south{ - name = "Delivery Office Desk"; - req_access = list("shipping") - }, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Cargo Lockdown Shutters"; - id = "cargolockdown" +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/cargo/sorting) -"wNK" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured, +/area/station/commons/fitness/recreation) +"sza" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, /area/station/hallway/secondary/exit/departure_lounge) -"wNL" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, +"szg" = ( +/obj/machinery/computer/telecomms/monitor, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"szK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/commons/storage/primary) -"wNZ" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/security/prison) +"szL" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) -"wOi" = ( -/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"szX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"szY" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) -"wOn" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Lab" +"sAm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison) +"sAr" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/west{ + c_tag = "Cargo Lockers"; + name = "cargo camera"; + network = list("ss13","qm") }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"wOo" = ( -/turf/closed/wall/r_wall, -/area/station/ai/upload/chamber) -"wOp" = ( /obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_y = 4 +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = 6 }, -/obj/effect/spawner/random/entertainment/drugs, -/obj/effect/spawner/random/entertainment/drugs, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/greater) -"wOy" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/gravity_generator/main, +/obj/item/stamp/granted, /turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"wOK" = ( -/obj/structure/chair/comfy/brown{ - dir = 8; - name = "Research Director" - }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) -"wOU" = ( +/area/station/cargo/storage) +"sAv" = ( /turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) -"wPd" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wPh" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/area/station/security/prison) +"sAR" = ( +/obj/structure/table, +/obj/item/stack/sheet/cardboard{ + amount = 15 }, +/obj/item/storage/box/lights/mixed, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, -/area/station/service/chapel) -"wPk" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-255" +/area/station/cargo/sorting) +"sAV" = ( +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/landmark/firealarm_sanity, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"wPn" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"wPy" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/upload/foyer) -"wPE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/decal/cleanable/ash, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/security/office) -"wPP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"wPU" = ( -/obj/machinery/light/small/directional/west, -/turf/open/misc/asteroid, +/turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"wPX" = ( -/obj/machinery/light/dim/directional/west, -/turf/open/floor/iron/white, -/area/station/science/research) -"wQe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"wQj" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 +"sAZ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/radio{ + pixel_x = -6; + pixel_y = 6 }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"wQz" = ( -/obj/effect/landmark/start/station_engineer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"wQG" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/disposalpipe/sorting/mail, -/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"wQH" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ - dir = 1 +/obj/item/radio{ + pixel_x = 6; + pixel_y = 6 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wQM" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/theater) -"wQW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wRf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/item/radio{ + pixel_y = 4 }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"sBl" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"wRm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/station/hallway/secondary/exit/departure_lounge) -"wRx" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/half{ +/obj/machinery/pdapainter/research, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/edge{ +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"sBm" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/area/station/hallway/secondary/exit/departure_lounge) -"wRD" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/service/cafeteria) -"wRG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"wRL" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/area/station/engineering/atmos) +"sBz" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/command/gateway) +"sBJ" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/ferny/style_random, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"wRM" = ( -/obj/structure/water_source/puddle, /turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"wRN" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/area/station/security/prison/garden) +"sBO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ dir = 10 }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"wSc" = ( -/turf/open/openspace, -/area/station/security/prison) -"wSf" = ( -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"wSi" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wSj" = ( -/turf/closed/mineral/asteroid, -/area/space/nearstation) -"wSn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/service/theater) -"wSs" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/binary/valve/digital/on{ - dir = 4 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"wTc" = ( -/obj/machinery/meter/monitored/distro_loop, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"sCa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Medbay" }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/station/engineering/atmos/pumproom) -"wTp" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"sCr" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, -/obj/effect/spawner/random/entertainment/arcade, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/no_erp/directional/north, /turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"wTs" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","rd","xeno") +/area/station/engineering/main) +"sCu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"wTu" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"sCC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"wTT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/item/radio/intercom/directional/south, /turf/open/floor/iron, -/area/station/commons/locker) -"wTW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/pharmacy) -"wTX" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/hallway/primary/central/fore) +"sCJ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/red, +/obj/item/pen, +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Brig Control Desk"; + req_access = list("armory") + }, +/obj/item/poster/random_official, +/obj/item/poster/random_official, +/obj/item/poster/random_official, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wUc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 +/area/station/security/warden) +"sCK" = ( +/obj/machinery/computer/communications{ + dir = 4 }, -/turf/open/floor/iron/herringbone, -/area/station/hallway/primary/central) -"wUe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"wUw" = ( -/obj/effect/turf_decal/trimline/dark_red/arrow_cw{ - dir = 5 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"wUH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"wUM" = ( -/obj/machinery/nuclearbomb/beer, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"sCV" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Cold Loop to Gas" }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"wUS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"wVb" = ( -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; - id = "theater_curtains"; - name = "Theater Curtains" +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"sCY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, /obj/structure/cable, -/obj/machinery/button/curtain{ - id = "theater_curtains"; - name = "curtain control"; - pixel_y = -32; - req_access = list("theatre") +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/wood, -/area/station/service/theater) -"wVi" = ( -/obj/item/circuitboard/machine/thermomachine, -/obj/item/circuitboard/machine/thermomachine, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/closet/crate, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) -"wVz" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/security/evidence) -"wVI" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, /area/station/engineering/atmos) -"wVL" = ( +"sDd" = ( /obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" + name = "Ordnance Lab" }, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) -"wWk" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/north, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"wWs" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wWt" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/east{ - req_access = list("engineering") +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/desk_bell, -/obj/item/crowbar, -/obj/item/wrench, /obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wWu" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/medical/laptop{ - dir = 8; - pixel_y = 1 +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"sDe" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"wWv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/grille/broken, +/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wWy" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/main) -"wWD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/command/eva) -"wWE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"wWH" = ( -/obj/machinery/holopad, +/area/station/maintenance/aft) +"sDq" = ( /obj/effect/turf_decal/bot, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"wWJ" = ( -/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/wardrobe/mixed, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"wWY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/port/lesser) +"sDv" = ( +/obj/structure/table, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"wWZ" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 +/area/station/maintenance/disposal/incinerator) +"sDy" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"wXe" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"wXh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"wXK" = ( -/turf/closed/wall, -/area/station/engineering/atmos) -"wXO" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wXY" = ( -/obj/structure/broken_flooring/side/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"wYb" = ( -/obj/machinery/computer/turbine_computer{ - mapping_id = "main_turbine" +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos/pumproom) +"sDD" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"sDW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"wYc" = ( -/turf/open/floor/iron/chapel{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/area/station/service/chapel) -"wYj" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppersouth) -"wYo" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/item/toy/figure/cmo{ - pixel_x = -1; - pixel_y = 9 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"wYI" = ( -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, /turf/open/floor/iron, -/area/station/command/heads_quarters/rd) -"wYO" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/computer/security/telescreen/prison/directional/south, -/obj/machinery/modular_computer/preset/cargochat/security{ +/area/station/commons/storage/primary) +"sEp" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/security/office) -"wYW" = ( -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_exterior"; - name = "Xenobiology Lab External Airlock" - }, -/obj/machinery/door_buttons/access_button{ - idDoor = "xeno_airlock_exterior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - pixel_y = -24; - req_access = list("xenobiology") - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/purple/filled/end{ +/turf/open/floor/plating, +/area/station/service/chapel/funeral) +"sEs" = ( +/obj/item/storage/box/bodybags, +/obj/item/pen, +/obj/structure/table, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/security/medical) +"sEK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_edge{ - dir = 4 - }, -/area/station/science/xenobiology) -"wYY" = ( -/obj/effect/turf_decal/siding/blue{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"wZb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"sEN" = ( +/obj/structure/water_source/puddle, +/obj/structure/flora/bush/reed/style_random{ + pixel_y = 5 }, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"sFg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) -"wZc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) -"wZd" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/area/station/hallway/primary/central/fore) +"sFr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"sFu" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/table, +/obj/item/wrench/medical, +/obj/item/storage/pill_bottle/mannitol{ + pixel_x = 8; + pixel_y = 7 }, +/obj/item/reagent_containers/cup/beaker/cryoxadone, +/obj/item/reagent_containers/cup/beaker/cryoxadone, +/obj/item/reagent_containers/cup/beaker/cryoxadone, +/obj/item/reagent_containers/cup/beaker/cryoxadone, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"sFv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wZf" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/siding/red{ + dir = 1 }, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/light_switch/directional/east, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"wZj" = ( -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"wZm" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"wZw" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/landmark/start/depsec/engineering, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) -"wZz" = ( -/turf/closed/wall/r_wall, -/area/station/tcommsat/server) -"wZI" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"wZR" = ( -/obj/machinery/telecomms/message_server/preset, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/station/tcommsat/server) -"xad" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/maintenance/port/lesser) -"xan" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"xay" = ( +/area/station/security/checkpoint/engineering) +"sFF" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/brig) +"sFW" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"xaz" = ( -/obj/effect/turf_decal/siding/purple/corner, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"xaC" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 1"; + name = "Cell 1"; + req_access = list("security") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/north{ - name = "Anti Assistant Protection Door"; - req_access = list("medical") +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"sGF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/button/elevator/directional/south{ - id = "medbay1" +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"sGV" = ( +/obj/effect/turf_decal/loading_area, +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Unfiltered & Air to Mix" }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"xaH" = ( -/obj/structure/filingcabinet, -/obj/machinery/button/ticket_machine{ - pixel_x = 24; - pixel_y = 6; +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/obj/machinery/button/door/directional/east{ - id = "hopdesk"; - name = "desk shutter control"; - pixel_y = -6 +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 8 }, /obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"xaI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P10-Central-Primary"; - location = "C1-Command" - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"xaM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos/pumproom) +"sHf" = ( +/obj/structure/bed/dogbed/renault, +/obj/machinery/button/door/directional/south{ + id = "captain_escape"; + name = "Tactical Relocation Toggle" }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"xaN" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/courtroom) -"xaP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"xbi" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"xbm" = ( -/obj/effect/turf_decal/sand/plating, -/obj/item/pickaxe, -/obj/item/pickaxe{ - pixel_x = 3 +/mob/living/basic/pet/fox/renault, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"sHh" = ( +/obj/structure/table, +/obj/machinery/camera/directional/west{ + c_tag = "ai_upload"; + name = "upload camera"; + network = list("aiupload") }, -/obj/item/pickaxe{ - pixel_x = -3 +/obj/item/radio/intercom/directional/west, +/obj/machinery/light/cold/directional/west, +/obj/effect/spawner/round_default_module, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/asteroid) -"xbr" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) -"xbs" = ( -/obj/machinery/airalarm/directional/south, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"sHk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron/stairs/right{ - dir = 8 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/area/station/service/theater) -"xbu" = ( -/obj/structure/ladder{ - icon_state = "ladder10" +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 }, -/obj/structure/window/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"xbB" = ( -/obj/machinery/disposal/bin, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/turf/open/floor/iron, +/area/station/engineering/lobby) +"sHm" = ( +/obj/machinery/barsign, +/turf/closed/wall, +/area/station/service/bar/atrium) +"sHn" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 +/obj/machinery/door_buttons/access_button{ + dir = 1; + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_y = -24; + req_access = list("virology") }, -/area/station/medical/pharmacy) -"xbC" = ( -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/bot, +/obj/machinery/computer/crew{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"sHC" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Docking Hallway" + }, +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = -40 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -32 + }, +/obj/structure/sign/directions/medical{ + dir = 8; + pixel_y = -24 }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"sHD" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"xbN" = ( -/obj/item/flashlight/flare/candle{ - pixel_x = -18; - pixel_y = -10 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"sHQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"xcb" = ( +"sHX" = ( +/obj/structure/chair/stool/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"xch" = ( -/obj/machinery/hydroponics/soil, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"sIf" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/grass, -/area/station/security/prison/garden) -"xck" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"xcl" = ( -/obj/effect/spawner/random/structure/chair_flipped, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"xcm" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/turf/open/misc/asteroid, +/area/space/nearstation) +"sIo" = ( +/obj/structure/table, +/obj/item/folder{ + pixel_x = -4 }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"xcq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) -"xcs" = ( -/obj/structure/cable, -/obj/effect/spawner/random/structure/chair_comfy{ - dir = 8 +/obj/item/disk/tech_disk{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"xcC" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/vending/drugs, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") +/obj/item/disk/tech_disk{ + pixel_x = 4; + pixel_y = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xdf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/item/disk/design_disk, +/obj/item/disk/design_disk, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/capacitor{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"xdj" = ( -/obj/structure/table, -/obj/machinery/newscaster/directional/west, -/obj/effect/spawner/random/trash/food_packaging, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"xdm" = ( -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/item/stock_parts/capacitor{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/exam_room) -"xdq" = ( -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"xdz" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_edge, -/area/station/science/xenobiology) -"xdQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/scanning_module{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"xdT" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "rndlab2"; - name = "Secondary Research and Development Shutter" +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin{ + pixel_x = 4; + pixel_y = 4 }, -/obj/machinery/door/window/left/directional/east{ - name = "Research Lab Desk"; - req_access = list("science") +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -4; + pixel_y = 2 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, +/turf/open/floor/iron/dark, /area/station/science/lab) -"xeh" = ( -/obj/item/instrument/musicalmoth, -/obj/structure/sign/warning/vacuum/external/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xeo" = ( -/obj/machinery/door/airlock/maintenance_hatch, +"sIq" = ( /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres/delayed{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"sIr" = ( +/obj/machinery/light/directional/south, +/obj/item/kirbyplants/organic/plant5, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"sIx" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_x = 5 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/hallway/secondary/command) -"xey" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/structure/railing/corner, -/turf/open/floor/iron/textured, -/area/station/security) -"xeA" = ( -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"xeF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/corporate_dock) -"xeH" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "geneshut" +/area/station/engineering/atmos/storage/gas) +"sIF" = ( +/obj/machinery/vending/cola/red, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/genetics) -"xeJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"xeS" = ( -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"xeW" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xfa" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/medical/chemistry/minisat) -"xfi" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"sIH" = ( +/obj/machinery/light_switch/directional/north, +/obj/machinery/bci_implanter, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"xfn" = ( -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/turf/closed/wall/r_wall, -/area/station/ai/upload/chamber) -"xfz" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"sIO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos) -"xfE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"xfJ" = ( -/obj/machinery/door/window/brigdoor/right/directional/west{ - req_access = list("xenobiology") +/turf/open/floor/iron, +/area/station/security/courtroom) +"sJd" = ( +/obj/item/storage/fancy/cigarettes/cigars{ + pixel_x = 2; + pixel_y = 6 }, -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("xenobiology") +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_x = 2; + pixel_y = 8 }, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 4 +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_x = 2; + pixel_y = 10 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"xfK" = ( +/obj/item/holosign_creator/robot_seat/bar, +/obj/machinery/status_display/evac/directional/west, /obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 +/obj/machinery/light/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Bar"; + name = "bar camera" }, -/obj/item/multitool/circuit, -/obj/item/multitool/circuit{ - pixel_x = 7 +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/explab) -"xfM" = ( +/turf/open/floor/iron/dark, +/area/station/service/bar) +"sJD" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"xfN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xgj" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/brown{ +/area/station/security/execution/transfer) +"sJH" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/meter, +/obj/machinery/light/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - name = "Cargo Lobby Lockdown Shutters"; - id = "cargolobbylockdown" +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"sJI" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/left/directional/east{ + name = "Inner Pipe Access"; + req_access = list("atmospherics") }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"xgn" = ( -/obj/structure/mannequin/skeleton{ - starting_items = list() +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"xgq" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"sJJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/office{ dir = 1 }, -/turf/open/openspace, -/area/station/science/xenobiology) -"xgG" = ( -/turf/closed/wall/rust, -/area/station/maintenance/department/medical/central) -"xgN" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/light/directional/south, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"xgQ" = ( -/obj/structure/cable, -/obj/effect/landmark/start/bitrunner, -/obj/machinery/light/cold/dim/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"xgZ" = ( -/obj/structure/closet/crate/coffin, -/obj/structure/window/spawner/directional/east, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"sJM" = ( +/turf/closed/wall, +/area/station/medical/break_room) +"sJS" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/service/chapel/funeral) -"xhb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) -"xhu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) -"xhy" = ( -/turf/open/floor/wood/parquet, -/area/station/service/theater) -"xhJ" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/cmo) -"xhV" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay" +/area/station/maintenance/starboard) +"sJU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/modular_computer/preset/cargochat/science{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"xih" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south{ - network = list("ss13","medbay") +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/science/research) +"sJW" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "brig_entrance" }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xin" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "Security" +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"xiw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"xiy" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/herringbone, -/area/station/commons/fitness/recreation) -"xiC" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xiF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/splatter, -/obj/effect/decal/cleanable/glass, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"xiM" = ( +/area/station/security/brig) +"sJY" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"xiV" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/item/radio/intercom/directional/west, -/obj/structure/displaycase{ - start_showpiece_type = /obj/item/gun/ballistic/rocketlauncher/unrestricted/nanotrasen - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"xiZ" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight, -/obj/item/analyzer{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/assembly/signaler, -/obj/item/stack/rods{ - amount = 25 - }, -/obj/item/stack/cable_coil, -/obj/item/gps, -/obj/item/clothing/gloves/color/fyellow, -/obj/item/gps, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"xje" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/area/station/hallway/primary/port) +"sKb" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"sKm" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/suit_storage_unit/cmo, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"xjh" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"xjj" = ( +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"sKy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/landmark/start/depsec/supply, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"sKA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, /turf/open/floor/iron, -/area/station/commons/locker) -"xjl" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"xjm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/area/station/service/hydroponics) +"sKE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xjo" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"sKV" = ( +/obj/structure/closet/crate/wooden/toy, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/directional/east{ + pixel_x = 24; + pixel_y = 6 }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/start/chemist, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/textured, -/area/station/medical/pharmacy) -"xjq" = ( -/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver{ - pixel_x = 26 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"xjw" = ( -/obj/structure/table_frame, -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"xjE" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" +/turf/open/floor/iron, +/area/station/service/theater) +"sLb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"sLf" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"xjL" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/project) -"xjQ" = ( -/obj/machinery/shower/directional/south, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/iron/freezer, -/area/station/security/prison/shower) -"xjW" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"sLl" = ( +/obj/structure/girder, +/obj/structure/grille, +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"sLw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/janitor, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 6 }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xkc" = ( -/obj/structure/cable/layer3, -/mob/living/basic/bot/secbot/pingsky, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"xkx" = ( -/obj/machinery/door/airlock/hatch{ - name = "Cyborg Break Room" +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/uppernorth) -"xkI" = ( -/obj/effect/decal/cleanable/molten_object, -/turf/open/misc/asteroid, -/area/station/asteroid) -"xkL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/science/server) -"xkO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/railing{ +/turf/open/floor/iron, +/area/station/service/janitor) +"sLD" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"xla" = ( -/obj/structure/table, -/obj/item/ai_module/core/full/dungeon_master, +/area/station/hallway/primary/fore) +"sLG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"xlm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/obj/structure/frame/machine, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, -/area/station/science/robotics/storage) -"xlo" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xlv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/showcase/horrific_experiment, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"xlw" = ( -/obj/structure/hedge, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central) -"xlB" = ( -/obj/effect/decal/cleanable/dirt/dust, +/area/station/maintenance/fore) +"sLP" = ( +/obj/effect/landmark/start/janitor, +/obj/effect/turf_decal/stripes/line, /obj/machinery/mineral/stacking_unit_console{ - pixel_y = 28 + pixel_x = 64 }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"xlD" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"xlG" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/engineering/supermatter/room) -"xlI" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"xlJ" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/stripes, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"xlY" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/station/service/library) -"xma" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"xmy" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/service/janitor) +"sLU" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/sign/warning/electric_shock/directional/north, +/obj/structure/cable, +/obj/machinery/power/smes/full, +/turf/open/floor/circuit/red/telecomms, +/area/station/tcommsat/server) +"sLW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible{ dir = 4 }, -/obj/structure/cable, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"sMa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) -"xmM" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xmU" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xmZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/south, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"xna" = ( -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"xnc" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" +/area/station/hallway/primary/aft) +"sMe" = ( +/obj/structure/chair/office{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"sMf" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics" + }, +/obj/structure/cable, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" + cycle_id = "atmos-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"sMh" = ( +/turf/closed/wall/rust, +/area/station/hallway/secondary/exit/departure_lounge) +"sMi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"xne" = ( -/obj/structure/cable, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, +/area/station/service/hydroponics) +"sMu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "qmprivacy"; + name = "Privacy Shutters"; + dir = 8 + }, /turf/open/floor/plating, -/area/station/science/xenobiology) -"xnl" = ( -/obj/structure/cable, -/obj/item/radio/intercom/directional/west, +/area/station/command/heads_quarters/qm) +"sME" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"xnq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"xnB" = ( -/obj/structure/ladder{ - icon_state = "ladder10" - }, -/obj/structure/cable, +/obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/science/xenobiology) -"xnF" = ( +/area/station/maintenance/fore) +"sMO" = ( +/obj/machinery/telecomms/processor/preset_four, /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/emergency_closet) -"xnQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xoh" = ( -/obj/effect/landmark/event_spawn, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"sMY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 9 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"xok" = ( -/obj/machinery/brm, -/obj/machinery/conveyor{ - dir = 4; - id = "brm" +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"sNa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"xoo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"sNe" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"xot" = ( -/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/engineering/lobby) -"xoM" = ( +/area/station/command/bridge) +"sNx" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/shard, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"xoQ" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"xoT" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xpn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"xpx" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xpD" = ( -/obj/structure/grille, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"xpJ" = ( -/obj/effect/landmark/start/cook, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xpR" = ( -/obj/machinery/light/small/directional/east, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xpY" = ( -/obj/structure/cable, +/area/station/maintenance/port/fore) +"sNR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"sOi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/door_timer{ + id = "Cell 4"; + name = "Cell 4"; + pixel_x = -32 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xqa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/structure/closet/secure_closet/brig{ + id = "Cell 4"; + name = "Cell 4 locker" }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xqe" = ( -/obj/machinery/conveyor_switch{ - id = "bridgedeliver" +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/maintenance/department/science) -"xqB" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"xqE" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 +/turf/open/floor/iron, +/area/station/security/brig) +"sOn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"xqL" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/structure/railing{ - dir = 9 +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"xqO" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 8 +/area/station/engineering/atmos) +"sOy" = ( +/obj/structure/chair{ + dir = 1 }, -/turf/open/space/basic, -/area/space) -"xqY" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/stack/rods/ten, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"xrb" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/garden) -"xrd" = ( -/obj/structure/table, -/obj/machinery/light/directional/east, -/obj/item/reagent_containers/cup/glass/mug/tea{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/food/butterbiscuit{ - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"xrt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/organ/horns, -/obj/item/organ/antennae, -/obj/item/organ/frills, -/obj/item/organ/spines, -/obj/item/organ/tail/lizard/fake, -/obj/structure/closet/crate/freezer, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"xrG" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/asteroid/line, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xrH" = ( -/obj/structure/transport/linear/public{ - base_icon_state = "catwalk"; - icon = 'icons/obj/smooth_structures/catwalk.dmi'; - icon_state = "catwalk-21" +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"sOD" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 }, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"xrO" = ( -/obj/item/bedsheet/mime, -/obj/structure/bed/maint, /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/obj/machinery/firealarm/directional/east, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/theater) -"xrT" = ( -/obj/machinery/oven/range, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xrU" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/spawner/random/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/starboard/fore) +"sOS" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/siding/green, +/turf/open/water/no_planet_atmos, +/area/station/service/hydroponics/garden) +"sOT" = ( +/obj/structure/flora/bush/pale/style_random{ + icon_state = "fullgrass_2" + }, +/obj/structure/flora/bush/jungle/c/style_2, +/turf/open/misc/asteroid, +/area/space/nearstation) +"sOV" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/station/maintenance/aft) +"sOX" = ( +/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/iron, -/area/station/cargo/storage) -"xrV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/commons/fitness/recreation) +"sPd" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/junction{ +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"xsj" = ( -/obj/machinery/netpod, -/obj/structure/cable, -/obj/structure/sign/poster/contraband/space_cube/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"xst" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"sPx" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"sPG" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/security/office) -"xsv" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/siding/red/corner{ dir = 1 }, -/obj/machinery/button/door/directional/north{ - id = "evashutter"; - name = "E.V.A. Storage Shutter Control"; - req_access = list("command") +/obj/effect/landmark/start/depsec/engineering, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"xsG" = ( -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/aft/upper) -"xsJ" = ( +/area/station/security/checkpoint/engineering) +"sPK" = ( +/obj/effect/turf_decal/sand/plating, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/security/prison) +"sPP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=P12-Central-Primary"; - location = "S1-Security" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Engineering Hallway" }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"xsM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"sPV" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad"; + name = "off ramp" }, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") +/obj/machinery/light/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Cargo Ramps"; + name = "cargo camera"; + network = list("ss13","qm") }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xsN" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"xsR" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"sQj" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, -/area/station/cargo/sorting) -"xtb" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"xtp" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/area/station/command/bridge) +"sQq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/structure/cable/multilayer/multiz, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/stairs/medium{ + dir = 4 + }, +/area/station/service/chapel) +"sQt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/security) -"xtA" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/area/station/maintenance/disposal/incinerator) +"sQw" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "brigcelldoor"; + name = "Cell Blast Door" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"sQx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"xtB" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/cargo/storage) -"xtG" = ( -/obj/machinery/rnd/production/techfab/department/service, -/obj/machinery/firealarm/directional/west, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"xtH" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"sQz" = ( +/obj/structure/chair/pew{ dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/office) -"xtL" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/chapel{ dir = 4 }, +/area/station/service/chapel) +"sQI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"xtN" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"sQJ" = ( +/turf/closed/wall/rust, +/area/station/service/chapel) +"sQT" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Research Lobby" }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"sQZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"sRb" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/library) -"xtY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, /turf/open/floor/iron, -/area/station/engineering/lobby) -"xtZ" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ +/area/station/hallway/secondary/exit/departure_lounge) +"sRg" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"sRh" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/green/fourcorners, +/turf/open/floor/iron/checker, +/area/station/service/hydroponics) +"sRi" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/research) -"xun" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, +/turf/open/space/basic, +/area/space/nearstation) +"sRm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"xuD" = ( -/obj/structure/cable, -/obj/machinery/button/door/directional/south{ - id = "maintbridge"; - name = "Shutter Control"; - pixel_x = 24 +/turf/open/floor/plating/airless, +/area/space/nearstation) +"sRw" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"sRz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance{ + name = "Ordnance Lab Maintenance" }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xuF" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 +/area/station/science/ordnance) +"sRL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"sRZ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/pumproom) -"xuK" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/south{ - name = "Reception Desk"; - req_access = list("medical") +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"sSd" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"xuR" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"sSg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 }, /obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"xvg" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ - dir = 4 +/area/station/hallway/primary/aft) +"sSh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Port to Filter" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"xvo" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/button/door/directional/east{ - id = "ordstorage"; - name = "Ordnance Storage Shutter Control"; - req_access = list("ordnance") - }, -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +"sSq" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"sSA" = ( +/obj/structure/cable, +/obj/effect/spawner/random/structure/musician/piano/random_piano, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"xvr" = ( -/obj/machinery/computer/prisoner/management{ +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"sSD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"sSJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/checkpoint/medical) +"sSN" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"xvH" = ( -/obj/machinery/door/airlock/grunge{ - name = "Quiet Room" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"xvU" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_half, -/area/station/medical/pharmacy) -"xvZ" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/maintenance/central/greater) -"xwe" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/full, -/obj/effect/mapping_helpers/airlock/access/any/science/general, -/obj/machinery/door/airlock/maintenance/external/glass, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"xwf" = ( -/obj/structure/chair/plastic{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"xwh" = ( -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"xwm" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/turf/open/openspace, -/area/station/engineering/main) -"xws" = ( -/turf/closed/wall, -/area/station/engineering/supermatter/room) -"xwu" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/cargo/lobby) -"xwz" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/power/smes/full, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"sSP" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark/telecomms, -/area/station/ai/satellite/chamber) -"xwA" = ( +/obj/structure/table, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/stack/package_wrap, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/rods/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/asteroid) -"xwD" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"sSZ" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"sTe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"xwO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xxe" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/sign/directions/lavaland/directional/south{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"sTy" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xxi" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) -"xxn" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Distribution Loop" +/area/ruin/space/has_grav/abandoned_warehouse) +"sTB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/effect/turf_decal/box/corners{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"xxs" = ( -/obj/machinery/door/airlock/multi_tile/public{ - name = "Corporate Private Dock" +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/corporate_dock) -"xxz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/engine) -"xxH" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"sTO" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/solars/port/fore) +"sTZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/command/eva) -"xxJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xxN" = ( -/obj/machinery/light/small/dim/directional/north, -/obj/machinery/atmospherics/components/unary/passive_vent, -/turf/open/floor/engine/o2, -/area/station/science/ordnance) -"xxO" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/science/research) -"xxT" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) -"xxV" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"sUq" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/library) -"xxY" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"sUB" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"sVh" = ( +/turf/closed/wall/rust, +/area/station/hallway/secondary/service) +"sVi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"xyG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/closet/crate/internals, -/obj/effect/spawner/random/maintenance, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"xyN" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xyP" = ( -/obj/structure/cable, -/obj/machinery/light/small/dim/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xza" = ( -/mob/living/basic/bot/medbot/autopatrol, /obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"xzj" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"sVj" = ( +/obj/effect/turf_decal/loading_area{ dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/locker) -"xzp" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 2; - height = 13; - name = "port bay 2"; - shuttle_id = "ferry_home"; - width = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/engine, -/area/station/command/corporate_dock) -"xzs" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/oil, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"sVq" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"xzG" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"xzJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/engineering/gravity_generator) +"sVz" = ( +/obj/machinery/smartfridge, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"sVB" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chemistry Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"xzP" = ( -/mob/living/carbon/human/species/monkey, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"xzT" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 +/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"sVD" = ( +/obj/structure/railing{ + dir = 8 }, -/turf/open/space/basic, -/area/space/nearstation) -"xzZ" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/iron/stairs/left{ dir = 1 }, +/area/station/service/chapel/monastery) +"sVI" = ( +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"sVN" = ( /obj/structure/table, -/obj/item/camera, -/obj/machinery/recharger, -/turf/open/floor/iron, -/area/station/security/interrogation) -"xAa" = ( -/obj/machinery/computer/upload/ai, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/circuit/red, -/area/station/ai/upload/chamber) -"xAd" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"xAl" = ( +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/machinery/ecto_sniffer{ + pixel_x = -6 + }, +/obj/item/mod/core/standard{ + pixel_x = -4 + }, +/obj/item/mod/core/standard{ + pixel_x = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"sVP" = ( +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet{ + name = "shotgun rubber rounds locker"; + req_access = list("armory") + }, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/south{ - id = "boutique"; - name = "shutter control" +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/structure/filingcabinet/chestdrawer, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/iron/dark, +/area/station/security/armory) +"sVQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/wood/large, -/area/station/cargo/boutique) -"xAm" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"xAr" = ( -/obj/structure/ladder{ - icon_state = "ladder10" +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"sVS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xAy" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/storage/tech) -"xAH" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/maintenance/disposal/incinerator) +"sVZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"xAN" = ( -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"xAR" = ( -/obj/machinery/button/elevator/directional/east{ - id = "aisat" - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai/satellite/interior) -"xAV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/prison) -"xBf" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"xBl" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"sWb" = ( /obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) -"xBn" = ( -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"xBs" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"sWj" = ( +/obj/structure/table, +/obj/item/clothing/mask/gas, +/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"xBz" = ( -/obj/structure/closet/emcloset, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"xBI" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/textured, -/area/station/hallway/primary/central) -"xBO" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) -"xBR" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman/pre_loaded{ - anchored = 1 +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"sWl" = ( +/turf/closed/wall/rust, +/area/station/maintenance/solars/port/aft) +"sWp" = ( +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/left/directional/east{ + name = "Service Hall Delivery Access"; + req_access = list("service") }, -/obj/effect/turf_decal/bot, -/obj/structure/sign/warning/electric_shock/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"xBS" = ( -/turf/closed/wall, -/area/station/medical/surgery/theatre) -"xBU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"xBV" = ( -/obj/machinery/atmospherics/components/binary/volume_pump, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + location = "Bar" }, -/turf/open/floor/iron/dark/corner{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"sWA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"sWI" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/bridge) +"sWM" = ( +/obj/structure/fermenting_barrel, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"sWN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" }, -/area/station/engineering/atmos/pumproom) -"xBW" = ( -/obj/machinery/light/floor, -/obj/structure/cable, +/obj/effect/landmark/navigate_destination/court, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"sWU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"sWV" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/radshelter/medical) -"xCf" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"sXB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) -"xCh" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/door/airlock{ - name = "Bar" +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/security/brig) +"sXC" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/service/bar/backroom) -"xCq" = ( -/obj/effect/landmark/start/scientist, +/area/station/command/heads_quarters/ce) +"sXE" = ( +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/explab) -"xCs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage" + }, /obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"sXG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/xenobiology) -"xCw" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair/sofa/bench, -/turf/open/floor/iron/white/textured_large, -/area/station/science/research) -"xCA" = ( -/obj/structure/rack, -/obj/effect/spawner/random/entertainment/deck, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"sXJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"xCI" = ( -/obj/structure/broken_flooring/side/directional/east, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/central/greater) -"xCM" = ( -/obj/machinery/door/airlock/grunge{ - name = "Quiet Room" - }, -/obj/machinery/door/firedoor, +/area/station/maintenance/starboard/aft) +"sXP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"xCX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"xDf" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 8; - id = "xbprotect1"; - name = "Security Shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"xDh" = ( -/obj/structure/sign/picture_frame/showroom/three{ - pixel_x = -8; - pixel_y = -32 - }, -/obj/structure/sign/picture_frame/showroom/four{ - pixel_x = 8; - pixel_y = -32 + dir = 4 }, /obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"sXQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/shieldgen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"sXT" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"xDk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"xDm" = ( -/obj/effect/turf_decal/tile/blue{ +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"sYe" = ( +/obj/structure/bedsheetbin, +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"sYn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/junction/flip{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sink/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xDn" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engine Room" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"sYs" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall/rust, +/area/station/maintenance/port/greater) +"sYu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"sYw" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"sYM" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) -"xDp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xDI" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"xDW" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +/turf/open/floor/plating, +/area/station/service/chapel) +"sZb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 1 }, -/obj/machinery/light/small/directional/north, -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/trunk/multiz/down, -/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/security) -"xEl" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Art Storage" +/area/station/engineering/atmos/pumproom) +"sZe" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/art) -"xEr" = ( -/obj/machinery/computer/telecomms/monitor, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","tcomms") +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"sZw" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Satellite External Port"; + name = "exterior camera"; + network = list("minisat"); + start_active = 1 }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"xEs" = ( -/turf/closed/wall, -/area/station/science/xenobiology) -"xEL" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) -"xET" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"xEW" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"sZz" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 }, -/obj/item/clothing/gloves/color/yellow{ - name = "unsulated gloves"; - siemens_coefficient = 5 +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/storage/tools) -"xEZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing{ +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/station/security/prison/garden) -"xFh" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xFt" = ( -/obj/structure/railing/corner{ - dir = 4 +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"sZB" = ( +/obj/machinery/disposal/delivery_chute{ + desc = "Only the worthy may claim the belt"; + dir = 8; + name = "PubbyStation Memorial Trash Chute" }, -/turf/open/floor/glass, -/area/station/command/meeting_room) -"xFH" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/lab) -"xFP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"xFT" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"sZL" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 9 }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xGe" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"sZV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"xGg" = ( -/obj/machinery/doppler_array{ - dir = 4 +/area/station/maintenance/disposal/incinerator) +"tav" = ( +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"xGo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/entry) -"xGB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"taM" = ( +/obj/machinery/nuclearbomb/selfdestruct, +/turf/open/floor/circuit/green{ + luminosity = 2 }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 +/area/station/command/vault) +"taU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detective_shutters"; + name = "Detective's Office Shutter" }, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/checker, -/area/station/science/research) -"xGC" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood, -/area/station/service/cafeteria) -"xGG" = ( -/obj/machinery/computer/camera_advanced/xenobio, -/obj/effect/turf_decal/stripes/line, -/obj/item/storage/box/monkeycubes, -/turf/open/floor/iron/white/textured_large, -/area/station/science/xenobiology) -"xGY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/plating, +/area/station/security/detectives_office) +"taW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/grass, -/area/station/science/genetics) -"xGZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/obj/structure/disposalpipe/junction{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/corner{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"tbb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/belt/utility, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"tbi" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/docking, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"tbk" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xHa" = ( -/obj/structure/stairs/east, -/obj/structure/railing, -/turf/open/floor/iron, +/turf/open/floor/iron/showroomfloor, /area/station/engineering/atmos) -"xHe" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber" +"tbn" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/engine) -"xHf" = ( -/obj/effect/landmark/firealarm_sanity, -/turf/open/openspace, -/area/station/medical/medbay/central) -"xHA" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xHB" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, +/area/station/hallway/primary/fore) +"tbs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/command/corporate_showroom) -"xHT" = ( -/obj/structure/cable, -/obj/machinery/light/warm/dim/directional/south, -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/port/aft) +"tbu" = ( +/obj/machinery/vending/wardrobe/gene_wardrobe, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"xHY" = ( -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"xIl" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"tbE" = ( +/obj/machinery/door/airlock/external{ + name = "Arrival Shuttle Airlock" }, -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/ai/upload/foyer) -"xIm" = ( -/obj/structure/broken_flooring/pile, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xIz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"tbS" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Drone Control" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/command/eva) -"xIN" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"xIP" = ( -/obj/structure/window/fulltile, -/turf/open/misc/asteroid, -/area/station/asteroid) -"xJd" = ( -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"xJe" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"xJj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xJA" = ( -/obj/structure/table/wood/fancy/blue, -/obj/effect/spawner/random/aimodule/neutral, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/window/right/directional/east{ - name = "Core Modules"; - req_access = list("captain") +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"tcg" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Air to External Air Ports" }, -/turf/open/floor/circuit, -/area/station/ai/upload/chamber) -"xJK" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"tck" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag{ + pixel_y = 4 }, -/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tcn" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/science) +"tcY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"xJQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/light/cold/directional/east, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"xJR" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/box/red, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/science/ordnance) -"xJT" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/service/chapel/dock) +"tdd" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"xKh" = ( -/obj/structure/closet/wardrobe/miner, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/requests_console/directional/south{ - department = "Mining"; - name = "Mining Requests Console" - }, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) -"xKo" = ( -/turf/closed/wall, -/area/station/maintenance/port/greater) -"xKp" = ( -/obj/structure/closet/preopen{ - icon_state = "bio"; - name = "level 3 biohazard gear closet" - }, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/tank/internals/oxygen, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"xKx" = ( -/mob/living/basic/mothroach, -/turf/open/misc/asteroid, -/area/station/asteroid) -"xKC" = ( -/obj/structure/table/glass, -/obj/item/clothing/head/utility/hardhat, -/obj/item/clothing/head/utility/hardhat{ - pixel_y = 5 +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tdf" = ( +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","monastery") }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"xKV" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tdk" = ( +/turf/closed/wall/rust, +/area/station/commons/storage/art) +"tdn" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/generic/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/sunny/style_random, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) +"tds" = ( +/obj/machinery/gravity_generator/main, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"tdt" = ( +/obj/machinery/telecomms/processor/preset_three, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"tdv" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/security) -"xKX" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/project) -"xLg" = ( -/obj/structure/cable, -/obj/structure/broken_flooring/side/directional/east, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"xLu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"xLv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/engineering/main) -"xLN" = ( +/area/station/hallway/primary/aft) +"tdB" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, /area/station/medical/treatment_center) -"xLR" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ +"tdW" = ( +/obj/machinery/light_switch/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/eva) +"tdY" = ( +/obj/machinery/washing_machine, +/obj/structure/cable, +/obj/effect/spawner/random/contraband/prison, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/machinery/digital_clock/directional/north, -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"xMg" = ( -/obj/machinery/shower/directional/south, -/obj/effect/spawner/random/trash/soap, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) -"xMk" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/door/firedoor, +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"teb" = ( +/obj/item/clipboard, +/obj/structure/table/wood, +/obj/item/folder/red{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/blue, +/obj/item/melee/chainofcommand, +/obj/item/flashlight/lamp/green{ + pixel_x = -8; + pixel_y = 15 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"tej" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"xMv" = ( -/obj/machinery/shower/directional/south{ - name = "emergency shower" +/area/station/hallway/secondary/exit/departure_lounge) +"teu" = ( +/obj/structure/extinguisher_cabinet/directional/south{ + pixel_x = -26 }, -/obj/effect/turf_decal/box, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/dark/small, -/area/station/engineering/atmos/project) -"xMJ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"xMY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"xMZ" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 8 +/area/station/cargo/sorting) +"tey" = ( +/obj/machinery/door/poddoor{ + id = "QMLoaddoor2"; + name = "Supply Dock Loading Door" }, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"xNh" = ( +/turf/open/floor/plating, +/area/station/cargo/storage) +"teE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/directional/west, /obj/effect/turf_decal/stripes/corner{ - dir = 4 + dir = 8 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ +/obj/effect/spawner/xmastree/rdrod, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/area/station/command/corporate_dock) -"xNl" = ( -/obj/structure/chair/office/tactical{ - dir = 4 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/obj/effect/landmark/start/security_officer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"teH" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sink/kitchen/directional/west, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/office) -"xNo" = ( -/obj/machinery/light_switch/directional/east, -/obj/structure/table, -/obj/machinery/light/small/directional/east, -/obj/item/reagent_containers/cup/beaker/large{ +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"teL" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box{ pixel_x = 6; - pixel_y = 14 + pixel_y = 5 }, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 10; - pixel_y = 7 +/obj/item/storage/fancy/candle_box{ + pixel_x = -5; + pixel_y = 5 }, -/obj/item/book/manual/wiki/cytology{ +/obj/machinery/light/directional/north, +/obj/item/storage/box/matches{ pixel_x = -3; pixel_y = 2 }, -/obj/item/biopsy_tool{ - pixel_x = -14; - pixel_y = 4 - }, -/turf/open/floor/iron/dark/small, -/area/station/science/cytology) -"xNp" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/machinery/computer/security/telescreen/monastery/directional/north, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"teU" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/supermatter/room) +"tfh" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "detective sorting disposal pipe" }, -/turf/open/floor/engine, -/area/station/engineering/atmospherics_engine) -"xNq" = ( +/obj/effect/mapping_helpers/mail_sorting/security/detectives_office, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"xNs" = ( +/area/station/hallway/primary/aft) +"tfi" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"tfs" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tfB" = ( +/obj/structure/chair{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xNy" = ( +/obj/effect/landmark/start/prisoner, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"tfG" = ( +/obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/armory) -"xOg" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"tfI" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel/office) +"tfV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"xOo" = ( -/obj/structure/cable, -/obj/machinery/power/smes, -/turf/open/floor/plating, -/area/station/maintenance/solars/port) -"xOp" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"xOr" = ( -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 8 + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"xOB" = ( -/obj/machinery/door/airlock/research{ - name = "Ordnance Lab" +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/ordnance) -"xOC" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"xOF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"xOJ" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Room" +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"tfW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"tfY" = ( +/obj/effect/turf_decal/box/corners{ dir = 4 }, /turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"xOK" = ( -/obj/effect/spawner/structure/window/reinforced, +/area/station/hallway/primary/fore) +"tgd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"xON" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/obj/effect/turf_decal/siding/red{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"xOO" = ( +/obj/effect/landmark/start/depsec/engineering, /obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/warden) -"xOQ" = ( -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xOU" = ( -/turf/closed/wall, -/area/station/science/robotics/lab) -"xPo" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/plating/elevatorshaft, -/area/station/ai/satellite/interior) -"xPp" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"xPH" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"xPL" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/commons/storage/tools) -"xPW" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ +/area/station/security/checkpoint/engineering) +"tgh" = ( +/obj/structure/closet/crate/trashcart/laundry, +/obj/effect/spawner/random/contraband/prison, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner/skirt, +/obj/item/clothing/under/rank/prisoner/skirt, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/effect/mapping_helpers/mail_sorting/supply/disposals, -/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/security/prison/garden) +"tgp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/effect/spawner/random/exotic/technology, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xQe" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 +/area/station/maintenance/port/greater) +"tgx" = ( +/obj/item/storage/toolbox/electrical{ + pixel_x = -3; + pixel_y = 3 }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"xQk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron/grimy, -/area/station/maintenance/central/lesser) -"xQv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/item/storage/toolbox/mechanical, +/obj/item/multitool{ + pixel_x = -4; + pixel_y = 3 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"xQB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/flashlight, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xQH" = ( -/turf/closed/wall, -/area/station/commons/locker) -"xQN" = ( -/obj/effect/spawner/random/structure/crate_loot, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xQS" = ( +/turf/open/floor/iron/dark, +/area/station/security/warden) +"tgU" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"tgZ" = ( +/obj/structure/table, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"the" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"xQW" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/chair/office{ dir = 1 }, -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/security) -"xQX" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"xRj" = ( -/obj/structure/fence{ +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"tho" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/catwalk_floor, -/area/station/cargo/storage) -"xRG" = ( -/obj/structure/chair/wood{ +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/starboard) +"thy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/wood, -/area/station/commons/lounge) -"xRH" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"thC" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 24; + name = "SS13: Auxiliary Dock, Station-Fore"; + shuttle_id = "whiteship_home"; + width = 35 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/space/basic, +/area/space) +"thG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"xRL" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"thU" = ( +/obj/structure/cable, +/obj/structure/grille/broken, +/obj/item/shard, +/obj/item/shard, /turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xRP" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/station/security/prison) +"thW" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"xRU" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench/left{ - dir = 8 +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/central) -"xSi" = ( +/area/station/commons/fitness/recreation) +"tiv" = ( +/turf/closed/wall, +/area/station/service/chapel) +"tiz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"xSN" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"tiK" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/delivery, /obj/machinery/airalarm/directional/north, -/obj/machinery/hydroponics/soil/rich, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) -"xSV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/order_console/bitrunning, /turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"xSW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/station/cargo/storage) +"tiY" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white/smooth_half{ - dir = 8 +/obj/machinery/camera/directional/east{ + c_tag = "Brig Warden's Office" }, -/area/station/science/xenobiology) -"xTa" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio6"; - name = "Xenobio Pen 6 Blast Door" +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"xTb" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"xTs" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"xTw" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/engineering_all, -/turf/open/floor/iron/textured, -/area/station/engineering/storage/tech) -"xTI" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"tjv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"tjA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, -/area/station/cargo/storage) -"xTZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"xUx" = ( -/obj/structure/flora/rock/style_random, -/turf/open/misc/asteroid, -/area/station/asteroid) -"xUy" = ( -/obj/structure/chair/office{ +/area/station/hallway/primary/central/fore) +"tjE" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall, +/area/station/maintenance/aft) +"tjO" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall, +/area/station/security/office) +"tjR" = ( +/obj/machinery/modular_computer/preset/research{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/bot, +/obj/machinery/keycard_auth/wall_mounted/directional/east{ + pixel_y = 26 }, -/turf/open/floor/carpet/purple, -/area/station/service/library) -"xUA" = ( -/obj/structure/lattice/catwalk, -/obj/structure/fluff/beach_umbrella/science{ - deconstructible = 1 +/obj/machinery/button/door/directional/north{ + id = "rdprivacy"; + name = "Director's Privacy Toggle"; + pixel_x = -8; + pixel_y = 38 }, -/turf/open/space/basic, -/area/space/nearstation) -"xUJ" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Monkey Pen" +/obj/machinery/button/door/directional/north{ + id = "Biohazard"; + name = "Emergency Research Lockdown"; + pixel_x = -8; + req_access = list("research") }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"xUR" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/motion/directional/east{ - c_tag = "E.V.A. Storage" +/obj/machinery/light_switch/directional/north{ + pixel_x = 6 }, -/obj/effect/turf_decal/delivery, +/obj/machinery/button/door/directional/north{ + id = "xeno_blastdoor"; + name = "Xenobiology Containment"; + pixel_x = 6; + pixel_y = 38; + req_access = list("research") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/rd/directional/east, /turf/open/floor/iron/dark, -/area/station/command/eva) -"xUT" = ( -/obj/effect/turf_decal/stripes/corner{ +/area/station/command/heads_quarters/rd) +"tkO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, -/obj/item/radio/intercom/directional/west, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark, -/area/station/science/xenobiology) -"xUU" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" +/area/station/engineering/supermatter/room) +"tkP" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/box/red, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"tla" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, +/obj/effect/turf_decal/tile/red, +/obj/item/kirbyplants/organic/plant21, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"tlb" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"tlc" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 11; + height = 18; + name = "KiloStation emergency evac bay"; + shuttle_id = "emergency_home"; + width = 30 + }, +/turf/open/space/basic, +/area/space) +"tlu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/ai/satellite/teleporter) -"xUW" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"xVc" = ( -/obj/machinery/door/poddoor/massdriver_ordnance, -/obj/machinery/atmos_shield_gen/active, -/obj/machinery/atmos_shield_gen/active{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/engine, -/area/station/science/ordnance/testlab) -"xVg" = ( /obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 10 +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"tly" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Xenobiology Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -24 }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) +"tlA" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/asteroid, +/area/station/hallway/secondary/exit/departure_lounge) +"tlJ" = ( +/obj/structure/transit_tube/diagonal/topleft, +/obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/research) -"xVt" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"xVK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/space/basic, +/area/space/nearstation) +"tlL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"tlM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/misc/asteroid, +/area/space/nearstation) +"tlS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"tlU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) -"xVO" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/engineering/atmos/mix) -"xWb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"xWd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tlV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, -/area/station/service/janitor) -"xWi" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"xWK" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, +/area/station/security/execution/education) +"tlW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/security/brig) -"xWN" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 8; - id = "gateshutter"; - name = "Gateway Access Shutter" - }, -/turf/open/floor/iron, -/area/station/command/gateway) -"xWQ" = ( +/area/station/hallway/primary/central/fore) +"tmd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"xWR" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Secondary AI Core Access"; - pixel_y = -4; - req_access = list("ai_upload") - }, -/obj/machinery/flasher/directional/west{ - id = "AI"; - pixel_y = -8 - }, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - on = 0; - pixel_x = -27 - }, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_x = 27 +/turf/open/floor/iron/stairs/right{ + dir = 8 }, -/turf/open/floor/circuit/green, -/area/station/ai/satellite/chamber) -"xXh" = ( -/obj/machinery/power/shieldwallgen, -/obj/effect/decal/cleanable/dirt/dust, +/area/station/hallway/primary/fore) +"tmf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/side{ +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"tmj" = ( +/obj/machinery/light/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tmp" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/area/station/command/emergency_closet) -"xXi" = ( -/obj/machinery/griddle, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xXm" = ( -/obj/structure/table, -/obj/item/clothing/glasses/science{ - pixel_y = 2 - }, -/obj/item/clothing/glasses/science{ - pixel_y = -2 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"tmq" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/delivery_chute{ + dir = 8 }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) -"xXo" = ( -/turf/open/floor/glass, -/area/station/cargo/storage) -"xXs" = ( -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Justice Chamber"; - req_access = list("armory") +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/status_display/supply{ + pixel_x = 32 }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"xXz" = ( -/obj/effect/turf_decal/stripes/red/line{ +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/end{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"xXF" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"xXY" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/siding/wideplating/dark/end{ - dir = 4 +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/cargo/storage) -"xYa" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/area/station/cargo/sorting) +"tmt" = ( +/obj/structure/sign/warning/vacuum/external/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine) -"xYb" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/wood/parquet, -/area/station/cargo/boutique) -"xYu" = ( -/obj/machinery/button/door/directional/west{ - id = "prison release"; - name = "Labor Camp Shuttle Lockdown"; - req_access = list("brig") - }, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"xYz" = ( -/obj/machinery/chem_dispenser/drinks/beer{ +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/structure/table, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"xYE" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 5 +/obj/machinery/door/airlock/maintenance/external{ + name = "Transit Intersection" }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"xYG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/mapping_helpers/airlock/unres/delayed{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xYZ" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"tmv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/corner, +/obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) -"xZj" = ( -/obj/effect/spawner/random/structure/grille, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) -"xZL" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","tcomms") +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"tmD" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 4 }, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/tcommsat/server) -"xZM" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"tmH" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos/mix) -"xZO" = ( -/obj/machinery/door/airlock/security{ - name = "Warden Quarters" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/structure/closet, +/obj/item/stack/package_wrap, +/obj/item/storage/bag/trash, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"tmV" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/storage/box/drinkingglasses, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/obj/structure/reagent_dispensers/keg/beer, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"tmZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/security/warden) -"xZU" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/white, -/area/station/science/explab) -"xZV" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"xZX" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/terminal{ - dir = 4 - }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"tnc" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/ai/satellite/maintenance/storage) -"yae" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 +/area/station/maintenance/department/bridge) +"tnp" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics Desk"; + name = "atmospherics camera"; + network = list("ss13","engine") }, -/obj/structure/rack, -/obj/effect/spawner/random/clothing/beret_or_rabbitears, -/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/cargo/boutique) -"yai" = ( -/obj/structure/table, -/obj/item/transfer_valve{ - pixel_x = 5 +/area/station/engineering/atmos/storage/gas) +"tnq" = ( +/obj/machinery/computer/security{ + dir = 4 }, -/obj/item/transfer_valve, -/obj/item/transfer_valve{ - pixel_x = -5 +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/item/transfer_valve{ - pixel_x = 5 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/item/transfer_valve, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"yaw" = ( -/obj/machinery/turretid{ - control_area = "/area/station/ai/satellite/interior"; - name = "AI Antechamber turret control"; - pixel_y = -27 - }, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, +/area/station/command/bridge) +"tnr" = ( +/obj/structure/railing/corner, /turf/open/floor/iron/dark, -/area/station/ai/satellite/uppernorth) -"yaH" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/ordnance/storage) -"yaK" = ( +/area/station/service/chapel/monastery) +"tns" = ( +/obj/machinery/shower/directional/west, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plastic, +/area/station/security/prison/shower) +"tnA" = ( +/obj/effect/turf_decal/siding/wideplating/dark/corner, +/obj/structure/railing/corner, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tnC" = ( +/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"tnH" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/tank_dispenser/oxygen{ - pixel_x = -1; - pixel_y = 2 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"tnP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 }, -/obj/machinery/wall_healer/directional/south, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/command/gateway) -"yaM" = ( -/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tnR" = ( +/obj/machinery/rnd/server, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/science/server) +"toh" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/prison/safe) +"toi" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ + dir = 10 }, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"ybh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/command/eva) -"ybo" = ( -/turf/open/floor/iron/white/textured_corner{ - dir = 8 - }, -/area/station/science/xenobiology) -"ybp" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/broken_flooring/pile, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"ybz" = ( -/obj/structure/urinal/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"ybD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/engineering/storage_shared) +"toE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"ybK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ybO" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/science/xenobiology) -"ybP" = ( -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/main) -"yca" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Chemistry Lab" +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron, +/area/station/service/janitor) +"toG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres/delayed{ - dir = 8 +/obj/machinery/button/door/directional/east{ + id = "Arrival Shuttle Bay"; + name = "Arrival Shuttle Bay Toggle"; + req_access = list("command") }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry/minisat) -"ycs" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"toN" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"ycw" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/food_or_drink/booze{ - spawn_loot_count = 3; - spawn_loot_double = 0; - spawn_random_offset = 1 +/obj/structure/closet/crate{ + icon_state = "crateopen" }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ycz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ycG" = ( +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/food_or_drink/booze, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"toS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ycI" = ( -/mob/living/carbon/human/species/monkey, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/medical/chemistry) -"ycN" = ( -/turf/closed/wall/r_wall, -/area/station/command/corporate_dock) -"ycO" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"ycT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/medical/chemistry) -"ycY" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/item/radio/intercom/directional/north, -/obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"toZ" = ( +/obj/effect/turf_decal/bot, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 }, /turf/open/floor/iron, -/area/station/cargo/storage) -"ydk" = ( +/area/station/command/eva) +"tpd" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/pen, +/obj/item/storage/box/prisoner, +/obj/machinery/camera/directional/south{ + c_tag = "Prison Hallway Port"; + network = list("ss13","prison") + }, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/fore) -"yds" = ( -/obj/structure/chair{ - dir = 4 - }, +/area/station/security/execution/transfer) +"tpl" = ( +/obj/structure/closet/secure_closet/detective, +/obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/structure/cable, -/obj/machinery/light_switch/directional/south{ - pixel_x = -10 - }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"ydv" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet_Research"; - name = "Bathroom" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/book/manual/wiki/detective, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"tpp" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/port/fore) +"tpr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/service/theater) -"ydC" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/holosign/barrier, -/turf/open/floor/iron, -/area/station/cargo/warehouse/upper) -"ydQ" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"yec" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/storage) -"yed" = ( -/obj/effect/spawner/random/bedsheet{ - dir = 1 +/area/station/maintenance/fore) +"tpw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/structure/bed{ +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 1 }, -/obj/item/pillow/random, -/turf/open/floor/carpet, -/area/station/commons/dorms) -"yei" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/meter, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, -/area/station/security/prison/garden) -"yes" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"yew" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/yellow/filled/corner, +/area/station/engineering/atmos/pumproom) +"tpy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"yeK" = ( +/obj/effect/turf_decal/siding/blue/corner, /obj/structure/cable, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/hallway/secondary/entry) -"yeO" = ( -/obj/machinery/door/firedoor/border_only{ +/obj/structure/disposalpipe/junction/flip{ dir = 8 }, -/obj/structure/railing{ +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"tpD" = ( +/obj/machinery/atmospherics/components/tank/air{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"yeQ" = ( -/obj/structure/railing/corner/end{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/no_smoking{ + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/ai/satellite/foyer) -"yeS" = ( -/obj/structure/closet/crate/grave, -/obj/effect/landmark/start/hangover, +/area/station/science/xenobiology) +"tpM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/light/small/directional/west, +/obj/machinery/light_switch/directional/west, +/obj/item/assembly/prox_sensor{ + desc = "Used for scanning and alerting when someone enters a certain proximity. This one is slightly shifted to the left."; + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/wallframe/camera, +/obj/item/screwdriver, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"tpY" = ( +/obj/structure/flora/rock/style_random, +/obj/machinery/light/small/directional/west, /turf/open/misc/asteroid, -/area/station/asteroid) -"yfl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/hallway/primary/fore) +"tqb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"yfw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/spawner/random/entertainment/lighter, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) -"yfz" = ( -/obj/machinery/vending/dinnerware, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"yfL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/engineering/storage/tech) -"ygb" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/turf_decal/bot{ +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tqz" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/central) +"tqB" = ( +/obj/structure/railing, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tqC" = ( +/obj/machinery/computer/slot_machine, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"tqD" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/station/maintenance/port/lesser) +"tqG" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/command/gateway) -"ygc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/sink/kitchen/directional/south{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/medical) -"ygh" = ( -/obj/structure/disposaloutlet{ - dir = 4 +/area/station/maintenance/department/medical/central) +"tqQ" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/trunk{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"ygj" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/lounge) -"ygt" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) -"ygw" = ( -/turf/closed/wall/r_wall, -/area/station/security/detectives_office) -"ygx" = ( +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"tqZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "gib5-old" - }, -/obj/effect/spawner/random/contraband/narcotics, -/turf/open/floor/iron/white, -/area/station/maintenance/aft/upper) -"ygJ" = ( -/obj/machinery/button/door/directional/south{ - id = "Secure Storage"; - name = "Secure Storage Control"; - req_access = list("engine_equip") +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tre" = ( +/obj/structure/flora/bush/pale/style_random, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/turf/open/misc/asteroid, +/area/space/nearstation) +"trf" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/button/door/directional/south{ - id = "atmos"; - name = "Atmospherics Lockdown"; - pixel_y = -34; - req_access = list("atmospherics") +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, /turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"ygN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"yhb" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/area/station/commons/fitness/recreation) +"trj" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/pen/red{ + pixel_x = 5; + pixel_y = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, +/area/station/security/courtroom) +"trt" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/engine/plasma, /area/station/engineering/atmos) -"yhg" = ( -/obj/machinery/button/door/directional/west{ - id = "atmos"; - name = "Atmospherics Lockdown"; - req_access = list("atmospherics") - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) -"yhj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, +"tsf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/engineering/atmos) -"yhk" = ( -/obj/effect/spawner/random/structure/chair_comfy{ - dir = 1 +/area/station/maintenance/port/greater) +"tsg" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tsn" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/rust, +/area/station/commons/fitness/recreation) +"tsD" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ +/obj/item/radio/intercom/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) -"yhn" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod One"; - space_dir = 1 +/area/station/cargo/storage) +"tsF" = ( +/turf/closed/wall, +/area/station/security/mechbay) +"tsY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"ttd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/landmark/navigate_destination/dockescpod1, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tth" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"yho" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "External Gas to Loop" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"yhp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/station/maintenance/disposal/incinerator) +"ttn" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) -"yhq" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/security/prison) -"yhy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"ttt" = ( +/obj/machinery/vending/games, +/obj/effect/turf_decal/delivery, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/engineering/circuit_workshop) -"yhz" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, +/area/station/commons/storage/art) +"ttB" = ( +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"yhV" = ( -/obj/effect/turf_decal/siding/purple, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"ttR" = ( +/obj/structure/sign/warning/secure_area/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"ttZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"yhW" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/corporate_dock) -"yib" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office/private_investigators_office) -"yic" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/east, -/turf/open/misc/grass, -/area/station/ai/satellite/foyer) -"yin" = ( -/turf/open/water/no_planet_atmos/deep, -/area/station/service/hydroponics/garden) -"yit" = ( -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) -"yiv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/hos) -"yiN" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"tud" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/central) -"yiO" = ( -/obj/structure/chair/sofa/bench/left{ +/obj/machinery/restaurant_portal/bar, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"tue" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/cargo/storage) +"tur" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/edge{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/area/station/hallway/secondary/exit/departure_lounge) -"yiQ" = ( -/turf/closed/wall/rust, -/area/station/maintenance/port/lesser) -"yjb" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"tuF" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"tuO" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/button/door/directional/south{ + id = "custodialwagon"; + name = "Custodial Bay Toggle"; + req_access = list("janitor") }, -/obj/structure/cable, -/obj/effect/landmark/start/depsec/supply, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/mob/living/basic/bot/cleanbot/autopatrol, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"tuP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/meter/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tuT" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"tvB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) -"yjj" = ( -/obj/structure/altar/of_gods, -/obj/effect/turf_decal/siding/dark{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/siding/brown{ + dir = 1 }, -/obj/item/book/bible, -/turf/open/floor/wood/tile, -/area/station/service/chapel) -"yjm" = ( -/obj/item/flashlight/glowstick/orange{ - pixel_x = -5; - pixel_y = -6; - start_on = 1 +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark, +/area/station/cargo/bitrunning/den) +"tvH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 }, -/turf/open/misc/asteroid, -/area/station/asteroid) -"yjw" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/sofa/bench{ +/turf/open/space/basic, +/area/space/nearstation) +"tvO" = ( +/turf/closed/wall/rust, +/area/station/science/auxlab) +"twc" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L13" + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/obj/effect/landmark/start/assistant, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"yjH" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/iron, -/area/station/command/bridge) -"ykc" = ( -/obj/structure/cable, -/obj/item/trash/chips, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"ykf" = ( -/obj/effect/spawner/xmastree, -/turf/open/floor/iron/chapel{ +/area/station/hallway/primary/central/fore) +"twd" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/service/chapel) -"ykh" = ( -/obj/effect/landmark/start/roboticist, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/purple{ +/obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/science/robotics/mechbay) -"yki" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ +/area/station/cargo/miningoffice) +"twg" = ( +/obj/machinery/computer/atmos_alert{ dir = 4 }, -/area/station/maintenance/radshelter/medical) -"ykv" = ( +/obj/effect/turf_decal/bot, /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ykG" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/gravity_generator) -"ykO" = ( -/obj/effect/decal/cleanable/blood/gibs/core, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"ylf" = ( -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"twj" = ( +/obj/effect/turf_decal/bot, +/obj/structure/chair, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"two" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/airlock/security/glass{ + id_tag = "Abandoned Cell"; + name = "Abandoned Cell" }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ylj" = ( -/obj/machinery/holopad, -/turf/open/floor/circuit, -/area/station/science/robotics/lab) -"yll" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"twu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/security) -"ylm" = ( +/area/station/engineering/atmos) +"twG" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"twN" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/supermatter/room) +"twR" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/barricade/wooden/crude, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Fuel Pipe to Incinerator" +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"twV" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"ylw" = ( +/area/station/security/courtroom) +"twX" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/shower) +"txb" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/station/maintenance/solars/starboard/fore) +"txi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/engineering/flashlight, +/obj/item/crowbar/red, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"txl" = ( /obj/machinery/door/firedoor, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"tyk" = ( +/obj/structure/closet/secure_closet/warden, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"tyA" = ( +/obj/structure/table/wood, +/obj/machinery/computer/records/medical/laptop{ + dir = 4; + pixel_y = 3; + pixel_x = 3 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"tyI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/engineering/main) +"tzg" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/research{ + name = "Auxiliary Research" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/effect/landmark/navigate_destination, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/medical/medbay/central) -"ylz" = ( -/obj/effect/turf_decal/tile/dark_blue{ +/area/station/science/auxlab) +"tzh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/secondary/command) -"ylD" = ( -/obj/structure/railing{ - dir = 8 +/area/station/security/prison/safe) +"tzl" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"tzA" = ( +/obj/structure/chair/office{ + dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/area/station/command/meeting_room) -"ylR" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/pai_card, -/obj/item/circuitboard/aicore, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"tzF" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "CO2 to Pure" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/obj/item/stamp/head/rd, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"ylS" = ( -/obj/machinery/button/ignition/incinerator/atmos, -/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"tzH" = ( +/obj/machinery/computer/station_alert, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/north, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"tzI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"tzL" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/prison/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/office) +"tzN" = ( +/obj/structure/table/glass, +/obj/item/storage/box/rxglasses{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/beakers, +/obj/item/gun/syringe{ + pixel_y = 5 + }, +/obj/item/reagent_containers/spray/cleaner, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/item/gun/syringe{ + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"tzU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"tzY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron, +/area/station/security/office) +"tAx" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"tAI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"tAM" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/carrot, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"tAN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, +/obj/machinery/button/door/incinerator_vent_atmos_aux{ + pixel_x = 23; + pixel_y = 7 + }, +/obj/machinery/button/door/incinerator_vent_atmos_main{ + pixel_x = 23; + pixel_y = -6 + }, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"tAP" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tAX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"tBh" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"tBj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/food/flour, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"tBn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"tBJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"tBR" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/button/door/atmos_test_room_mainvent_1{ + pixel_y = -22 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"ylV" = ( +"tBT" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"tCd" = ( +/obj/effect/landmark/event_spawn, +/mob/living/basic/bot/medbot/autopatrol, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"tCh" = ( +/obj/machinery/computer/robotics{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"tCp" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"tCQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Customs Checkpoint" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/customs) +"tCU" = ( /turf/closed/wall, -/area/station/security/checkpoint/supply) -"ylZ" = ( +/area/station/maintenance/port/aft) +"tCY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/nanotrasen{ + pixel_y = 32 + }, /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) +"tDf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"tDk" = ( +/obj/structure/closet/crate/coffin, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/chapel/funeral) +"tDs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/structure/cable, /obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"tDu" = ( +/obj/structure/chair/pew{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"tDC" = ( +/turf/closed/wall/rust, +/area/station/maintenance/solars/port/fore) +"tDG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"tDJ" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "engineaccess"; + name = "Engine Access Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"tDR" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"tDW" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"tEt" = ( +/obj/structure/sign/poster/official/no_erp/directional/south, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"tEE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tEX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" + }, +/obj/machinery/door/airlock/security{ + name = "Prison Wing" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"tFb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_x = 32; + pixel_y = 8 + }, +/obj/structure/sign/directions/command{ + pixel_x = 32 + }, +/obj/structure/sign/directions/security{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"tFn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/prison) +"tFq" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/experi_scanner{ + pixel_x = -4 + }, +/obj/item/experi_scanner{ + pixel_x = 4 + }, +/obj/machinery/requests_console/directional/north{ + department = "Research Lab"; + name = "Research Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, /turf/open/floor/iron/dark, +/area/station/science/research) +"tFK" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"tFS" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/spawner/random/armory/laser_gun, +/turf/open/floor/iron/showroomfloor, /area/station/security/armory) -"yma" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"tGb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "packagereturn"; + name = "crate returns"; + pixel_x = -10; + pixel_y = -4 + }, +/obj/machinery/newscaster/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/storage) +"tGg" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"ymg" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber" +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tGj" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/computer/atmos_control/nitrogen_tank{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"tGx" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Containment Chamber Blast Door" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"tGz" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"tGQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"tGS" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Captain's Office"; + name = "command camera" + }, +/obj/structure/chair/comfy/brown{ + color = "#c45c57"; + dir = 8 + }, +/obj/structure/noticeboard/directional/north, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/carpet/royalblack, +/area/station/command/heads_quarters/captain) +"tGV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"tGZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"tHs" = ( +/obj/structure/sign/warning/fire, +/obj/structure/grille, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/atmos) +"tHu" = ( +/obj/structure/table, +/obj/item/cigarette/cigar{ + pixel_x = 10; + pixel_y = -1 + }, +/obj/item/cigarette/cigar{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_y = 10; + pixel_x = -9 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = -9 + }, +/obj/item/lighter/skull{ + pixel_x = 7; + pixel_y = 12 + }, +/obj/item/cigarette/rollie/cannabis{ + pixel_x = 1; + pixel_y = 17 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"tHO" = ( +/obj/structure/reflector/box/anchored{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"tIe" = ( +/obj/machinery/conveyor{ + id = "mining"; + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"tIk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai/satellite/chamber) -"ymi" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central) - -(1,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(2,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(3,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(4,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(5,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(6,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(7,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(8,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(9,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(10,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(11,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(12,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(13,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(14,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(15,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(16,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -iUF -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(17,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -cLf -iUF -tLg -fWZ -tLg -iUF -cLf -cLf -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(18,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -tLg -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -tLg -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(19,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -wfz -uuN -uuN -uuN -uuN -uuN -uuN -uuN -wfz -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(20,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(21,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(22,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(23,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -dUc -dUc -dUc -itt -dUc -dUc -dUc -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(24,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(25,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(26,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -uuN -cLf -cLf -cLf -dUc -cLf -cLf -cLf -uuN -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(27,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -wfz -uuN -uuN -uuN -uuN -uuN -uuN -uuN -wfz -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(28,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -tLg -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -tLg -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(29,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -cLf -iUF -iUF -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(30,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(31,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -rGO -cLf -qJB -cLf -rGO -dUc -dUc -dUc -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -cLf -cLf -cLf -dUc -dUc -iUF -iUF -iUF -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(32,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -rGO -sKL -pNk -sKL -rGO -cLf -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -dUc -dUc -dUc -dUc -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(33,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -opZ -opZ -pNk -opZ -opZ -cLf -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -kJV -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(34,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -rGO -rGO -sKL -rGO -nMk -rGO -rGO -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -uuN -uuN -uuN -cLf -dUc -cLf -cLf -cLf -iUF -iUF -dUc -dUc -dUc -iUF -iUF -dUc -mPv -cLf -cLf -cLf -mPv -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(35,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -rGO -opZ -opZ -opZ -urS -opZ -opZ -opZ -rGO -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -dUc -iUF -iUF -kYn -kYn -kYn -kYn -iUF -iUF -iUF -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(36,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -rGO -sKL -rGO -nMk -rGO -lIW -rGO -sKL -rGO -dUc -iUF -dUc -iUF -dUc -dUc -iUF -iUF -iUF -iUF -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -iUF -cLf -dUc -cLf -dUc -cLf -dUc -cLf -iUF -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -kLi -cLf -cLf -cLf -kLi -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -kYn -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(37,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -opZ -opZ -opZ -opZ -rGO -opZ -opZ -opZ -opZ -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -dUc -cLf -dUc -cLf -cLf -cLf -xgG -oFu -oFu -xgG -xgG -oFu -oFu -xgG -jsC -cLf -cLf -cLf -jsC -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -shs -shs -kYn -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(38,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -rGO -sKL -rGO -nMk -urS -lIW -rGO -sKL -rGO -dUc -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -dUc -cLf -dUc -cLf -cLf -rnk -xgG -fls -vGv -pCf -xgG -kxs -bOg -uaM -jsC -cLf -xqO -cLf -jsC -cLf -cLf -cLf -cLf -cLf -shs -shs -shs -kYn -shs -dUc -dUc -cLf -cLf -oDH -bfl -oDH -cLf -cLf -cLf -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(39,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -opZ -opZ -opZ -opZ -rGO -opZ -opZ -opZ -opZ -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -rnk -rnk -oFu -rnk -rnk -cLf -rnk -kIM -hmk -rdR -rxv -aCr -atl -gHx -guV -jsC -oFu -nYT -oFu -jsC -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -oDH -weu -oDH -weu -oDH -bfl -dUc -wfz -dUc -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(40,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -dUc -cLf -cLf -pNk -cLf -cLf -dUc -cLf -cLf -iUF -dUc -iUF -cLf -cLf -cLf -cLf -cLf -dUc -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -lEj -lEj -lEj -rnk -rnk -auE -lAy -aYx -rnk -rnk -rnk -pyA -wCV -wCV -iau -xgG -xgG -xgG -rnk -jsC -rYJ -fjg -gzL -jsC -lEj -lEj -lEj -lEj -cLf -dUc -cLf -cLf -cLf -dUc -dUc -wfz -dUc -oDH -weu -oDH -weu -oDH -lTb -oDH -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(41,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -dUc -cLf -cLf -pNk -cLf -cLf -dUc -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -lEj -lEj -lEj -rnk -rnk -tdh -rUu -rUu -paW -ggz -rnk -xlo -fVU -kyP -kyP -kDm -lyQ -qTR -kic -eDb -jsC -oFu -hrk -oFu -jsC -lEj -lEj -lEj -lEj -rnk -loh -loh -loh -loh -dUc -cLf -dUc -cLf -oDH -weu -oDH -weu -oDH -weu -oDH -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(42,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -oyS -oDZ -oyS -cLf -dUc -tyd -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -lEj -lEj -lEj -rnk -rnk -rnk -dNp -dNp -dNp -clY -qLc -clY -mpG -gtK -qET -cIh -uNR -gtK -gtK -bTN -jOz -gtK -gtK -gtK -cIh -pEZ -jsC -rnk -rnk -rnk -rnk -rnk -lOk -euj -sRo -iFz -iFz -iFz -dUc -dUc -lTb -weu -lTb -weu -lTb -weu -lTb -lTb -bfl -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(43,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -poi -poi -poi -cLf -oyS -hPg -oyS -cLf -dUc -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -fYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -mgn -cLf -cLf -cLf -cLf -cLf -cLf -dUc -lEj -lEj -lEj -lEj -rnk -ryV -rnk -dNp -kic -ceZ -jJA -rnk -bAn -rnk -cIh -rnk -tuE -tuE -rnk -cJT -fPp -bJr -nhk -dFk -mZL -gtK -gtK -bgx -bAr -bDK -gtK -bAr -sbL -nek -afz -hVs -mjx -hVs -eip -kqy -kqy -kqy -kqy -kqy -kqy -kqy -kqy -kqy -kqy -pBk -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(44,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -mPv -dUc -nAb -eSS -eSS -eSS -eSS -eSS -onL -poi -poi -oyS -qjc -oyS -oyS -dUc -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -lEj -lEj -lEj -lEj -cLf -dUc -dUc -mfA -dUc -fVZ -mWe -aoL -sdc -aoL -cor -sdc -iUF -hCS -hCS -hCS -hCS -hCS -hCS -hCS -lEj -rnk -bCv -tDg -dNp -vHh -rnk -rnk -rnk -rnk -rnk -xyP -rnk -kTo -nsu -rnk -lux -lux -rnk -rnk -rnk -rnk -rnk -pEZ -rnk -cPR -spS -xiC -dMD -rnk -tAt -eCp -hVs -iFz -iFz -iFz -dUc -dUc -lTb -weu -lTb -weu -lTb -weu -lTb -lTb -bfl -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(45,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -htf -rjf -htf -cEt -hzn -poi -boQ -hPg -hPg -poi -poi -poi -mxq -dUc -cLf -dUc -cLf -cLf -cLf -mxq -poi -poi -poi -poi -cLf -dUc -cLf -fsI -cLf -fVZ -jbV -aOi -sdc -aip -xjE -sdc -cLf -hCS -rdX -kcW -nfS -mDe -fUz -rnk -rnk -rnk -rnk -rnk -kUJ -vnV -bWn -dPO -bWn -uex -rnk -vjD -wXO -oNC -dnO -rnk -rnk -rnk -rnk -mNQ -dBM -caq -rnk -jsC -jsC -jsC -jsC -jsC -hQE -rnk -rnk -rnk -rnk -rnk -dUc -cLf -dUc -cLf -oDH -weu -oDH -weu -oDH -weu -oDH -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(46,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -ups -eBd -cEt -yhn -kop -cEt -poi -lbT -qUA -fsS -poi -jtv -jLv -mxq -mxq -cby -mxq -pRM -pRM -pRM -mxq -pNI -iIo -fAE -poi -poi -poi -sdc -fVZ -fVZ -fVZ -pJj -qFn -sdc -qFn -uMa -sdc -sdc -hCS -apW -lLk -lLk -sWd -asb -rnk -lCY -gzq -nez -huv -dNp -rnk -rnk -rnk -rnk -rnk -rnk -rnk -dnO -rnk -rnk -rnk -clA -xBS -nvp -tZO -lGJ -dGG -kcr -tUo -sye -hgN -ngK -jsC -lmt -lmt -sHh -xyN -nNv -rnk -dUc -dUc -wfz -dUc -oDH -weu -oDH -weu -oDH -lTb -oDH -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(47,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -htf -xpR -htf -cEt -rKY -poi -ddF -tTe -iyw -poi -jKC -aCx -lDZ -qFj -aie -qFj -hWF -hWF -hWF -lDZ -hyX -trs -jZt -cVi -qHf -poi -brN -sfu -sfu -sfu -bgv -lam -gsi -lam -goX -nZt -mOI -hCS -qFM -fyn -qOP -wEM -tEI -rnk -lCY -lCY -rnk -jRU -awi -fpK -ilk -rnk -alW -rvo -xKp -rnk -dnO -rnk -kfD -oSP -uRb -xBS -pKg -pLo -vZL -sPC -mpH -tUo -aYD -xBW -wtw -jsC -sHh -cdQ -dRr -xyN -lXY -rnk -cLf -cLf -cLf -cLf -oDH -weu -oDH -weu -oDH -bfl -dUc -wfz -dUc -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(48,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -mPv -dUc -nAb -eSS -eSS -eSS -eSS -eSS -cEt -poi -poi -poi -fgP -poi -cax -oaD -aCx -mxq -mxq -aGu -mxq -pRM -pRM -pRM -mxq -mxq -cqQ -jZt -rAi -txx -poi -gZs -uyL -keo -uyL -nKi -uyL -qRu -uyL -uyL -uyL -jDC -gTS -fyn -mvp -qOG -pwt -aTd -rnk -rnk -rnk -rnk -rnk -ina -fpK -hoD -rnk -qxE -lAs -lbw -rnk -dnO -rnk -ueI -oSK -rak -xBS -mrK -pNB -dzq -abC -tRp -tUo -aKl -yki -jJo -jsC -sHh -lmt -aTJ -rnk -rnk -rnk -cLf -cLf -cLf -cLf -cLf -oDH -bfl -oDH -cLf -cLf -cLf -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(49,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -poi -ekl -kop -cEt -dqW -vTd -csl -dfW -oaD -dDZ -mMS -nIJ -mxq -rrR -eeu -rQI -hST -rQI -pTU -mxq -sbU -uAX -swH -dGw -poi -qJR -uyL -hQu -uyL -bNS -uyL -umh -uyL -xrU -xfN -gya -mXj -vaY -uEb -ryu -tNx -xyG -rnk -qAS -uiU -rnk -vqq -awi -rnk -rnk -rnk -dKw -uvl -dKw -rnk -fjC -rnk -qvA -fys -qvA -xBS -xBS -tgW -esg -uOm -xBS -tUo -tUo -lzk -tUo -jsC -oPT -gtK -gtK -ybK -gtK -rnk -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(50,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -iUF -iUF -iUF -dUc -iUF -iUF -iUF -dUc -iUF -iUF -iUF -dUc -dUc -dUc -dUc -eSS -cro -cro -cro -poi -oaD -ngd -lKZ -ngd -mMS -mMS -oaD -mxq -pRM -mxq -bTB -dzr -bnv -vkx -mxq -pZH -uAX -kBX -uxy -poi -wsI -uyL -umh -sjJ -umh -uyL -lmL -hQy -icM -uyL -tnI -gTS -rwf -tRf -lLk -lLk -lLk -wWv -koZ -mPX -szK -kbY -awi -rnk -bay -rKH -xsM -tMO -qhu -wBe -iyb -vhW -wkg -iyb -wrU -mvj -ryE -wrU -wrU -dcx -kZO -fGj -tpl -kKc -gRp -rnk -rnk -rnk -rnk -rnk -gtK -rnk -dUc -dUc -dUc -dUc -dUc -kYn -shs -shs -shs -shs -shs -shs -shs -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(51,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -iUF -iUF -iUF -dUc -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -qhP -qhP -qhP -qhP -qhP -qhP -eSS -eSS -dGR -syR -aVY -oaD -oaD -mxq -iPw -tBe -vjZ -jtd -bPP -gUa -mxq -fZg -bVs -ycz -bVs -cAv -uAW -xfN -icM -xfN -rxX -raR -icM -ijg -xrU -fXZ -sFd -hCS -iIw -fdm -fMF -beN -srI -rnk -qeP -iFU -bSX -qPN -xwO -mHG -ecy -cEU -rCz -awj -dkj -pwO -aRE -wat -aRE -waj -sme -flO -qMI -fai -pwO -fFy -xOQ -qOF -xOQ -wwj -srO -fma -eCd -dHU -wDe -rnk -bAr -rnk -rnk -rnk -rnk -rnk -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(52,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -qhP -qhP -jlc -rqy -bWp -vLN -qhP -kkf -qio -sIV -syR -sVn -sIV -oaD -mxq -uiy -qWu -vjZ -cLm -fxr -tqk -mxq -uDB -mVX -uDB -poi -poi -ahV -uyL -hQu -bGe -umh -nCt -umh -uyL -eDu -kkU -wOU -wOU -wOU -wOU -wOU -wOU -wOU -jsC -jsC -jsC -usT -tkr -pfp -rnk -glL -bvD -bvD -mDF -bvD -bvD -uhe -qOF -gVn -xLN -vdJ -uRT -ykv -bzo -ioa -xpY -osd -gdf -rnb -tTl -jOH -rYs -vTp -vTp -iej -rnk -gtK -stE -rnk -sVv -qyv -rnk -rnk -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(53,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -xrb -xrb -sNu -oPe -oPe -baH -baH -baH -baH -baH -baH -baH -baH -baH -cLf -qhP -aIR -mFn -gBw -hvj -xBR -qhP -kkf -mvP -mJL -hHJ -hHJ -qHv -oaD -mxq -mxq -xlB -jJg -cqU -tVQ -blz -mxq -kMW -tRg -qob -uDB -rPA -mBt -xnQ -hQu -oXc -umh -xnQ -hQu -uSA -icM -hoX -wOU -aNQ -dNW -hdK -xiV -gyB -fDt -uWB -bej -jsC -dvO -tkr -rnk -rnk -ryz -oue -fzZ -vGn -vGn -tNP -fMT -kFT -kFT -phV -kFT -kFT -qIS -ojS -tpN -aju -gzw -dKw -amK -ckH -sMO -fma -eOZ -rIH -nTA -rnk -gtK -vlR -wun -uoo -bMx -hiO -oFu -dUc -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(54,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -xrb -xrb -nPw -qwB -iqf -cKn -pjt -lUM -cem -pjt -glk -cem -hPF -cuH -baH -xlD -qhP -aou -xXs -tNN -hnh -hMa -cpB -eSS -eSS -abw -eSS -esl -ggY -oaD -oaD -mxq -fGr -ugu -log -uOx -dXW -mxq -jch -oey -dhN -uDB -uuh -uyL -vSt -umh -uyL -lmL -aex -umh -uyL -xrU -hoX -rXd -dkN -gXo -meL -uUX -aDk -nyW -quD -hOR -jsC -ldT -kJH -kWc -rnk -uaH -udW -qaI -vGn -pzx -jgH -yds -kFT -mmi -hQK -dPg -fvo -jPO -ojS -xOQ -siQ -xaC -dKw -dKw -dKw -dKw -rnk -vqC -hXo -rnk -rnk -gtK -hJo -rnk -sEY -vJf -rnk -rnk -dUc -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(55,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -xrb -nEx -lVv -ckc -pAP -cKn -lbX -tiP -cem -lbX -gBG -cem -cem -whY -baH -dUc -qhP -dJK -geh -mYE -wDJ -oBt -cpB -cDM -lDP -fBK -eSS -oaD -ggY -oaD -oaD -mxq -mxq -sGj -mxq -bFw -mxq -mxq -rqe -lqR -tka -uDB -lAL -lAL -heZ -uyL -uyL -uyL -uyL -uyL -uyL -ijg -hoX -rXd -bDA -kjo -eaD -fOR -hZs -vge -jsC -jsC -jsC -aKS -tkr -jRI -rnk -lnG -klR -etI -vGn -mBj -jHx -iJF -kFT -uJq -sGt -ltj -fvo -pwn -isy -xOQ -mpP -uPg -bui -yit -dpf -yit -rnk -miD -dFY -pEZ -pEZ -gtK -rnk -rnk -oFu -oFu -rnk -cLf -kYn -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(56,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -dUc -cLf -xrb -hAS -syF -ckc -sqk -cKn -oOX -eph -cem -utw -eph -cem -puS -auW -jOV -tGu -qhP -qhP -hzx -riZ -vNE -ivp -cpB -qDU -nqg -iFg -eSS -iCH -orT -xrG -ptq -xxe -aKB -tXM -bdu -bWW -poi -tAL -wBc -lvg -lBC -uDB -sdc -sdc -eHA -skL -uyL -bnP -uyL -uyL -xnQ -ijg -hoX -rXd -pjw -psy -ujE -nfn -adg -kki -jsC -tsU -eje -eje -pTt -kWc -rnk -ryz -ryz -ryz -vGn -vGn -vGn -vGn -kFT -moH -bhZ -pgJ -fvo -lcM -isy -isy -lJo -xJj -bui -yit -yit -gft -rnk -rnk -rnk -rnk -rnk -gtK -lXG -rnk -cLf -cLf -dUc -kYn -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(57,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -xrb -nEx -dEG -rVj -cKn -cKn -mvU -pjl -dVs -weD -auW -xAV -heu -auW -rWO -auW -bDq -qhP -qhP -qhP -cLx -qhP -cpB -wAa -baO -aJr -eSS -sIV -sIV -poi -ezk -poi -qwu -qhS -xPW -bHI -poi -hsW -wBc -mOo -ojG -uMz -sdc -kwd -gtj -gli -gli -nod -ejL -ehP -uyL -ijg -qrF -wOU -wOU -dWI -wOU -wOU -wOU -wOU -jsC -kRw -rnk -vXS -rnk -rnk -rnk -vrN -rkL -mUz -uAt -ehs -wkK -aem -kFT -kFT -aeI -fvo -kFT -dKw -gwE -gwE -eYm -dKw -cBb -cBb -cBb -cBb -cBb -oVX -stq -tYD -rnk -gtK -pEZ -oFu -cLf -tyd -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(58,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -xrb -iNq -oHi -ndr -cKn -obV -fKs -pjl -auW -auW -auW -heu -nGO -auW -auW -auW -toc -rcl -tmT -mmy -uYI -wMn -cpB -uTa -luz -hqN -eSS -eSS -eSS -eSS -jPY -poi -poi -avL -fLU -ihK -poi -ueX -qRp -jFR -phA -hKU -sdc -sdc -sLJ -sLJ -sLJ -sdc -sdc -twR -uyL -uuu -xeW -bWO -lTk -lKp -fZp -klP -mhz -kTC -nnL -ylf -qDe -bfc -tiI -rnk -jyg -pRk -dGt -dGt -dss -aNe -xoo -gDR -ifl -qQm -oHw -amJ -lxP -gXy -tHr -ixA -qLg -hRh -cBb -dkZ -nea -fhs -jbR -nnF -bqR -hTl -rnk -gtK -oaP -oFu -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(59,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -sNu -hAS -rXZ -vjm -hbw -aGm -hfx -qru -bKV -oGw -qpD -bTJ -uGv -jGW -xpn -heu -heu -hxB -sdA -sdA -lOo -qCE -izP -fCR -uTy -rwn -uZc -qbW -dTE -eSS -pgN -cMR -poi -cQg -vwf -ihK -poi -poi -poi -poi -poi -poi -sdc -fLM -soZ -jCX -jCX -fLM -sdc -guF -uyL -tqz -xTI -xTI -xTI -cQa -xTI -xTI -xTI -xTI -xTI -vST -aiN -jfr -ygN -rnk -fZl -yfl -pJk -eIY -vRi -oDR -qCy -tVI -hyp -eIP -epA -wZd -ixA -ixA -kZu -npw -ovl -kdI -nKe -dCG -iuV -iuV -cEy -dHk -jyx -cTX -rnk -gtK -oaP -oFu -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(60,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -oPe -xch -pYM -yei -cBD -eFK -eFK -nDG -iBg -gBE -iHr -lzB -uxJ -ieJ -xoM -eFK -eFK -rKZ -qjY -gZe -gjG -qjY -rXD -pdK -nDE -eNS -bTP -gDm -tiL -eSS -poi -poi -poi -poi -poi -vKY -eBE -vWo -dQv -mgH -ffF -bHI -sdc -kMr -aZt -rzg -xrH -jCX -etV -lcS -uyL -esN -fXZ -gli -gli -gli -fab -gli -gli -hgi -bSz -orI -aiN -bfc -gok -rnk -lpF -kdh -aNR -oDC -meP -dmT -dVl -fSK -ifl -crz -esx -pgW -qdA -hbo -qdA -fKK -mcQ -ebD -cBb -hAA -naZ -sep -qkc -qkc -iuV -sIv -rnk -bAr -oaP -oFu -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(61,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -lEj -ubm -ubm -hME -hME -hME -tSc -wUe -wvs -imQ -rhY -tsk -wUe -uay -xAV -lbJ -heu -heu -hxB -kZv -jfL -vgI -trK -izP -wrx -vzU -ein -uZc -uZc -uZc -uZc -dUc -dUc -dUc -dUc -poi -poi -poi -poi -poi -lxb -hXb -exT -uBI -jCX -hvA -wPk -pJL -jCX -etV -qFA -uyL -dUS -meT -sdc -mHU -cAQ -ylV -fGL -fGL -ylV -fSB -ylV -rnk -wdx -rnk -rnk -nKa -kxa -gwA -mcl -cUn -wvC -bRI -nid -wJy -siZ -aPR -lUk -nnv -mNo -pts -tYs -oaY -hKv -cBb -bGl -fYZ -iKD -nOx -gTI -ltB -ivD -rnk -gtK -oqj -rnk -lEj -lEj -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(62,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -unk -lEj -lEj -ubm -fae -eyv -hME -yhq -wUe -hTW -kyn -rHV -cEr -wUe -oUh -krq -bEd -mit -ljF -rcl -sxl -rpD -bBs -nVa -rcl -nAR -nDE -oBl -uZc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -htf -kpT -jdK -sEe -sdc -soZ -fHk -hVQ -fxG -jCX -etV -kHB -uyL -uUF -eDq -sdc -kUh -jnP -ylV -mkJ -nVp -jyu -yjb -frR -rnk -sjD -xQN -rnk -rnk -vWI -aNR -taT -wJy -wJy -wJy -wJy -wJy -qof -hHj -lUk -mUB -asr -lyr -tYs -oaY -buK -dgp -dgp -hQg -epl -dgp -cBb -rlp -hIq -rnk -gtK -rnk -rnk -rnk -lEj -unk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(63,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -ubm -eYT -ohZ -tmk -pjl -eFK -eFK -ozy -wUe -wUe -gRO -jza -jza -jza -jza -jza -jza -mIW -mIW -mIW -mIW -mIW -ciA -xKV -nny -uZc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -htf -iHv -rZJ -rAK -sdc -fLM -jCX -qzF -jCX -fLM -sdc -dro -uyL -uUF -cFF -vQB -vQB -vQB -ylV -qTG -wZf -ciw -kwS -rXp -rnk -wwY -bvP -bMm -dgy -jha -yec -mcl -wJy -uQM -wNZ -jvt -sia -xDp -xmU -vEL -lip -joH -tUR -eiJ -oLy -gfe -dgp -cqJ -pCK -lyF -rgE -dgp -jka -sZl -rnk -gtK -rnk -gaE -rnk -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(64,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -ubm -dMF -rrF -hME -lvZ -heu -xPH -iEO -sWy -iKA -jON -jza -vpI -bAW -gAv -bzI -jza -vAa -qTA -qTA -dUb -mIW -qEX -hth -vpz -uZc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -poi -mhF -jdK -uOF -uWl -uWl -wkF -wkF -wkF -uWl -uWl -dXS -uyL -uUF -jqC -vQB -tBi -osp -vQB -vQB -vQB -vQB -vQB -vQB -rnk -aME -paa -rnk -rnk -dFm -mUs -mcl -wJy -lyY -oIo -kcd -lFR -kjU -dIW -wxu -bka -kJj -tYs -bdv -lZH -nmG -gnO -jSY -dPt -xdm -pzo -dgp -vdb -cJh -rnk -gtK -rZz -beO -rnk -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(65,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -ubm -hME -hME -hME -kSm -heu -eFK -iEO -oCR -bxs -ipq -jza -mHL -iHG -iJG -dWW -jza -pDU -pkR -vel -ilb -mIW -lzs -hth -klG -uZc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -poi -htf -poi -toz -uWl -aze -weg -rpy -xsR -tFH -eCt -lAm -ijg -uUF -hso -lwy -smM -smM -kmj -mIA -izd -ccT -iDB -xfE -rnk -uyC -paa -gyI -rnk -lrr -rYy -dlQ -wJy -wur -gjw -ajh -dKw -xcC -fPX -erd -qBK -eCz -xGZ -qmY -aqh -pfv -dgp -oBg -eAJ -vkn -pGM -dgp -dAr -asP -rnk -paa -rnk -qvN -rnk -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(66,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -hHw -oRD -pbB -nSC -ezj -awd -eFK -iEO -seW -dgw -gSr -jza -sfh -iHG -nLF -oKM -gGP -pDU -hnw -chU -ilb -pRl -wrx -hth -azb -uZc -cLf -cLf -cLf -cLf -cLf -cLf -uOf -cLf -cLf -cLf -dUc -iua -tdq -cTa -eZQ -qMA -uYg -dUD -skj -xBf -bIe -uWl -niQ -vwU -mwR -dHW -vQB -yae -nZL -vQB -geO -chF -pXs -mFe -xAl -rnk -vhf -oUd -oUd -rnk -uVi -ubl -mAi -wJy -qfB -vfy -sYc -qfB -qfB -dKw -sia -sAr -sia -kQH -sia -dKw -dKw -dgp -hQg -oRp -dgp -dgp -dgp -hQg -lSc -rnk -paa -rnk -rnk -rnk -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(67,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -hHw -mut -eQY -kxm -auW -eFK -eFK -jzR -byk -cwc -njr -jza -sfh -iHG -oBH -sAK -byT -ppz -mhU -tUp -yhz -axk -uES -ssN -qie -uZc -cLf -gHr -jCG -gHr -cLf -ved -gxu -ved -dUc -dUc -poi -poi -poi -poi -sfH -uWl -pkP -rfQ -oli -gpg -qgA -uWl -gTM -umZ -gTM -qVS -vQB -vQB -vQB -vQB -qHd -vQB -cNX -mbn -ahp -rnk -rnk -rnk -oUd -rnk -qfB -qfB -qfB -qfB -ndR -inC -dRu -gNT -qfB -bxi -anb -ftz -anb -ssJ -dtp -nwp -dgp -bGX -wSf -ksU -bHj -dgp -dnP -gVW -kgh -rnk -rms -loR -rnk -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(68,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -hHw -xjQ -oMk -nSC -nSC -sZT -nSC -nSC -wyi -jza -jza -jza -sGz -qXK -lzr -ghs -jza -lRc -tEp -scT -eLg -mIW -qgK -uVk -qie -uZc -cLf -gHr -igB -gHr -cLf -ved -kfr -ved -aSZ -jbc -poi -cqQ -siR -vVW -koA -uWl -rSS -lBu -bGc -uAe -dGB -uWl -dOw -tvc -eSR -cho -ekY -cOG -tsj -vQB -rdm -fXn -fXn -fXn -fXn -cQm -huK -wvt -oUd -rnk -mrr -xjo -grO -hCR -kCn -vJF -oJE -mhO -qfB -peU -xjh -nsI -wbM -hXk -xHY -rAa -dgp -qGB -eYv -ksU -tsq -dgp -iJd -wSf -bQT -rnk -paa -rnk -rnk -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(69,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -hHw -xjQ -qEm -mFT -ayC -aeD -jez -nSC -jza -jza -eWC -jza -jkv -iHG -dba -qLk -jza -fBF -fBF -fBF -fBF -fBF -oeN -uVk -wIX -uZc -gHr -gHr -tVH -gHr -gHr -gHr -gBZ -ved -hav -cSJ -poi -cqQ -sYH -poi -xoT -uWl -rCW -rfQ -icq -pNE -wUw -fpp -ahv -aHh -aCs -mwS -utP -aHh -vTN -sha -ksl -uDA -omv -nKk -aUl -xYb -gGa -rnk -oUd -rnk -owr -lDl -xbB -qfB -rdE -wTW -sFg -gYh -pCd -wvM -xHY -wyb -nIG -nBV -xHY -wZI -hQg -sed -eYv -nkf -xzG -hQg -eVv -sXJ -imG -rnk -paa -pEZ -wiK -mXM -dUc -gGf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(70,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -hHw -okV -mks -jlW -jlW -ibv -jlW -rkm -jza -ozU -siS -bDs -meQ -fAR -keQ -ftK -jza -rOe -pWB -jiy -mJx -mGG -gkt -uVk -vaf -cUP -nLz -nBa -fee -fee -ubV -gHr -oQy -xYu -tHR -ujo -poi -cqQ -cqQ -poi -ljp -uWl -hRo -caz -dSV -nuC -dMa -wNH -jOf -cye -ijd -bUx -utP -kEt -hmw -pDu -ksl -nJs -fXn -mDr -fXn -kJN -unL -rnk -oUd -rnk -oDJ -cgj -iSH -qfB -lES -xvU -icw -faz -crq -wvM -rYg -cFH -kSH -unR -bqA -rsZ -wpU -wSf -kRl -gWe -wSf -xuK -uNd -mTs -hLw -gTY -gvk -pEZ -qaV -mXM -cLf -cLf -cLf -oaR -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(71,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hHw -hHw -rFt -rFt -fQf -rFt -jED -rkm -jza -pSN -fod -jza -bSI -sCO -keQ -bZf -jza -fLv -kaK -vAu -eSE -mGG -gkt -uVk -qEh -roG -qxW -jdn -hak -gPk -eFy -gHr -ydk -snF -wDu -nHV -poi -poi -poi -poi -xoT -uWl -sUn -kRM -wBw -rKW -hGC -uWl -iDs -fad -poV -mcS -tJC -cJC -uFc -sha -wgm -thZ -nTo -xCA -jjS -uNc -ozF -rnk -oUd -rnk -vLx -lZb -mAa -qfB -mnm -bII -icw -mnc -bOT -wvM -xHY -wyb -nIG -nBV -oOr -wZI -hQg -gdA -eYv -szq -wSf -hQg -fRw -llD -vxx -rnk -rms -pEZ -wiK -mXM -gGf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(72,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hHw -hHw -hHw -hHw -hHw -hHw -jza -jza -jza -jza -jza -thH -fba -aJa -ndb -jza -vEX -hEI -gHS -drl -mGG -gkt -kcA -feN -mam -nLz -rJW -vXi -okC -cIV -gHr -ydk -xNq -tqN -bPZ -aSZ -rWf -lsJ -poi -koA -uWl -uWl -uWl -uWl -uWl -uWl -uWl -lVj -fad -aHh -uBf -lYe -knt -mZY -vQB -rWs -cQm -fXn -fXn -cQm -mju -wjj -rnk -oFn -rnk -qfB -qfB -qfB -qfB -tms -nTm -cGr -tjd -qfB -fPs -gpF -avU -ulQ -vFH -crg -lwI -dgp -fid -liQ -wsa -gUY -dgp -aIc -apH -reG -rnk -paa -rnk -rnk -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(73,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -cLf -cLf -cLf -jza -gcb -qcS -bYl -jza -jza -jAg -mbM -jza -jza -mGG -fsx -dPv -mGG -mGG -xQW -yll -qie -rRK -gHr -gHr -gHr -gHr -umv -gHr -ydk -ghW -tHR -iPp -aSZ -jwb -tzs -fXC -xoT -ycG -kib -xoT -fnG -vPG -kib -poi -xwu -fad -aHh -aHh -lYe -cis -thW -vQB -hCc -dtx -dtx -dtx -dtx -gjy -wBV -vQB -fgi -kKw -jcR -jTE -xlw -qfB -vyO -hjW -dGs -rdP -qfB -oiC -goI -tuY -xza -fcM -goI -wLi -dgp -uMp -fGT -wsa -wQj -dgp -dVx -xJQ -lKh -rnk -paa -rnk -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(74,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -fYe -unk -unk -fYe -cLf -cLf -jza -eTn -eYj -bue -wCr -jGF -dsa -hAd -bXJ -vvG -xtH -baW -tzk -sfm -ecC -mxv -hSW -qie -rRK -xLR -lfp -tRX -rjL -pWC -qaz -ydk -xNq -mtB -gqd -aSZ -qeo -nVT -poi -poi -poi -poi -poi -poi -poi -pOP -poi -cPT -uBy -lDt -lDt -xgj -tvy -cPT -vQB -vQB -vQw -vQw -vQw -vQw -vQw -vQB -vQB -fgi -rPR -isr -isr -oOR -qfB -qfB -ujT -ujT -qfB -oez -nIG -tmn -bxC -tmn -xhV -tmn -nIG -dgp -dgp -hQg -hQg -dgp -dgp -dgp -rnk -rnk -rnk -rFd -rnk -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(75,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -pnS -pnS -pnS -fYe -cLf -cLf -jza -lYR -qZZ -jza -jza -aTi -vPP -jBj -aas -xNl -xNl -jPm -dIn -uDG -isx -hbh -sFq -eMr -kOx -jmh -pSf -hPW -hPW -mPN -ull -ydk -hGB -oUm -aSZ -nVT -azB -qkv -ouH -wRD -suB -xGC -faP -rWh -xRH -tuA -wEF -nxG -nxG -nxG -nxG -tuA -nxG -nxG -aHp -dzN -nxG -nxG -ciY -ciY -nxG -nxG -mhi -tuA -nxG -nxG -nxG -nxG -mLr -bGD -nxG -nxG -nxG -ciY -nxG -nxG -tuA -nxG -vwZ -jmu -kJT -fhL -kJT -cLf -dUc -cLf -dUc -cxg -rnk -wdV -nHm -wdV -rnk -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(76,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -pnS -pnS -pnS -unk -dUc -dUc -jza -mbM -mbM -jza -kxD -jAn -llT -tWV -igQ -gIO -dCi -hcQ -gsN -uzh -kSP -eDG -kpy -vpz -rRK -ehn -wIT -rGM -mrw -dfY -ubd -ydk -naF -xNq -aSZ -sXL -jMe -awq -fzh -hmv -mvJ -gIS -mWb -dzF -sqb -olr -fIr -dxT -dxT -dxT -wZj -vFl -tlC -dxT -dxT -dxT -dxT -vFl -dxT -dxT -vFl -wgw -dxT -dxT -eyq -dxT -wZj -dxT -wWs -dxT -dxT -dxT -dxT -dxT -dxT -dxT -dxT -voy -eFj -paf -kJT -kyi -kJT -cLf -dUc -cLf -dUc -cLf -rnk -xuD -rnk -oFu -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(77,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -pnS -pnS -pnS -pnS -cLf -cLf -dUc -uuN -uuN -plA -aCp -hpV -una -wDW -lHC -lar -bPY -jMU -wPE -wLr -jUS -rlZ -iRs -azb -rRK -rRK -ava -vZP -qvK -rRK -rRK -ydk -ehO -pyq -aSZ -vXp -kuS -nVT -uQO -aUM -mvR -vFY -wqc -kmu -dxT -tCE -xMk -aQS -deY -aQS -vTx -gPn -aQS -tht -aQS -aQS -aQS -wQW -aQS -deY -iqW -aly -aly -tnv -tjz -prW -axI -gag -dhg -prW -anT -sOA -prW -prW -prW -prW -prW -prW -tOm -hDK -kJT -iTL -kJT -dUc -wfz -uuN -wfz -dUc -jsC -xWi -jsC -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(78,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -fYe -pnS -unk -cLf -cLf -cLf -dUc -uuN -uuN -plA -tdW -rIG -llT -tGJ -dtc -nqI -msS -poU -cpO -qBj -kSP -iyG -uVk -klG -rRK -fjp -vjy -wRG -uHA -sLy -rRK -ydk -naF -jjN -aSZ -aSZ -aSZ -aSZ -rjs -fNp -aSZ -eGz -qRr -kmu -dxT -tCE -bAw -rVD -bAw -bAw -uLj -mla -xWN -bAw -kQj -hov -jhe -nfe -jhe -hov -bAe -eaT -uit -kAg -kAg -nMT -kAg -kAg -kAg -nMT -kAg -kAg -uZx -lsC -bvm -lsC -hpB -dbN -tOm -tCE -kJT -vkM -kJT -kJT -uuN -uHL -uuN -cLf -gJE -paa -aPO -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(79,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -dUc -rTM -rTM -rTM -plA -plA -dRM -fmw -ccc -uGS -sgW -sgW -sgW -cpO -mAd -skr -wrx -gpV -kaJ -obc -oSB -gtX -gtX -gtX -gIb -aNH -lTq -naF -hGB -wcb -xuR -rTV -wTu -oMf -oMf -vVl -hIv -dRy -kmu -dxT -axi -bAw -cGP -ygb -iPz -lQN -qsI -haf -bAw -bAw -hov -pQs -jIA -bNz -jhe -xRH -aly -raT -kAg -wRM -tIH -nXt -iuv -rqc -yin -yin -kAg -afW -wUc -fWp -jtR -lsC -prW -tOm -tCE -sjo -bTY -rzP -kJT -wfz -uuN -wfz -uuN -gJE -rms -aPO -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(80,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -rTM -qiJ -blE -rcG -plA -vLQ -rOF -xst -pCz -gPZ -pDG -nGd -xst -wYO -ecC -wrx -gpV -qie -rRK -aOK -xin -mld -juD -lzj -rRK -kBf -xsJ -pzU -mDb -mDb -mDb -mDb -mDb -mDb -bmy -oGO -lTN -knX -oBe -vAY -bAw -kdP -fGR -bSC -pSk -hUI -noF -lop -bAw -xEW -hDV -upy -xPL -ouo -xRH -aly -hvT -kAg -ckn -mUh -rLQ -mWf -iak -cPz -eVl -kAg -uZx -sRH -avu -fno -lsC -prW -tOm -tCE -xEl -jNJ -pUY -kJT -hgV -wJC -dUc -uuN -gJE -paa -aPO -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(81,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -rTM -uiu -gme -rTM -plA -ecC -uYl -ecC -oZz -oZz -oZz -oZz -oZz -oZz -oZz -iYS -dpo -nmX -vgh -fSS -qqH -hHF -bYP -dcS -odp -flZ -aGa -usq -bdG -gSD -gSD -gSD -gSD -gSD -nrp -gls -aQS -aly -tHF -gwq -bAw -cJx -abK -cOR -ufV -jVI -noF -dtI -bAw -ign -iIB -gzt -xPL -jhe -xRH -qDb -urP -kAg -lyL -pNa -tdH -oQk -dlg -fRv -nvD -kAg -fux -czO -aod -cVh -lsC -prW -tOm -ulY -iWO -eGJ -hYg -rnk -rnk -rnk -dUc -wfz -gJE -paa -aPO -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(82,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -rTM -oUr -tFa -haH -jpc -dpz -pXr -kCc -oZz -ryP -fiB -pHy -jWb -wmg -oZz -oZz -bNA -oZz -ygw -ygw -ygw -dRi -ygw -ygw -ygw -txK -sjl -kqE -rjX -rjX -hbM -hbM -hbM -rjX -rjX -iXj -aKJ -kmu -tHF -hqz -bAw -ttT -mYs -bAw -aYQ -wEW -noF -yaK -bAw -kxZ -fMZ -hBi -qVe -hov -wjW -aly -hvT -kAg -fQX -kbe -nEk -aaV -uOZ -bSY -jlU -kAg -vNH -czO -aod -bxx -lsC -prW -tOm -tCE -sjo -hNG -ndI -rnk -afV -rnk -dUc -uuN -gJE -paa -aPO -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(83,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -rTM -ksE -kkA -kYk -dzb -hRv -wbE -tNy -oZz -pHy -lsr -oZz -pHy -rxE -oZz -aCB -eRA -vmf -ygw -jcL -hqw -kFR -qYL -wDy -nFT -jQf -duy -kqE -rjX -ovr -bZa -riT -gUq -oGB -qyz -ahI -rjX -lyJ -tHF -tCE -bAw -pBV -miI -ttT -jOr -pui -koG -bAw -bAw -hov -hov -hov -hov -hov -bKK -aly -hvT -kAg -fRX -dTR -cQT -tOV -cQT -cyp -dPF -kAg -kAg -rPk -aod -bxx -lsC -prW -tOm -jLr -rnk -srq -rnk -rnk -kic -rnk -rnk -lfd -jsC -xWi -jsC -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(84,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -iUF -cLf -hDo -hDo -hDo -hDo -hDo -lYa -hRv -wDo -smZ -msz -oXd -cyS -ifP -cyS -sWp -kgT -lgG -sUz -xWK -ygw -diI -gBh -pGs -rkw -eNr -ese -gHk -duy -sjl -wGg -pLW -bzH -bZa -giy -giy -ego -bZa -nuM -kmu -tHF -tCE -bAw -mkR -aVp -ttT -pui -tnu -pui -bAw -leT -omy -lLF -vvP -qkC -uZx -eKD -aly -hvT -sVM -gJC -vja -iVL -sTC -loY -hkd -tXt -pKA -uIa -hvL -mwo -kik -lsC -prW -tOm -vgz -rnk -paa -paa -paa -wdV -wdV -ltU -jtc -jaa -wdV -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(85,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -hDo -sIM -wVz -hDo -xzZ -nql -hRv -rjx -tIE -oZz -pHy -iDx -oZz -pHy -vFD -oZz -rTA -adW -gZv -ygw -aRM -hVL -aSG -mxh -jHH -ygw -vuj -vzu -xun -iXj -sid -mOb -wEc -xOg -bLa -qER -aUo -iXj -kmu -qbA -mMC -bAw -egN -joL -ttT -koG -pui -knw -bAw -bqE -omy -cHV -tkH -uzV -dIZ -lNu -eHc -hvT -nMT -rjk -aKP -sNh -kAg -heC -fvg -rDs -aEd -nMT -kYB -sGk -crr -lsC -prW -kXV -tCE -rnk -ykc -pEZ -rnk -rnk -rnk -rnk -rnk -rnk -rnk -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(86,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -hDo -laF -mnX -rkt -bqr -pWh -pyF -waJ -lEM -oZz -oFy -noy -pHy -ihe -rTi -oZz -oZz -oZz -oZz -ygw -fZe -rJK -ygw -ygw -ygw -ygw -eJM -gqB -eJM -jAG -exz -qER -aUo -pLW -bLa -qER -rQC -rjX -aFJ -tHF -tIT -bAw -bAw -bAw -bAw -bAw -bAw -bAw -bAw -hCv -tgZ -vOg -qJt -uzV -dIZ -mvk -aly -cJO -eFl -bmV -cSy -rnY -scU -sFz -qaF -rgN -kUR -sjL -ngp -fHJ -jtR -lsC -prW -tOm -tIT -rnk -paa -lqf -rnk -lEj -lEj -lEj -cLf -cLf -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(87,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -hDo -fmB -rAu -hDo -qmc -wBC -net -vlJ -net -wBC -pHy -oZz -oZz -oZz -pHy -oZz -lEj -lEj -ygw -lTJ -qZh -nwc -ygw -bYa -qgE -rkA -hiW -okd -dGO -jAG -oed -oed -ebE -fpH -bxH -oed -oed -rjX -fCy -tHF -tCE -pXp -ctP -olC -vNT -acc -tQF -hyS -acc -acc -acc -hvD -uYT -sxL -uZx -qil -cyF -vTx -kAg -xSN -oPO -kqQ -kqQ -dVi -bvj -dPF -kAg -kAg -mGq -btU -mGq -uZx -dhg -iLw -gsb -rnk -paa -pDQ -rnk -lEj -lEj -rnk -rnk -rnk -rnk -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(88,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -hDo -hDo -hDo -hDo -wBC -wBC -dsy -fJT -dsy -wBC -fYe -fYe -fYe -fYe -fYe -lEj -lEj -lEj -ygw -pgC -sxC -uZQ -ygw -wXe -pFP -mTV -rWZ -bZH -sRV -jAG -jIY -wpc -mAX -aHl -iNT -maY -pgd -rjX -kmu -tHF -tCE -pXp -kbW -xwf -hdO -acc -qSq -lPV -uFW -wnM -rCN -pXA -kAW -pUE -acc -acc -acc -slx -kAg -wDX -kbe -agu -cOC -isH -nSf -aZw -kAg -ujv -kmu -hGE -kmu -afe -kmu -tOm -hDK -rnk -rms -rnk -rnk -cLf -rnk -rnk -ijn -koZ -rnk -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(89,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -lEj -wBC -pOg -cYP -jle -wBC -fYe -cLf -cLf -cLf -fYe -fYe -fYe -lEj -ygw -ygw -ygw -ygw -ygw -bjv -jNr -mor -dIT -ked -ked -iCa -drZ -dBS -vhT -fYj -mff -jpW -bGF -rjX -mHu -tHF -vAY -acc -uUZ -sZV -xQk -acc -rbF -kWK -hBZ -tWs -acc -oRa -hWx -lYo -acc -vjq -pKb -kuP -kAg -bVl -bIN -bVl -emf -bVl -ath -bVl -kAg -vNH -kmu -opH -fBz -fBz -fBz -pUW -paf -rnk -paa -kic -gim -pth -gim -kic -kic -wTX -wxF -qvG -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(90,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -wBC -rKi -kIK -wdu -wBC -fYe -cLf -cLf -cLf -cLf -uuN -fYe -fYe -lEj -lEj -lEj -lEj -iol -iol -iol -iol -uUk -pSm -bmz -jAG -kOC -qbN -xaN -jUD -nCH -qbN -qbN -iXj -kmu -tHF -tCE -tpC -vyZ -dcv -pLN -acc -tQF -ewJ -uFW -wan -acc -acc -acc -acc -acc -rmy -wMb -kuP -kAg -ckn -usH -sMX -lGR -tIH -cxD -sWn -kAg -veW -kmu -dcI -tCE -tCE -tCE -tCE -jLr -rnk -gvk -kic -gim -vSd -gim -lqf -kjx -kic -nTq -vFs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(91,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -unk -lEj -wBC -dQr -dNn -hwi -wBC -fYe -cLf -cLf -cLf -cLf -uuN -uuN -fYe -fYe -fYe -lEj -lEj -fri -sZy -otH -iol -jAG -jAG -jAG -jAG -hHA -oPC -dcf -sns -dpc -qRZ -oPC -rjX -sWC -jlp -hqz -acc -rGX -mbZ -acc -acc -acc -wMb -eFP -jrX -kuP -kuP -kuP -tyQ -qoJ -kuP -qWW -cVN -kAg -tIH -dPq -tIH -iuv -tIH -tIH -tIH -kAg -uxH -kmu -tOm -paf -uZx -eMG -hOn -jZx -rnk -paa -rnk -rnk -cLf -rnk -rnk -aDd -bSX -rnk -rnk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(92,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -wBC -gZk -kTb -cxr -wBC -fYe -fYe -cLf -cLf -cLf -uuN -uuN -cLf -cLf -fYe -fYe -lEj -fri -taD -nIb -hNh -byB -fkh -nIb -rjX -bZj -wmX -vsQ -nEw -vHi -kTP -siH -rjX -kmu -tHF -tCE -acc -dJa -jrn -acc -nZY -ihH -nUL -eFP -lIr -lIr -lIr -lIr -lIr -hRB -hRB -hRB -hRB -hRB -hRB -hRB -tDf -tDf -tDf -tDf -tDf -uZx -rqj -eaT -cvZ -gCL -rnk -rnk -rnk -rnk -rnk -rms -tcN -rnk -dUc -dUc -rnk -rnk -rnk -rnk -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(93,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -wBC -axD -axD -axD -axD -axD -fYe -dUc -dUc -dUc -uuN -uuN -dUc -dUc -dUc -fYe -fYe -fri -muL -hNh -hNh -sLW -uZx -waS -rjX -rjX -pGS -kFB -lXb -kFB -jwr -rjX -rjX -uKh -fDb -gsb -acc -acc -qpb -acc -jOD -uFW -uFW -nki -lIr -bQY -lHi -dyX -uWr -hRB -hmg -ghQ -sJt -xYz -gqX -qzu -tDf -cuq -vhH -qup -tDf -srh -ckZ -aly -tOm -aRW -tzT -wdV -ltU -wdV -paa -paa -lqf -rnk -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(94,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -fZF -mGX -clb -jmP -mSf -axD -fYe -cLf -cLf -cLf -uuN -uuN -cLf -cLf -cLf -cLf -fYe -fri -oAo -pcQ -fri -nIb -uZx -olM -fsn -rjX -rjX -rjX -rjX -rjX -rjX -rjX -rfi -kmu -tHF -tCE -gcZ -acc -pOA -mCo -ewJ -uFW -jXL -kYi -lIr -gvs -wlf -fvd -cik -hRB -vdO -kjg -kjg -oSd -seV -bca -sLn -ukK -qMd -sqz -tDf -snl -aly -htb -tOm -wOi -hzF -hzF -toC -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -dUc -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(95,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -fZF -axD -axD -sas -axD -axD -fYe -cLf -cLf -cLf -uuN -uuN -cLf -cLf -cLf -cLf -fYe -aHx -vIO -olN -vIO -vIO -uZx -mHu -eEa -kmu -kmu -xJe -fPr -wSi -kmu -rqj -kmu -kmu -tHF -tCE -tGM -acc -acc -acc -acc -jrX -siG -jrX -lIr -oEo -otA -wsX -bcX -vMC -brS -lfu -jDs -ljU -isq -mxF -tDf -msf -wIr -eKq -tDf -dOv -aly -aly -tOm -tCE -hzF -xEL -kmL -oKy -rbH -dMU -kGF -hWq -yiO -tiT -pCJ -hzF -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(96,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -axD -axD -axD -axD -qmJ -jxq -kDY -axD -axD -dUc -uuN -dUc -uuN -uuN -dUc -uuN -dUc -dUc -fYe -fri -nAe -uFN -fBD -tUk -uZx -rGv -ebB -fBz -bhk -fBz -fBz -fBz -fBz -sKM -fBz -abn -eRh -tCE -hQD -acc -vFy -bIi -acc -jrX -gGm -mMT -mMT -mMT -mMT -mMT -eBb -hRB -cXe -iwQ -tlb -tlb -tlb -lwB -tDf -tDf -xCh -tDf -tDf -aic -aly -aly -iEj -wkf -hzF -xEL -deW -pdg -iGC -iGC -dzU -iGC -iGC -gxE -iGC -hzF -hzF -hzF -hzF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(97,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -tyd -cLf -bVA -aGz -ien -csW -rjO -toJ -dGh -jqu -hrM -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -fYe -fYe -fri -aHx -fri -fri -wZc -uZx -sWC -tOm -tCE -tCE -tCE -eEm -yiN -aiZ -gCL -rYh -tCE -cVX -dTU -pMD -acc -kYl -sUD -dGc -fDN -mMT -mMT -twW -pTn -pMV -mMT -hwk -hRB -jkF -jwI -oqb -oqb -uww -kYW -rjn -fvk -ezL -eAx -rjn -rjn -onW -aly -tOm -hDK -hzF -vCy -czW -hUS -hUS -hUS -hUS -hUS -hUS -hUS -qtP -vfG -vew -buI -pSK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(98,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -hrM -tMK -hrM -uMA -pGf -qtg -nbm -iDJ -hrM -cLf -dUc -cLf -cLf -cLf -cLf -fYe -fYe -fYe -fYe -uLm -tEy -cef -ucm -tUk -uZx -qJX -tOm -tCE -wsM -krP -krP -sfl -krP -nwr -vAp -vAp -vAp -vAp -vAp -acc -heh -jUd -acc -fDN -mMT -uZg -byb -fBA -nlz -rbt -cXL -enu -tGt -fTD -wAB -tUG -tUG -qyK -khZ -qrl -eQi -eEC -rjn -fux -aUy -kmu -pns -jLr -hzF -wNK -czW -iGC -iGC -iGC -iGC -qtP -iGC -nHj -iGC -aaB -nHK -nHK -nHK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(99,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -axD -hnE -axD -sqo -gHX -hAg -csW -fzx -hrM -cLf -sgz -sNj -sNj -sNj -sNj -sgz -fYe -sgz -sgz -sgz -sgz -sgz -fBD -jTR -uZx -jQo -cfv -tCE -pgv -krP -rjg -lTv -tlE -nwr -mnj -xdj -pWa -kZw -vRJ -acc -acc -acc -acc -fDN -mMT -oBU -aAg -cYH -aJv -mMT -drJ -shG -vMb -quh -pDP -umo -aMR -ygj -ygj -ncX -eQi -tLI -rjn -vNH -tTJ -kmu -tOm -tCE -hzF -xlJ -czW -iGC -dje -kno -pFC -mJv -iGC -nHj -qtP -lXu -vew -aso -hSg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(100,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -cLf -cLf -cLf -cLf -cLf -uuN -uuN -axD -hWd -fQk -ruc -jcW -pvp -axD -eKR -sgz -tUF -sPv -eoo -iLG -sgz -sgz -sgz -sSX -agw -bUj -sgz -cIa -lDn -uZx -uxH -pyo -paS -mRi -cZb -meF -oSa -iCV -nwr -kZw -cWb -vxA -joQ -vAp -acc -acB -jmn -atX -mUW -mMT -fNy -edv -rNs -dCh -mMT -alP -enu -nii -aGA -rss -aGA -rss -aGA -aGA -aGA -eQi -qjW -rjn -rjn -kmu -rFV -tOm -sut -vsJ -hzF -hjo -gEr -hzF -hzF -hzF -lUl -wdm -dkm -wdm -aaB -nHK -nHK -nHK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(101,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -bqX -bhD -axD -axD -axD -aEP -axD -axD -axD -vQf -sgz -vlD -puT -tsP -wNa -jSs -jzC -mcw -aKg -pmC -qka -ycO -mrV -egH -uZx -aFJ -tOm -tCE -sRU -krP -kiB -sYi -uiH -nwr -jAe -fHU -myk -rTw -hep -bcu -gGS -bcu -bcu -pPy -mMT -mMT -sUI -mMT -mMT -mMT -duS -pQM -pYu -ruP -lOE -mRA -dlZ -qrl -pQN -pQN -eQi -qrl -maR -oGX -kmu -aly -tOm -tCE -wjM -cWX -czW -iGC -keP -hKB -hzF -oDI -uir -uir -uir -aaB -nHK -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(102,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -bqX -bhY -rcz -eYO -mrq -eBK -bQc -ptX -jXC -fCY -loC -ejb -fZr -bUM -vGz -sgz -sRP -qgn -wsS -eXM -loF -sgz -dFM -lUp -uZx -rqj -cvZ -gCL -wsM -wsM -nwr -nwr -nwr -nwr -aFz -wHa -wHa -aFz -vAp -vAp -vAp -vAp -nNP -fDN -enu -rgU -cTb -xmM -efx -iRL -bYc -kgA -kLO -ruP -jEr -qrl -ffk -qrl -wKo -fIX -eQi -dbw -wIV -ajK -vNZ -dco -lzF -aRW -tLv -bYF -fus -iGC -igK -hKB -hzF -lTp -vHY -pUH -amZ -aaB -nHK -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(103,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -ogH -aeJ -xcs -iMS -iMS -tYQ -fID -nlQ -nlQ -lQD -sgz -svF -cdX -pLO -sFB -sgz -xaH -mnI -jqT -sKF -vNc -sgz -mKD -xeo -mKD -fCy -mnt -nTT -eeL -fEL -vAp -aQL -aQL -aQL -aQL -eRy -aQL -aQL -aQL -aQL -aQL -vAp -acc -nat -enu -xrT -cTb -wfy -hYh -mCF -bYc -gbQ -fIY -ruP -qrl -vrR -rej -qrl -tQt -efc -xrV -cBj -cBj -jpZ -pRH -rec -fBz -reh -mCZ -opN -oAY -iGC -qXN -hKB -hzF -vqH -ewX -ewX -ewX -aaB -nHK -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(104,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -eKR -pVC -yhk -lPz -jTd -jTd -rKb -dla -kCD -gkQ -lhD -sgz -sgz -sgz -vVr -sgz -sgz -sgz -raX -bbf -cTc -sgz -sgz -kJp -fSR -mKD -aFJ -bCJ -jVO -nFl -xRU -mvW -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -ike -fDN -enu -cLd -cdk -fTl -hTZ -bJo -cdk -rPg -fIY -ruP -pQN -qrl -aqR -qrl -ffk -ffk -eQi -qrl -bzN -oGX -kmu -aly -dxT -nBA -qAo -hzF -eGn -sIX -hzF -hzF -hzF -aXz -vsx -vsx -vsx -aaB -nHK -nHK -nHK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(105,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -szO -vhZ -wbf -kXN -klL -raA -eKR -mlG -gkQ -bRN -sXf -eKR -lkQ -dhl -fbC -qms -auM -khS -eYt -fas -eJy -pae -uDE -ahw -nvK -kmu -eGN -izy -oTJ -mLO -mvW -aQL -aQL -qKi -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -laM -fDN -enu -sGu -xXi -bhU -mlo -wEg -cdk -gbQ -fIY -ruP -mSm -qrl -gTh -qrl -qrl -qrl -eQi -dxx -rjn -rjn -sAJ -aly -dxT -smi -hzF -efY -dhO -iGC -sJI -vSy -ufv -kEp -iGC -nHj -qtP -lXu -vew -aso -hSg -uXp -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(106,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -oUk -cLf -cLf -bqX -lTD -yhk -fUR -rUi -typ -ckb -jlw -iRB -uyx -bGW -tbH -alc -jZj -dhl -jZj -dbJ -mMH -juE -gJP -xqL -hwM -hwM -iow -cEf -oMr -irS -tjD -joa -eSe -qUl -mvW -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -qSq -lLW -tbV -qxr -qxr -qxr -hOD -yma -cdk -tXn -fIY -ruP -ffk -ohh -ffk -qrl -fXU -qrl -eQi -vxl -rjn -fux -aUy -kmu -dxT -oBE -hzF -buH -dhO -iGC -iGC -iGC -iGC -dzU -iGC -nHj -iGC -aaB -nHK -nHK -nHK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(107,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -tyd -cLf -cLf -bqX -hBX -qlc -wbf -lYZ -typ -lCK -aHs -iRB -uyx -gbM -mzI -cgo -wHs -odL -wHs -xnc -rEp -qgd -xaI -bzE -hln -teT -fpm -cas -nvK -kmu -tWi -imy -csq -lDa -mvW -qZB -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -gvO -vAp -htw -bcu -enu -dTJ -xpJ -iDD -wEK -iDD -iDD -tCJ -aOY -xQv -qrl -qrl -qrl -qrl -qrl -iGK -eQi -bXx -rjn -vNH -tTJ -kmu -dxT -ekL -hzF -qDg -dhO -cSb -cSb -cSb -cSb -cSb -cSb -cSb -qtP -rKq -vew -uIW -hSg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(108,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -qCT -vhZ -wbf -efb -rCd -kNX -eKR -tKX -uyx -nPm -yjH -eKR -lkQ -qrh -kPv -lQl -vFf -ylz -iFv -iFv -bjl -iFv -oPl -xOC -xAN -vVp -tDQ -rdY -csq -sTb -mvW -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -orE -bcu -enu -yfz -phO -ppw -uSG -pXC -kkF -enu -fnc -xRG -xRG -xRG -xRG -xRG -xRG -xRG -jvO -rjn -rjn -rjn -jcG -kmu -sqb -ivU -hzF -cWz -xOp -tAr -iGC -iGC -iGC -iGC -iGC -oXW -iGC -hzF -hzF -hzF -hzF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(109,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -eKR -cNQ -kjs -ftR -mrq -mrq -hSi -bQc -kZA -gkQ -dBn -eKR -eKR -juw -mtG -juw -juw -juw -sPY -nED -nED -url -tEH -lmU -ydQ -nvK -kmu -dOD -eUD -scs -eTu -mvW -aQL -aQL -aQL -aQL -aQL -aQL -aQL -qKi -aQL -aQL -vAp -lXO -lbl -enu -enu -enu -enu -enu -enu -enu -enu -qiu -xRG -xRG -xRG -xRG -xRG -xRG -xRG -hQJ -rjn -ebP -kmu -kmu -aly -dxT -nCq -hzF -qqz -bMP -tNz -tNz -tNz -cqd -wRx -tNz -tNz -tNz -nHK -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(110,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -cQP -dUA -eon -sZK -sZK -hLG -rbg -vot -iYO -bxN -eKR -mkZ -jHD -iLZ -jxi -phP -juw -vOe -vOe -vOe -pBu -juw -bwu -dLx -qGk -kmu -wim -fwz -nyA -mLe -mvW -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -wCC -bcu -vtW -bcu -cwD -bmp -kCJ -bmp -dga -bmp -ebi -uRc -uRc -uRc -uRc -uRc -uRc -uRc -wVb -bmp -seJ -awF -fBz -fBz -iIR -koz -nWx -nWx -ulV -nWx -nWx -luW -nWx -azg -xcl -xrd -ppk -hzF -dUc -dUc -wfz -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(111,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -bqX -bqX -tsJ -bCr -kYU -jTd -rkz -dla -eHa -ktI -ita -hOb -cwq -cwq -giv -cwq -wcp -juw -nKt -sWv -sWv -xDh -juw -pSO -plo -wfs -kmu -qbA -tCE -mJR -wyq -vAp -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -aQL -vAp -xQH -xQH -xQH -sSm -xQH -bmp -job -bmp -ydv -bmp -rsl -jiz -wQM -qBf -qBf -qBf -cnm -jiz -cSp -bmp -aFJ -tHF -tCE -aDE -bEu -rBb -nWx -qdR -qdc -gaj -htJ -gBB -tLX -azg -azg -azg -azg -azg -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(112,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -bqX -bqX -eKR -eKR -eKR -alg -eKR -eKR -eKR -eKR -eKR -dwv -rtA -rFX -juU -xhu -gYO -hsj -hsj -uBe -uBe -juw -eKw -cCo -pSO -rqj -tDl -gCL -uZx -fDa -vAp -vAp -vAp -wHa -aFz -wHa -wHa -aFz -wHa -vAp -vAp -vAp -cRg -rUC -bbh -pYY -mds -bmp -vvC -qQK -ako -gjI -vnr -qPr -cwt -nWC -onB -ovW -cAa -amh -fGE -bmp -rqj -tDl -gCL -nWx -pMR -dzm -nWx -ykf -wsi -mQy -wYc -mQy -cOT -azg -mIk -aIz -vEm -azg -gmd -gmd -azg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(113,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -eKR -iSE -viK -oIV -peL -bkb -juw -vCI -mXY -mXY -nPQ -cwq -euR -juw -wUM -poo -xMJ -bEW -juw -pTP -rBT -pSO -kmu -tHF -tCE -feA -fDa -gZI -jkc -fDa -ivR -lAe -uyB -tdm -lAe -lAe -des -xQH -mCv -wwD -bgU -kTL -pYY -pwx -bmp -bmp -bmp -bmp -bmp -vHL -jYH -vMA -bZq -vwD -nkc -iaI -loa -tZW -bmp -aFJ -tHF -tCE -nWx -ekz -oeL -loU -jKy -iBe -pOv -gaK -aRt -sxk -azg -xgZ -tfx -xgZ -azg -gpy -sQC -azg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(114,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dUc -dUc -dUc -dUc -cLf -eKR -tju -nID -kbT -qnh -oOI -juw -enT -kGu -kGu -lCk -cwq -oRK -juw -dwz -bOO -niv -wtZ -juw -cLf -hQF -wsM -uxH -pyo -ftF -nuR -fDa -pLM -tgf -fDa -npL -kZw -kZw -nfa -dic -kZw -ubs -xQH -vZn -kqD -dJg -dyD -sgq -vAE -tDa -fXR -fXR -wiy -bmp -pjI -vrF -fkn -sAc -bmL -wSn -pVd -axa -xbs -bmp -tsI -tHF -tCE -nWx -cRM -hGo -dPw -mQy -kpj -mQy -wYc -hGh -vSn -azg -kxk -oQd -dge -pCX -jYy -xdf -gJS -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(115,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -eKR -hwc -hsB -lGH -lGH -caW -juw -aMF -onG -onG -wbC -bAS -vKx -juw -iPd -wnY -pAa -eJE -juw -cLf -hQF -kgm -kmu -tHF -tCE -xBI -fDa -vVg -ism -eiT -uYV -uFa -aGL -aGL -cgr -xiy -rwG -xQH -mcA -kqD -jpn -uzH -sgq -sgq -pUj -wWZ -wWZ -wWZ -utY -rTC -jLC -bVg -olq -hcm -mDX -hEu -fUH -tvj -bmp -kmu -tHF -tCE -bTm -jKy -oeL -cXn -rGQ -muf -lqM -lCO -umO -uhD -uhK -kCg -qPx -uld -uld -uld -jRw -gJS -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(116,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -eKR -eKR -uCw -cPc -oGp -eKR -juw -juw -juw -juw -juw -juw -juw -juw -wxW -qmg -dTd -npg -juw -cLf -hQF -kgm -ltF -tHF -vgz -uZx -fDa -fDa -fDa -fDa -oOb -bmf -roW -iHK -myV -xdq -jss -xQH -gLp -dNh -gGs -skV -vOT -nAG -ekF -oLH -gUs -wWZ -bmp -qSg -hrO -ixm -fPk -geo -gtn -hnY -oru -rqW -bmp -kmu -tHF -tCE -bTm -hAV -hGo -tki -iEK -peA -bfD -peA -bJQ -peA -srj -xtA -xxT -jex -qmo -hJU -hhZ -gJS -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(117,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -eKR -jVy -brP -jVy -eKR -dUc -dUc -dUc -dUc -dUc -dUc -dUc -juw -vOe -vOe -vOe -vOe -juw -cLf -hQF -kgm -kmu -jlp -tCE -jgB -fDa -lmd -lHy -gQt -pYE -bmf -bBX -iRG -qoO -uNt -yjw -xQH -ruE -kPj -gGs -coQ -kFi -aUB -tDa -wWZ -liH -luK -bmp -bfe -oCx -aSd -naX -gyM -doH -jIc -xhy -bmO -bmp -rGv -qbA -tCE -bTm -gho -tGZ -dPw -jKy -naO -pOv -gaK -aRt -pQn -azg -ptR -ayx -cXr -ojv -tJB -eYe -azg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(118,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -hqF -epi -epi -epi -epi -epi -pSS -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nMo -kgm -kmu -hmb -tCE -gpR -fDa -bga -fVs -fDa -hue -bmf -pvy -fsk -qoO -xdq -hZV -xQH -vqY -dqr -gGs -hKX -sgq -nLb -tDa -liH -wWZ -koM -bmp -bmp -dkC -bmp -jgC -bmp -bmp -bmp -jRK -bmp -bmp -fCy -tHF -tCE -bTm -uik -qCd -dyA -vTU -gBi -vTU -gBi -lvn -btM -azg -kyd -war -gLK -azg -thg -fUj -aLA -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(119,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -slu -ili -cLf -cLf -cLf -dUc -cLf -cLf -dUc -dVE -pjN -hoe -pjN -pjN -pjN -pjN -pjN -vGy -vGy -pjN -pjN -jfb -hYU -kgm -kmu -tHF -tCE -sPi -fDa -iFV -omw -fDa -vCw -bmf -wtW -mvb -qoO -xdq -ojB -xQH -fZT -dAu -gGs -uzH -kFi -euF -tDa -bdk -oSS -oSS -bmp -sDK -qXp -jEX -cLA -ksq -bmp -vZF -udt -bTI -bmp -kmu -tHF -tCE -bTm -oJQ -uhD -wPh -jWg -cwb -yjj -cwb -hDX -tjc -azg -azg -azg -azg -azg -azg -azg -azg -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(120,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -kGm -uKC -uKC -xsN -dUc -dUc -cLf -cLf -reg -hYU -mQP -rXq -cqH -vGy -vGy -cqH -cqH -jfb -hYU -cLf -hJs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -utM -utM -utM -kmu -tHF -tCE -fDa -fDa -fDa -fDa -fDa -eEE -bmf -abc -sqx -flc -xdq -smT -xQH -xQH -cIM -gGs -uzH -rnB -xQH -ahE -ahE -ahE -ahE -bmp -bmj -gEP -qtc -dGq -aFp -bmp -xrO -odU -qrj -bmp -ymi -tHF -tCE -nWx -toD -uEr -dPw -dIe -oOe -uWj -oOe -gNo -erE -nWx -aSE -vFr -vlM -uEo -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(121,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -kGm -oOC -oOC -xsN -cLf -dUc -cLf -cLf -dwF -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -hJs -cLf -utM -utM -utM -utM -utM -utM -utM -utM -utM -swP -aLz -tuA -sGs -wOi -fDa -rYU -irA -gFU -hfS -uYV -cCv -dmH -dmH -dmH -tDL -kZw -aJX -xQH -rSF -gGs -uzH -bIJ -ket -ahE -kEJ -ahE -vFT -bmp -sYu -uCj -wsb -qpO -oLF -bmp -bmp -bmp -bmp -bmp -jQo -tHF -tCE -nWx -nWx -nup -owB -bAJ -iNY -muP -nXY -cbv -gep -nWx -mUU -sLt -dnt -uEo -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(122,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -srs -uKC -uKC -srs -jEY -jEY -cLf -spl -ong -rhR -lmI -jEY -jEY -srs -jEY -jEY -cLf -cLf -cLf -cLf -hJs -cLf -cLf -cLf -utM -jeL -jeL -eyN -paC -kEg -jeL -xxH -utM -kmu -tHF -tIT -fDa -pQE -ghM -oJD -fDa -usF -ufr -kZw -uIU -kZw -kZw -rhP -fQm -xQH -xQH -cWD -uzH -bIJ -ahE -ahE -laL -ahE -eXb -bmp -bmp -bmp -bmp -bmp -bmp -bmp -eMG -jZx -jZx -uZx -kmu -tHF -tCE -tDw -nWx -nWx -nWx -nWx -nWx -nWx -nWx -dCo -nWx -nWx -vcV -uEo -uEo -uEo -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(123,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -jEY -vWK -vWK -sjB -juh -srs -dWb -bOl -tVJ -iPH -iuU -srs -bsZ -aMg -iRp -jEY -jEY -cLf -cLf -iWV -hJs -xqe -dUc -utM -utM -kOd -qTF -qTF -qTF -xIz -xIz -fyC -qGo -kmu -tHF -gwq -fDa -fDa -fDa -fDa -fDa -wTp -ufr -ufr -rTw -gzp -aJL -ufr -ufr -pkn -vAD -gGs -qdt -akl -clG -tXi -cmB -sYZ -cmB -pWR -say -kdu -ahE -nxG -ubk -jNh -nxG -nxG -nxG -aNV -nxG -sGs -nTT -vwZ -nxG -nxG -nxG -xJe -nMX -uEo -prI -nAu -qWq -rjG -eoy -uEo -fzL -uEo -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(124,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -jEY -vWK -hfm -vBs -qBt -aVc -hAa -bOl -qYV -sQd -rgp -aVc -udu -vBs -hfm -eVE -jEY -dUc -dUc -vfJ -hJs -vfJ -cZp -utM -fSb -vBp -ybh -uCy -bDX -tab -alI -abi -qGo -kmu -tHF -tCE -wHj -fDa -pQl -yed -fDa -fDa -nhC -dcU -ljl -ljl -ljl -ljl -hvQ -hvQ -era -lIm -mNl -xjj -ntS -oEy -phi -jzu -buw -lCU -ahE -ahE -ahE -fFp -crD -dxT -dxT -dxT -dxT -dxT -dxT -jCw -fBz -aBY -fBz -fBz -nMR -gwS -jfm -uEo -vnG -lqy -wkR -soA -iwd -fDK -rZc -uEo -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(125,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -jEY -uNZ -nCf -vDK -gPI -ibi -mOC -mOC -tla -dcm -brw -kyv -yeQ -sYI -uiP -cES -jEY -cLf -cLf -iWV -hJs -iWV -dUc -utM -utM -wWD -nZo -nZo -nZo -nZo -nZo -nZo -lao -kmu -jlp -tCE -iFr -fDa -ghM -mXE -dSQ -oqP -reI -vAp -owj -mpA -rzB -rzB -mpA -uAH -vAp -xzj -cOp -ssS -ahE -ahE -oRM -ahE -ahE -mId -sgB -hrm -ahE -nxG -dxT -aly -prW -prW -prW -gag -prW -anT -prW -sOA -prW -prW -jqj -dxT -aQS -uEo -pCO -xaM -lWc -xBl -mBI -uEo -rXg -uEo -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(126,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -jEY -jEY -sBv -vDK -swl -jEY -ndo -gHQ -srs -kee -rPi -jEY -sBv -sYI -swl -jEY -jEY -cLf -cLf -cLf -hJs -cLf -cLf -cLf -utM -jeL -jeL -lnZ -dCu -xUR -vRm -kkJ -utM -xsv -tHF -tCE -rOq -fDa -wGu -nur -jkG -fDa -mgV -vAp -dSp -mSK -mSK -dmo -mSK -rUZ -vAp -ooE -upW -wTT -ahE -pxM -pKH -nCs -ahE -eeE -ahE -ahE -ahE -lfh -dxT -fsc -crU -uLU -uLU -crU -crU -crU -crU -crU -dvz -thj -iEn -eZn -emy -uEo -uEo -uEo -uEo -uEo -uEo -uEo -uEo -uEo -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(127,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -iUF -cLf -cLf -cLf -srs -sBv -vDK -qXZ -srs -oyO -gHQ -hZM -kee -qjp -srs -iQD -sYI -swl -srs -cLf -cLf -cLf -cLf -hJs -dUc -dUc -obA -utM -utM -utM -utM -utM -utM -utM -utM -utM -rGv -tHF -tCE -jpg -fDa -fDa -fDa -fDa -fDa -hFO -vAp -mBT -uzQ -wED -flH -uzQ -qEF -vAp -iTW -tDa -eXU -ahE -xMg -bFa -nCs -ahE -mQN -oKc -tAw -ahE -nxG -dxT -aQS -uLU -vcs -vcs -yiQ -aor -xRL -xRL -xRL -xRL -fAg -pOd -pbO -kyb -cno -lSN -fYQ -lnt -uFb -ycs -pYX -rHU -uFb -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(128,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -lEj -srs -eEx -vDK -sfY -srs -eJQ -gHQ -rnU -kee -gJg -srs -eEx -sYI -sfY -srs -dUc -dUc -dUc -dUc -hJs -cLf -cLf -lJq -axV -iyT -vfJ -psj -iMk -bDy -irx -gyl -uCl -kmu -tHF -tCE -viM -fDa -eMG -xBz -jZx -fDa -fzK -vAp -vAp -vAp -wHa -wHa -vAp -vAp -vAp -jKt -kmu -kTM -ahE -ahE -ahE -ahE -ahE -ahE -ahE -ahE -ahE -nxG -dxT -aQS -uLU -vcs -jVq -kag -iBl -oZK -kag -kag -kag -kag -dct -dgX -iin -iin -iin -iin -rtL -wKE -gxM -cmZ -osX -pUr -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(129,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -unk -lEj -srs -srs -cgK -srs -srs -yic -gHQ -aAk -kee -cZi -srs -srs -fXi -srs -srs -cLf -cLf -dUc -cLf -hqF -epi -epi -dJJ -goB -goB -txy -tGE -cUk -vXt -cUk -hFY -fHI -nxG -sGs -nTT -wEF -hny -nxG -nxG -nxG -ocm -nxG -ubk -aHp -nxG -nxG -nxG -hjJ -ljA -glH -iAE -xAm -nMR -rWl -ubk -nxG -aNV -dzN -nxG -kYZ -nxG -wEF -nxG -dxT -aQS -uLU -vcs -hFA -kag -hmj -xeS -kmb -jWE -gmX -hbf -dct -hqk -jFc -jFc -iOc -adV -usQ -uFb -eCC -qeW -wlc -pUr -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(130,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -lEj -lEj -srs -lPj -cqm -srs -oyO -pyH -gHQ -iJP -kee -hvR -ncc -srs -sYI -skw -srs -cLf -cLf -dUc -cLf -cLf -cLf -cLf -lJq -eRu -eRu -vfJ -vSv -qXy -dko -hBQ -mJG -oTX -tEW -pkN -tNn -fIr -dxT -dxT -dxT -dxT -dxT -eyq -dxT -dxT -dxT -dxT -gii -dxT -dxT -dxT -jBl -vsO -jBl -kda -fBz -fBz -ohw -fBz -uOb -dxT -dxT -fIr -nwv -gwS -aQS -uLU -vcs -kco -kag -xiZ -nSH -oqz -kXz -oqz -jlJ -dct -hqk -jFc -ltS -gGr -gGr -gGr -uFb -uFb -jke -kiK -uFb -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(131,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -lEj -eOn -fxo -vDK -srs -eJQ -vFz -kbv -xkc -kee -jBg -qjp -srs -iVK -hnL -srs -cLf -cLf -dUc -cLf -cLf -cLf -cLf -vfJ -vfJ -vfJ -vfJ -bUu -rvg -pJN -iKc -rSL -jbL -lFE -aQS -deY -xMk -aQS -vTx -aQS -aQS -aQS -aQS -aly -aly -aQS -grK -aQS -aQS -ksw -lHc -aly -vaZ -aly -aly -aly -aly -dmx -deY -qaO -aQS -vEp -xMk -aQS -rTs -xoQ -uLU -jwK -vcs -kag -qej -nSH -myx -agr -wNL -hbf -dct -smG -bEq -lZu -gGr -hrp -hcp -uFb -wEe -vBV -cpF -uFb -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(132,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -cLf -dZy -dZy -mGv -dZy -wHJ -wHJ -wHJ -uEp -usL -wHJ -kTx -kYu -xUU -kYu -kYu -cLf -cLf -dUc -cLf -cLf -cLf -lEj -lEj -lEj -lEj -gvF -uLz -rvg -xET -iKc -hle -gvF -rIb -wEA -swi -swi -swi -rQx -swi -swi -swi -swi -cmf -fGu -lbZ -azv -azv -azv -azv -azv -jqz -dmx -xoQ -aQS -aQS -aQS -qMV -crU -npH -crU -crU -crU -crU -crU -crU -crU -crU -sFT -kag -kFm -nSH -upS -urZ -uNy -hbf -dct -nfF -srE -kir -orD -jzv -oRe -uFb -pYX -qeW -pYX -uFb -uFb -uFb -uFb -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(133,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -dZy -dZy -nzf -gWO -kIl -wHJ -lKF -iuB -sfT -iuB -hWt -wHJ -rlt -pgk -ins -kYu -kYu -dUc -dUc -dUc -dUc -lEj -lEj -lEj -lEj -lEj -gvF -dnW -rvg -slL -iKc -cRV -caB -vdR -eVR -swi -dOC -sBO -sBH -hms -bhS -pFo -azv -stw -nJF -stw -azv -dZd -esX -lYm -azv -nMI -aVm -crU -orJ -orJ -orJ -jUU -crU -nyQ -bpy -crU -xUW -xUW -xUW -xUW -xUW -fZc -xUW -kag -pbX -xeS -nDU -vTO -mWJ -hbf -dct -hqk -jFc -mjd -gGr -gGr -gGr -uFb -dai -qeW -taw -nJK -gKS -gHZ -cLW -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(134,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -dUc -dUc -dUc -dZy -awB -glq -spG -lbt -wHJ -iuB -iuB -sfT -iuB -iuB -wHJ -gub -pTC -pog -jAd -kYu -cLf -cLf -cLf -cLf -lEj -vfJ -uJt -uJt -vfJ -gvF -eBY -rvg -vuq -hPH -iKc -iKc -bsw -wxa -vks -yhV -oYu -tPW -luA -ykh -tXS -xOU -kBt -wdz -nOZ -tld -tld -dyb -qdo -exQ -nMI -sQe -crU -flN -kSW -tye -bFI -crU -xjW -dQQ -xUW -xUW -nMI -xUW -pLy -nMI -niB -xUW -gyu -uLY -uLY -teG -sHg -sHg -cYq -wKY -iFq -jFc -kyQ -ltS -ohu -jRj -uFb -uFb -epT -cmZ -hbq -uFb -pUr -uFb -cLf -iUF -iUF -iUF -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(135,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -tyd -cLf -cLf -dZy -wcm -hTf -okg -jWj -wtv -gRq -gRq -oTh -eAW -eAW -qxX -bNu -wpv -qFN -jqD -kYu -cLf -cLf -cLf -cLf -lEj -uJt -eJr -wWY -kju -wMB -jrd -rvg -xPp -xPp -xPp -oXz -bsw -wxa -vks -yhV -aDm -oLh -vtP -nne -jhK -gIw -uJH -uJH -ceg -sfF -pat -lrF -qdo -bYo -nMI -sQe -crU -oyC -pxh -lQQ -bjM -crU -lMI -kBM -nMI -pWw -nMI -pWw -pWw -nMI -pWw -pWw -jij -jij -ugs -khA -vNB -udQ -hbf -dct -bcr -jFc -cVL -ltS -eAP -wjP -jYm -uFb -qTS -qeW -wlc -cWv -jge -uFb -cLf -cLf -dUc -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(136,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -iUF -cLf -cLf -lEj -dZy -fhG -lQe -qrt -rmx -wHJ -iuB -iuB -sfT -iuB -iuB -wHJ -bNu -gLJ -pog -wCY -kYu -cLf -cLf -cLf -cLf -lEj -uJt -eJr -hgX -vfJ -aTU -jUi -nvQ -nvQ -nvQ -vES -kSM -sAO -wxa -vks -yhV -rWQ -kxz -hri -hIV -uig -xOU -kcY -prg -tld -rDl -ylj -esP -eri -fwA -nMI -sQe -crU -crU -jUU -uqy -jUU -crU -crU -kBM -nMI -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -xAy -jVx -lHm -lHm -lHm -lHm -nyE -kwU -tEM -ltS -ltS -ncZ -uDk -vEh -uFb -uFb -rxw -cuj -uFb -uFb -uFb -uFb -uFb -uFb -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(137,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -dZy -dZy -xZX -eMD -aMx -wHJ -ozr -iuB -sfT -iuB -xPo -wHJ -hna -hna -loq -kYu -kYu -cLf -cLf -cLf -lEj -lEj -uJt -nXF -tLH -vfJ -obA -rWj -xdT -rWj -rWj -cPt -ipv -tdk -hkc -swi -dHy -aEL -trL -nMP -xOU -mwW -xOU -xOU -xOU -tld -wDD -vRZ -oQe -qdo -oac -nMI -sQe -lMI -crU -rtx -qXa -fRC -tac -crU -kBM -nMI -cLf -xAy -dUc -dUc -xAy -cLf -dUc -xAy -xAy -xTw -uUA -sxK -sTg -lHm -dIR -bcr -vVs -ltS -hfv -pLj -dOJ -fBN -oXI -icC -eLm -hRM -uFb -lhG -uac -diD -lfv -uFb -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(138,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -dZy -tgw -nes -woJ -dZy -dZy -wZz -bxn -wZz -kYu -kYu -kYu -aUD -kYu -kYu -lEj -cLf -cLf -cLf -lEj -lEj -uJt -eJr -wWY -eZN -obA -alA -wDb -irJ -rBI -cPt -ctE -ixU -mOc -swi -swi -swi -lOy -poZ -xOU -exk -faX -cya -vpq -tld -xVK -ryy -ryy -nvg -qHR -nMI -sQe -dNu -crU -wwB -jZp -liF -rVA -crU -kBM -pWw -cLf -dUc -cLf -cLf -uuN -uuN -uuN -xAy -pEf -sbd -soB -yfL -bcm -lHm -dct -umt -gUZ -kRs -dYR -jGX -pWP -gqz -swv -fpG -cBt -xAH -qYW -vgP -wag -xzJ -kub -pUr -dUc -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(139,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -dZy -prz -idU -wze -vOJ -hGZ -wZz -cdo -wZz -ipR -kYu -lYN -iPQ -noc -kYu -lEj -lEj -cLf -cLf -lEj -lEj -vfJ -vfJ -xbu -gMK -obA -pJU -wtu -dfr -mKF -cPt -iQZ -oqp -dfM -pgS -lMT -ixU -ixU -ixU -xOU -wqK -oel -chm -qnQ -xcb -wCO -tld -miU -azv -azv -nMI -kAw -pyi -szp -hRd -sBm -bAE -ddb -crU -nyQ -pWw -cLf -dUc -cLf -cLf -uuN -xAy -vFG -ugN -pWE -hYF -qgY -nAi -ruq -qgc -qPp -bcr -qVH -ltS -miK -vLH -pVx -slr -uKg -qMC -cXh -qry -uFb -ixL -bon -uYk -eVG -uFb -cLf -iUF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(140,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -wfl -dZy -dZy -dZy -wZz -wZz -wZz -vRw -wZz -wZz -wZz -kYu -kYu -kYu -pIN -lEj -lEj -cLf -cLf -lEj -lEj -lEj -vfJ -eIV -gMK -obA -voQ -wtu -urh -ooy -cPt -iQZ -vHI -kcE -iCD -mvd -ixU -soG -kqB -xOU -drO -fPx -kwp -jvM -tld -jIG -qWM -azv -sge -eEG -nMI -rpP -niB -crU -jUU -jUU -dda -jUU -crU -kBM -pWw -cLf -dUc -cLf -cLf -axt -uuN -uuN -xAy -rdI -byj -jvN -kgO -xqB -lHm -nWu -bcr -ixa -ltS -ltS -ltS -ltS -uFb -uFb -uFb -vGJ -vPF -uFb -sot -kBy -spd -mAA -uFb -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(141,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -wZz -wZz -xEr -vgd -oHd -eXy -bKX -wZz -wZz -wZz -fBc -lEj -lEj -lEj -fYe -fYe -lEj -lEj -lEj -vfJ -gLw -jmY -obA -kKJ -ebU -xWb -cUe -cPt -eQf -eCO -tZF -kcN -xGB -ixU -beA -kdg -xOU -xOU -qPt -ghK -xBn -tld -jIG -saQ -dXN -hSC -lSz -nMI -dht -crU -crU -jOq -jZV -sgu -tlp -aXA -ajQ -nMI -cLf -xAy -dUc -dUc -xAy -cLf -dUc -xAy -xAy -qXB -qBB -qqy -kNs -lHm -fbM -bcr -cEc -mht -koe -jUz -qWS -uFb -gWo -uFb -uFb -obL -uFb -ruZ -ruZ -xYa -ruZ -ruZ -ruZ -ruZ -ruZ -ruZ -fmY -dUc -mPv -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(142,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -dxA -dPf -dPf -ieI -nDC -dPf -dPf -dPf -uCS -wZz -wZz -lEj -lEj -uif -fYe -fYe -fYe -lEj -lEj -vfJ -rXG -raz -obA -toV -ebU -irJ -cPt -cPt -dmE -ixU -wVL -ixU -ixU -ixU -tZt -cpw -maA -aqr -usa -kWk -woz -fwT -pyx -obU -sge -mqz -xlm -nMI -dht -crU -spf -jSf -liU -pHP -wpi -crU -kpw -nMI -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -xAy -lHm -lHm -jVx -lHm -lHm -dct -urT -kHn -kHn -kHn -lNz -tuH -uFb -mTP -pUG -fNn -fNn -mTS -ruZ -huX -rpR -mnk -pUr -byf -pUr -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(143,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -tOs -jTg -jTg -jTg -cHP -hwP -hwP -hwP -wmd -wZz -wZz -lEj -lEj -fYe -fYe -fYe -fYe -lEj -lEj -vfJ -oBP -raz -wtr -rrq -wFb -irJ -jRN -jyQ -ruL -pdz -tZF -wPX -mlV -dfM -cpw -jIm -xOU -xOU -xOU -nMI -nMI -nMI -xad -nMI -nMI -nMI -nMI -nMI -dht -crU -sIJ -awW -nLc -jUU -rcs -crU -kBM -nMI -nMI -nMI -nMI -pWw -pWw -nMI -nMI -nMI -nMI -lMI -niB -isg -lFv -dFi -lvT -vHf -fzY -jFc -jFc -gVe -jFc -uFb -wLj -hjU -lxw -gNd -ruZ -ruZ -ruZ -rpR -oPB -nnT -wlc -euX -bbq -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(144,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -rdK -jTg -dLi -wZz -hVW -wZz -pvG -hwP -iYC -wZz -wZz -lEj -lEj -fYe -fYe -fYe -uif -lEj -vfJ -vfJ -oBP -vfJ -obA -obA -eBw -gIM -giJ -ugh -aZs -jDP -vJE -vJE -vJE -dIr -kQv -lfx -thf -tJx -cwR -nMI -jQl -niB -kUz -crU -tHh -pXS -jrY -crU -dht -crU -ujt -nAr -jUU -jUU -lRr -crU -kBM -sRI -qRb -crU -arl -lok -xUW -ngh -crU -bqT -lFv -lFv -lFv -cwk -joB -dUi -nCe -mBX -xma -dUi -xma -wWt -xma -ruZ -ruZ -ruZ -ruZ -ruZ -ruZ -fFT -wIB -tzw -oPB -pUr -sjN -pUr -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(145,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -wZz -wZz -mYK -qWH -pzB -wZz -wZz -wZz -wql -cHP -taK -wZz -wZz -lEj -lEj -lEj -fYe -fYe -lEj -lEj -vfJ -gZF -oBP -xAd -kHG -obA -lNV -svL -cPt -ixU -rNf -dfM -pBn -cPo -qii -owp -lxX -ocV -thf -qlG -rLT -nMI -hHx -niB -kUz -niB -pXS -niB -umK -crU -dht -crU -crU -ffp -pso -uyA -whn -crU -kBM -crU -sRI -crU -haa -sFX -eIy -rBw -crU -tOH -djo -eyg -eyg -eyg -eyg -eyg -uEf -wHb -tFW -brx -tFW -aFD -neu -oVa -ruZ -mvI -ykO -azu -uFb -hab -pyK -sDr -jyM -ykG -ykG -ykG -ykG -ykG -fdj -dUc -mPv -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(146,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -wZz -wZz -fOM -jTg -ajU -wZz -cSa -wZz -odg -hwP -tOp -wZz -wZz -lEj -lEj -lEj -cLf -cLf -lEj -lEj -vfJ -xAd -iXp -xAd -ruN -obA -xFH -xFH -cPt -dYD -wAy -lQU -ugP -tNR -oUW -mnd -peo -dfM -thf -dmM -pld -nMI -nMI -jih -kUz -niB -niB -crU -crU -crU -dht -onK -crU -crU -crU -crU -crU -crU -ajQ -niB -niB -crU -ijp -joB -pjE -qhw -crU -tOH -eyg -eyg -lYt -gCN -tYy -eyg -voB -kld -thX -wxk -gQK -wxk -lkw -cdi -ruZ -ltk -ied -wpH -uFb -gUv -lFW -pcN -tbb -ykG -eZr -ayy -nVz -ykG -ykG -ykG -ykG -ykG -ykG -ykG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(147,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -wZz -wZz -toT -jTg -jTg -oZp -qRK -hwP -hwP -hwP -emn -wZz -wZz -lEj -lEj -cLf -cLf -cLf -lEj -lEj -dpu -aku -uOo -xAd -obA -obA -obA -obA -obA -ixU -wAy -sYn -ejS -aMU -viX -ocq -gfF -bWi -lhx -vVk -kcB -wMZ -rXT -kNk -bwQ -mEs -xFh -lPe -lPe -lPe -aLH -woI -woI -woI -woI -woI -woI -woI -xqa -jXO -kzG -crU -crU -joB -niB -crU -crU -tOH -eyg -oKF -hUw -qjw -mUg -gTV -pHv -gEJ -jEc -sJo -xKC -omE -jxd -mQk -ruZ -uFb -jHR -uFb -uFb -uFb -uFb -uFb -tRb -ykG -cfO -sbZ -kjp -wgk -kUp -bBH -pRG -arr -aRs -ykG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(148,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -biC -dPf -dPf -cHP -nDC -cHP -dPf -xZL -jPg -wZz -wZz -lEj -lEj -cLf -cLf -cLf -lEj -lEj -anz -aku -uOo -xAd -anz -anz -anz -rji -anz -ixU -wAy -mUP -hfB -eIo -smE -xCw -dqU -thf -thf -uzv -hlh -dhb -crU -crU -skc -crU -gAD -crU -crU -nMI -aRf -aRf -nMI -iCT -iCT -iCT -nMI -aRf -aRf -nMI -xqa -aeq -jXO -lFv -lFv -lFv -lFv -cwk -eyg -qsu -kFp -csB -pAB -ryG -sIx -cFc -iCM -grv -dUi -cAy -vqI -ger -ruZ -fgq -ulc -ulc -ulc -ulc -ulc -gIW -bos -ykG -lwC -iMK -oMi -wgk -bBH -dwH -ptc -saJ -arr -ykG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(149,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -wZz -wZz -wZz -wZz -gvN -onn -cHP -whM -wZR -wZz -wZz -wZz -wZz -lEj -cLf -cLf -cLf -cLf -lEj -lEj -vfR -aku -uOo -xAd -anz -anz -iSU -aku -foX -ixU -jiw -sHn -xxO -vLa -pKI -lBJ -puX -thf -vyp -lZn -tDk -taI -crU -xAr -xUW -vKd -niB -hjI -crU -lEj -dUc -dUc -nbu -nbu -nbu -nbu -nbu -dUc -dUc -pLB -dpU -dpU -dpU -dpU -ffJ -dpU -dpU -shc -eyg -rWM -msZ -hWW -mUg -gTV -aGQ -kEn -jxd -fzW -gur -mkE -jxd -iPm -ruZ -gID -ulc -uFb -uFb -uto -uFb -ykG -xOJ -ykG -ykG -uLh -nMW -gvn -cdI -ptc -rrz -wOy -voY -ykG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(150,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -wNk -wZz -wZz -wZz -wZz -wZz -pGH -wZz -wZz -wZz -wZz -wZz -wNk -lEj -cLf -cLf -cLf -cLf -lEj -lEj -anz -aku -uOo -xAd -anz -foX -aku -aku -aku -ixU -jiw -qbd -dzC -plC -mHV -bgm -oZb -thf -dus -sNP -gGo -nMI -crU -ijp -xUW -aoA -pXS -hjI -crU -lEj -dUc -dUc -nbu -gxw -gxw -cxN -nbu -dUc -dUc -dUc -dpU -iel -hTX -sPV -wTc -xBV -jWU -siX -eyg -eyg -sDh -lrw -msV -eyg -dUi -myg -dyv -clx -clx -svf -svf -pTJ -rfd -ulc -dbn -uFb -wMu -taP -fpo -ykG -vPT -fIW -mqH -wCv -vZJ -wgk -jKu -saJ -ptc -dwH -arr -ykG -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(151,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -wNk -wNk -wZz -wZz -nRq -wZz -wZz -wNk -wNk -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -anz -aku -uOo -xAd -anz -aku -aku -aku -aku -ixU -dfM -vqv -cct -bSr -tMT -vqv -eOD -kVP -qPI -lhA -kbD -nMI -sZS -niB -rab -ise -niB -qAI -crU -lEj -dUc -dUc -nbu -gxw -puQ -gxw -nbu -dUc -dUc -dUc -dpU -nav -pJw -duo -ijv -tAx -uhE -vIi -dpU -eyg -gTV -vME -gTV -eyg -wpn -lUY -jxd -jxd -clx -mJb -fQO -eqp -ruZ -csj -svK -uFb -gJL -oPB -oPB -ykG -nLi -lzW -mKO -xwh -wdc -wgk -jKu -jKu -wIN -arr -arr -ykG -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(152,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -wZz -wZz -oYv -wZz -wZz -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -anz -aku -uOo -anz -rji -aku -ouA -aku -anz -ixU -dfM -dfM -kMA -gdL -eki -vLy -sSL -kVP -ucg -ipV -aHt -eRq -gqA -ers -niB -aoA -qOs -bpy -crU -lEj -dUc -dUc -nbu -cIx -enn -tBt -nbu -dUc -dUc -dUc -dpU -iPu -eoQ -utc -leW -mst -duo -jMa -dpU -fQp -cda -bqj -gsM -tFW -mZc -rmm -gyx -iLb -qCo -uEO -ruZ -ruZ -ruZ -rbe -ulc -uFb -uFb -osX -oPB -ykG -azK -qeN -dsY -fKT -kcz -ykG -ykG -ykG -ykG -ykG -ykG -ykG -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(153,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -flF -neT -utU -neT -flF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -ieo -aku -uOo -anz -aku -aku -aku -aku -anz -ixU -dcO -dfM -kMA -qKH -aNv -lDK -hPw -kVP -fBS -awb -oAV -nMI -iMc -crU -ndS -niB -niB -aoA -crU -lEj -dUc -dUc -nbu -wpM -wVI -bvl -nbu -dUc -dUc -dUc -dpU -ppR -mZA -nyz -sgg -gKu -pUt -dHL -dpU -bnK -wqU -ocB -mIC -xot -xot -xtY -aWD -aWD -xDn -aWD -aWD -heP -bTt -svK -ulc -kCr -uFb -gLq -lrk -ykG -dgG -mKc -pGo -ykG -ykG -ykG -dUc -dUc -fmr -dUc -cLf -cLf -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(154,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -utU -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -anz -aku -uOo -xAd -xAd -ieo -aku -aku -anz -ixU -mLH -dfM -iHY -sln -dCI -aoz -oSJ -thf -sRj -kSA -kdw -nMI -niB -rMx -aoA -niB -ers -dsL -crU -lEj -dUc -dUc -dUc -gdP -dUc -mXr -dUc -dUc -dUc -dUc -dpU -kRq -kLU -cPQ -opG -kxG -tJS -xuF -dpU -jco -oss -vEZ -alJ -vEZ -vEZ -hmz -aWD -sfs -qcQ -gpJ -aWD -eRE -ruZ -ugJ -mIY -eLk -aWD -aWD -aWD -ykG -oUw -ece -kcz -ykG -mXK -dUc -dUc -dUc -fmr -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(155,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -utU -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -fYe -lEj -lEj -anz -aku -uOo -aku -foX -aku -aku -jJe -anz -gOY -gOY -gOY -gOY -gOY -vcn -gOY -gOY -gOY -gOY -gOY -gOY -nMI -pBB -crU -crU -aRf -aRf -crU -crU -lEj -fTX -hfp -hfp -wKT -hfp -yhj -hfp -hfp -hfp -fTX -dpU -xxn -cbJ -eLV -sbf -cbJ -giD -fTX -fTX -fTX -gFB -fTX -fTX -hfp -fTX -fTX -aWD -epE -hnu -gyY -aWD -eRE -aWD -aWD -sTw -aWD -aWD -chV -rDD -ykG -ykG -arq -ykG -ykG -cpG -cpG -cpG -cpG -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(156,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -wNk -qVF -izr -qVF -wNk -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -fYe -lEj -lEj -anz -aku -uOo -aku -foX -aku -aku -anz -anz -gOY -xxN -aam -xYE -boy -gql -abh -nGV -uPL -sSN -nal -gOY -lEj -cxg -lEj -dUc -dUc -dUc -dUc -dUc -cNc -pNi -kUb -aZR -hfd -gjA -riS -aZR -aZR -aZR -rZK -fFj -mGk -pvX -arB -pvX -pvX -rJD -hfp -eUx -fvI -xfz -way -srR -qVR -wrK -tWY -aWD -tMD -epr -cCj -aWD -uzg -aWD -rZb -rJb -abF -aWD -ahl -hQm -stp -nzR -pyB -hbG -cpG -fGo -nHD -rWI -hVe -cpG -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(157,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -wZz -wZz -qpj -wZz -wZz -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -fYe -lEj -lEj -anz -aku -uOo -pwZ -rji -foX -anz -anz -jTB -jTB -jTB -gOY -vUk -wlO -nqi -iOH -fQr -gOY -tDS -cpJ -gOY -cxg -cxg -lEj -nbu -nbu -nbu -nbu -nbu -gYP -rTo -hdd -qxp -lGt -uPv -oRf -sYU -hLj -syl -vGG -nDN -nDN -pPv -jak -tnp -mSN -oQp -hfp -pOi -rUp -bgC -vlk -vlk -vlk -qzr -clH -aWD -aWD -idR -aWD -aWD -wuS -aWD -iTa -wWy -jzJ -aWD -rwx -ugV -jeY -dCM -btl -rJs -cpG -uwI -lpe -lpe -xDk -mcd -cpG -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(158,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -fYe -lEj -lEj -anz -vfR -aku -uOo -aku -aku -anz -jTB -jTB -ief -jZv -gOY -ifv -kMl -cZs -urY -czh -uPL -pVG -oLj -gOY -wHl -cxg -lEj -nbu -aXt -rBj -nWG -gkx -jTI -gjD -qUT -uQG -moL -bXK -wyZ -rox -dNr -mjZ -ayf -rpS -rpS -wGZ -dow -bzC -bzC -oAO -hfp -aHG -wvh -xNs -xHA -rQe -yhb -iwG -tox -aWD -duM -bSH -qVn -mPk -iGy -sRJ -xfi -mjf -sNU -fHu -xfi -wBH -rhS -mLN -btl -qmn -ryC -mnU -qOY -qOY -jKp -wMt -ryC -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(159,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -fYe -fYe -uif -cLf -cLf -cLf -cLf -cLf -uif -lEj -anz -anz -anz -uOo -aku -anz -anz -jTB -jGd -eBH -otJ -mTg -hYG -bwj -jLY -rSh -xJR -gOY -wOn -gOY -gOY -cxg -cxg -lEj -nbu -aXt -jyO -qsa -wVI -dUc -rLK -vYL -jSu -xxJ -huj -jvA -utT -gcs -bND -its -wfN -gVx -cLs -bND -cZZ -bND -rti -fTX -ixi -mwq -thw -wXK -oSz -quI -fTX -fTX -aWD -cNM -hIm -xCf -urc -xCf -lFX -xCf -bzQ -xCf -xCf -xCf -xCf -xCf -suq -bzQ -ciE -kjI -vdZ -rgI -kyh -lpe -vAj -ryC -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(160,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -lEj -lEj -fYe -fYe -fYe -fYe -fYe -fYe -fYe -lEj -anz -anz -anz -uOo -aku -anz -anz -jTB -dkr -hbH -naU -bmr -smH -lCw -fDz -fDz -fDz -bPc -efJ -ofG -gOY -cxg -cxg -lEj -nbu -aXt -aXt -aZn -kDx -oCb -gjN -nkA -com -cnS -mSN -pJp -fCG -krJ -oWr -mKM -cKo -cKo -gza -hFF -lfn -nvd -kWH -nMh -qxo -mSr -oAT -wXK -oSz -quI -hSo -dLk -jDw -nTQ -mVi -rhS -rhS -equ -mjf -pfV -sgG -dAe -rhS -rhS -rhS -nHr -gaN -rhS -sqw -ryC -kqC -qDR -lpe -lpe -pFl -ryC -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(161,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -dUc -wfz -dUc -dUc -dUc -dUc -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -fYe -fYe -anz -anz -ieo -iSU -uOo -uro -rji -anz -jTB -sqJ -wiT -rBt -suo -lMC -aMG -fDz -xTs -fDz -fDz -rkI -rYe -gOY -gOY -cxg -lEj -nbu -nbu -nbu -nbu -nbu -dUc -utf -qKj -jSu -cnS -rwF -rEw -mBb -atv -fTX -oIQ -qKe -lFQ -fTX -sJD -eKa -rVZ -ozx -fTX -uBz -qYt -foo -vub -xjm -dZf -fTX -eSm -rhS -rhS -bhG -rhS -rhS -rhS -dDc -uwW -iio -rhS -rhS -rhS -wBH -rhS -rhS -rhS -nMV -cpG -rDI -azQ -iNh -iNh -kHp -cpG -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(162,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -shs -shs -cLf -dUc -cLf -cLf -cLf -cLf -lEj -lEj -lEj -fYe -fYe -fYe -cLf -cLf -cLf -cLf -fYe -rji -anz -vfR -aku -uOo -aku -anz -anz -jTB -dEn -lIn -tra -suo -xxY -aMG -fDz -fDz -mfC -fDz -fDz -fDz -gqV -gOY -cxg -lEj -nbu -pIV -dLf -vEu -gkx -jTI -mJB -vSH -oEZ -rFZ -bND -mjR -hAs -odS -fTX -fTX -fTX -fTX -fTX -wVi -eKa -rVZ -jav -fTX -lac -sPH -eRZ -hIB -vEt -maB -tJX -teg -ybD -cfJ -hVc -ybD -ybD -ybD -ybD -tQX -iJt -oWE -ybD -ybD -ybD -ybD -ePT -ybD -ape -cpG -fPe -qPC -qPC -qPC -pgm -cpG -kxB -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(163,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -shs -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -lEj -cLf -cLf -dUc -cLf -cLf -cLf -cLf -fYe -fYe -lJq -aku -aku -aku -uOo -aku -anz -anz -jTB -gbV -jqY -rus -xJK -hVC -uya -fDz -fDz -fDz -oWy -fDz -dyd -qDM -gOY -cxg -lEj -nbu -pIV -mBg -rqJ -wVI -dUc -rLK -nLD -jSu -cnS -gvR -bND -wPd -wbS -fTX -fyM -xBO -fyM -fTX -oJn -eKa -rVZ -dYx -fTX -fTX -tCR -gYt -xHa -fTX -fTX -fTX -uFC -uFC -uFC -jnY -jnY -jnY -jnY -jnY -uFC -kcc -uFC -jnY -jnY -jnY -jnY -jnY -jnY -uFC -cpG -cpG -aTv -aTv -aTv -cpG -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(164,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -cLf -cLf -fYe -fYe -lJq -aku -aku -pkw -uOo -aku -anz -anz -jTB -wKR -wKR -vFL -xvo -mSe -nCo -tGW -tGW -nli -pLk -vvE -aWM -vzP -gOY -cxg -lEj -nbu -pIV -pIV -ojc -kDx -oCb -gjN -nkA -nqK -cnS -bND -bND -wvB -xjm -lFM -vck -vck -vck -vck -flQ -mOY -rVZ -jav -kvK -fTX -vSr -vSr -vSr -fTX -tVP -uFC -uFC -uFC -lNk -sJG -jBX -jBX -bup -bup -fOi -cHe -wmN -gyq -gyq -gyq -gyq -gyq -iNa -nva -cpG -fJn -aYf -aYf -aYf -krW -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(165,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -dUc -dUc -dUc -dUc -dUc -pbP -pih -pbP -pih -pbP -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -cLf -cLf -fYe -lEj -rji -nLT -aku -aku -uOo -aku -ieo -anz -jTB -jTB -qXE -yaH -gOY -aks -tTK -tvB -tRZ -nkM -vxZ -dyS -lfq -mDx -gOY -cxg -lEj -nbu -nbu -nbu -nbu -nbu -dUc -utf -hon -jSu -cnS -bND -bND -bND -gvR -bND -bND -fIZ -fIZ -umT -mjP -jZN -qoQ -tqx -csQ -kUX -eJS -pGO -aaW -kUX -xbN -uFC -boT -djU -lLU -utV -cPG -bUA -bUh -bUh -bUh -bUh -bUh -bUh -bUh -bUh -bUh -dPH -nPW -gRG -aTv -aYf -aYf -aYf -eRD -eRD -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(166,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -pbP -pih -eYo -pih -eYo -pih -cLf -cLf -tyd -dUc -cLf -cLf -dUc -cLf -cLf -cLf -cLf -lEj -lEj -anz -pkw -aku -aku -uOo -aku -vfR -anz -anz -jTB -jTB -jTB -gOY -gOY -tTK -oEP -kjD -hxs -cAG -xXF -sLr -mDx -cxg -cxg -lEj -nbu -msY -nGp -vgM -gkx -jTI -mJB -rSq -oEZ -fjn -jKw -bND -trz -bND -bND -ouq -bND -bND -mVf -kUX -lXI -mRu -eeo -kUX -kUX -eJS -pGO -aaW -kUX -uFC -uFC -jsL -kpn -nPW -auj -cPG -oDn -wCm -wCm -avx -lZc -tAQ -hfU -eMk -hfU -ipT -nYK -tVT -dTb -aTv -aYf -aYf -aYf -eRD -lPp -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(167,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -pih -eYo -pih -rst -pih -rst -pih -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -pkl -pkl -pkl -pkl -pkl -vfJ -vfR -aku -uOo -aku -aku -fbN -gsW -gsW -rZE -rZE -gOY -iJZ -lcd -eih -neb -nkM -vxZ -pZK -lfq -nkM -cxg -cxg -lEj -nbu -msY -qNM -fzM -wVI -dUc -rLK -fMS -jSu -mqE -hlF -bXK -hlF -hlF -hlF -lgw -riE -fCG -sEC -kUX -eTg -jfo -jfo -gYM -cGu -jfo -jfo -jfo -oBz -xxi -uFC -eBZ -kpn -pxu -pxu -oyV -axQ -yho -yho -jeE -hdh -xHe -xxz -nsD -khO -ueA -xwD -cvL -gRG -aTv -aYf -aYf -prc -prc -prc -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(168,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -pbP -rst -pih -rst -pih -rst -pih -rst -pih -cLf -cLf -cLf -dUc -cLf -cLf -dUc -rXt -rXt -rXt -smQ -fSk -qRf -pkl -vWN -aku -aku -uOo -aku -aku -pkw -hhd -bEz -laD -laD -fVO -cmn -lcd -cmn -acN -efL -cQu -wgI -vib -vMR -dUc -cxg -lEj -nbu -msY -msY -qTC -kDx -oCb -gjN -nkA -bIE -mxx -hPs -oUg -olW -olW -wlo -cnS -xQB -sYy -gms -kUX -oAJ -enz -kGZ -kGZ -kGZ -kGZ -kGZ -tbk -kGZ -rkp -uFC -boT -kAh -qWs -utV -gea -xaP -dhn -jjO -nsD -wSs -hBf -lsU -nsD -khO -njX -xwD -cvL -mCm -cpG -hRX -iFn -prc -prc -prc -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(169,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -sCD -bgp -hsz -qSb -cLS -qSb -qSb -cLS -qSb -qSb -qSb -mXF -qSb -hsz -hsz -hsz -aep -lqI -eoL -xLg -rRs -afC -tJT -uOo -uOo -uOo -uOo -aku -aku -aku -ajs -pIk -dpA -rPh -gOY -mAC -uBU -cut -rcR -efL -miM -awf -egV -vMR -dUc -cxg -lEj -nbu -nbu -nbu -nbu -nbu -dXU -utf -ksd -jvA -baY -xvg -sjW -ocF -wQH -xvg -sjW -ocF -lLH -mWB -kUX -ohF -kGZ -ini -kzk -pdR -kzk -qRF -kGZ -mcH -uin -uFC -uFC -uFC -lwv -nPW -oyV -xaP -nsD -nsD -hdh -fEP -eYC -nsm -xxz -nsD -nsD -xwD -cvL -qqB -cpG -cpG -cpG -cpG -cpG -cpG -cpG -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(170,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -pbP -rst -pih -rst -pih -rst -pih -rst -pih -cLf -cLf -cLf -dUc -cLf -cLf -dUc -rXt -rXt -rXt -wCP -cfG -kGf -pkl -rmX -aku -aku -aku -aku -aku -aku -vjB -psQ -cmn -czC -gOY -gAV -hFz -wRL -icz -efL -nbS -nbS -nbS -vMR -dUc -cLf -lEj -lEj -lEj -lEj -lEj -lEj -dUc -wRN -fdC -uVP -wFy -dgm -gAZ -uxS -fDO -cMI -oQr -aVZ -fDO -jKF -kUX -fUN -kGZ -xNp -vYg -pBJ -uuM -cEh -kGZ -woo -kUX -uFC -lEj -uFC -cUD -nPW -oyV -xaP -qjU -kJM -jlq -hed -gar -gtF -vHm -hBf -qjU -xwD -cvL -psF -uFC -lEj -lEj -lEj -lEj -kxB -kxB -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(171,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -pih -rst -pih -rst -pih -rst -pih -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -pkl -pkl -pkl -pkl -pkl -anz -anz -ieo -aku -aku -aku -uro -gsW -hDJ -grm -gsW -gOY -gOY -gOY -xOB -gOY -nkM -nkM -nkM -nkM -nkM -dUc -cLf -dUc -lEj -lEj -lEj -lEj -lEj -dUc -fTX -rLK -hfp -dSB -mWF -sMs -hfp -wKT -mWF -sMs -hfp -wKT -oKB -kUX -agq -kGZ -wBk -rkS -nNA -cFq -edL -kGZ -wlG -kUX -lEj -lEj -uFC -pbD -nPW -oyV -kiT -kgH -gRL -gev -hed -uYt -gtF -uqA -gRL -kgH -xwD -cvL -jWI -anu -lNJ -gjZ -gjZ -sqZ -uuN -kxB -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(172,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -pbP -pih -eYo -pih -eYo -pih -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -cLf -cLf -anz -anz -anz -anz -anz -anz -vfR -pkw -aku -aku -aku -aku -xAd -upd -upd -ndE -mkV -dcc -uvx -mna -gXw -gHL -jGy -moe -dUc -cLf -dUc -lEj -lEj -lEj -lEj -lEj -lEj -dUc -eTZ -dUc -xLu -rZB -pLe -dUc -lfG -rZB -pLe -dUc -lfG -aUx -kUX -wWk -kGZ -xNp -uuM -jlg -vYg -cEh -kGZ -pul -kUX -lEj -lEj -uFC -biG -nPW -oyV -xaP -qjU -hBf -jlq -hed -hBf -gtF -vHm -hBf -qjU -xwD -cvL -gRG -jnY -tgr -dqK -mlk -dqK -sqZ -kxB -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(173,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -dUc -dUc -dUc -dUc -dUc -pbP -pih -pbP -pih -pbP -cLf -cLf -cLf -dUc -fYe -fYe -wfz -dUc -lEj -dUc -dUc -anz -anz -anz -anz -anz -anz -anz -anz -aku -aku -aku -vfR -vfJ -upd -efF -obA -jxe -aaR -uvx -oix -uEV -rRO -yai -moe -dUc -dUc -dUc -dUc -dUc -dUc -dUc -lEj -lEj -nbu -jWP -wVI -xBs -nbu -aPI -wVI -wpM -nbu -aPI -wVI -wpM -nbu -kUX -qEC -kGZ -pDx -cHt -qpr -cHt -nPf -kGZ -qih -kUX -lEj -lEj -uFC -lCu -pxu -oyV -xaP -nsD -nsD -nsD -nsD -kpL -nsD -nsD -nsD -nsD -rLz -uei -nNN -jnY -fnI -mlk -mlk -mlk -wtF -kxB -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(174,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -lEj -fYe -fYe -cLf -cLf -cLf -anz -anz -anz -anz -cLf -anz -obA -lJq -tsz -lJq -obA -vfJ -egt -nZW -obA -tLh -dlE -soW -wqB -lKN -rRO -mIa -moe -dUc -cLf -iUF -cLf -cLf -cLf -dUc -lEj -lEj -nbu -jxx -bHa -fGZ -nbu -iFK -fDU -oXE -nbu -pxo -unA -fdJ -nbu -kUX -qEC -jjQ -kGZ -kGZ -kGZ -kGZ -kGZ -vuh -wmr -bBr -dUc -dUc -jnY -alX -kQF -bHH -sBe -ceu -gTe -wFG -sji -cjV -sGE -wFG -wFG -nxc -pWG -icr -jHz -jnY -xzT -dqK -mlk -dqK -wtF -kxB -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(175,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -uif -lEj -lEj -lEj -uif -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -obA -ouk -uYH -aQm -obA -vmH -upd -bnb -obA -rHG -bpW -kBw -oix -rxn -rRO -iNC -moe -dUc -cLf -iUF -cLf -cLf -cLf -dUc -lEj -lEj -nbu -szc -azx -gZc -nbu -beW -gyP -aPt -nbu -fhu -pjk -jdo -nbu -kUX -jAD -nLd -nLd -nLd -nLd -nLd -nLd -owL -lqa -bBr -dUc -dUc -jnY -alX -nPW -oVs -oVs -oVs -dtY -oVs -mYD -fXc -gas -oVs -pUa -acG -kFO -acG -fEm -anu -auD -dqK -mlk -dqK -wtF -kxB -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(176,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -shs -shs -shs -shs -dUc -wfz -dUc -shs -shs -shs -dUc -lEj -lEj -lEj -lEj -fYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -obA -lJq -jBM -lJq -obA -sdB -rcH -qsj -obA -mJU -bpW -oix -oix -hmG -gME -xGg -moe -dUc -cLf -iUF -cLf -cLf -cLf -dUc -lEj -lEj -nbu -szc -szc -szc -nbu -beW -beW -beW -nbu -fhu -fhu -fhu -nbu -kUX -kUX -bBr -bBr -bBr -bBr -bBr -bBr -kUX -kUX -kUX -dUc -lEj -uFC -spr -xcm -jQs -luq -ddO -xcm -xcm -rVT -hLq -kWI -xcm -sWN -wfi -cXy -vfL -mWh -jnY -tgr -mlk -mlk -mlk -wtF -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(177,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -obA -cLf -cPl -cLf -obA -vfJ -vfJ -vfJ -obA -pwE -dlE -xjq -feR -moe -fDj -fDj -moe -dUc -cLf -iUF -cLf -cLf -cLf -dUc -lEj -lEj -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -lEj -mUQ -cLf -dUc -cLf -cLf -cLf -dUc -cLf -lEj -lEj -lEj -lEj -uFC -uFC -jnY -oaG -uFC -oTv -fhH -oTv -uFC -oTv -uFC -oTv -spw -oTv -uFC -uFC -pqJ -uFC -fnI -dqK -mlk -dqK -wtF -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(178,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -obA -cLf -cLf -cLf -obA -cLf -cLf -cLf -moe -fDj -fDj -moe -iyE -moe -dUc -dUc -dUc -nmN -cLf -iUF -cLf -cLf -cLf -dUc -cLf -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -uVI -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -lEj -lEj -lEj -lEj -dUc -cLf -mDV -uFC -kEu -iXR -kNH -vpD -hVB -dvX -ktc -ncv -jld -uFC -vkO -eIk -xws -ovB -dqK -dqK -dqK -wtF -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(179,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -lEj -lEj -etW -cLf -cLf -cLf -etW -cLf -cLf -cLf -dUc -dUc -dUc -moe -xVc -moe -dUc -cLf -cLf -cLf -cLf -iUF -cLf -cLf -cLf -dUc -cLf -cLf -lEj -cLf -dUc -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -lEj -mUQ -lEj -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -lEj -lEj -lEj -dUc -cLf -mDV -uFC -kEu -iXR -hVB -hVB -hVB -kEu -kEu -ncv -kEu -uFC -drj -mAF -drj -fnI -dqK -mlk -dqK -wtF -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(180,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -iUF -iUF -cLf -cLf -cLf -dUc -ojz -aHZ -ojz -dUc -dUc -iUF -iUF -iUF -iUF -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -lEj -lEj -cLf -cLf -cLf -lEj -lEj -lEj -lEj -lEj -dUc -cLf -cLf -cLf -dUc -cLf -cLf -lEj -lEj -lEj -lEj -dUc -dUc -mDV -uFC -ivC -iXR -jjG -iXR -opT -iXR -adc -ncv -ncm -uFC -lEj -cxg -cxg -xzT -tgj -tgj -tgj -rwE -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(181,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -mPv -cLf -cLf -cLf -mPv -cLf -iUF -iUF -iUF -dUc -nmN -dXU -dXU -dXU -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -dUc -iUF -iUF -iUF -dUc -lEj -lEj -lEj -lEj -lEj -cLf -cLf -cLf -vKV -uFC -kEu -kEu -fsQ -aGC -vpn -iXR -uvN -wQz -kiW -uFC -lEj -lEj -lEj -cxg -cxg -cxg -cxg -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(182,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -cLf -mUQ -fYe -cLf -cLf -dUc -uFC -kEu -kEu -kEu -aQo -aQo -aQo -aQo -aQo -kEu -uFC -vaU -lEj -lEj -lEj -fYe -fYe -lEj -lEj -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(183,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -uVI -fYe -fYe -fYe -lEj -uFC -uFC -kEu -kEu -kEu -vQb -kEu -kEu -kEu -uFC -uFC -lEj -lEj -lEj -mUQ -uVI -uVI -mUQ -lEj -lEj -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(184,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -uVI -uVI -uVI -mUQ -lEj -lEj -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -fYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(185,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -cLf -cLf -fYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(186,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(187,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(188,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(189,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -dUc -dUc -jQS -jQS -jQS -jQS -jQS -dUc -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(190,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -dUc -cLf -jQS -lgO -czY -kOL -jQS -cLf -dUc -shs -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(191,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -shs -shs -shs -shs -dUc -dUc -dUc -dUc -jQS -pRN -kOL -sgc -jQS -dUc -dUc -cLf -dUc -shs -shs -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(192,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -jQS -jQS -jQS -jQS -jaV -kOL -jaV -jQS -jQS -jQS -jQS -cLf -cLf -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(193,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -dUc -cLf -cLf -cLf -jQS -jQS -kOL -asl -jGs -fin -sad -nRw -jQS -xVt -kOL -jQS -jQS -uep -qDP -qDP -dUc -dUc -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(194,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -dUc -dUc -jQS -tLO -jQS -sDq -aJA -umA -beE -asn -hBF -sAf -jSV -fjb -aJA -lny -jQS -ifV -jQS -qDP -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(195,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -dUc -dUc -jQS -xnB -jQS -eEV -kOL -asl -ogU -qqQ -hBF -kps -pCG -xVt -kOL -wTs -jQS -kGo -jQS -qDP -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(196,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -jQS -hAL -jQS -kOL -lXy -asl -vyj -dcw -kWN -kSy -bPS -xVt -lXy -kOL -jQS -ucG -jQS -qDP -pQm -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(197,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -shs -cLf -jQS -dBj -jQS -tsX -xfJ -tMz -jQS -cxH -aEj -hii -jQS -qoj -axB -dzX -jQS -ioP -jQS -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(198,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -shs -dUc -jQS -hAL -jQS -cCI -hbV -hbV -qRJ -rhs -nVj -rka -xUT -hbV -hbV -tVV -jQS -ucG -jQS -dUc -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(199,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -shs -cLf -jQS -hAL -qrQ -bKQ -hBF -rYZ -xay -kQa -pOQ -pOQ -kQa -ulA -kQa -baP -hli -ucG -jQS -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(200,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -jQS -lcX -jQS -hKN -jVY -hBF -cnt -hbV -hbV -hbV -uyo -kQa -pJt -uhz -jQS -oPs -jQS -cLf -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(201,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -fZF -jQS -jQS -jQS -jQS -jQS -aoP -jQS -tMz -krz -tMz -jQS -kmo -jQS -jQS -jQS -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(202,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -fZF -jQS -kOL -kOL -kOL -fHW -mQM -tMz -fIl -ekp -hTQ -tMz -rRz -pum -kOL -kOL -kOL -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(203,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -fZF -jQS -jQS -eEV -mvh -kOL -fFm -mQM -tMz -fIl -ekp -hTQ -tMz -rRz -joW -kOL -mvh -wTs -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(204,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -fZF -jQS -jQS -kOL -kOL -kOL -fHW -mQM -tMz -fIl -ivh -hTQ -tMz -rRz -pum -kOL -kOL -kOL -jQS -jQS -fZF -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(205,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -fZF -jQS -jQS -jQS -jQS -jQS -jQS -mbA -jQS -tMz -inz -fUp -jQS -poF -jQS -jQS -jQS -jQS -jQS -jQS -fZF -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(206,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -fZF -jQS -jQS -kOL -kOL -kOL -xTa -fyS -koK -udH -onm -jJS -rMP -fJi -oLL -kOL -kOL -kOL -jQS -jQS -fZF -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(207,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -fZF -jQS -jQS -eEV -mvh -kOL -gzj -xdz -pZG -sQP -bnn -dTA -pZG -bvX -eNU -kOL -mvh -wTs -jQS -jQS -fZF -dUc -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(208,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -fZF -jQS -jQS -kOL -kOL -kOL -xTa -aWi -rgy -gVi -hyk -set -iLh -aWi -oLL -kOL -kOL -kOL -jQS -jQS -fZF -cLf -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(209,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -fZF -jQS -jQS -jQS -jQS -jQS -jQS -rwt -nrL -jAU -hUU -vDw -nrL -uIF -jQS -jQS -jQS -jQS -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(210,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -fZF -jQS -jQS -jQS -jQS -jQS -jQS -jQS -gmm -pXV -hNP -pXV -uak -jQS -jQS -jQS -jQS -jQS -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(211,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -fZF -fZF -fZF -fZF -jQS -jQS -xna -xna -fsV -bfX -xna -xna -xna -jQS -jQS -fZF -fZF -fZF -fZF -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(212,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -fZF -jQS -jQS -eFJ -xna -xna -tBC -xna -xna -xna -jQS -jQS -fZF -tyd -cLf -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(213,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -shs -shs -dUc -fZF -jQS -jQS -xna -xna -qEr -hFN -qEr -khJ -sug -jQS -jQS -fZF -cLf -shs -shs -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(214,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -shs -cLf -fZF -jQS -jQS -xna -xna -xna -xna -xna -xna -lHp -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(215,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -fZF -jQS -jQS -jQS -xna -oVV -dJM -jvV -xna -jQS -jQS -jQS -fZF -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(216,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -fZF -jQS -jQS -jQS -jQS -jQS -jQS -jQS -jQS -jQS -fZF -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(217,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -fZF -jQS -jQS -jQS -jQS -jQS -jQS -jQS -fZF -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(218,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -nmN -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -fZF -fZF -fZF -fZF -fZF -fZF -fZF -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(219,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -xUA -uuN -oJv -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(220,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -nmN -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(221,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -cLf -cLf -dUc -cLf -cLf -cLf -dUc -cLf -cLf -cLf -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(222,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -shs -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(223,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(224,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(225,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -nmN -dUc -dUc -cLf -dUc -dUc -nmN -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(226,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -dUc -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(227,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hYe -bJX -hYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(228,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -rYo -rYo -cAC -rYo -rYo -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(229,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -uFK -rYo -fsU -jzV -kde -rYo -uFK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(230,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hYe -rYo -lFK -bJX -bJX -tnD -rQg -rYo -hYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(231,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hYe -jzq -wkA -bJX -oLe -szR -bJX -wEs -hYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(232,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hYe -rYo -hNg -sUc -gty -bJX -qJV -rYo -hYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -tyd -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(233,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -uFK -rYo -iqa -kMj -eam -rYo -uFK -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(234,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -dUc -rYo -rYo -fxp -rYo -rYo -dUc -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(235,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hYe -hYe -hYe -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(236,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(237,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(238,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(239,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(240,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(241,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(242,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(243,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(244,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(245,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(246,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(247,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(248,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(249,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(250,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(251,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(252,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(253,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(254,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(255,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} - -(1,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(2,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(3,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(4,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(5,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(6,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(7,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(8,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(9,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(10,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(11,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(12,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -hhX -hhX -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(13,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(14,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mUQ -kLL -unk -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(15,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -qHE -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(16,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -vYz -aUf -vYz -vYz -vYz -lEj -fYe -fYe -fYe -fYe -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(17,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -vYz -aUf -vYz -vYz -tus -rhh -qZR -vYz -aUf -aUf -aUf -lEj -lEj -lEj -lEj -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(18,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -vYz -vYz -jsn -qHs -czT -sHz -rRL -jVu -aDI -ory -aTE -aUf -aUf -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(19,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -aUf -oJG -kvo -qyq -wUH -wUH -hqd -rqP -jin -qyq -fUv -pkA -aUf -lEj -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(20,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -jrm -qyq -qyq -doO -doO -qyq -sRq -tSX -nzC -qyq -wMe -wnw -fYe -fYe -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(21,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -nYj -qyq -wUH -qbk -doO -xfa -wUH -rqP -slG -doO -wJk -wnw -fYe -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(22,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -nYj -mua -qyq -qyq -wUH -wUH -sRq -wqq -lPC -qyq -wMe -wnw -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(23,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -jrm -qyq -xfa -sRq -qyq -jEd -xfa -qyq -dRZ -qyq -wJk -wnw -fYe -qHE -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(24,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -jrm -qyq -sRq -xfa -qyq -xfa -sRq -qyq -vZb -sRq -wJk -wnw -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(25,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -jrm -pJF -qyq -qyq -qyq -qyq -qyq -wUH -vVj -iAQ -oDw -wnw -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(26,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -urC -jrm -qyq -bDN -tWl -iyg -bcg -tmQ -duf -lSI -gSJ -tIO -wnw -fYe -fYe -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(27,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -aUf -ray -ogP -qyq -qyq -xfa -qyq -qyq -qyq -czD -isO -oqV -vYz -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(28,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -aUf -aUf -nEY -egz -egz -nsi -nQy -tuF -wUH -eZo -wCR -vYz -vYz -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(29,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -vYz -nck -nck -nck -aUf -aUf -aUf -eSs -iXA -vYz -vYz -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(30,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -foL -wku -plV -iVG -eYP -gHN -gHN -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(31,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -aUf -rup -rup -rup -vYz -hhX -foL -wku -dPG -fUx -htV -gxy -dni -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(32,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -aUf -aUf -cWi -xjw -guN -vYz -vYz -gHN -uTk -hro -eYP -eYP -rup -gHN -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(33,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -vYz -drz -xqE -qRe -nxY -iON -waZ -fxg -xZV -vqr -foL -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(34,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -vYz -fJV -wdI -lHX -rdU -rmU -qOZ -kYs -eZu -dPG -foL -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(35,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -vYz -vYz -rap -bky -rCY -vYz -aUf -eYP -fkF -xHT -gHN -hhX -hhX -hhX -jVV -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(36,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -vYz -aUf -aUf -vYz -vYz -hhX -foL -wku -dPG -foL -hhX -hhX -hhX -jVV -hhX -lEj -lEj -lEj -hhX -hhX -fZF -hhX -hhX -hhX -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(37,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -foL -vIB -dPG -foL -hhX -hhX -fYe -fYe -fYe -lEj -lEj -fYe -fYe -qHE -fZF -hhX -hhX -hhX -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(38,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -oID -oID -oID -oID -oID -oID -oID -jVV -hhX -hhX -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -eYP -gck -kae -eYP -fYe -fYe -qHE -fYe -fYe -fYe -fYe -fYe -fYe -fYe -fZF -fZF -fZF -fZF -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(39,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -jVV -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -lEj -lEj -iJm -iJm -eYP -iBK -yca -eYP -dvC -mUQ -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(40,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -qAp -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mUQ -kLL -cts -gQL -lCA -pux -eYP -iJm -mUQ -mUQ -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(41,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -uif -uif -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -iJm -iJm -foL -cuE -gZt -dPG -foL -iJm -lEj -lEj -lEj -lEj -fnh -fnh -fnh -fnh -fnh -fnh -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(42,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -jVV -jVV -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -hSF -lEj -lEj -lEj -lEj -iJm -iJm -foL -vPe -gLE -plV -foL -dcl -qHE -lEj -lEj -lEj -fnh -vTt -dBK -aQD -vTt -fnh -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(43,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -hhX -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -qwQ -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -lEj -lEj -gNV -gNV -gNV -gNV -gNV -gNV -gNV -uif -lEj -lEj -lEj -lEj -iJm -iJm -foL -ujx -fjF -plV -foL -iJm -fYe -fnh -fnh -fnh -fnh -aQD -mlK -mlK -fSp -fnh -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -nTN -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(44,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -iaN -sWY -iaN -hhX -hhX -yes -aZg -aZg -aZg -aZg -aZg -aZg -lEj -gNV -bMZ -tKm -lib -qmf -iSw -gNV -lEj -lEj -lEj -lEj -lEj -iJm -iJm -eYP -eYP -qMK -tAk -gHN -iJm -iJm -fnh -rLw -vMm -fnh -dBK -mlK -mlK -dBK -fnh -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(45,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lLo -sMT -lLo -hhX -hhX -sIN -umg -umg -umg -umg -umg -umg -lEj -gNV -rwu -eiI -hvV -kkK -pha -gNV -lEj -lEj -lEj -lEj -lEj -iJm -iJm -iJm -foL -wku -plV -gHN -fYe -jsO -fnh -diz -jMW -qlh -vTt -aQD -dBK -vTt -fnh -lEj -lEj -fnh -fnh -fnh -fnh -fnh -fnh -fnh -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(46,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -pEH -pEH -pEH -pEH -lEj -iaN -iaN -aJP -iaN -sdc -sdc -tEd -tEd -sdc -tEd -tEd -tEd -tEd -dLR -gNV -ayA -wqW -tXr -qia -qtT -gNV -lEj -lEj -lEj -lEj -lEj -lEj -iJm -uKm -eYP -pmp -ldf -eYP -fnh -jsO -fnh -fnh -jMW -fnh -fnh -fnh -fnh -fnh -fnh -fnh -fnh -fnh -uUr -sjX -fnh -wXY -whx -fnh -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(47,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uKu -pEH -uKu -uKu -uKu -iaN -iaN -iig -qdW -tCt -sdc -ycY -aTM -bvM -wEL -oZQ -oZQ -oZQ -oZQ -oZQ -gNV -gNV -gNV -oYE -gNV -gNV -gNV -dLR -lEj -lEj -lEj -lEj -lEj -lEj -fnh -mUA -iLo -lYg -oHC -fnh -jsO -fnh -lTj -jMW -jSE -jHQ -jHQ -wdO -jHQ -jHQ -atw -vbF -pTO -lil -vvY -mkc -kzS -uym -fnh -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(48,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uKu -uKu -ixo -dcg -pdj -iaN -kVX -bUJ -rOL -gsn -scw -mnG -ghU -unF -puu -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -oLU -fLe -oOV -xtB -xRj -hSM -kYT -vLs -aCv -vLs -aCv -jsO -jsO -kGS -rPT -atT -cMK -jsf -fnh -kGS -fnh -jxR -xfM -lYB -frh -fnh -fnh -fnh -fnh -hCN -pMo -fnh -fnh -fnh -fnh -qlO -guP -fnh -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(49,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -pEH -bLu -xok -vfg -hXH -iaN -mPH -dhv -wWH -iWu -qug -vQa -iJr -skL -gcU -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -oLU -fLe -oOV -fLe -qlE -hXL -kYT -cGs -wWJ -wWJ -aCv -hvw -fXo -fnh -eOA -jSE -hgS -jHQ -mjU -jHQ -bhV -jHQ -jHQ -tMF -uoi -fnh -wLA -uaC -fnh -qxG -fnh -fnh -oOF -onb -fnh -fnh -fnh -fnh -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(50,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -oID -oID -oID -jVV -oID -oID -oID -jVV -oID -oID -oID -jVV -jVV -jVV -jVV -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uKu -xSi -efm -qXY -qXY -iaN -gEQ -syL -kbg -xKh -sdc -jZG -pEk -xXo -cpd -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -wkr -fLe -oOV -fLe -xRj -dWl -ygc -wWJ -wWJ -wWJ -fvF -duU -hmA -nJD -hyL -kJW -kYT -kYT -kYT -kYT -kYT -kYT -haF -wKO -trP -fnh -xRP -gzS -fnh -qxG -fnh -bEo -ljt -xGe -nFS -fnh -dxD -aRn -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(51,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -oID -oID -oID -jVV -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -pEH -izF -jqe -kVS -qXY -wds -uRO -nCc -kbg -cwB -sdc -dIG -thb -xXo -cpd -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -oLU -fLe -oOV -fLe -xRj -xXY -kYT -jsO -jsO -jsO -aCv -wWJ -jsO -aCv -ygt -dXH -kYT -bUZ -vzG -swS -mBD -kYT -fnh -fnh -fnh -fnh -iJB -cDD -fnh -jbo -fnh -ybp -xlI -hLR -bjo -fnh -ibx -ibx -rFK -lEj -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(52,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -mIW -mIW -mIW -mIW -dOG -dOG -dOG -dOG -dOG -dOG -dOG -dOG -dOG -dOG -dOG -lEj -uKu -izF -efm -ljG -qXY -iaN -gyS -mLn -swj -eFu -etV -twR -thb -xXo -cpd -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -wOU -wOU -hpT -wOU -wOU -wOU -wOU -wOU -wOU -kYT -jsO -wWJ -jsO -bGk -bGk -tuL -bGk -rRy -cOb -ycI -vMN -ahq -lxI -bCD -xgn -fMp -lgA -sCT -fnh -qxG -fnh -fnh -hkm -fnh -fnh -fnh -fnh -uXS -fnh -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(53,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -xrb -xrb -oPe -oPe -baH -baH -baH -baH -baH -baH -baH -fZF -fZF -fZF -hhX -mIW -cYG -fDV -tMf -dOG -qeg -wRf -wsc -yiv -xvr -dOG -qog -gcQ -bEn -dOG -lEj -pEH -mRE -rFN -bPu -uKu -iaN -fON -jds -lRJ -sdc -sdc -rWv -mlf -xXo -sMV -oZQ -oZQ -aof -oZQ -oZQ -oZQ -rXd -qqL -mUi -fpx -rDE -uIx -dCv -fxF -fxF -kYT -jsO -taj -jsO -bGk -mqc -mfw -bGk -bGk -xUJ -ncR -bGk -ahq -sco -egv -tqV -tqV -njM -wnT -fnh -qxG -jOB -wUS -wUS -jHp -tGc -qrg -eQI -iMT -fnh -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(54,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -xrb -xrb -rri -rri -rri -baH -pjt -glk -baH -jfE -wrG -baH -fZF -fZF -fZF -hhX -mIW -lrV -rQY -kex -dOG -oxe -gYH -vrU -uDZ -wmc -dOG -dOG -dOG -mkN -dOG -lEj -lEj -uKu -uKu -uKu -uKu -iaN -iaN -dlY -iaN -sdc -aof -oZQ -qNz -xXo -sMV -oZQ -oZQ -oZQ -oZQ -oZQ -oZQ -rXd -gGp -mUi -rxK -tCm -lwu -tMu -fxF -fxF -kYT -wWJ -wWJ -jsO -bGk -sHo -mJD -tGR -hNN -pLA -fNw -wDH -ahq -vUo -laf -kuy -bVY -tqV -eXW -fnh -mhc -fnh -fnh -fnh -fnh -fnh -fnh -eAq -lGe -fnh -fnh -lEj -lEj -lEj -lEj -fYe -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(55,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -xrb -rri -rri -rri -rri -baH -aMa -ktD -baH -eBh -lnp -baH -jOV -jOV -mIW -mIW -mIW -vED -lLO -ioZ -dOG -wum -tYI -rpM -sap -wus -gFI -ouF -ouF -lbr -dOG -lEj -lEj -lEj -pEH -uKu -pEH -iaN -qIa -fBm -jUm -sdc -oZQ -oZQ -jzI -ayG -uyu -sYb -sYb -sYb -sYb -sYb -hCJ -wOU -aqw -hSA -mBY -rLb -rLb -bHg -mYd -uUP -kYT -wWJ -jsO -jsO -bGk -jfq -dhj -dhj -xmy -sZH -pWr -pNW -ahq -kuI -sKt -kSU -uXQ -bHc -tBo -jCN -gbF -ukv -uOJ -evQ -evQ -evQ -fnh -rcy -cIi -siK -fnh -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(56,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -xrb -rri -rri -rri -jOV -baH -cfM -dAG -baH -rVv -baH -baH -wSc -jYh -hKM -hEX -mIW -mIW -xZO -mIW -dOG -bFe -fir -icp -mlq -lJT -dOG -gAQ -eBa -eWJ -dOG -lEj -lEj -lEj -lEj -lEj -lEj -iaN -iaN -poi -poi -poi -aAl -qrs -rXj -eDa -iJr -xXo -xXo -xXo -xXo -gBA -qyI -wOU -qfJ -mUi -mwc -rLb -ejl -eqv -udi -oTW -kYT -wWJ -kYT -bGk -bGk -bGk -lsT -bGk -nNo -imI -mXp -qml -ahq -qDH -dzA -mZr -wWu -jaf -gey -cDD -prS -asz -uOJ -evQ -evQ -evQ -fnh -qpR -lGe -oJJ -fnh -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(57,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -xrb -rri -rri -rri -jOV -aHM -aYj -aYj -aYj -aYj -aYj -aOp -wSc -tfZ -mIW -mZK -mIW -qir -loT -lRL -dOG -dOG -dOG -dOG -nor -dOG -dOG -jqd -jmU -mKW -dOG -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -poi -xeh -jir -sBb -pic -gli -gBq -gBq -dPk -gBq -oAH -uaN -uyL -kyA -wOU -wOU -cHp -wOU -pXX -wOU -wOU -wOU -wOU -kYT -taj -kYT -ogL -cPZ -auB -rVL -bGk -qAU -cJL -iyA -sIl -ahq -cDD -cDD -cDD -vhz -vhz -cDD -cDD -krj -puV -iMq -iMq -iMq -iMq -fnh -fnh -fnh -fnh -fnh -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(58,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -xrb -vVe -rri -rri -jOV -wSc -wSc -wSc -wSc -wSc -wSc -wSc -wSc -jYh -vog -rrn -edH -kOn -jlC -ipJ -pWW -eQF -mIW -xDW -fLi -prk -dOG -dOG -dOG -dOG -dOG -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -poi -rEK -poi -sdc -sdc -aHc -aHc -aHc -sdc -sdc -guF -nso -kmX -aIU -uVU -uVU -nKA -wOU -wAm -lzu -wOU -lEj -lEj -jsO -wWJ -kYT -auB -waT -xiw -ycT -aPC -jql -sTj -pDe -fqt -jIn -ryt -oZX -xHf -evQ -evQ -evQ -evQ -fpi -lNv -iMq -ygh -wca -gAg -oVC -vYQ -ezM -qMn -iMq -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(59,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -oPe -wkP -rri -rri -jOV -wSc -wSc -wSc -wSc -wSc -wSc -wSc -wSc -jKc -vog -mQo -mQo -eWB -uIb -gNP -hdq -vjA -tIr -jRJ -uEg -xhb -xey -egY -rai -uZc -lEj -lEj -fYe -fYe -fYe -lEj -lEj -lEj -lEj -poi -tdq -xTb -sdc -oZQ -oZQ -oZQ -oZQ -oZQ -sdc -tom -oXc -uiL -ijg -xXo -xXo -rkr -wOU -cNr -ugI -wOU -lEj -lEj -jsO -wWJ -kYT -xtb -fwJ -ipZ -mjj -aPC -jql -sTj -fGc -dTh -kxS -mUp -eAZ -evQ -evQ -evQ -evQ -evQ -fpi -aTr -iMq -saA -cDV -spA -spA -spA -spA -gBY -iMq -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(60,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -oPe -eTd -rXQ -xEZ -gWG -nun -wSc -wSc -wSc -wSc -wSc -wSc -wSc -eJT -vog -bnr -cYS -iRR -fsd -wjJ -vUn -weR -pLd -afR -mEy -xhb -cJZ -rai -rai -uZc -lEj -lEj -wkX -fYe -fYe -fYe -fYe -fYe -fYe -poi -lLr -poi -sdc -oZQ -oZQ -oZQ -oZQ -oZQ -sdc -lwW -uyL -uSA -wDv -gli -gli -wEd -wOU -ntd -pZj -wOU -lEj -lEj -jsO -wWJ -kYT -auB -auB -auB -vQn -aPC -eeQ -rFL -wLP -lVF -jIn -uuW -svl -evQ -evQ -evQ -evQ -evQ -uEW -nlu -tOa -foq -cNG -vtv -lVD -iom -tjn -aRZ -iMq -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(61,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -fYe -oPe -oPe -oPe -oPe -jOV -skb -wSc -wSc -wSc -wSc -wSc -wSc -wSc -jYh -vog -idB -mQo -kUG -dkq -tgv -peD -vjA -pIF -wrx -pBS -vWF -uZc -uZc -uZc -uZc -lEj -hen -hen -hen -fYe -fYe -fYe -fYe -fYe -fYe -fYe -lEj -sdc -oZQ -oZQ -aof -oZQ -oZQ -kUd -twR -xXo -xXo -qif -vOu -vOu -vOu -epK -epK -epK -epK -fnh -jsO -jsO -taj -kYT -jEu -oYC -auB -quz -bGk -ebk -jPs -hEV -dpT -bGk -eqD -svl -evQ -evQ -evQ -evQ -evQ -fpi -iEA -iMq -apk -cNG -hce -wLq -dpj -cUm -tve -iMq -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(62,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lEj -lEj -lEj -lEj -jOV -skb -wSc -wSc -wSc -wSc -wSc -uhC -nvR -uEX -vog -fPB -ciy -eLe -xOO -lJw -lJw -oIr -mIW -xtp -oPN -bWJ -uZc -lEj -lEj -lEj -lEj -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -fYe -lEj -sdc -oZQ -oZQ -oZQ -oZQ -oZQ -sdc -kQJ -xXo -xXo -qSG -pCT -kjh -xiF -nXe -pkt -xMY -aDW -fnh -jsO -rNJ -rNJ -kYT -kYT -bGk -bGk -bGk -bGk -bGk -bGk -bGk -bGk -bGk -dkv -svl -evQ -evQ -evQ -evQ -evQ -fpi -uXR -iMq -gei -bQl -kpG -xXz -niI -mnA -jKj -iMq -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(63,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lEj -lEj -lEj -lEj -jOV -skb -wSc -wSc -wSc -wSc -wSc -vse -jOV -jOV -mIW -mIW -mIW -mIW -mIW -cFK -cFK -mIW -hED -crb -iqE -mMp -hED -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -fYe -lEj -sdc -oZQ -oZQ -oZQ -oZQ -oZQ -sdc -ahV -xXo -xXo -qSG -fSq -tiv -pIa -gBu -pWL -kra -kra -nGv -bgY -bgY -bgY -dog -jsO -fnh -wnL -oFa -wnL -igq -kKK -nbG -nbG -wZw -cCP -uPM -evQ -evQ -evQ -evQ -evQ -fpi -pdx -iMq -iMq -pwV -rUf -ilx -iMq -beR -iMq -iMq -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(64,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lEj -lEj -lEj -lEj -jOV -kDb -ctL -qCU -duB -nvR -fDi -uEX -jOV -lEj -lEj -lEj -lEj -mIW -sUM -rhc -uMo -hED -kqV -wow -ylZ -buu -hED -hED -lEj -wkX -fYe -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -fYe -lEj -sdc -sdc -sdc -sdc -sdc -sdc -sdc -cBz -xXo -xXo -uPi -pCT -ydC -pWg -jLV -mlh -jpx -aLE -fnh -jsO -rNJ -koX -dog -jsO -fnh -igq -igq -igq -igq -aBb -nkd -lYu -ylw -tAf -eau -qnq -qnq -ecj -qnq -mLA -aAn -xih -iMq -sok -eZg -mnC -ryR -iMq -avC -oEC -iMq -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(65,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lEj -hHw -hHw -hHw -jOV -wSc -rwW -wSc -jOV -jOV -jOV -jOV -jOV -lEj -lEj -lEj -lEj -mIW -thT -thT -vlc -hED -fye -uaT -ccI -cPP -tTz -hED -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -lEj -lEj -lEj -bNL -xsj -lFN -qyg -gJA -dAC -piF -kah -odi -eYd -vOu -hHa -wXh -jOZ -iKn -pbR -fte -fnh -aCv -cGs -vFq -dog -jsO -fnh -evQ -evQ -evQ -igq -hfV -fow -cQK -wZw -dYr -wPP -tLs -uqh -eCW -uqh -xYG -sQD -kod -iMq -wxi -hru -vIt -vWH -iMq -lsq -iBP -iMq -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(66,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -hHw -uRG -oyP -jOV -wSc -rwW -wSc -jOV -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mIW -sTS -thT -thT -hED -stF -uaT -bZI -ipc -tME -hED -lEj -fYe -hen -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -lEj -lEj -lEj -bNL -xWQ -cVb -khi -odG -bNL -sdc -sdc -jiv -sdc -vOu -vOu -rHq -nKn -gnE -xeA -otY -fnh -jsO -rNJ -blM -dog -jsO -fnh -evQ -evQ -evQ -igq -ttv -jDQ -xhJ -xhJ -xhJ -xhJ -gvw -gws -iYB -gws -gvw -xhJ -dpe -aOm -gjB -txF -wxQ -xMZ -iMq -frv -cxP -iMq -lEj -lEj -lEj -fYe -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(67,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -jwa -fYe -hHw -uRG -oyP -dAq -xbr -qFS -wSc -jOV -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mIW -thT -thT -thT -hED -mqA -uaT -tGw -ipc -eQJ -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -fYe -fYe -lEj -lEj -lEj -lEj -bNL -exg -bcj -mKo -fzg -omB -sdc -rDa -ljk -jTa -iII -vOu -dDm -xeA -qBu -fIm -otY -fnh -jsO -jsO -rNJ -kpx -jsO -fnh -gWX -bAV -nnj -igq -ttv -jDQ -xhJ -tBF -tsf -gvw -gYT -xdQ -eCR -xck -jpv -xhJ -qvV -aOm -aOm -aOm -aOm -aOm -aOm -aOm -aOm -aOm -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(68,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -jwa -fYe -hHw -uRG -jWm -hHw -hHw -dAq -jOV -jOV -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mIW -thT -thT -thT -hED -tSj -jQc -rAq -xNy -iUV -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -fYe -lEj -lEj -lEj -lEj -bNL -xgQ -oRE -kZj -fzg -aED -sdc -qnm -hQj -lgx -gvK -vOu -vOu -vOu -vOu -vOu -vOu -fnh -jsO -jsO -rNJ -kpx -qcU -fnh -jbG -ubo -cXd -vxn -hex -jDQ -xhJ -vzW -hUD -gvw -kvk -cLD -ezF -xnq -qJo -xhJ -keg -unE -oZt -sjF -rjH -nXw -fnU -udG -xzP -oZt -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(69,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jwa -fYe -hHw -uRG -eXu -aCb -aCb -aCb -aCb -hHw -hHw -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mIW -mIW -mIW -mIW -hED -hED -hnJ -hED -hED -hED -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -bNL -hxg -bcj -qZo -fPV -oQs -sdc -qnm -tFD -wjC -rPt -sdc -lEj -lEj -lEj -lEj -lEj -lEj -jsO -rNJ -rNJ -kpx -rNJ -eSL -mDT -cyw -uSN -cbr -nSP -lVo -xhJ -oVn -fwU -gvw -wYo -cLD -nzb -xnq -muE -xhJ -oZt -fQG -oZt -oZt -oZt -dlp -aRN -nqD -hZN -oZt -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(70,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -hHw -uRG -uRG -uRG -uRG -uRG -uRG -uRG -hHw -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hED -npn -okF -aum -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -bNL -pNs -dpH -sLa -iIq -bNL -sdc -sdc -sdc -sdc -sdc -sdc -lEj -lEj -fnh -fnh -fnh -fnh -fnh -qcU -kpx -kpx -jsO -fnh -sxa -mpp -iac -igq -ttv -asz -xhJ -cEV -lMx -iyF -vCQ -rzD -bsM -nFI -riJ -xhJ -tHA -hsE -etg -oZt -rDx -hPb -fnU -xzP -nrW -oZt -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(71,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hHw -hHw -uRG -uRG -uRG -uRG -uRG -uRG -hHw -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hED -ocl -kkC -phJ -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -bNL -bNL -bNL -bNL -bNL -bNL -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fnh -bmu -tMP -sHa -pSV -kpx -bzu -qcU -jsO -fnh -igq -igq -igq -igq -rJg -tDm -xhJ -kpP -gvw -gvw -oRR -nAs -wYY -tSn -glG -xhJ -mfP -xOF -dgS -kzI -cNk -gtO -gcy -aRN -aRN -oZt -lEj -fYe -lEj -mUQ -jOM -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(72,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hHw -hHw -hHw -hHw -hHw -hHw -hHw -hHw -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hED -hED -hED -hED -hED -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -gYW -gYW -lEj -lEj -lEj -fnh -bmu -bMl -uJA -fnh -jsO -rNJ -doZ -jsO -lEj -lEj -lEj -lEj -igq -igq -igq -xhJ -iDw -plH -gvw -eOI -xYZ -jlb -whG -nUi -xhJ -cgB -kHw -teV -oZt -rix -ixR -qro -hOh -vau -oZt -lEj -kqj -xcq -gVN -dKp -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(73,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -gYW -gYW -gYW -gYW -gYW -jbP -gLD -gYW -lEj -lEj -lEj -fnh -fnh -fnh -fnh -fnh -jsO -aCv -tBL -aCv -iwP -iwP -iwP -iwP -lEj -lEj -lEj -gvw -gvw -gvw -gvw -gSI -jsU -dBu -sSP -pJJ -xhJ -oZt -oZt -oZt -oZt -nZb -fPi -iHL -rwq -eSH -ria -xcq -uBT -fYe -mUQ -agP -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(74,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -mEN -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -dTy -vsD -oMn -qWh -pFa -gYW -qIr -lCR -gYW -gYW -gYW -gYW -iwP -iwP -iwP -iwP -nev -dtt -dtt -dtt -dtt -dtt -iwP -iwP -iwP -lEj -lEj -lEj -lEj -lEj -lEj -gvw -gjt -jEf -kQV -uKv -evg -gvw -lEj -lEj -lEj -oZt -jCU -tkh -cgw -fMY -uHE -oZt -lEj -lEj -lEj -lEj -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(75,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -pnS -fYe -fYe -fYe -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -unk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -fdQ -oMn -ocJ -brc -ofc -qUz -hhU -xCI -gYW -xQX -dTe -gYW -nev -dtt -dtt -nev -dtt -dtt -dtt -nev -iwP -dtt -iwP -iwP -iwP -lEj -lEj -lEj -lEj -lEj -lEj -gvw -gvw -gvw -gvw -gvw -gvw -gvw -lEj -unk -unk -oZt -oZt -oZt -oZt -oZt -oZt -oZt -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(76,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -pnS -pnS -pnS -pnS -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -iRm -fYe -lEj -lEj -lEj -gYW -gYW -gYW -gYW -gYW -wOp -uhs -kOT -wAv -rQS -liE -ofc -irK -gYW -gYW -dTe -ely -dtt -dtt -dtt -dtt -dtt -dtt -dtt -iwP -iwP -dtt -dtt -nev -mGn -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -nho -unk -hhX -hhX -hhX -hhX -hhX -unk -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(77,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oPL -pnS -pnS -fYe -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -unk -fYe -fYe -lEj -fYe -oSk -esQ -wAv -wlq -gYW -gYW -gYW -gYW -gYW -slb -gYW -vFg -wjI -wjI -wjI -wjI -gYW -iwP -iwP -iwP -dtt -dtt -iwP -dtt -uXD -iwP -dtt -dtt -dtt -bTO -gMk -azk -azk -azk -azk -azk -azk -lEj -lEj -gMk -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -unk -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(78,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -pnS -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -lEj -lEj -fYe -fYe -fYe -fYe -aza -lhO -wAv -aiE -dKA -gYW -mVU -mnD -mVU -gYW -gYW -gYW -wjI -gYW -gYW -gYW -dSl -gYW -uXD -uXD -iwP -ldo -ldo -ldo -ldo -idH -ldo -ldo -qhm -uXD -uXD -uXD -cHs -uXD -uXD -uXD -lEj -azk -azk -azk -azk -azk -lEj -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -unk -tJk -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(79,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -lEj -lEj -fYe -fYe -fYe -fYe -lEj -oSk -wAv -wAv -pau -gYW -gYW -tth -gYW -gYW -kIB -wAv -xiM -gYW -rFb -jzN -jIe -jzN -fdy -chW -jzN -jzN -jzN -jzN -jzN -jzN -jzN -jzN -jzN -chW -jkL -jzN -qIf -vwL -pbn -uXD -lEj -lEj -uet -gMk -lEj -azk -azk -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(80,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -lEj -fYe -gYW -gYW -gYW -gYW -wAv -gYW -gYW -gYW -wjI -wjI -wjI -wjI -wjI -wjI -wjI -gYW -cYC -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -dFc -uXD -uXD -uXD -lEj -lEj -lEj -lEj -azk -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -unk -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(81,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -lEj -gYW -dum -hdN -bpN -hdN -gYW -ucb -wPn -iZr -gYW -gYW -gYW -gYW -gYW -gYW -gYW -uGW -jCP -rCL -sTB -kAc -kAc -kAc -kAc -kAc -kAc -sTB -sTB -sTB -sTB -kAc -kAc -kAc -sTB -vAo -jCP -sZF -pLP -kEs -uXD -lEj -lEj -lEj -lEj -azk -lEj -lEj -unk -unk -unk -lEj -unk -unk -unk -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(82,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -lEj -lEj -lEj -gYW -kwW -tQy -gYW -ofc -gYW -cLI -dnw -jBh -gYW -aLN -aLN -aLN -aLN -aLN -uXD -jYf -jCP -vVC -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -mJV -jCP -sZF -pLP -pLP -uXD -lEj -lEj -lEj -lEj -azk -azk -azk -azk -unk -dra -lEj -ahX -lEj -lEj -lEj -mxf -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(83,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -lEj -gYW -hbQ -saY -gYW -qIP -gYW -fET -miV -wjI -gYW -aLN -aLN -aLN -aLN -aLN -ntQ -hPS -jCP -sby -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -hrI -yeK -wDr -uXD -uXD -uXD -uKm -uKm -lEj -lEj -lEj -lEj -lEj -azk -iEl -gMk -uet -uet -lEj -gMk -mGM -unk -unk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(84,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -lEj -lEj -gYW -gYW -gYW -gYW -ofc -gYW -gYW -gYW -wjI -oTe -aLN -aLN -aLN -aLN -aLN -hVN -hPS -jCP -sby -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -hrI -jCP -lGP -rzJ -gMk -dij -atB -uKm -lEj -lEj -lEj -lEj -azk -azk -unk -lEj -gMk -gMk -gMk -alx -scS -ejH -unk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(85,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -unk -unk -gbv -any -unk -unk -lEj -lEj -gYW -kGy -mMN -jVk -jVk -fuk -tFf -xiM -oTe -aLN -aLN -aLN -aLN -jhc -jYG -hPS -jCP -sby -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -idV -hrI -jCP -khL -uXD -uet -gMk -mZs -lEj -lEj -lEj -lEj -lEj -azk -lEj -lEj -lEj -gMk -lEj -lEj -ent -bCg -unk -unk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(86,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -unk -unk -fYe -fYe -fYe -fYe -unk -unk -lEj -gYW -kGy -mMN -qwM -gYW -gYW -gYW -wjI -oTe -aLN -aLN -aLN -aLN -aLN -vzi -hPS -jCP -sby -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -hrI -jCP -lGP -rzJ -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -azk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(87,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -dsG -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -unk -fYe -fYe -fYe -nQT -fYe -fYe -unk -jCD -gYW -gYW -gYW -eiZ -gYW -bXD -gYW -wjI -gYW -aLN -aLN -aLN -aLN -aLN -uXD -hPS -jCP -sby -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -hrI -jCP -qgy -uXD -uXD -uXD -gMk -lEj -lEj -lEj -lEj -lEj -azk -lEj -lEj -lEj -rnk -rnk -rnk -rnk -rnk -rnk -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(88,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -okm -okm -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -fYe -fYe -fYe -dsG -dsG -lEj -lEj -unk -fYe -ivx -ivx -ivx -ivx -fYe -eOx -wMY -apb -nbf -csr -poj -yib -lan -gYW -wjI -gYW -aLN -aLN -aLN -aLN -aLN -uXD -cDl -jCP -vVC -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -sxV -mJV -jCP -sZF -pLP -kEs -uXD -gMk -lEj -lEj -lEj -lEj -gMk -azk -lEj -lEj -lEj -rnk -vGs -dwI -dwI -nnM -rnk -rnk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(89,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -fYe -fYe -fYe -dsG -dsG -dsG -dsG -any -fYe -ivx -ivx -ivx -ivx -fYe -eOx -fFt -cTH -bwt -mtS -hXf -jit -hfn -gYW -vFg -gYW -gYW -gYW -nzk -jJb -jJb -jJb -ata -jCP -hbb -xkO -nhm -nhm -nhm -nhm -nhm -nhm -xkO -xkO -xkO -xkO -nhm -nhm -nhm -xkO -lCp -jCP -sZF -pLP -pLP -uXD -gMk -gMk -lEj -lEj -lEj -azk -azk -gMk -uet -lEj -rnk -iQt -noh -lpc -gMr -iuA -rnk -cTm -rnk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(90,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -fYe -fYe -fYe -fYe -fYe -unk -fYe -fYe -fYe -fYe -fYe -fYe -unk -jCD -jCD -jCD -eYI -yfw -mfh -tiB -gYW -wjI -wjI -wjI -eHU -nzk -dRq -bfN -uhi -bOr -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -uLi -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -jCP -wLu -uXD -uXD -uXD -lEj -gMk -uet -uet -lEj -azk -lEj -gMk -gMk -gMk -aXD -iml -evT -dca -kBx -pRq -pxR -xpx -cXP -aIo -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(91,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -fYe -fYe -fYe -fYe -unk -unk -fYe -fYe -fYe -fYe -unk -unk -lEj -lEj -jCD -jCD -jCD -jCD -fcH -gYW -wPn -gYW -cjp -wjI -nzk -qAh -mwx -ktr -oGD -oKx -oKx -kIm -ieP -cUv -oKx -mCn -dgY -oKx -oKx -dzu -oKx -fuZ -mCn -cUv -nsY -qYe -mCn -lvw -xGo -oEp -ibx -lEj -lEj -azk -azk -azk -azk -azk -lEj -lEj -lEj -lEj -rnk -bzj -eMq -dwI -uqI -hgA -rnk -cvn -rnk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(92,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -hen -fYe -lEj -unk -unk -unk -unk -unk -unk -lEj -lEj -lEj -lEj -lEj -sPy -gYW -gYW -gYW -sbp -wPn -xJd -xiM -nzk -pDs -wFZ -uhi -reD -hCs -hCs -hCs -hCs -lIr -sAs -lIr -lIr -meE -ayE -fOs -meE -jGB -jGB -jGB -jGB -jGB -jGB -jGB -oEp -oEp -ibx -uet -azk -azk -lEj -lEj -pfg -lEj -lEj -lEj -lEj -hhX -rnk -rnk -rnk -rnk -rnk -ovj -rnk -rnk -rnk -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(93,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -hen -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hwW -dTe -sPy -gYW -gYW -gYW -sKs -jBh -nzk -lIp -jAR -tZL -reD -qDQ -vkR -lRN -hCs -tiF -cmw -xtG -lIr -sYs -vPn -rwD -fCj -jGB -dsR -hef -gvH -dVX -srd -jGB -ibx -ibx -ibx -ibx -azk -lEj -lEj -lEj -iDq -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -cTm -wNp -nPV -hrg -rnk -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(94,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -hen -hen -hen -hen -hen -hen -hen -hen -hen -hen -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -oSk -qGN -dTe -sPy -sPy -sPy -gYW -gYW -wjI -nzk -nzk -nzk -nzk -nzk -rMj -jIK -sDd -lNB -aZk -aZk -aZk -iGo -fao -fZv -fZv -vbY -jGB -bMk -slM -feu -xWd -wCj -jGB -xbm -ibx -ibx -ibx -ftX -hzF -hzF -hzF -lbo -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -rnk -xIm -hqO -mQZ -cTm -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(95,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -hen -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fAV -aIB -dTe -eyf -eyf -sPy -sPy -gYW -wjI -wjI -xiM -wjI -wjI -gYW -fqg -uXZ -bZi -hCs -hsb -rsK -aSS -lIr -gcN -xTZ -igS -pdp -jGB -nRA -tqJ -qaE -klJ -lSD -jGB -lEj -pfg -lEj -ibx -ftX -piS -dIv -cyT -hQY -gWr -wyh -aFL -sZG -sZG -sZG -sZG -pzw -bWI -ril -aeC -mQZ -rnk -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(96,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -gYW -gYW -gYW -pjn -aWJ -aWJ -hwW -sPy -gYW -tXp -gYW -veh -ewr -wjI -gYW -frd -oCB -oJI -hCs -vCL -bHb -pco -lIr -mGo -vqt -mic -nSn -jGB -vyL -vUa -jGB -upE -jGB -jGB -cOD -uet -lEj -ibx -lgp -hzF -lSM -gcV -swU -aCk -uxt -uxt -uxt -uxt -uxt -sZG -hzF -hzF -rnk -cTm -rnk -rnk -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(97,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gnx -dTe -sNy -gYW -aWJ -aWJ -ayw -snk -oSk -gYW -pLE -gYW -vOa -tUn -wjI -gYW -gYW -wpJ -hCs -hCs -frs -dHS -oxG -hCs -jnm -jKD -mic -rzb -jGB -jGB -jGB -jGB -doh -gxt -hRB -hRB -uZx -uZx -lsC -uZx -hzF -sNi -bOi -iGC -qyU -uxt -uxt -uxt -uxt -uxt -sZG -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(98,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -hen -hen -hen -hen -hen -hen -hen -hen -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -rLJ -srv -hbk -reK -pLE -tXp -aWJ -aIB -sPy -gYW -tXp -gYW -pny -eht -vFg -oxh -gYW -tEn -xDm -mYU -iIY -jIK -hdD -upj -lER -iMD -nHs -sDH -lqv -xOr -quV -oWd -lfy -yaM -ulL -mGW -mGW -uWb -mGW -iZz -hzF -vQT -clM -caP -aCk -uxt -uxt -uxt -uxt -uxt -uxt -sZG -wRm -umg -ixZ -jVV -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(99,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -dsG -dsG -dsG -dsG -fYe -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -hCT -ttL -gYW -dTe -tXp -kDJ -fne -aWJ -vKM -tXp -gYW -gYW -gYW -sbn -oxh -gYW -wxv -mnP -mnP -mnP -mnP -dAS -kdW -gcN -ffA -wvc -gEm -vqm -vqm -vqm -vqm -etu -wQG -tJO -mGW -mGW -mGW -mGW -iZz -hzF -jui -pRY -iGC -bef -cQU -jCr -uxt -uxt -uxt -uxt -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(100,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -jVV -oID -oID -oID -jVV -jVV -jVV -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -dsG -lEj -lEj -lEj -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -gYW -gYW -pjn -tXp -pLE -tXp -pLE -dse -tXp -gYW -qUr -gYW -xiM -gYW -gYW -aZK -oqs -oqs -oqs -oqs -dAS -eOY -acA -xIN -rDg -rDg -ulU -rDg -rDg -rDg -rtO -jbi -ihd -hRB -mGW -mGW -mGW -iZz -hzF -kCu -poe -poe -soC -jbq -vnj -jCr -uxt -uxt -uxt -sZG -wRm -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(101,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -iXk -iXk -fIv -fIv -fIv -fIv -fIv -fIv -fIv -fIv -ttt -ttt -ttt -oaF -ttt -ttt -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -nzw -aih -fne -dTe -kvX -dTe -aWJ -vKM -mne -gYW -cjp -gYW -wjI -gYW -vKR -kSO -jVF -cAg -cAg -cAg -dAS -eOY -gcN -hpb -rDg -rDg -rDg -rDg -rDg -rDg -les -pdp -hCK -kfs -mGW -mGW -mGW -iZz -hzF -uxt -uxt -uxt -uxt -uxt -swU -tkD -uxt -uxt -uxt -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(102,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -iXk -iXk -bBm -jxS -cjK -jxS -njZ -gUB -lFG -qmU -lFG -ttt -uCo -xXh -xnF -qMf -ttt -ttt -ttt -ttt -ttt -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -nzw -pqB -fne -sUY -sUY -sUY -bCm -gYW -fne -gYW -kIB -pEO -wjI -gYW -cnT -kSO -rRd -gbS -gbS -rRd -skQ -hCs -pUJ -mKe -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -pdp -dMC -ilQ -mGW -mGW -mGW -iZz -hzF -uxt -uxt -uxt -uxt -uxt -swU -tkD -uxt -prB -uxt -oqN -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(103,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -rmF -iXk -cZE -jZC -cZE -cZE -bnG -bxG -tHS -lYL -lFG -nKx -ttt -beK -rqw -dLI -nbj -mzU -bjn -bjn -rRY -ttt -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -nzw -aih -qCf -ycw -ksf -hmF -sPy -gYW -wAv -gYW -gYW -gYW -jIU -gYW -hCs -gUu -ban -eJB -eJB -eCb -rZC -eOY -gcN -usr -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -pdp -mWX -ilQ -mGW -mGW -mGW -iZz -hzF -uxt -uxt -uxt -uxt -uxt -swU -tkD -uxt -uxt -uxt -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(104,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -jVV -jVV -iXk -fIv -cZE -kCs -tQV -tQV -xDI -tUD -rPe -kTy -lFG -lFG -ttt -ttt -tho -aBU -kdo -ttt -tMp -bjn -nen -ttt -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fne -dTe -dTe -nMj -nfj -sPy -gYW -wAv -wAv -mpZ -wAv -wjI -gYW -dDb -kSO -oqs -gbS -gbS -oqs -dAS -tkR -oxU -xIN -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -pdp -mWX -kXs -mGW -mGW -mGW -iZz -hzF -atb -eXi -lIv -okL -okL -nan -uLP -uxt -uxt -uxt -sZG -wRm -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(105,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -iXk -iXk -uRI -kCs -rxW -lFG -wxH -tbZ -lLC -sBl -eYF -lYL -lFG -jxE -ttt -ttt -ttt -qhg -ttt -wcH -fib -fDf -ttt -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lIZ -dTe -fne -dTe -sPy -gYW -kIB -gYW -gYW -gYW -wjI -gYW -fle -kSO -abo -abo -abo -fXH -dAS -kZS -gcN -xIN -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -pdp -rVo -hRB -mGW -mGW -mGW -iZz -xjl -iGC -swU -swU -swU -aPw -uLP -uxt -uxt -uxt -uxt -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(106,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -iXk -tQS -glA -lFG -lFG -oDK -aBM -kse -qmp -qyG -tot -pWn -ylD -rTc -xxs -xeF -flm -qeA -ttt -ttt -ttt -ttt -ttt -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -wbT -wub -uMY -sPy -gYW -gYW -gYW -uSe -cjp -wjI -gYW -gYW -urx -rRd -rRd -rRd -rRd -dAS -eOY -gcN -hpb -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -sZs -ulL -mGW -mGW -mGW -mGW -iZz -hzF -hzF -hCt -nHK -bBI -hzF -sZG -uxt -uxt -uxt -uxt -sZG -wRm -umg -ixZ -jVV -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(107,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -fNW -hhX -hhX -iXk -tQS -glA -lFG -lFG -oDK -qIJ -fHX -tzW -ppb -jwL -nDR -qrY -tUb -ptP -dnB -lta -mww -nkb -vaC -vaC -nZv -vaC -vaC -kMS -mNF -vaC -vaC -vaC -vaC -vaC -vaC -oMB -vaC -vaC -ycN -unk -unk -unk -lEj -lEj -lEj -gYW -uSe -cjp -wjI -wjI -azV -hPk -mnP -xFT -etB -nfx -kDC -hCs -gcN -hWG -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -pdp -ulL -mGW -mGW -mGW -mGW -iZz -nHK -ufW -vwn -eRf -vRC -nHK -sZG -uxt -uxt -uxt -sZG -sZG -pLn -umg -ixZ -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(108,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -iXk -iXk -pXn -aLK -xFt -lFG -voI -wOK -dby -qPX -whq -fYc -lFG -lFG -ycN -kTr -nee -akU -vaC -tQh -cHh -fde -kqS -kqS -kqS -kqS -kqS -kqS -kqS -kqS -kqS -psT -cHh -kNJ -vaC -ycN -lEj -lEj -lEj -lEj -lEj -lEj -gYW -uSe -cjp -wAv -fld -gYW -dBU -rgT -fgt -jhl -wBO -prX -hCs -izU -usr -rDg -rDg -rDg -rDg -rDg -rDg -ssZ -spg -ndB -hRB -mGW -mGW -mGW -iZz -nHK -lGD -cpZ -jzi -ksa -nHK -sZG -uxt -uxt -uxt -sZG -hzF -hzF -lut -tBK -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(109,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -jVV -jVV -iXk -fIv -cZE -aLK -fWD -fWD -sPW -vZX -dZA -kTy -lFG -rVy -fIv -ycN -ycN -xNh -akU -vaC -uxO -hqg -nIS -brV -brV -brV -brV -brV -brV -brV -brV -brV -hQA -hqg -ukY -vaC -ycN -lEj -lEj -lEj -lEj -lEj -lEj -gYW -gYW -gYW -wwR -gYW -gYW -gYW -gYW -hCs -hCs -hCs -hCs -hCs -sBG -xIN -rDg -rDg -rqi -nAm -rDg -rDg -dyV -rvp -hRB -sYD -iZz -iZz -iZz -iZz -nHK -mXV -oCu -oXh -myG -nHK -jPL -sZG -sZG -sZG -sZG -nHK -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(110,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -nCS -iXk -cZE -cZE -cZE -cZE -hhC -lAN -fEa -fYc -lFG -nKx -fIv -qYn -vaC -gLZ -akU -vaC -azt -kqS -dAv -brV -brV -brV -brV -brV -brV -brV -brV -brV -jGg -kqS -rtN -jlI -ycN -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -wyK -tuR -wxh -xvZ -gYW -apQ -tYw -tYw -oPD -apQ -icl -ggu -apQ -rRb -rRb -rRb -rRb -apQ -kRG -abX -apQ -uZx -uZx -ngz -ngz -uZx -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -hzF -lEj -jVV -jVV -jVV -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(111,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -iXk -iXk -cZE -cZE -sAD -cZE -jIl -kOl -ofE -tZv -lFG -fIv -blh -vaC -jhj -cnZ -vaC -nIS -xzp -brV -brV -brV -brV -brV -txo -brV -brV -brV -brV -brV -brV -hQA -yhW -ycN -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gYW -kdc -jYp -xqY -yeO -gYW -eZc -htN -bGZ -hGU -xCM -jjF -eky -aCP -hkt -xtN -exR -vla -mBw -qxU -fAT -apQ -lEj -lEj -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(112,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -iXk -iXk -fIv -fIv -fIv -iEQ -oxN -fIv -fIv -fIv -fIv -ycN -ycN -ycN -ycN -vaC -rqh -daK -lPw -brV -brV -brV -brV -brV -brV -brV -brV -brV -mta -daK -wad -vaC -ycN -lEj -lEj -lEj -gMk -gMk -lEj -lEj -lEj -gYW -imU -mhD -dTe -wAv -gYW -nLW -nXO -dxH -hwb -xvH -xxV -kzK -tbe -tbe -nCb -kqW -kqW -hPP -rhW -kNO -apQ -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(113,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -juw -xHB -pOw -wps -uzB -uzB -bhL -owl -owl -owl -owl -ycN -rIw -uxO -hqg -nIS -brV -brV -brV -brV -brV -brV -brV -brV -brV -hQA -hqg -ukY -vaC -ycN -lEj -gMk -gMk -gMk -gMk -uet -lEj -lEj -gYW -gYW -gYW -dTe -dTe -gYW -iov -shl -juZ -lpu -apQ -tTS -dzY -olR -pUy -xlY -jdl -mfl -apQ -kOE -rMQ -apQ -lEj -lEj -gMk -gMk -lEj -lEj -lEj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(114,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -jVV -jVV -jVV -jVV -jVV -jVV -juw -vwK -ecz -vYv -fEU -pFd -reS -dpb -owl -owl -owl -ycN -sBZ -uvd -jaJ -msR -daK -daK -daK -daK -daK -daK -daK -daK -daK -uZG -jaJ -qun -vaC -ycN -gMk -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -sPy -aWJ -dTe -dTe -roB -iGa -fKo -xUy -xFP -apQ -hun -jWc -dFb -jUV -xlY -ghp -aML -apQ -kOE -uDd -apQ -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lAj -pBg -xJT -dcH -iCi -qrm -nYy -vmB -vmB -vmB -ctv -rPC -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(115,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -prr -iub -dSG -tZA -tZA -jcQ -eIM -owl -owl -owl -owl -ycN -vaC -ahb -vaC -vaC -vaC -vaC -vaC -jnG -vaC -vaC -vaC -vaC -vaC -vaC -vaC -vaC -vaC -ycN -lEj -lEj -gMk -gMk -gMk -gMk -gMk -lEj -lEj -oSk -nlZ -dTe -dTe -gYW -kjf -jLp -pGq -lAG -apQ -bBb -lvj -rce -mCr -ceD -ghp -qNS -apQ -kOE -rMQ -apQ -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lAj -ebz -sbo -uBn -uBn -lgh -uBn -uBn -uBn -uBn -rts -gdZ -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(116,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -juw -prr -juw -juw -prr -prr -juw -juw -juw -juw -juw -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -ycN -lEj -lEj -lEj -gMk -gMk -gMk -gMk -lEj -lEj -sPy -aWJ -hUN -dTe -gYW -apQ -apQ -apQ -apQ -apQ -hMM -fUn -pos -mCr -ceD -kVF -cTI -apQ -kOE -rMQ -apQ -lEj -lEj -lEj -gMk -gMk -lAj -lAj -lAj -dWT -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(117,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -dsG -lEj -lEj -dsG -dsG -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -lEj -lEj -lEj -sPy -aWJ -fAJ -qaS -sPy -apQ -hCb -rwX -drb -apQ -svS -jpV -kPc -mCr -pUy -pUy -pUy -oNo -vRt -pXB -apQ -lEj -lEj -lEj -gMk -rcP -lAj -nfy -ijo -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(118,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uet -xUx -lEj -lEj -lEj -lEj -lEj -oSk -lhO -oSk -oSk -sPy -apQ -dzQ -vjT -tAz -bAF -fvf -fUn -aEh -eAg -dFb -dFb -dFb -anZ -jIf -eaS -apQ -lEj -lEj -uet -gMk -obD -bQf -kiN -cRa -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -bag -lAj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(119,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -xUx -uet -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -lEj -lEj -apQ -qEn -tRl -pLX -apQ -uaK -cdW -cUN -bAP -apQ -nQQ -bsG -rwU -sTl -apQ -apQ -lEj -lEj -gMk -alx -obD -bQf -kiN -aEr -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(120,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -joM -joM -hhX -hhX -hhX -wOo -wOo -biS -wOo -wOo -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -unk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -lEj -gMk -gMk -gMk -gMk -uet -lEj -lEj -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -apQ -lEj -lEj -gMk -gMk -sDP -lAj -nKc -jBJ -hRO -kDs -ajS -ajS -ajS -gTU -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(121,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -joM -joM -hhX -hhX -wOo -wOo -kpD -vtg -xJA -wOo -wOo -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -gMk -his -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -vDa -rBU -oFk -suV -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(122,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -fZF -joM -joM -fZF -joM -wOo -xAa -ifj -jWh -fry -qen -wOo -joM -fZF -joM -joM -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -voq -jmp -gMk -xkI -cGl -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -vDa -vDa -vDa -lAj -fsB -udO -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(123,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -joM -joM -pHA -pHA -pHA -wOo -txw -erY -qHx -eWO -daz -wOo -pHA -pHA -pHA -joM -joM -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -syX -cGl -gMk -syX -gMk -cGl -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -vDa -gMk -gMk -lAj -mFR -kRX -hRO -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -gdZ -lAj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(124,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -joM -pHA -pHA -bFS -bFS -biS -iJg -ebs -cWr -oVG -xla -wOo -bFS -bFS -pHA -pHA -joM -hhX -hhX -umg -asZ -umg -lEj -lEj -lEj -lEj -lEj -ura -syX -qIA -cGl -gMk -syX -qIA -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -lEj -gMk -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mUQ -gMk -gMk -lEj -gMk -vDa -gMk -lEj -lAj -lAj -lAj -dWT -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -ajS -lxR -lAj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(125,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -joM -pHA -bFS -bFS -bFS -wOo -bSE -ciZ -prw -oVG -aSM -wOo -bFS -bFS -bFS -pHA -joM -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -aHe -gMk -xkI -syX -jmp -gMk -cGl -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -iEl -gMk -gMk -vDa -vDa -vDa -lEj -lEj -lEj -lEj -lAj -fiI -rts -mRd -mRd -mRd -mRd -mRd -mRd -mRd -sbo -gdZ -lAj -lEj -fYe -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(126,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -oID -fNW -joM -pHA -bFS -bFS -bFS -wOo -wOo -wOo -dTM -wOo -wOo -xfn -bFS -bFS -bFS -pHA -joM -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -syX -cGl -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uet -gMk -iEl -gMk -gMk -vDa -gMk -lEj -lEj -lEj -lEj -lEj -lAj -hXu -xQe -xQe -dtm -uZa -alf -dtm -dtm -dtm -uAn -myZ -lAj -fYe -fYe -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(127,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -oID -hhX -hhX -mxt -srs -bFS -bFS -bFS -mbL -pla -iIT -vJG -rbs -gGh -mbL -bFS -bFS -bFS -srs -mxt -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -pfg -pfg -pfg -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -gMk -uet -lEj -lEj -gMk -gMk -lEj -gMk -gMk -mUQ -lEj -lEj -vDa -uet -lEj -lEj -lEj -lEj -lEj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -lAj -fYe -fYe -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(128,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -cxg -srs -bFS -bFS -bFS -aOQ -tny -faK -faK -faK -oFK -wPy -bFS -bFS -bFS -srs -mxt -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -vDa -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -fYe -fYe -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(129,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -cxg -pvT -srs -upF -dVu -tMV -aOQ -gIq -faK -scg -faK -lXe -aOQ -iXx -dVu -jMy -srs -mxt -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uet -gMk -gMk -gMk -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -vDa -vDa -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(130,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -cxg -cxg -srs -mCt -riQ -jNg -mbL -and -stj -fEe -xIl -ukO -aOQ -aqT -riQ -hUm -srs -mxt -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -gvF -gvF -gvF -gvF -hgB -gvF -gvF -gvF -gvF -lEj -lEj -lEj -lEj -xUx -uet -lEj -lEj -lEj -lEj -lEj -gMk -nyq -gMk -uQl -gMk -gMk -lEj -lEj -uet -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -vDa -lEj -lEj -mUQ -lEj -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(131,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -cxg -srs -pqd -bNI -wHJ -wHJ -wHJ -phG -wHJ -cbc -wHJ -wHJ -wHJ -riQ -wKJ -srs -mxt -hhX -hhX -hhX -lEj -lEj -lEj -gvF -gvF -gvF -wFR -mMO -tqD -tqD -tqD -mMO -fhP -gvF -lEj -bKL -gMk -gMk -rZg -gMk -gMk -lEj -lEj -lEj -lEj -gMk -gMk -gqm -gMk -gMk -gMk -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -lEj -woL -woL -cMJ -woL -stz -stz -gMk -gMk -lEj -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(132,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -mxt -mQE -xkx -mQE -wHJ -hHO -osK -feV -feV -gBx -sLU -cbO -wHJ -vcu -sJT -sJT -mxt -hhX -hhX -hhX -hhX -hhX -fYe -jam -bjb -fft -wpG -gOc -oAs -oAs -oAs -oAs -jqf -oWg -gMk -fXf -gMk -gMk -gMk -gMk -gMk -fVf -lEj -lEj -lEj -lEj -rBv -gMk -tbp -gMk -gMk -lEj -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uet -lEj -lEj -gMk -lEj -lEj -woL -eAk -cMJ -stz -jPq -woL -lEj -lEj -lEj -lEj -lEj -uet -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(133,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -mQE -mQE -vBW -wvi -wHJ -gRA -lmo -sIW -sIW -sIW -lmo -gBx -wHJ -tBg -wAx -sJT -sJT -hhX -hhX -hhX -hhX -fYe -fYe -jam -cVt -qFa -wny -gOc -kMZ -oAs -oAs -oAs -dQL -gvF -lEj -xUx -gMk -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -gMk -gMk -lEj -uet -lEj -mNZ -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -ent -gMk -gMk -gMk -gMk -gMk -gMk -rgs -stz -cMJ -fOv -ryb -xKo -ltS -ltS -ltS -ltS -ltS -lEj -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(134,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -jVV -mQE -hPx -fNk -pYw -wHJ -hfH -sIW -hNC -gQs -hNC -sIW -gBx -wHJ -kBJ -kck -bsX -sJT -hhX -hhX -hhX -hhX -fYe -uif -jam -iBs -rLH -uJR -dQL -dQL -wgH -wgH -wgH -dQL -gvF -lEj -lEj -uet -gMk -tui -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mNZ -mNZ -gMk -gMk -gMk -gMk -mNZ -lEj -lEj -lEj -lEj -lEj -gMk -gMk -gMk -gMk -gMk -lEj -woL -sVT -cMJ -fDR -fDR -xKo -lQL -lQL -lQL -aoy -ltS -mpc -lEj -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(135,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -mQE -lnB -fGm -xzs -uxR -hfH -sIW -uKA -puP -fnO -sIW -vHA -aJQ -mwe -dUl -bGg -sJT -lEj -hhX -hhX -hhX -fYe -uif -jam -afF -hbr -gYY -gYY -fSJ -bOw -fSJ -gYY -gYY -lEj -lEj -lEj -hyM -gMk -cgu -gMk -gMk -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mNZ -mNZ -mNZ -gMk -gMk -gMk -gMk -lEj -lEj -kxB -kxB -kxB -eOx -eOx -eOx -eOx -kxB -kxB -bkk -bIS -cMJ -msi -ppD -xKo -lQL -lQL -lQL -aoy -lls -mpc -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(136,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -cxg -mQE -mQE -qoC -yaw -wHJ -dqA -sIW -ciR -ilq -ciR -sIW -dfd -wHJ -rBZ -lPi -meH -sJT -lEj -hhX -hhX -hhX -mNZ -mNZ -gvF -hAx -pof -gYY -vVq -eXF -tNQ -lKf -kTa -gYY -lEj -lEj -lEj -lEj -gMk -cgu -yjm -lEj -lEj -gMk -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -mNZ -mNZ -mNZ -mNZ -gMk -gMk -gMk -lEj -lEj -kxB -hhX -hhX -hhX -iiB -hhX -hhX -hhX -hhX -uJV -eng -eng -fDR -jJv -xKo -lQL -lQL -lQL -pVB -pHr -cXo -tOw -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(137,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -cxg -lEj -imZ -mQE -fTj -wHJ -lEa -lmo -sIW -sIW -iUX -lmo -xAR -wHJ -tww -jlL -sJT -ogb -lEj -lEj -hhX -fYe -mNZ -mNZ -lEj -vfJ -fhN -gYY -puJ -cpQ -atV -vIa -cMZ -gYY -kxB -kxB -kxB -lEj -uet -cgu -lEj -lEj -uet -gMk -qIA -gMk -lEj -lEj -lEj -uKm -lEj -lEj -lEj -mNZ -mNZ -gMk -mNZ -mNZ -gMk -gMk -lEj -lEj -kxB -hhX -xAy -mCN -mCN -xAy -cLf -hhX -ifd -bkk -eng -msi -xKo -xKo -xKo -lQL -lQL -lQL -gQe -mry -mpc -gMk -yeS -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(138,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -pvT -lEj -lEj -mQE -vNg -kWb -kWb -kWb -kWb -ymg -kWb -kWb -kWb -kWb -sae -sJT -sJT -lEj -lEj -lEj -hhX -fYe -mNZ -mNZ -vfJ -vfJ -quM -gYY -sNE -tAV -icJ -vIa -oka -qZr -wzX -hfD -rot -rot -dVt -cdl -rot -lEj -lEj -gMk -gMk -gMk -gMk -lEj -lEj -kTV -gMk -lEj -lEj -fJz -gMk -gMk -mNZ -mNZ -gMk -gMk -gMk -xUx -kxB -hhX -xAy -rgX -gVC -xAy -cLf -hhX -ifd -bkk -qwG -msi -eeB -fVI -obx -lQL -lQL -lQL -cuW -cuW -cuW -cuW -cuW -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(139,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -mQE -lJv -kWb -lWW -kBh -upw -pRm -kWb -lWW -lWW -kWb -wYj -pdo -sJT -lEj -uif -hhX -hhX -fYe -mNZ -mNZ -vfJ -piE -pmT -gYY -kvj -tAV -aqM -vIa -guk -mNd -mmV -mmV -dVp -gTf -dOg -kqf -rot -rot -lEj -gMk -lEj -lEj -lEj -lEj -xUx -gMk -gMk -lEj -lEj -lEj -gMk -gMk -lEj -lEj -gMk -gMk -dtQ -dtQ -eOx -jVV -xAy -kYc -sWT -bdC -fSP -tPb -vgW -uJV -qwG -eeB -klz -xKo -ueC -lQL -lQL -lQL -cuW -khv -bUS -gun -cuW -cuW -cuW -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(140,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -kWb -kWb -kWb -kWb -kWb -kWb -uUj -kWb -kWb -kWb -kWb -kWb -kWb -kWb -lEj -lEj -hhX -hhX -fYe -mNZ -mNZ -vfJ -qIo -uat -gYY -bxq -tEb -sXG -dOZ -suO -bHy -mwX -xGY -dVp -oGQ -aIX -oSG -tzy -dVt -xCX -gMk -xUx -uet -lEj -lEj -gMk -ceN -gMk -gMk -gMk -lEj -xKx -lEj -lEj -lEj -lEj -gMk -dtQ -gMk -kxB -hhX -xAy -bdR -pbY -xAy -cLf -hhX -ifd -bkk -oJU -eeB -bRU -fVI -obx -lQL -lQL -lQL -dnv -hZC -bCw -yhy -dlX -iUq -cuW -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -oID -oID -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(141,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -kWb -kWb -kWb -iwS -pya -oJW -eWD -oJW -pya -lRk -kWb -kWb -kWb -lEj -lEj -lEj -hhX -hhX -fYe -mNZ -mNZ -vfJ -pZP -raz -gYY -qvP -rjr -mYN -pEP -suK -wDa -mmV -uhc -dVp -xNo -suw -fdN -tQI -xwe -xCX -gMk -gMk -gMk -lEj -lEj -lEj -lmn -gMk -lEj -gMk -lEj -lEj -lEj -lEj -gMk -lEj -lEj -dtQ -lEj -kxB -hhX -xAy -mCN -rCv -xAy -cLf -hhX -ifd -bkk -qwG -eeB -xKo -xKo -obx -lQL -lQL -lQL -dnv -fvt -bCw -pMw -nME -iJb -cuW -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -jVV -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(142,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -kWb -kWb -kWb -qWB -wpr -wpr -pya -eWD -pya -wpr -wpr -qWB -kWb -kWb -kWb -lEj -lEj -hhX -hhX -hhX -mNZ -mNZ -vfJ -vfJ -jmY -gYY -gYY -xeH -izV -lDO -gYY -gYY -iha -iha -dVp -dVp -dRh -xBU -xje -rot -lEj -gMk -gMk -lEj -lEj -lEj -lEj -xIP -xIP -uKm -elE -lEj -lEj -lEj -lEj -gMk -vkv -lEj -dtQ -lEj -kxB -hhX -cLf -cLf -nbz -cLf -cLf -hhX -hhX -uJV -vSj -eeB -odK -xKo -xKo -lQL -lQL -lQL -dnv -sCL -xSV -jGP -cYe -qbZ -cuW -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(143,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -kWb -kWb -kWb -vAB -vAB -vfq -qpc -gxx -eWD -iLj -vAB -vAB -kWb -kWb -kWb -lEj -lEj -hhX -hhX -hhX -fYe -uif -fYe -lJq -xeJ -vRP -bWi -bWi -dvo -dfM -wPX -dfM -xtZ -dfM -mzB -dVp -vqN -mXJ -iJT -rot -uKm -mWS -gMk -ent -lEj -gMk -gMk -gMk -uet -cPE -gMk -lEj -lEj -gMk -gMk -gMk -xUx -unk -fNv -xKo -xKo -bkk -bkk -uJV -xOK -uJV -uJV -bkk -bkk -bkk -vSj -mEQ -eeB -tnL -xKo -lQL -lQL -lQL -cuW -vqP -tUS -rvs -aWD -aWD -aWD -aWD -aWD -aWD -uYG -uYG -uYG -lEj -lEj -lEj -lEj -uYG -uYG -uYG -uYG -uYG -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -vUj -hhX -hhX -hhX -vUj -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(144,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -unk -lEj -kWb -kWb -kWb -vAB -vAB -qHi -kWb -kWb -kWb -lwr -vAB -vAB -kWb -kWb -kWb -lEj -lEj -hhX -hhX -hhX -fYe -fYe -fYe -lJq -raz -obA -obA -bdz -rcx -eua -dsi -vnX -bNp -iHH -iHH -sti -fFg -fFg -dhR -rot -lEj -uet -gMk -lEj -lEj -lEj -lEj -gMk -xUx -lEj -dsF -gMk -lEj -lEj -gMk -gMk -gMk -gMk -dtQ -xKo -pyO -pyO -xKo -pnK -vSj -eeB -lxx -xKo -vSj -qwG -oJU -qOz -eeB -iNU -bkk -mmh -oEB -oEB -mmh -cuW -vqo -cuW -aWD -tCH -aWD -tCH -aWD -tCH -uYG -bvT -uYG -uYG -uYG -uYG -uYG -uYG -jtw -cKc -wJN -cEG -fYe -fYe -hhX -fYe -jVV -hhX -hhX -hhX -vUj -mml -vUj -hhX -vUj -mml -vUj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(145,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -uVI -pFE -kWb -kWb -xWR -qDl -qDl -kdR -kWb -nzT -kWb -mjq -qDl -qDl -aKU -kWb -kWb -lEj -lEj -hhX -hhX -fYe -fYe -mNZ -fYe -lJq -raz -eUj -obA -oJr -vRA -oXa -gak -bdz -pIp -bdz -frG -dVp -dVt -dVt -rot -rot -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -gMk -gMk -xUx -lEj -lEj -lEj -lEj -gMk -gMk -dtQ -xKo -pyO -pyO -xKo -kao -tpj -nNK -lYA -xKo -vSj -tpz -bkk -bkk -bkk -bkk -bkk -wwe -nlI -nlI -miL -oEB -gLY -apt -aWD -jpD -aWD -kKN -aWD -jpD -uYG -lFT -uYG -wZm -xsG -jJW -cKc -dzv -nJL -cKc -tNE -cEG -cEG -uYG -lEj -lEj -jVV -jVV -jGa -jVV -vUj -mml -vUj -jVV -vUj -mml -vUj -jVV -jVV -jVV -jGa -jVV -jVV -jVV -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(146,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -unk -lEj -kWb -kWb -kWb -vAB -vAB -qHi -kWb -oNM -kWb -lwr -vAB -vAB -kWb -kWb -kWb -lEj -lEj -hhX -hhX -fYe -mNZ -mNZ -fYe -lJq -raz -obA -obA -vRA -vRA -oXa -vjv -vRA -vRA -vRA -vRA -vRA -vRA -vRA -ixU -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -uet -lEj -lEj -lEj -lEj -xKo -xKo -xKo -feU -xKo -pyO -pyO -xKo -nmD -tpj -abb -hHL -xKo -vSj -bkk -bkk -isT -isT -isT -mmh -dmj -rTH -ckK -xbi -pQt -mfE -lcv -aWD -ncV -aWD -ncV -aWD -ncV -uYG -xZj -uYG -iwu -kwc -lfC -cKc -iVJ -cKc -cKc -tNE -tNE -dYZ -uYG -lEj -lEj -jVV -hhX -hhX -hhX -vUj -mml -vUj -hhX -vUj -mml -vUj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(147,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -kWb -kWb -kWb -vAB -vAB -mLG -abx -tlW -gts -vgq -vAB -vAB -kWb -kWb -kWb -lEj -hhX -hhX -hhX -fYe -mNZ -vfJ -evr -vfJ -raz -obA -gbR -omL -omL -acY -aqa -vRA -vRA -vRA -vRA -vRA -vRA -vRA -ixU -lEj -lEj -lEj -kxB -uKm -uKm -uKm -uKm -uKm -uKm -lEj -gMk -lEj -lEj -lEj -lEj -xKo -rhn -lWF -bzX -xKo -adK -adK -xKo -xKo -vSj -mEQ -xKo -xKo -jGe -bkk -isT -isT -wfW -isT -mmh -sEv -kol -bbx -saH -oEB -rIP -kdp -iQJ -vUO -dFB -vUO -xnl -nfP -ixc -cvT -cKc -dsJ -jhG -jhG -cKc -dzv -ndu -ndu -xpD -bco -bco -bco -bco -jdd -jVV -hhX -hhX -hhX -vUj -mml -vUj -hhX -vUj -mml -vUj -hhX -hhX -vUj -vUj -vUj -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(148,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -kWb -kWb -kWb -vAB -vAB -vAB -vOH -qDl -lwr -vAB -vAB -vAB -kWb -kWb -kWb -fYe -hhX -hhX -hhX -fYe -mgz -vfJ -riv -vpK -raz -obA -dOl -dfM -iHH -bWi -gTA -vRA -vRA -vRA -vRA -vRA -vRA -vRA -jxF -jxF -jxF -jxF -jxF -iHO -iHO -jZY -ouE -lEj -lzE -lEj -gMk -gMk -uet -lEj -lEj -xKo -ljN -eqC -qic -xKo -wyl -cca -joo -joo -qwG -qwG -xQS -vSj -vSj -bkk -pSM -pSM -vAm -pSM -mmh -oEB -sYB -oEB -oEB -mmh -mhW -sNT -aWD -ybz -tTE -anJ -nfP -ybP -uYG -jQt -cKc -cKc -gMH -cKc -cKc -tNE -tNE -wlF -atK -bco -ePC -unC -iHC -jdd -jdd -jdd -hhX -hhX -hhX -mml -hhX -hhX -hhX -mml -hhX -hhX -hhX -rgF -rgF -mml -vUj -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(149,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -kWb -kWb -kWb -kWb -kWb -qWB -oZl -xwz -iIp -qWB -kWb -kWb -kWb -kWb -kWb -rqC -hhX -hhX -hhX -fYe -mNZ -vfJ -vfJ -vfJ -jmY -obA -gKt -dpp -nIu -dpp -gKt -vRA -vRA -vRA -vRA -vRA -vRA -vRA -jxF -dPN -gqO -aYu -jxF -iHO -cVW -uKm -uKm -uKm -uKm -lEj -lEj -gMk -gMk -lEj -lEj -xKo -fEQ -eeB -qic -xKo -joo -bkk -bkk -bkk -bkk -bkk -fcK -bkk -bkk -bkk -isT -isT -rRt -isT -dUi -ohe -rls -vos -tFW -tFW -wNA -joV -aWD -ohA -qXm -tfC -nfP -ybP -uYG -ibq -uIM -cRT -uIM -uIM -uIM -cRT -uIM -uIM -uIM -bhB -oWv -eoC -fZz -ukl -lva -iFb -qzZ -qzZ -uJc -igG -mtH -qzZ -qzZ -qzZ -igG -mtH -qjk -dLY -uJc -mml -mml -eLU -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(150,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -fYe -hhX -hhX -hhX -hhX -fYe -mNZ -mNZ -fYe -lJq -raz -obA -noO -vzj -jCT -rin -gKt -vRA -vRA -vRA -vRA -vRA -vRA -vRA -jxF -jZg -ndv -fBw -jxF -lfo -hER -twx -twx -twx -twx -lEj -lEj -gMk -gMk -lEj -lEj -xKo -xKo -xKo -qic -xKo -joo -bkk -fQZ -lWf -efZ -cQE -iIb -hRR -gmA -pLx -eyg -isT -isT -isT -dUi -fXV -wzC -cGU -yew -sKa -cTK -kDg -aWD -aWD -mwY -aWD -grw -aWD -uYG -dDK -nvu -kKR -cKc -cKc -cKc -cKc -cKc -cKc -gBy -bco -xOo -eVq -lva -jdd -jdd -jdd -hhX -hhX -hhX -dLY -hhX -hhX -hhX -mml -hhX -hhX -hhX -rgF -rgF -mml -vUj -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(151,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -kWb -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -uif -fYe -lJq -raz -obA -dES -vzj -jCT -bzB -dpp -vRA -vRA -vRA -vRA -vRA -vRA -vRA -sPD -uWy -oKr -tft -jxF -lfo -erX -twx -twx -twx -twx -lEj -lEj -gMk -gMk -lEj -lEj -xKo -tmR -xKo -oxB -xKo -joo -bkk -uYe -dSn -qXF -iYy -hRl -xZM -nmq -pLx -dUi -dUi -dUi -dUi -dUi -lyN -fQy -dbl -hmz -vHa -aWD -aWD -aWD -ewa -gCT -kgb -gaI -ued -uYG -uYG -uYG -fRF -smh -tHE -fOP -xlv -anf -cKc -nCu -bco -bco -bco -bco -jdd -jVV -jVV -hhX -hhX -hhX -hhX -hhX -hhX -vUj -mml -vUj -hhX -hhX -vUj -vUj -vUj -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(152,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -kWb -kWb -kWb -kWb -kWb -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -lJq -wWE -obA -pvo -dHa -jCT -iXv -dpp -vRA -vRA -vRA -vRA -vRA -vRA -vRA -sPD -gup -gZE -qkw -jxF -lfo -dKH -twx -twx -twx -twx -lEj -uKm -aXH -gMk -xUx -lEj -xKo -nqu -ikD -vFM -uqr -joo -bkk -oCi -jqv -mMc -lBI -hRl -dAx -iug -pLx -lyN -lyN -lyN -lyN -lyN -lyN -fQy -msm -aWD -aWD -aWD -hux -eoO -ugV -ugV -lke -sNJ -ugV -etr -ktG -uYG -uYG -uYG -iYb -dBF -ygx -nUy -uYG -uYG -uYG -lEj -lEj -lEj -lEj -lEj -jVV -pnS -hhX -ebN -hhX -pAK -hhX -vUj -mml -vUj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(153,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -hhX -hhX -jVV -nQm -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -uif -fYe -fYe -lJq -jmY -obA -gOB -vzj -gFg -pQz -gKt -vRA -vRA -vRA -vRA -vRA -vRA -vRA -sPD -vfM -jKg -dYS -jxF -qod -mxq -twx -twx -twx -twx -uKm -lEj -gMk -lEj -lEj -lEj -xKo -xKo -xKo -xKo -xKo -lVx -bkk -lvM -jOh -cYD -wQe -hRl -qXF -pjL -pLx -dRs -lyN -lyN -lyN -lyN -lyN -oRU -tCb -fjt -gij -dYq -kEA -yhp -yhp -yhp -iwk -pzC -eUW -eUW -nzi -dkt -iWn -uYG -uYG -uYG -uYG -uYG -uYG -hhX -hhX -hhX -lEj -lEj -lEj -lEj -jVV -hhX -vUj -rgF -vUj -hhX -jVV -vUj -mml -vUj -jVV -jVV -jVV -jGa -jVV -jVV -jVV -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(154,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -fYe -lJq -raz -obA -egu -qfu -jXb -jXb -gKt -vRA -vRA -vRA -qfr -vRA -vRA -vRA -sPD -oZT -jKg -jqG -jxF -vjZ -mxq -twx -twx -twx -twx -uKm -xwA -gMk -lEj -lEj -lEj -xKo -dor -lVx -dDG -lVx -cie -bkk -gNB -nIK -nIK -lpW -bqm -lpW -sHO -pLx -pSb -qJs -jHn -qTe -kll -qTe -aqu -nvw -aWD -wCG -pVq -guO -rhS -rhS -rhS -bWl -guO -lvU -ybD -njL -lEu -uwx -aWD -eNj -uYG -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -hhX -jVV -hhX -vUj -rgF -vUj -hhX -hhX -vUj -mml -vUj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(155,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -lJq -raz -obA -hls -ukx -hOa -nas -gKt -jxa -jxa -jxa -jxa -jxa -vdD -prh -jxF -sPD -kaa -jxF -jxF -pnQ -mxq -mxq -mxq -mxq -mxq -uKm -gMk -uet -lEj -lEj -lEj -xKo -lVx -bkk -bkk -bkk -bkk -bkk -pLx -pLx -xVO -xVO -lOa -xVO -iZa -iZa -iZa -uyj -iZa -iZa -iZa -iZa -iZa -iZa -aWD -cNM -pVq -rhS -xLv -ekZ -ybD -cSd -ybD -juV -mog -mog -aWD -vzC -aWD -wlV -aWD -lEj -lEj -mUQ -rGg -rGg -mUQ -lEj -lEj -hhX -hhX -jVV -hhX -vUj -mml -rMz -hhX -hhX -hhX -vUj -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(156,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -oID -hhX -hhX -kDf -kDf -joM -kDf -kDf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -uif -fYe -lJq -raz -obA -nas -hOa -ukx -nas -gKt -eOg -rHF -mHf -xfK -jxa -kBo -uWt -kdg -lJC -xVg -ixU -dtQ -dtQ -gMk -lEj -lEj -lEj -lEj -lEj -xUx -lEj -lEj -lEj -ent -cIN -lVx -bkk -oLN -gKM -fWj -qoB -jre -cIr -wFS -fVg -gKM -kqa -iZa -aUG -yhg -ttz -aQg -kFH -fLu -gvd -oAt -sAI -pCA -vYC -pVq -xLv -qHp -wtH -wtH -jNL -wtH -wtH -iNj -mog -aWD -xwm -sCp -sCp -aWD -lEj -lEj -lEj -tOG -ufA -lEj -lEj -uif -hhX -hhX -sXI -hhX -rMz -mml -rMz -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(157,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -kDf -kDf -kDf -kDf -kDf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -uif -fYe -fYe -fYe -lJq -xeJ -obA -obA -obA -lno -lno -lno -afJ -jim -jim -mxn -jxa -lUj -kFl -szD -sFa -nmc -ixU -dtQ -gMk -gMk -gMk -lEj -gMk -lEj -uKm -aXH -lgL -rQP -lEj -gMk -vWx -dor -uSS -oUp -mhN -tOl -tmg -tmg -tmg -tmg -vGd -sup -wIQ -ovD -vNa -jEK -anN -ktL -pMG -pMG -pMG -eFL -iZa -qWG -nHr -rhS -sqw -wtH -wtH -rsw -vEq -rkZ -wtH -wtH -aWD -aWD -xwm -mog -mog -aWD -lEj -lEj -lEj -uif -fYe -lEj -lEj -hhX -hhX -hhX -sXI -sXI -sXI -vUj -sXI -sXI -sXI -sXI -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(158,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -mNZ -vfJ -raz -jAB -vem -obA -rrZ -oQW -kLw -sRl -xCq -xZU -gZA -jxa -kri -kFl -szD -sFa -ppp -ixU -raZ -szD -kdg -sqL -sqL -rlw -rlw -rlw -uet -gnh -msw -pfg -gMk -cIN -lVx -bkk -nxv -qXF -qXF -oVF -oVF -oVF -oVF -qXF -qXF -lPn -iZa -nUb -jaH -anN -ktL -asd -uIj -qVV -gNZ -fDP -teg -pMJ -ybD -qHp -wtH -nSN -mGP -jjI -mee -uqM -wje -vEI -aTD -muB -mog -mog -aWD -lEj -lEj -lEj -fYe -fYe -lEj -mUQ -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(159,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -vfJ -vfJ -raz -vfJ -vfJ -obA -oQW -iaB -bjp -fmK -fwM -pDd -jxa -jxa -gOs -kIY -kdg -sFa -kzC -jqk -pve -uMT -rQO -uXP -uXP -nLg -osr -rlw -gMk -ikc -gMk -xKo -xKo -xKo -bjy -bkk -wLL -qXF -oVF -oVF -oVF -oVF -oVF -oVF -qXF -ejB -elk -lde -xtL -anN -kWC -gjJ -qpT -aYG -iZa -aWD -aWD -aWD -aWD -vzC -wtH -uca -eVA -rWV -oZC -aKj -wje -xwm -mog -mog -mog -cYw -aWD -lEj -lEj -fYe -fYe -fYe -fYe -anx -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(160,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -mNZ -mNZ -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -vfJ -hXK -raz -vfJ -plX -obA -otm -oQW -kLw -tiY -ehb -gzd -jxa -jWG -tyu -sBr -rGu -qus -vNM -ixU -vAs -szD -kdg -sqL -sqL -rlw -khP -rlw -lEj -lEj -lEj -xKo -wlR -lNe -lVx -bkk -oAa -skH -oVF -oVF -oVF -oVF -oVF -oVF -qXF -kRT -iZa -ahz -iVk -xoh -mTw -xON -saa -iYh -ewM -sCp -sCp -sCp -sCp -pcc -wje -cSC -jPb -uSH -eVA -qqh -wje -xwm -mog -mog -mog -mog -aWD -lEj -lEj -lEj -fYe -lEj -lEj -mUQ -eCF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(161,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -jVV -jVV -jVV -jVV -jVV -mNZ -mNZ -mNZ -mNZ -mNZ -hhX -hhX -hhX -hhX -hhX -hhX -fYe -uif -lJq -imx -raz -occ -fMz -obA -sOr -mSY -ddZ -nXL -nXL -rnJ -oMJ -cDQ -mtO -sAy -wiA -eLu -oGk -ixU -gMk -gMk -gMk -lEj -lEj -sqL -uoY -sqL -lEj -lEj -lEj -xKo -jBG -oEN -aCL -bkk -gNR -sgk -qXF -oVF -oVF -oVF -oVF -qXF -wQe -mUF -ovD -gwp -rAx -fan -diN -aPL -msr -oTN -ewM -sCp -sCp -mog -sCp -pcc -wje -vno -lAE -afp -wsW -hYP -wje -xwm -mog -mog -mog -mog -aWD -lEj -lEj -lEj -fYe -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(162,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -fYe -mNZ -mNZ -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -lJq -ijC -raz -vfJ -vfJ -obA -lno -lno -lno -nXL -fBO -naj -jxa -iZW -xaz -qtx -qtx -xbC -cIE -ixU -gMk -lEj -gMk -lEj -lEj -sqL -uoY -sqL -gMk -lEj -poh -woL -iNv -xKo -tpz -bkk -saN -gSw -lpW -lpW -nJQ -qIw -lcU -lpW -lpW -uqn -iZa -esV -qdV -qdV -qdV -dYo -bGu -vze -ewM -sCp -vwu -bkW -bkW -sqF -wje -wtH -kjR -buk -ygJ -wtH -wje -gkJ -bkW -bkW -bkW -bkW -aWD -lEj -lEj -fYe -fYe -fYe -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(163,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -uif -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -vfJ -ofL -raz -uba -nke -cYs -obA -hHW -obA -lWd -vfJ -jxa -jxa -fta -ukw -hEi -lsx -idr -lsx -hEi -lEj -lEj -iOE -lEj -lEj -sqL -uoY -gbP -fWJ -poh -poh -wPU -uab -qhG -qhG -qhG -qhG -she -qhG -qhG -iZa -iZa -ovD -ovD -ovD -iZa -iZa -lBZ -qdV -oBo -qdV -dYo -fWg -gEB -iZa -uFC -lhg -tel -tel -tel -tel -uFC -itk -koT -itk -uFC -tel -tel -tel -tel -tel -lhg -uFC -lEj -lEj -fYe -lEj -fYe -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(164,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -vfJ -vfJ -jmY -jmY -uba -agO -uba -uba -uba -raz -vfJ -fpY -hEi -hEi -hEi -hEi -vGZ -cHn -sAN -hEi -hEi -lEj -lEj -lEj -lEj -sqL -uoY -sqL -mRI -dsP -gXh -ohk -uab -qhG -awM -cQr -mtT -pXL -kOI -eRl -ovD -btZ -djW -oas -muw -bGU -iZa -hHS -kHt -kHt -kHt -iUP -aHj -iZa -iZa -uFC -xlG -tGb -tGb -tGb -tGb -eyp -tGb -wie -tGb -eyp -tGb -tGb -tGb -tGb -tGb -xlG -uFC -lEj -lEj -fYe -lEj -fYe -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(165,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -mNZ -mNZ -mNZ -fYe -fYe -fYe -vfJ -vfJ -jmY -fXD -jmY -wWE -jmY -raz -raz -vfJ -fpY -clQ -ssg -vtN -ylR -pPx -akB -kFP -uaY -iFN -iFN -iFN -lEj -lEj -sqL -uoY -sqL -uiO -dsP -gXh -ohk -uab -tyg -cuz -qpt -rbw -rbw -cZf -mMZ -ovD -mio -jgs -nep -pMG -pCF -iZa -bzV -pMG -pMG -pMG -lXi -ldl -iZa -lEj -uFC -xlG -tGb -tGb -tGb -tGb -tGb -tGb -haC -igE -tGb -tGb -tGb -tGb -tGb -tGb -xlG -uFC -lEj -lEj -fYe -lEj -fYe -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(166,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -uif -mNZ -mNZ -mNZ -fYe -fYe -fYe -uif -vfJ -vfJ -vfJ -vfJ -vfJ -iSz -uba -vfJ -vfJ -coF -wYI -elT -elT -elT -mod -jdW -fGG -iFN -iFN -ekR -iFN -iFN -lEj -rlw -eGM -rlw -lEj -dsP -nQs -ohk -ohk -mPW -uXe -fUL -kwh -ylm -vEE -jpH -iZa -jDi -qtA -nvC -uIj -jgs -jTo -tQY -nHZ -qYm -lRU -wZb -vxp -iZa -lEj -uFC -xlG -tGb -tGb -tGb -tGb -tGb -tGb -tGb -jFP -tGb -tGb -tGb -tGb -tGb -tGb -xlG -uFC -lEj -lEj -fYe -tOG -fYe -lEj -lEj -uif -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(167,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -fYe -uif -mNZ -mNZ -mNZ -mNZ -mNZ -fYe -uif -fYe -mNZ -mNZ -mNZ -mNZ -vfJ -vmk -uba -pBN -vfJ -hEi -hEi -wFI -mmU -ibE -wts -uaw -uaw -tcx -qJN -uHQ -szk -iFN -lEj -sqL -uoY -sqL -lEj -poh -alu -ohk -jMN -qhG -lwZ -diZ -fvq -psi -smn -huy -grz -mGV -grz -qWT -qWT -qWT -grz -grz -qWT -nnz -qWT -grz -grz -grz -lEj -uFC -xlG -tGb -tGb -tGb -tGb -tGb -sdW -ohz -weB -ohz -aXg -tGb -tGb -tGb -tGb -xlG -uFC -lEj -uKm -uKm -iDu -uKm -uKm -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(168,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -fYe -fYe -fYe -mNZ -mNZ -mNZ -mNZ -vfJ -xrt -wtI -vfJ -vfJ -hEi -myW -myW -fsZ -jfB -sab -sab -jzM -iFN -kHf -xkL -uSX -iFN -lEj -sqL -uoY -sqL -lEj -poh -poh -hFa -tUc -qhG -stP -ipu -qhG -evO -sIQ -mHb -grz -hSD -rXO -kmz -kmz -kmz -jkU -pif -kmz -uLS -uyZ -esc -grz -lEj -lEj -uFC -xlG -tGb -tGb -tGb -tGb -tGb -lKC -jer -rJz -psM -hGV -tGb -tGb -tGb -tGb -xlG -uFC -lEj -lEj -iJm -iJm -iJm -uKm -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(169,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -fYe -fYe -fYe -mNZ -mNZ -mNZ -mNZ -vfJ -vfJ -bfp -vfJ -mNZ -hEi -mlm -rsI -gmH -iVp -sab -sab -sdn -iFN -aXl -fyJ -aXl -iFN -lEj -sqL -uoY -sqL -lEj -lEj -lEj -dsP -poh -poh -stP -tNK -vkp -qgD -smn -xan -aSx -kRd -sVt -pYF -lXE -urI -rAP -rAP -rAP -urI -kdE -xjL -grz -lEj -lEj -uFC -xlG -tGb -tGb -tGb -sdW -ohz -iTA -rJz -rJz -rJz -btJ -ohz -aXg -tGb -tGb -xlG -uFC -lEj -fYe -fYe -iJm -iJm -uKm -uif -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(170,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -fYe -fYe -mvG -mNZ -mNZ -mNZ -mNZ -mNZ -vfJ -lVB -vfJ -mNZ -hEi -hUH -dfk -gmH -rXS -tOL -fPv -iAM -iFN -mZn -oND -iem -iFN -lEj -sqL -uoY -sqL -gMk -lEj -lEj -lEj -lEj -lEj -qhG -pql -qhG -qhG -sjR -xmZ -grz -grz -grz -xKX -qBz -rAP -rAP -rAP -rAP -rAP -odk -jDl -grz -lEj -lEj -uFC -pFg -gsg -gsg -gsg -hgl -nPW -rJz -nKp -rGr -nKp -rJz -nPW -hGV -tGb -tGb -xlG -uFC -lEj -fYe -fYe -fYe -iJm -uKm -lEj -fYe -hhX -hhX -hhX -fNW -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(171,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -mNZ -mNZ -uif -fYe -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -hEi -hEi -hEi -hEi -hEi -hEi -hEi -iRy -iFN -rEv -vjQ -evN -iFN -lEj -sqL -uoY -sqL -gMk -lEj -lEj -lEj -lEj -fYe -vnb -jCm -pbA -szi -smn -keJ -keJ -qdl -grz -mdU -qBz -rAP -rAP -fOb -rAP -rAP -odk -kOU -grz -fYe -lEj -uFC -bMb -xlG -xlG -xlG -nPW -auj -rJz -nKp -gHc -nKp -rJz -psM -hGV -tGb -tGb -xgN -uFC -lEj -lEj -fYe -lEj -lEj -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(172,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -fYe -fYe -fYe -fYe -fYe -fYe -uif -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -ivx -ivx -ivx -ivx -wkG -lLm -iFN -iFN -iFN -iFN -iFN -lEj -eIO -ehY -rlw -sqL -sqL -sqL -sqL -iSD -hen -vnb -asp -elX -szi -stS -bDk -bqz -tXf -grz -wfH -qBz -rAP -rAP -rAP -rAP -rAP -odk -iSJ -grz -fYe -fYe -uFC -hvl -bWv -bWv -bWv -pdS -nPW -nPW -nKp -nKp -nKp -nPW -nPW -hGV -tGb -tGb -xlG -uFC -lEj -lEj -lEj -lEj -hen -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(173,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -mvG -hhX -hhX -uif -uif -fYe -fYe -fYe -fYe -fYe -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -ivx -moe -wkG -wkG -wkG -rzI -moe -lEj -lEj -lEj -lEj -lEj -rlw -wvS -uCp -uXP -uXP -iTF -mHn -sqL -fYe -qhG -bjc -qhG -ylS -mra -rhi -bDk -eju -grz -nNn -qBz -urI -rAP -rAP -rAP -urI -dfc -xjL -grz -fYe -fYe -uFC -xlG -tGb -tGb -tGb -mJO -uDp -uDp -uDp -uDp -uDp -uDp -uDp -tXc -tGb -tGb -xlG -uFC -lEj -hen -hen -hen -hen -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(174,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -mNZ -mNZ -uif -fYe -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -fYe -hhX -fYe -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -gEA -wkG -jYT -jYT -jYT -rIJ -moe -lEj -lEj -lEj -lEj -hhX -rlw -sqL -rlw -sqL -sqL -rlw -uoY -sqL -fYe -qhG -gni -tNh -efQ -vwh -nUS -bDk -eJi -grz -sbc -iQs -gsh -lMa -qEf -lve -kfG -kfG -nHw -grz -hen -hen -uFC -xlG -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -xlG -uFC -hen -hen -hen -hen -hen -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(175,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -uif -mNZ -mNZ -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -ivx -ivx -wkG -jYT -wkG -wkG -wkG -moe -lEj -lEj -lEj -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -fYe -qhG -jDM -qhG -wYb -ofx -tEu -bDk -eJi -grz -xMv -nRZ -sLv -grz -wqM -grz -lhe -stQ -eBf -grz -hen -hen -uFC -xlG -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -tGb -xlG -uFC -hen -hen -hen -hen -hen -kxB -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(176,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -mNZ -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -mNZ -mNZ -fYe -fYe -fYe -fYe -uif -mNZ -mNZ -mNZ -mNZ -mNZ -ivx -ivx -wkG -jYT -wkG -ivx -ivx -lEj -lEj -lEj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -khP -iSD -uVI -qhG -cxz -qhG -qhG -llW -llW -llW -feQ -grz -grz -grz -grz -grz -pTx -grz -grz -grz -grz -grz -hen -fYe -uFC -xlG -xlG -xlG -xlG -xlG -xlG -xlG -xlG -iVY -xlG -xlG -xlG -xlG -xlG -xlG -xlG -uFC -hen -hen -hen -hen -hen -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(177,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -uif -mNZ -mNZ -fYe -hhX -hhX -fYe -mNZ -mNZ -mNZ -mNZ -mNZ -lhc -rGg -wkG -mcv -moe -rGg -rGg -fqD -lEj -lEj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -fYe -fYe -fYe -fYe -fYe -fYe -tAo -vbd -vbd -fYe -lEj -lEj -hhX -nbk -smD -pBC -hhX -lEj -lEj -lEj -fYe -lEj -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -uFC -hen -hen -hen -hen -hen -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(178,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -hhX -hhX -hhX -mNZ -mNZ -mNZ -mNZ -mNZ -mNZ -uVI -moe -pFy -moe -hhX -hhX -hhX -jVV -jVV -jVV -jVV -jVV -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -fYe -fYe -fYe -fYe -fYe -tAo -uLR -avQ -uLR -tAo -lEj -lEj -hhX -hHZ -mxt -eRO -hhX -lEj -lEj -lEj -fYe -lEj -lEj -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -hen -hen -hen -lEj -fYe -uif -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(179,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -mNZ -mNZ -mNZ -fYe -hhX -hhX -hhX -umg -hhX -jVV -hhX -hhX -hhX -hhX -fDj -jYT -fDj -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -fYe -fYe -fYe -fYe -fYe -fYe -fYe -fYe -uLR -fYe -fYe -lEj -lEj -hhX -mxt -hhX -hhX -lEj -lEj -lEj -fYe -lEj -lEj -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -hen -hen -hen -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(180,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -fDj -moe -wtf -moe -fDj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -lQA -rlw -uVI -uVI -mUQ -lEj -lEj -lEj -lEj -lEj -mUQ -uVI -uVI -mUQ -hhX -hhX -mxt -hhX -hhX -lEj -lEj -fYe -fYe -lEj -lEj -hhX -hhX -hhX -lEj -lEj -lEj -lEj -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -hen -hen -hen -hen -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(181,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -uOY -jVV -jVV -fDj -fDj -qIt -jYT -jwF -fDj -fDj -jVV -jVV -uOY -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -fYe -fYe -lEj -lEj -lEj -lEj -lEj -lEj -lEj -fYe -fYe -fYe -hhX -hhX -hhX -hhX -hhX -fYe -fYe -fYe -fYe -lEj -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -gMk -gMk -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -hen -hen -lEj -lEj -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(182,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -jVV -hhX -hhX -fDj -wou -qSt -jYT -tuT -bRD -fDj -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -hhX -jVV -hhX -hhX -lEj -hhX -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fYe -fYe -hhX -bZr -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -gMk -xKx -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hen -hen -lEj -lEj -uif -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(183,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -hhX -hhX -hhX -jVV -hhX -hhX -fDj -weK -qSt -gBg -hQq -fKb -fDj -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -jVV -jVV -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -rjp -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -bZr -rjp -rjp -bZr -uif -fYe -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(184,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -jVV -jVV -jVV -uOY -jVV -jVV -fDj -fDj -qSt -jYT -hQq -fDj -fDj -jVV -jVV -uOY -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -rjp -rjp -rjp -bZr -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(185,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -hhX -hhX -hhX -jVV -hhX -hhX -hhX -fDj -fDj -jnE -fDj -fDj -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(186,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -jVV -hhX -hhX -jVV -hhX -hhX -hhX -hhX -fDj -fDj -fDj -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -lEj -lEj -hhX -hhX -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(187,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -uoY -sqL -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -lEj -lEj -lEj -lEj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(188,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -sqL -hRH -sqL -hhX -jVV -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(189,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -jVV -jVV -jVV -jVV -jVV -jQS -jQS -wYW -jQS -jQS -jVV -jVV -jVV -jVV -jVV -jVV -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(190,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -qQq -hhX -jVV -jVV -hhX -jVV -hhX -hhX -jQS -tjq -lSA -nKV -jQS -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(191,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -nQw -nQw -nQw -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -nQw -nQw -nQw -nQw -hhX -hhX -jVV -hhX -hhX -jQS -tjq -jEt -wFw -jQS -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(192,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -hhX -jQS -jQS -jQS -jQS -aPJ -lSA -csu -jQS -jQS -jQS -jQS -hhX -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(193,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -hhX -hhX -jQS -jQS -gQq -klu -xEs -xEs -bNG -xEs -xEs -qRY -gQq -jQS -jQS -hhX -hhX -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(194,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jVV -jQS -sCE -jQS -gQq -gQq -sbR -gQq -arS -eEg -qad -gQq -abm -gQq -gQq -jQS -tLO -jQS -jVV -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(195,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jQS -jQS -bYy -jQS -gQq -gQq -sbR -gQq -ibl -dzL -qad -gQq -abm -gQq -gQq -jQS -qez -jQS -jQS -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(196,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -jQS -hUo -rWL -jQS -vDn -gQq -sbR -gQq -ibl -dzL -qad -gQq -abm -gQq -qUx -jQS -xne -hUo -jQS -szt -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(197,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -wBd -hAL -dBj -jQS -kSq -ubn -gYI -ybO -xgq -dzL -ueJ -ybO -gYI -ubn -nMf -jQS -dBj -cku -riY -rHm -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(198,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -wBd -rWL -jQS -jQS -bXe -qXj -qXj -lAt -lAt -dzL -lAt -lAt -dzL -dzL -aFb -jQS -jQS -geB -tLO -jVV -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(199,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -wBd -hAL -jQS -ojC -qXj -lKY -lKY -vUJ -nRj -nem -ciV -qXj -lKY -lKY -dzL -kkD -jQS -cku -tLO -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(200,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -jQS -hAL -jQS -qWt -qXj -lKY -hQH -cAq -csf -oIh -pPY -iPf -gCP -lKY -dzL -hLA -jQS -cku -jQS -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(201,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -wBd -hAL -jQS -jQS -uUt -gMy -gwx -jQS -wmO -wmO -wmO -jQS -xDf -gtE -dsB -jQS -jQS -cku -tLO -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(202,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oJt -wAT -ezg -agA -cVs -cUf -qXj -lKY -qUi -wmO -wqG -wqG -wqG -wmO -rmi -lKY -dzL -tsm -gCV -awC -vbV -wAT -mZJ -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(203,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -jVV -wBd -rWL -jQS -gBW -qXj -avA -nVm -wmO -wqG -wqG -wqG -wmO -xGG -uBm -vUJ -cVF -jQS -hAL -tLO -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(204,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -oID -hhX -jQS -hye -jQS -qZX -qXj -lKY -qGD -wmO -wqG -wqG -wqG -wmO -bLI -lKY -vUJ -gDl -jQS -hye -jQS -hhX -oID -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(205,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jQS -jQS -jQS -iXn -mMe -cWL -tMz -jQS -wmO -iaP -jgA -jQS -tMz -ybo -sbS -lVq -jQS -jQS -jQS -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(206,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -rXf -jEt -aMf -rdn -xSW -sBR -wnA -wnA -wnA -viT -bUl -cNh -mjY -jEt -oag -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(207,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -cCr -fXW -xCs -awy -awy -awy -awy -awy -awy -awy -awy -awy -oVS -mCT -okf -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(208,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -uCr -ikp -hLP -cWc -wnA -wnA -jfD -awy -olE -wnA -wnA -wnA -iyZ -nWd -xXm -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(209,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -jQS -jQS -jQS -jQS -bGL -vBD -rxC -awy -jpe -wnA -iGg -jQS -jQS -jQS -jQS -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(210,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -fZF -fZF -fZF -fZF -jQS -tbU -byC -tbU -dKo -tbU -byC -tbU -jQS -fZF -fZF -fZF -fZF -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(211,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -nCm -nCm -nCm -rOD -nCm -nCm -nCm -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(212,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -nCm -nCm -nCm -kvd -nCm -nCm -nCm -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(213,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -nCm -nCm -nCm -nCm -nCm -nCm -nCm -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(214,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -nCm -nCm -nCm -nCm -nCm -nCm -nCm -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(215,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -jQS -nCm -nCm -nCm -nCm -nCm -jQS -jQS -fZF -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(216,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -jQS -jQS -jQS -jQS -jQS -jQS -jQS -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(217,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fZF -fZF -fZF -fZF -fZF -fZF -fZF -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(218,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(219,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -jiN -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -"} -(220,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"tIq" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/security/evidence) +"tIr" = ( +/turf/closed/wall/rust, +/area/station/engineering/supermatter/room) +"tIu" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"tIA" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/food/grown/poppy/lily{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/lily{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/grown/poppy/lily, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/cell_5k, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"tIM" = ( +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/station/science/auxlab) +"tIQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"tIY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"tJa" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Atmospherics Tank - N2O"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) +"tJh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/structure/steam_vent, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"tJK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible{ + dir = 8 + }, +/obj/machinery/meter/monitored/distro_loop, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"tJX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"tKi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"tKt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"tKv" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "QMLoad"; + name = "off ramp"; + pixel_y = 5 + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) +"tKB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/lawoffice) +"tKS" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"tKY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/loading_area, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"tLh" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"tLo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Mailroom" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "cargo-mailroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/shipping, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"tLM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/tcommsat/computer) +"tMu" = ( +/obj/machinery/shower/directional/east, +/obj/structure/cable, +/turf/open/floor/plastic, +/area/station/security/prison/shower) +"tMO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tMU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"tMW" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tNa" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"tNe" = ( +/obj/structure/disposalpipe/junction, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"tNj" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/iron, +/area/station/cargo/storage) +"tNk" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"tNB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"tNC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"tNQ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"tNW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"tNY" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"tOa" = ( +/obj/structure/table, +/obj/item/tank/internals/oxygen/red, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron, +/area/station/security/processing) +"tOo" = ( +/obj/machinery/power/smes, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"tOr" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tOx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"tOy" = ( +/turf/closed/wall, +/area/station/cargo/drone_bay) +"tOB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/security/processing) +"tOH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/dock) +"tOJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tOR" = ( +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/glass, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"tPn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"tPw" = ( +/obj/structure/table, +/obj/item/flashlight/flare/candle/infinite{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/spaghetti/meatballspaghetti{ + pixel_y = 5 + }, +/obj/item/kitchen/fork, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"tPz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"tPC" = ( +/obj/effect/turf_decal/bot, +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"tPD" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/fore) +"tPH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison/mess) +"tPN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tPP" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/storage_shared) +"tPS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"tQo" = ( +/obj/structure/closet/crate/medical, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/storage/medkit/emergency, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tQp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tQD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"tQI" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/box, +/obj/machinery/mineral/ore_redemption{ + dir = 8; + input_dir = 4; + output_dir = 8 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Ore Redemtion Window"; + req_access = list("mineral_storeroom") + }, +/obj/machinery/door/window/right/directional/east{ + name = "Cargo Security Window"; + req_access = list("shipping") + }, +/turf/open/floor/plating, +/area/station/cargo/office) +"tQM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"tRg" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"tRw" = ( +/obj/machinery/telecomms/bus/preset_three, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"tRL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/central) +"tRO" = ( +/obj/structure/sink/directional/west, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"tRX" = ( +/obj/machinery/conveyor{ + id = "garbage" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Disposal Exit"; + name = "Disposal Exit Vent" + }, +/obj/structure/sign/warning/deathsposal/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"tSc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/glass, +/obj/item/stack/medical/mesh{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/reagent_containers/chem_pack{ + pixel_x = 10; + pixel_y = 10 + }, +/obj/item/book/manual/wiki/medicine{ + pixel_x = -9; + pixel_y = 6 + }, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"tSk" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/item/kirbyplants/organic/plant5, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"tSx" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall/rust, +/area/station/ai/satellite/interior) +"tSD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"tSI" = ( +/obj/machinery/door/airlock/grunge{ + id_tag = "Cabin_4"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"tSN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/tank/internals/oxygen/red{ + pixel_x = 4 + }, +/obj/item/tank/internals/oxygen/red{ + pixel_x = -4 + }, +/obj/item/wrench, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"tSP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/checker, +/area/station/security/mechbay) +"tSY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"tTp" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"tUc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"tUe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tUm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/maintenance/aft) +"tUr" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/the_griffin/directional/east, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"tUO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tUR" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tUV" = ( +/obj/structure/table, +/obj/machinery/firealarm/directional/north, +/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/recharger, +/turf/open/floor/iron/dark, +/area/station/security/office) +"tVt" = ( +/obj/machinery/light/directional/south, +/obj/machinery/suit_storage_unit/industrial/loader, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"tVu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"tVC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"tVH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"tVS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/prisoner/management{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"tWa" = ( +/obj/machinery/computer/records/security, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"tWc" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"tWd" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"tWe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Medbay" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"tWg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tWn" = ( +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"tWA" = ( +/obj/structure/table, +/obj/structure/cable, +/obj/item/food/spiderleg, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"tWL" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"tWM" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/table, +/obj/item/crowbar, +/obj/item/wrench, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"tXg" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/department/bridge) +"tXm" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "virology_airlock_exterior"; + name = "Virology Exterior Airlock" + }, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"tXr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"tXz" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"tXB" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"tXR" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"tXS" = ( +/obj/machinery/atmospherics/components/tank/oxygen, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"tXX" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"tXZ" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"tYd" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"tYe" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"tYi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/washing_machine, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"tYx" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Pod 2"; + space_dir = 1 + }, +/turf/open/floor/plating, +/area/station/commons/fitness/recreation) +"tYZ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Plasma to Pure" + }, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics Aft Tanks"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"tZa" = ( +/obj/item/kirbyplants/organic/plant16, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"tZc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "cmoprivacy"; + name = "Office Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/command/heads_quarters/cmo) +"tZe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"tZf" = ( +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"tZh" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"tZk" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"tZz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"tZD" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/wall_healer/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/office) +"tZG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"tZK" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"tZM" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/turbine/directional/west, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"tZX" = ( +/obj/structure/flora/bush/pale/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/port/lesser) +"uap" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 2; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 + }, +/turf/open/floor/iron, +/area/station/security/processing) +"uba" = ( +/obj/structure/lattice, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/space/basic, +/area/space/nearstation) +"ubt" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/command/gateway) +"ubw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"ubC" = ( +/obj/machinery/door/poddoor/shutters{ + id = "secmechbay"; + name = "Security Mech Bay Shutters" + }, +/turf/open/floor/plating, +/area/station/security/mechbay) +"ubF" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/cup/glass/bottle/vodka{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"ubJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + name = "Virology Isolation Shutters"; + id = "virocells" + }, +/turf/open/floor/plating, +/area/station/medical/surgery/theatre) +"ubM" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"ubN" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"ubU" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/dark/telecomms, +/area/station/science/server) +"ucm" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ucG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/maintenance, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"ucP" = ( +/obj/structure/transit_tube/crossing, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"ucS" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"udg" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"udn" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"udA" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/turf/open/floor/iron/dark, +/area/station/science) +"udE" = ( +/obj/effect/landmark/start/cargo_technician, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"udF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"udI" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/tank/air/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"udJ" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "mining"; + dir = 1; + pixel_y = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"udW" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"ued" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"uet" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/plaque{ + icon_state = "L6" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"uew" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"uey" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"ueJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"ueO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"ueY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/spawner/random/structure/crate, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ueZ" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"ufc" = ( +/obj/machinery/requests_console/directional/east{ + department = "Garden"; + name = "Garden Requests Console" + }, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"ufy" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"ufD" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/beaker, +/obj/item/food/pie/cream{ + pixel_y = -4 + }, +/obj/effect/landmark/navigate_destination/kitchen, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"ufE" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "Queue Shutters" + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) +"ufG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"ufL" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/maintenance/port/greater) +"ufQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"ufU" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/item/radio/intercom/directional/south, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/surgery/theatre) +"ufX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ugc" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"ugp" = ( +/obj/structure/chair/sofa/bench/right, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"ugq" = ( +/obj/structure/chair{ + desc = "A gray chair. Nothing more relaxing while waiting for therapy than watching the dying."; + dir = 8; + name = "therapy waiting chair" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"ugr" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"ugy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"ugA" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/vending/cigarette, +/obj/structure/sign/warning/yes_smoking/circle/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"ugC" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"ugG" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/fishing_portal_generator, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"ugY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"uhp" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"uhx" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/science/genetics) +"uhy" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 5"; + name = "Cell 5"; + req_access = list("security") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"uhE" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/commons/locker) +"uib" = ( +/obj/machinery/status_display/evac/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/storage/box/lights/mixed{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/lights/mixed, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"uik" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/item/folder/white, +/obj/item/pen, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "chemistry_shutters"; + name = "Chemistry Lobby Shutters" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/window/left/directional/south{ + name = "Chemistry Desk"; + req_access = list("pharmacy") + }, +/turf/open/floor/plating, +/area/station/medical/pharmacy) +"uiu" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/machinery/status_display/evac/directional/north, +/obj/item/folder/white{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/item/tgui_book/manual/dsm, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"uiE" = ( +/obj/machinery/ai_slipper{ + uses = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"uiN" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/stool/directional/south, +/turf/open/floor/wood, +/area/station/service/library) +"uiX" = ( +/obj/structure/flora/rock, +/turf/open/misc/asteroid, +/area/space/nearstation) +"ujN" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/item/folder/red, +/obj/item/pen, +/obj/machinery/door/window/brigdoor/right/directional/west{ + name = "Armoury Desk"; + req_access = list("armory") + }, +/turf/open/floor/plating, +/area/station/security/armory) +"ujT" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Atmospherics Entrance"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"ukc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"ukd" = ( +/obj/effect/turf_decal/bot, +/obj/structure/frame/computer{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"uke" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) +"uko" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"ukM" = ( +/obj/structure/sign/warning/vacuum/external/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance/external{ + name = "Transit Intersection" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"ukQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"ukT" = ( +/obj/structure/sign/warning/no_smoking, +/turf/closed/wall, +/area/station/maintenance/port/lesser) +"ukU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"ukV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/table, +/obj/machinery/light/directional/east, +/obj/item/storage/medkit/emergency, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"ulg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ + dir = 4 + }, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) +"ulm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/office) +"ulp" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"ulq" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/cigbutt, +/obj/effect/spawner/random/entertainment/cigarette, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/cargo/storage) +"ult" = ( +/obj/structure/sign/warning/secure_area/directional/west, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"ulF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/light/directional/east, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"ulJ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "NTMSLoad"; + name = "off ramp" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"ulS" = ( +/turf/closed/wall, +/area/station/security/courtroom) +"ulZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"umj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"umq" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"umr" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/security/prison/garden) +"umw" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"umA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"umG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"umJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/eva) +"umL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"unb" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"unp" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Research Hallway"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"unr" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"unv" = ( +/obj/structure/closet/secure_closet/injection{ + name = "justice injections locker" + }, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/light_switch/directional/north, +/obj/machinery/button/door/directional/west{ + id = "justiceblast"; + name = "Justice Vent Toggle"; + pixel_y = 8; + req_access = list("armory") + }, +/obj/machinery/button/door/directional/west{ + id = "justiceshutter"; + name = "Justice Shutter Control"; + pixel_y = -8; + req_access = list("brig") + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"unx" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"uny" = ( +/obj/structure/chair/stool/bar/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"unz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/green/anticorner/contrasted, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"unE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"unQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/item/kirbyplants/organic/plant10, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/lawoffice) +"unS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"uok" = ( +/obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"uov" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + name = "mail belt" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"uoA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cardboard, +/obj/structure/sign/warning/no_smoking{ + pixel_x = 30 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"uoB" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/folder/red, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"uoL" = ( +/obj/machinery/brm, +/obj/machinery/conveyor{ + id = "mining"; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"uoN" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"uoW" = ( +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/mask/surgical, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"upa" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"upK" = ( +/obj/effect/turf_decal/siding/thinplating/dark/end, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"upS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"upW" = ( +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"upZ" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/chamber) +"uqc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"uqv" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"uqD" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Gas to Filter" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"uqF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"uqI" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/sorting) +"uqN" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) +"uqT" = ( +/obj/structure/grille/broken, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/hallway/primary/aft) +"uqW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/port) +"ura" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/organic/plant2{ + pixel_y = 3 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) +"urf" = ( +/obj/machinery/bookbinder, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"urh" = ( +/obj/structure/chair/pew{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/iron/chapel{ + dir = 8 + }, +/area/station/service/chapel) +"urx" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"urA" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"urE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"urM" = ( +/obj/structure/fluff/divine/nexus, +/turf/open/floor/mineral/silver, +/area/station/service/chapel/office) +"urN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"urW" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/machinery/requests_console/directional/north{ + name = "Ordnance Mixing Lab Requests Console" + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"uso" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"usp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/turf/open/floor/iron, +/area/station/security/checkpoint/engineering) +"usr" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/gravity_generator) +"usF" = ( +/obj/structure/sign/departments/security/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"usT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/west{ + id = "Abandoned Cell"; + name = "Abandoned Door Lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"usV" = ( +/obj/structure/table/wood, +/obj/item/pai_card, +/turf/open/floor/wood/tile, +/area/station/service/library) +"usX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/theater) +"utj" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"utk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"utw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"utF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"utH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/sign/warning/secure_area/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"utU" = ( +/obj/machinery/light/directional/west, +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"uuu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Tool Storage" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/navigate_destination/tools, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"uuC" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"uuK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"uuW" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"uvi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/eva) +"uvm" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"uvq" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/science/auxlab) +"uvG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"uvO" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"uvT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"uwl" = ( +/obj/structure/chair/pew{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"uwp" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/aft) +"uwq" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 9 + }, +/turf/open/floor/iron/dark/airless, +/area/station/science/ordnance/freezerchamber) +"uwG" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/delivery, +/obj/structure/sign/poster/official/no_erp/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"uwP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"uwR" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/landmark/start/hangover, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"uwT" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"uwX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"uwY" = ( +/obj/effect/turf_decal/box/corners, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"uxz" = ( +/obj/structure/chair, +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/courtroom) +"uxF" = ( +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window/left/directional/north{ + name = "Kitchen Delivery Access"; + req_access = list("kitchen") + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "Kitchen" + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"uxN" = ( +/turf/closed/wall/r_wall, +/area/station/command/vault) +"uyl" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/courtroom) +"uyK" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"uyX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"uzD" = ( +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Connector" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"uzK" = ( +/obj/structure/curtain, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison/shower) +"uzQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"uAb" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"uAc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/stack/sheet/iron/twenty, +/obj/item/stack/sheet/glass{ + amount = 20 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"uAe" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/ferny/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/style_random, +/obj/structure/flora/bush/sunny/style_random, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"uAh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "science sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/science/research, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"uAn" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"uAt" = ( +/obj/machinery/door/airlock/atmos/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine/vacuum, +/area/station/maintenance/disposal/incinerator) +"uAA" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"uAE" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/closed/wall/rust, +/area/station/engineering/atmos/pumproom) +"uAF" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/vending/clothing, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"uAH" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/stairs/left{ + dir = 4 + }, +/area/station/service/chapel/monastery) +"uAS" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"uBo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"uBH" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/transit_tube/crossing, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"uBM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) +"uBO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/gateway) +"uBX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/medical/glass{ + name = "Paramedic Dispatch Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/paramedic, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"uCa" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"uCd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"uCf" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"uCi" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"uCQ" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/frame/machine, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"uCR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/command/vault) +"uCS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"uDe" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/recharge_floor, +/area/station/service/chapel/storage) +"uDi" = ( +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"uDn" = ( +/obj/item/soulstone/anybody/chaplain, +/obj/structure/table/wood, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"uDt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"uDQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"uDT" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"uEa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"uEi" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/port/lesser) +"uEs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central) +"uEw" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/medical/cryo) +"uEC" = ( +/obj/effect/turf_decal/siding/wideplating/dark/corner, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"uEX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"uFb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"uFe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"uFh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood, +/turf/open/floor/iron, +/area/station/security/courtroom) +"uFl" = ( +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/delivery, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/mechbay) +"uFp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"uFL" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/station/solars/starboard/fore) +"uFM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/sign/warning/xeno_mining/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"uFN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"uGc" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/fore) +"uGm" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"uGn" = ( +/obj/machinery/atmospherics/components/tank/air, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel/monastery) +"uGA" = ( +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"uGB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/security/execution/transfer) +"uGD" = ( +/obj/structure/cable, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"uGU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "virology sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"uHc" = ( +/obj/structure/transit_tube/curved{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"uHd" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/engine, +/area/station/science/auxlab) +"uHg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"uHv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"uHD" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Blast Doors" + }, +/obj/machinery/door/window/left/directional/east{ + name = "Engineering Desk"; + req_access = list("engineering") + }, +/obj/structure/desk_bell{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/item/folder/yellow{ + pixel_x = 3 + }, +/obj/item/toy/figure/engineer{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/station/engineering/lobby) +"uHF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"uHG" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Unit_3Privacy"; + name = "Unit 3 Privacy Shutter" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"uHL" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera/autoname/directional/south{ + network = list("ss13","monastery") + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"uHN" = ( +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/food/sausage, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"uHY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"uIs" = ( +/obj/machinery/turretid{ + control_area = "/area/station/ai/satellite/interior"; + name = "Antechamber Turret Control"; + pixel_y = 28; + req_access = list("minisat") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"uIx" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"uIZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"uJg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/tank/air/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"uJn" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"uJs" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"uJE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"uJL" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/fore) +"uJN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"uJP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"uJV" = ( +/turf/closed/wall, +/area/station/commons/vacant_room/commissary) +"uJZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"uKa" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage"; + name = "trash belt" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Trash Chute"; + name = "service camera" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"uKc" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating, +/area/space/nearstation) +"uKi" = ( +/obj/machinery/telecomms/receiver/preset_left, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"uKp" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"uKE" = ( +/obj/structure/lattice, +/obj/item/toy/plush/carpplushie, +/turf/open/space/basic, +/area/space/nearstation) +"uKO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"uLt" = ( +/obj/effect/turf_decal/bot, +/obj/structure/reagent_dispensers/watertank, +/obj/item/extinguisher{ + pixel_y = 4 + }, +/obj/item/extinguisher{ + pixel_x = -4 + }, +/obj/machinery/button/door/directional/south{ + id = "xeno6"; + name = "Creature Cell 6 Toggle"; + pixel_x = 24; + req_access = list("xenobiology") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"uLA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/west, +/obj/machinery/computer/mechpad{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/button/door/directional/south{ + id = "Skynet_launch"; + name = "Mech Bay Door Control" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/mechbay) +"uLJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"uLW" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"uMf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/tcommsat/computer) +"uMk" = ( +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/engineering/main) +"uMz" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"uMD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) +"uMG" = ( +/turf/closed/wall/rust, +/area/station/medical/cryo) +"uNi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + name = "rd sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/mapping_helpers/mail_sorting/science/rd_office, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"uNv" = ( +/obj/machinery/power/turbine/turbine_outlet, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"uNI" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"uNK" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"uNO" = ( +/turf/closed/wall, +/area/station/commons/toilet/restrooms) +"uNY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"uOa" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/engineering/gravity_generator) +"uOd" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"uOo" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"uOz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"uOA" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"uOB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/hallway/primary/fore) +"uOC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/plating, +/area/station/engineering/atmos) +"uPm" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/radio/intercom/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/gravity_generator) +"uPM" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Security Hallway" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"uPX" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"uQj" = ( +/obj/structure/cable, +/obj/machinery/pdapainter/security, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"uQn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"uQt" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"uQE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"uQF" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Containment Chamber Blast Door" + }, +/obj/structure/sign/warning/biohazard/directional/east, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"uQI" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"uQN" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"uQS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/item/rag, +/obj/item/knife/kitchen, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"uRf" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/bot_white, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"uRg" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"uRi" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Office" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) +"uRG" = ( +/mob/living/carbon/human/species/monkey/punpun, +/turf/open/floor/wood/large, +/area/station/service/bar/atrium) +"uRT" = ( +/turf/closed/wall/r_wall, +/area/station/science) +"uSk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"uSB" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/sign/warning/xeno_mining/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"uSH" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/main) +"uST" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/kirbyplants/organic/plant16, +/obj/structure/sign/departments/lawyer/directional/north, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"uTa" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "research_shutters"; + name = "Research Privacy Shutter" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/science/lab) +"uTt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"uTG" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/lights/mixed{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/belt/janitor, +/obj/item/storage/bag/trash, +/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"uTM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"uTT" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small/directional/north, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"uTY" = ( +/obj/machinery/power/emitter/welded{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"uUk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Tech Storage" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"uUm" = ( +/obj/machinery/shower/directional/east{ + name = "emergency shower" + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"uUA" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/turf/closed/wall, +/area/station/engineering/atmos/pumproom) +"uUO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"uUS" = ( +/turf/closed/wall, +/area/station/maintenance/solars/port/aft) +"uVe" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"uVx" = ( +/turf/closed/wall/rust, +/area/station/hallway/primary/port) +"uVJ" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/reed/style_random, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" + }, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/medical/office) +"uVQ" = ( +/turf/closed/wall, +/area/station/maintenance/solars/starboard/fore) +"uVU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"uWz" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"uWA" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall/rust, +/area/station/engineering/supermatter/engine) +"uWM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"uWO" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"uWQ" = ( +/obj/structure/flora/rock/pile/style_random{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/asteroid, +/area/space/nearstation) +"uWS" = ( +/obj/structure/rack, +/obj/item/stack/medical/bruise_pack, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"uWU" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"uXe" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/courtroom) +"uXl" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"uXq" = ( +/turf/closed/wall/r_wall/rust, +/area/station/security/mechbay) +"uXB" = ( +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"uXI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"uXL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/security/brig) +"uXM" = ( +/turf/closed/wall/rust, +/area/station/science/xenobiology) +"uXZ" = ( +/turf/closed/wall/rust, +/area/station/hallway/primary/aft) +"uYb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/science) +"uYh" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"uYp" = ( +/obj/structure/chair/stool/bar/directional/west, +/turf/open/floor/wood, +/area/station/maintenance/port/greater) +"uYw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"uYJ" = ( +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/crowbar/red, +/obj/item/wrench, +/obj/item/storage/box/syringes{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/beakers{ + pixel_y = 2 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/noticeboard/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light/cold/directional/east, +/obj/item/storage/pill_bottle/sepsisillin{ + pixel_x = -5; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"uYM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"uYP" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/dark, +/area/station/science/research) +"uZg" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/rust, +/area/station/command/heads_quarters/hos) +"uZq" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"uZr" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"uZC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/office) +"uZL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"uZN" = ( +/obj/structure/table/wood, +/obj/structure/mirror/directional/east, +/obj/machinery/newscaster/directional/north, +/obj/item/clipboard, +/obj/item/toy/figure/captain, +/obj/machinery/camera/directional/north{ + c_tag = "Captain's Quarters"; + name = "command camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/item/storage/lockbox/medal, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) +"uZR" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"uZS" = ( +/obj/item/shard, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"uZT" = ( +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"uZX" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/portable_atmospherics/pump/lil_pump, +/obj/machinery/camera/directional/west{ + c_tag = "Ordnance Mixing Lab"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/burnchamber) +"uZZ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/turf/closed/wall, +/area/station/engineering/atmos) +"vac" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vao" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"var" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"vaz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_x = 5 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"vaI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/glowstick, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"vaP" = ( +/obj/item/storage/box/chemimp{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/table, +/obj/machinery/light/directional/south, +/obj/structure/reagent_dispensers/wall/peppertank/directional/south, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/obj/item/storage/lockbox/loyalty, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"vba" = ( +/obj/machinery/computer/records/security{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"vbd" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"vbe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/radio/intercom/directional/west, +/obj/item/wallframe/apc, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"vbi" = ( +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/fore) +"vbj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "atmos-entrance" + }, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Desk" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/landmark/navigate_destination/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"vbo" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"vbx" = ( +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 10 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"vbP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"vbT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"vcm" = ( +/obj/structure/cable, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/upload/chamber) +"vct" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/machinery/camera/directional/north{ + c_tag = "Xenobiology Test Chamber"; + name = "xenobiology camera"; + network = list("ss13","rd","xeno") + }, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"vcL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"vcY" = ( +/obj/machinery/biogenerator, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"vdy" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Chaplain)"; + req_access = list("chapel_office") + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, +/area/station/service/chapel) +"vdJ" = ( +/obj/machinery/power/solar_control{ + dir = 4; + id = "aftport"; + name = "Port Quarter Solar Control" + }, +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/vacuum/external/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"vdS" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) +"vea" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/newscaster/directional/west, +/obj/effect/landmark/start/hangover, +/obj/machinery/button/door/directional/west{ + id = "Cabin_3Privacy"; + name = "Cabin 3 Privacy Toggle"; + pixel_y = -24 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/commons/locker) +"vek" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"ves" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"veu" = ( +/turf/open/floor/iron, +/area/station/security/brig) +"vew" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/end, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/bar/backroom) +"veN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/medical) +"veV" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/virology) +"veW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"veZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Satellite Storage" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"vfb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vfd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"vfF" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"vfL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1 + }, +/obj/structure/barricade/wooden/crude, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"vfO" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"vgc" = ( +/obj/structure/sign/warning/vacuum/directional/east, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"vgd" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron, +/area/station/cargo/storage) +"vgm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"vgz" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"vgJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"vgU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vha" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) +"vhf" = ( +/obj/structure/bonfire, +/obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice{ + desc = "For the weary spacemen on their quest to rekindle the first plasma fire."; + name = "Carton of Estus" + }, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/item/melee/moonlight_greatsword, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/science) +"vhi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vhn" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/noticeboard/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"vhp" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vhx" = ( +/mob/living/basic/slime, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"vhK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/service/chapel/funeral) +"vhL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/light/directional/north, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"vhZ" = ( +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating/rust, +/area/station/security/prison) +"vim" = ( +/obj/effect/turf_decal/siding/thinplating/light/corner{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"viq" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/turf/open/space/basic, +/area/space/nearstation) +"vis" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"viu" = ( +/obj/machinery/computer/security/hos{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"viM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"viW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"vjh" = ( +/turf/closed/wall, +/area/station/maintenance/port/greater) +"vjm" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"vjp" = ( +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/station/holodeck/rec_center) +"vjY" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"vkd" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"vkh" = ( +/turf/closed/wall, +/area/station/hallway/primary/central) +"vkq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/glass, +/obj/item/storage/box/bodybags{ + pixel_x = -6 + }, +/obj/item/storage/box/masks{ + pixel_y = 4; + pixel_x = -6 + }, +/obj/item/storage/box/gloves{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/storage/box/rxglasses{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/machinery/duct, +/obj/item/storage/box/syringes, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"vkr" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vks" = ( +/obj/structure/transit_tube/curved{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"vku" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/space/nearstation) +"vkC" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Port Hallway Vendors"; + name = "port camera" + }, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"vkE" = ( +/turf/closed/wall/rust, +/area/station/security/checkpoint/medical) +"vkJ" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"vkL" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/stairs{ + dir = 4 + }, +/area/station/service/chapel/funeral) +"vkY" = ( +/obj/structure/girder/reinforced, +/turf/open/space/basic, +/area/space/nearstation) +"vld" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Dock" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"vlg" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"vlm" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Cargo Bay" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"vlq" = ( +/obj/structure/girder, +/obj/structure/grille/broken, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"vls" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/storage) +"vlv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/sink/directional/east, +/obj/item/reagent_containers/cup/bucket, +/obj/item/mop, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/button/door/directional/south{ + id = "maidbay"; + name = "Maid Bay Toggle" + }, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"vly" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vlJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"vlM" = ( +/obj/structure/transit_tube/crossing, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"vme" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vmg" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"vmq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"vmu" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"vmP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"vmZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"vna" = ( +/obj/structure/table, +/obj/machinery/light/directional/south, +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/machinery/firealarm/directional/south, +/obj/machinery/newscaster/directional/south{ + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"vne" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot/right, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"vnl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"vns" = ( +/obj/machinery/air_sensor/plasma_tank, +/turf/open/floor/engine/plasma, +/area/station/engineering/atmos) +"vnw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vnH" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/filingcabinet, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/showroomfloor, +/area/station/security/checkpoint/science) +"vnJ" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vnL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"vnZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/robotics/lab) +"voa" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/machinery/recharger{ + pixel_x = -3 + }, +/obj/structure/cable, +/obj/item/toy/figure/rd{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/stamp/head/rd{ + pixel_x = 8 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"voo" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"vou" = ( +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/north{ + c_tag = "Theatre Room"; + name = "service camera" + }, +/turf/open/floor/wood, +/area/station/service/theater) +"vpd" = ( +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = -4 + }, +/obj/item/book/manual/wiki/atmospherics, +/obj/item/storage/belt/utility, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vps" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/maintenance/department/security) +"vpD" = ( +/obj/structure/table/glass, +/obj/item/storage/box/bodybags{ + pixel_y = 5 + }, +/obj/item/storage/belt/medical, +/obj/item/crowbar, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"vpP" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/green/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"vpV" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"vpX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"vpY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"vqe" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vqg" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/structure/noticeboard/directional/east, +/obj/item/paper/monitorkey, +/obj/machinery/camera/directional/east{ + c_tag = "Chief Engineer's Office"; + name = "engineering camera"; + network = list("ss13","engine") + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"vqj" = ( +/obj/machinery/atmospherics/components/unary/airlock_pump{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vqr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/grunge{ + name = "Recreation Area" + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"vqs" = ( +/obj/structure/rack, +/obj/item/rcl/pre_loaded, +/obj/item/stack/pipe_cleaner_coil/random, +/obj/item/stack/pipe_cleaner_coil/random, +/obj/item/stack/pipe_cleaner_coil/random, +/obj/item/stack/pipe_cleaner_coil/random, +/obj/item/stack/pipe_cleaner_coil/random, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/art) +"vqv" = ( +/obj/item/wrench, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"vqw" = ( +/turf/closed/wall/r_wall, +/area/station/tcommsat/computer) +"vqM" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/storage/tech) +"vqN" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/obj/machinery/button/door/directional/south{ + id = "robotics_shutters"; + name = "Robotics Shutter Toggle"; + pixel_x = 24; + req_access = list("robotics") + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"vrd" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/table, +/obj/item/storage/toolbox/fishing, +/obj/item/fishing_rod, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"vrf" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 5 + }, +/obj/machinery/light/directional/east, +/obj/item/lighter, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"vrq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"vrs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"vrD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vrN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vsb" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdprivacy"; + name = "Director's Privacy Blast Door" + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vse" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/window/left/directional/south{ + name = "Maximum Security Test Chamber"; + req_access = list("xenobiology") + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"vsq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vss" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"vsx" = ( +/obj/docking_port/stationary/random{ + dir = 2; + name = "lavaland"; + shuttle_id = "pod_lavaland" + }, +/turf/open/space/basic, +/area/space/nearstation) +"vsJ" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/chair/sofa/left/brown, +/obj/item/toy/plush/moth{ + name = "Big Moffer" + }, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"vsR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"vte" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"vtf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/brig) +"vto" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"vtt" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"vtv" = ( +/obj/structure/table/bronze, +/obj/item/clothing/suit/costume/bronze, +/obj/item/clothing/shoes/bronze{ + pixel_x = -12 + }, +/turf/open/floor/bronze, +/area/station/maintenance/department/chapel) +"vtF" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"vuj" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"vuk" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"vum" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"vuu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"vuy" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"vuF" = ( +/obj/machinery/light_switch/directional/west, +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"vuI" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"vuM" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/prisoner/gulag_teleporter_computer{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) +"vuQ" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/primary/starboard) +"vuZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vvd" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/robotics/mechbay) +"vvf" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"vvn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/window/left/directional/north{ + name = "Justice Windoor" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) +"vvB" = ( +/obj/item/radio{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/radio{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/radio, +/obj/structure/table, +/obj/item/radio/intercom/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Security Equipment Room" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"vvC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/mapping_helpers/ianbirthday, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) +"vvE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"vvH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/engine/telecomms, +/area/station/tcommsat/server) +"vvL" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/service/chapel/funeral) +"vwe" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/clothing/mask/gas{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/mask/gas, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"vwv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vww" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"vwH" = ( +/obj/structure/table/wood, +/obj/machinery/computer/records/medical/laptop, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"vwQ" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"vxa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/storage/art) +"vxb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) +"vxf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"vxr" = ( +/obj/machinery/computer/atmos_control/mix_tank{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos/pumproom) +"vxC" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vxL" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"vxN" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/disposal/delivery_chute{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/warning/deathsposal/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"vxZ" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"vyl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"vys" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"vyD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"vyE" = ( +/obj/structure/table, +/obj/machinery/light_switch/directional/north{ + pixel_x = -8 + }, +/obj/item/clothing/gloves/color/orange, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/flashlight{ + pixel_y = 4 + }, +/obj/item/flashlight{ + pixel_y = 4 + }, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/north{ + id = "custodialwagon"; + name = "Custodial Bay Toggle"; + pixel_x = 8; + req_access = list("janitor") + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/janitor) +"vyN" = ( +/turf/open/floor/engine, +/area/station/engineering/supermatter/engine) +"vyV" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"vza" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/crossing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"vze" = ( +/obj/structure/table/wood, +/obj/item/gavelblock, +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/courtroom) +"vzr" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sink/kitchen/directional/west, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"vzt" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Waste to Filter" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos/pumproom) +"vzy" = ( +/turf/closed/wall, +/area/station/service/janitor) +"vzD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/passive_vent{ + name = "killroom vent" + }, +/turf/open/floor/circuit/telecomms, +/area/station/science/xenobiology) +"vzV" = ( +/obj/structure/sign/poster/official/anniversary_vintage_reprint/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Chemistry North"; + network = list("ss13","medbay") + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"vzZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"vAa" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/north{ + name = "Visitation Desk"; + req_access = list("security") + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "visitation"; + name = "Visitation Shutters" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"vAh" = ( +/obj/effect/landmark/start/chaplain, +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/chapel/directional/north, +/turf/open/floor/wood/parquet, +/area/station/service/chapel) +"vAl" = ( +/obj/machinery/door/window/right/directional/west{ + name = "Waste Door" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"vAm" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/engine, +/area/station/science/auxlab) +"vAr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/rods, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"vAw" = ( +/obj/machinery/vending/wardrobe/chef_wardrobe, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"vBi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vBt" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"vBv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/purple/end{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"vBE" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"vBI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/structure/sign/poster/official/space_cops/directional/east, +/turf/open/floor/iron, +/area/station/security/office) +"vBR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"vBS" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/office) +"vCa" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/briefcase, +/obj/item/taperecorder{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron, +/area/station/security/courtroom) +"vCc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vCf" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/airalarm/directional/west, +/obj/machinery/vending/wardrobe/det_wardrobe, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"vCh" = ( +/obj/structure/cable, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"vCk" = ( +/obj/machinery/flasher/portable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"vCn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vCA" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/library) +"vCG" = ( +/obj/machinery/computer/records/security, +/obj/machinery/light_switch/directional/east{ + pixel_y = -6 + }, +/obj/machinery/requests_console/directional/north{ + department = "Detective's Office"; + name = "Detective Requests Console" + }, +/obj/machinery/button/door/directional/east{ + id = "detective_shutters"; + name = "Detective's Privacy Toggle"; + pixel_y = 6; + req_access = list("detective") + }, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"vCM" = ( +/obj/machinery/door/airlock/external{ + name = "Departure Shuttle Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"vCO" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/courtroom) +"vCV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"vDk" = ( +/turf/closed/wall, +/area/station/engineering/supermatter/room) +"vDD" = ( +/obj/machinery/smartfridge/drinks, +/turf/open/floor/wood, +/area/station/hallway/secondary/service) +"vDO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Teleporter Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/teleporter, +/obj/effect/landmark/navigate_destination/teleporter, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"vDU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vDZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Tool Storage" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"vEl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "engineering sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/engineering/general, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vEt" = ( +/obj/structure/table, +/obj/item/hfr_box/core, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vEv" = ( +/obj/structure/railing, +/obj/effect/turf_decal/siding/thinplating/dark/end{ + dir = 8 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"vEC" = ( +/obj/structure/lattice, +/obj/structure/transit_tube/crossing, +/turf/open/space/basic, +/area/space/nearstation) +"vEK" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vEU" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vEW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science) +"vFc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"vFk" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/box, +/obj/machinery/flasher/directional/north{ + id = "AI"; + name = "Meatbag Pacifier"; + pixel_x = 26 + }, +/obj/machinery/camera/directional/south{ + c_tag = "AI Chamber Core"; + name = "core camera"; + network = list("aicore") + }, +/obj/machinery/light/floor, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"vFv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"vFH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"vFL" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"vFU" = ( +/obj/structure/bookcase/random/nonfiction, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"vFW" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/research/anomaly_refinery, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"vFY" = ( +/turf/closed/wall, +/area/station/science/lab) +"vGa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"vGn" = ( +/obj/machinery/door/poddoor/preopen{ + id = "prisonblast"; + name = "Prison Blast Door" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/button/door/directional/north{ + id = "prisonblast"; + name = "Prison Lockdown"; + req_access = list("brig") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"vGs" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) +"vGt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"vGu" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) +"vGJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vGY" = ( +/obj/machinery/light/directional/east, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"vHa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vHd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"vHe" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"vHh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_y = 24 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"vHr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"vHx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vHC" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vHF" = ( +/obj/machinery/status_display/evac, +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"vHH" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering" + }, +/obj/effect/turf_decal/siding/yellow/corner, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"vHP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vHS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vHZ" = ( +/obj/effect/turf_decal/box/white{ + color = "#9FED58" + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vIc" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" + }, +/obj/effect/turf_decal/bot, +/obj/item/wrench, +/obj/item/crowbar/red, +/turf/open/floor/engine, +/area/station/science/auxlab) +"vId" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/engineering/atmos) +"vIE" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Atmospherics Tank - Mix"; + name = "atmospherics camera"; + network = list("ss13","engine") + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"vIK" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/science/auxlab) +"vIR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Division Server Room" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/server) +"vJc" = ( +/turf/closed/wall/r_wall, +/area/station/science/xenobiology) +"vJg" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"vJh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/checkpoint/customs) +"vJk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Checkpoint" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"vJm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/south, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"vJv" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/component_printer, +/obj/machinery/camera/directional/north{ + c_tag = "Testing Lab"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"vJy" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"vJA" = ( +/obj/structure/cable, +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access = list("armory") + }, +/obj/effect/spawner/random/contraband/armory, +/obj/effect/spawner/random/maintenance/three, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"vJB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vJH" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/mob/living/basic/bot/secbot/beepsky, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"vJN" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"vJP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vJT" = ( +/obj/machinery/vending/wardrobe/bar_wardrobe, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb, +/obj/item/radio/intercom/directional/west, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"vJZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vKa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"vKc" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/table, +/obj/item/clipboard, +/obj/item/geiger_counter{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/toy/figure/ninja{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/pen, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/command/vault) +"vKj" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/main) +"vKm" = ( +/turf/open/floor/engine/vacuum, +/area/station/maintenance/disposal/incinerator) +"vKp" = ( +/obj/item/clothing/head/costume/cardborg, +/obj/item/clothing/suit/costume/cardborg, +/obj/structure/closet/cardboard/metal, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/central) +"vKE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vKM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/chair/stool/bar/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"vKO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/maintenance/aft) +"vKQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"vKV" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/storage/medkit/o2, +/obj/item/tank/internals/emergency_oxygen, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vLm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad/secure, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"vLG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/modular_computer/preset/engineering{ + dir = 8 + }, +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/supermatter/room) +"vLI" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel/funeral) +"vLR" = ( +/obj/machinery/power/tracker, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/fore) +"vMb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) +"vMg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/warden) +"vMk" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"vMo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = 24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"vME" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/engineering/supermatter/engine) +"vMK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lobby) +"vMM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"vMW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/freezer{ + name = "Kitchen Coldroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/service/kitchen/coldroom) +"vNl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vNn" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/station/cargo/miningdock) +"vNB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vNE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/north{ + broadcasting = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = -26 + }, +/obj/structure/sign/departments/aiupload/directional/west, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vNL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/qm, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/supply) +"vNS" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) +"vOl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"vOq" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/airlock/engineering/glass{ + name = "Power Monitoring" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"vOH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"vOL" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"vOM" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_y = 5 + }, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"vOO" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/cargo, +/obj/machinery/requests_console/directional/north{ + department = "Cargo Bay"; + name = "Cargo Bay Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/item/radio/intercom/directional/north{ + pixel_x = -32 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"vOT" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"vOW" = ( +/turf/closed/wall, +/area/station/hallway/secondary/exit/departure_lounge) +"vOX" = ( +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"vPd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vPz" = ( +/obj/item/kirbyplants/random, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/motion/directional/south{ + c_tag = "ai_upload Consoles"; + network = list("aiupload"); + name = "upload camera" + }, +/turf/open/floor/iron/dark, +/area/station/ai/upload/chamber) +"vPB" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/flora/bush/grassy/style_random, +/obj/structure/flora/bush/generic/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/sunny/style_random, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) +"vPG" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "justiceshutter"; + name = "Justice Shutter" + }, +/turf/open/floor/plating, +/area/station/security/execution/education) +"vPU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering Foyer"; + name = "engineering camera"; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"vPW" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"vPX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/commons/locker) +"vQf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"vQt" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vQD" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start/chemist, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"vQF" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"vQK" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/ore_box, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) +"vQY" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall, +/area/station/maintenance/port/greater) +"vRh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"vRk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/department/crew_quarters/bar) +"vRl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/red{ + dir = 9 + }, +/obj/effect/landmark/start/depsec/supply, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) +"vRo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vRB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"vRK" = ( +/obj/structure/sign/warning/no_smoking, +/turf/closed/wall, +/area/station/engineering/atmos) +"vRN" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/storage/belt/medical, +/obj/item/clothing/neck/stethoscope, +/obj/effect/turf_decal/delivery, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/item/storage/belt/medical, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"vRO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"vRP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vRQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"vRU" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/storage/belt/medical, +/obj/item/clothing/neck/stethoscope, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Medbay Storage"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/item/storage/belt/medical, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"vRX" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/rods/fifty, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vSa" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/holopad/secure, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"vSi" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/turf/open/floor/wood, +/area/station/service/bar/atrium) +"vSp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"vSq" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) +"vSC" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"vSG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/service/chapel/monastery) +"vSM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"vTs" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/apple, +/obj/item/reagent_containers/cup/bottle/nutrient/l4z, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"vTt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/random/structure/grille, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"vTu" = ( +/obj/structure/table, +/obj/item/stack/sheet/plasteel{ + amount = 10; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/robotics_cyborgs, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/structure/fireaxecabinet/mechremoval/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"vTx" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vTA" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"vTD" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) +"vTV" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/chapel/dock) +"vTX" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/rd) +"vUi" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/stairs/right{ + dir = 4 + }, +/area/station/service/chapel) +"vUo" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/rust, +/area/station/maintenance/fore) +"vUp" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Drone Bay Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"vUr" = ( +/obj/structure/table/glass, +/obj/item/crowbar{ + pixel_x = -8; + pixel_y = 11 + }, +/obj/machinery/light/directional/east, +/obj/item/emergency_bed{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/emergency_bed, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"vUs" = ( +/obj/structure/bed, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/item/bedsheet/medical, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) +"vUt" = ( +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/machinery/holopad/secure, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/office) +"vUu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/port) +"vUC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vUD" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vUH" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) +"vUO" = ( +/obj/item/canvas/nineteen_nineteen, +/obj/structure/easel, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"vUY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"vVq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"vVt" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"vVw" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/lab) +"vVx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/engineering/atmos/pumproom) +"vVC" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall, +/area/station/maintenance/port/greater) +"vVM" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/structure/noticeboard/directional/west, +/obj/item/clothing/gloves/latex, +/obj/item/hemostat, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"vVP" = ( +/obj/machinery/air_sensor/mix_tank, +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"vVT" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/storage/tech) +"vWv" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"vWA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/office) +"vWC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vWE" = ( +/obj/effect/decal/cleanable/food/flour, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen) +"vWF" = ( +/obj/structure/sign/departments/custodian, +/turf/closed/wall/rust, +/area/station/service/janitor) +"vWH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vWU" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"vWY" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/security/eva) +"vXa" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/gateway) +"vXf" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Medical Operating Theater B"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/table, +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/gloves/latex, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"vXn" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"vXp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 4; + id = "packagereturn"; + name = "crate return belt" + }, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/plating, +/area/station/cargo/storage) +"vXC" = ( +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Connector" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"vXI" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"vYm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"vYn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"vYs" = ( +/obj/structure/chair, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"vYx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"vYD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1; + name = "kitchen sorting disposal pipe" + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/mail_sorting/service/kitchen, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"vYI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"vZa" = ( +/obj/machinery/computer/shuttle/mining, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vZn" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"vZu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"vZv" = ( +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/aicard{ + pixel_x = 4 + }, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vZy" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"vZB" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall, +/area/station/hallway/primary/starboard) +"vZM" = ( +/obj/machinery/atmospherics/components/tank/air/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/science) +"wae" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) +"waq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"war" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-entrance-right" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"was" = ( +/obj/structure/chair/pew/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/chapel{ + dir = 8 + }, +/area/station/service/chapel) +"waI" = ( +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"waL" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"waT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/fore) +"wbf" = ( +/obj/structure/sink/directional/east, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"wbo" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Service Maintenance" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"wbH" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_x = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"wbT" = ( +/obj/machinery/keycard_auth/wall_mounted/directional/north, +/obj/item/toy/figure/ian{ + pixel_x = 8 + }, +/obj/item/toy/figure/hop{ + pixel_x = -8 + }, +/obj/machinery/recharger, +/obj/structure/table/wood, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"wcg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/radio{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"wcs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"wct" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 8 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"wcC" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/storage) +"wcN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/medical_kiosk, +/obj/effect/turf_decal/box, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) +"wcP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wcV" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/r_wall, +/area/station/maintenance/department/bridge) +"wcX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/station/engineering/lobby) +"wdf" = ( +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"wdu" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"wdx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"wdD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) +"wdL" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/cargo/storage) +"wdZ" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"weh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"wer" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad"; + name = "off ramp" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"weG" = ( +/obj/machinery/mass_driver/chapelgun{ + dir = 8 + }, +/obj/machinery/door/window/right/directional/north{ + req_access = list("chapel_office") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/station/service/chapel/funeral) +"weK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"weL" = ( +/obj/machinery/light/directional/north, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"weR" = ( +/obj/structure/closet{ + name = "evidence closet" + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"weV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/lights/mixed, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"weW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"wfk" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron, +/area/station/command/teleporter) +"wfD" = ( +/obj/machinery/flasher/directional/west{ + id = "AI"; + name = "Meatbag Pacifier" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"wgq" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/crowbar, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"wgr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"wgA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"wgK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"wgO" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"wgS" = ( +/obj/structure/table, +/obj/item/storage/box/pdas{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/silver_ids{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/ids, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/item/papercutter{ + pixel_x = -4 + }, +/obj/machinery/computer/security/telescreen/monastery/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) +"wgX" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"whj" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"whm" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/suit_storage_unit/standard_unit{ + desc = "An industrial suit storage device carrying retro space suits. Neat!"; + helmet_type = /obj/item/clothing/head/helmet/space; + suit_type = /obj/item/clothing/suit/space + }, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"wht" = ( +/obj/structure/flora/bush/pale/style_random{ + icon_state = "fullgrass_2" + }, +/obj/structure/flora/bush/pale/style_random{ + icon_state = "genericbush_1" + }, +/turf/open/misc/asteroid, +/area/space/nearstation) +"why" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"whz" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/computer/atmos_control/oxygen_tank{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) +"whP" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/iron/dark, +/area/station/engineering/storage_shared) +"wij" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/commons/locker) +"win" = ( +/obj/effect/turf_decal/siding/thinplating/light/corner{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"wiw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Atrium" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"wiz" = ( +/obj/structure/cable, +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/machinery/camera/directional/south{ + c_tag = "Atrium Port"; + name = "service camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) +"wiM" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wiR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/valve/digital{ + name = "Waste Release" + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"wjm" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/eva) +"wjs" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"wjz" = ( +/obj/machinery/light/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Aft Hallway Engineering Doors"; + name = "aft camera" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"wjD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) +"wjG" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) +"wjK" = ( +/turf/closed/wall, +/area/station/maintenance/department/security) +"wjL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"wjP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wkB" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"wkC" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"wkN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/prison) +"wkP" = ( +/obj/structure/weightmachine/weightlifter, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/item/photo/old, +/turf/open/floor/iron, +/area/station/security/prison) +"wkT" = ( +/obj/machinery/door/airlock/external{ + name = "Brig Shuttle Airlock"; + space_dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"wlm" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"wlz" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/iron/stairs/left{ + dir = 1 + }, +/area/station/service/chapel) +"wlO" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/no_smoking/directional/north, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wlP" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/port/lesser) +"wlS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"wmj" = ( +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/effect/turf_decal/bot, +/obj/structure/reagent_dispensers/wall/peppertank/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"wmn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/central) +"wmq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"wmr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Aft Hallway Transfer Centre Doors"; + name = "aft camera" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"wms" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"wmB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"wmG" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/circuit_workshop) +"wmJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"wmM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/east, +/turf/open/floor/carpet/green, +/area/station/service/lawoffice) +"wnc" = ( +/obj/structure/dresser, +/obj/machinery/light/small/directional/north, +/obj/structure/noticeboard/directional/north, +/turf/open/floor/wood, +/area/station/service/theater) +"wnl" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"wno" = ( +/obj/machinery/mecha_part_fabricator/maint{ + name = "forgotten exosuit fabricator" + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"wny" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"wnJ" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wnV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"wnX" = ( +/obj/structure/table/wood, +/obj/item/storage/box/seccarts{ + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + desc = "A bottle of whiskey. There's a label that reads 'tears' taped to the front."; + name = "Bottle of Tears"; + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 2 + }, +/obj/machinery/keycard_auth/wall_mounted/directional/south{ + pixel_x = -6 + }, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/button/door/directional/south{ + id = "hosspace"; + name = "Space Blast Door Toggle"; + pixel_x = 8 + }, +/obj/structure/secure_safe/hos{ + pixel_y = -33; + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"woc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wog" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/holosign/barrier/atmos, +/obj/structure/sign/poster/contraband/rebels_unite/directional/south, +/turf/open/floor/plating/airless, +/area/station/maintenance/space_hut/plasmaman) +"woj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/courtroom) +"wor" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"wot" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"woz" = ( +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) +"woB" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/vending/coffee, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"woG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/prison) +"woJ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"woV" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/structure/noticeboard/directional/east, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/mask/gas{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"wpf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"wpg" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/flasher/directional/west{ + id = "Cell 4"; + name = "Prisoner Pacifier" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"wpn" = ( +/obj/item/kirbyplants/organic/plant21, +/obj/item/radio/intercom/directional/north, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"wpu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wpw" = ( +/turf/closed/wall, +/area/station/science/xenobiology) +"wpD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"wpI" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/aft) +"wpM" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"wqd" = ( +/obj/item/radio/intercom/directional/west, +/obj/machinery/modular_computer/preset/cargochat/service{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/west{ + pixel_y = -10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"wqi" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"wqu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/rock, +/turf/open/misc/asteroid, +/area/space/nearstation) +"wqE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"wqF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/stool/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) +"wqL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/plating/plasma/rust, +/area/station/maintenance/space_hut/plasmaman) +"wqQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/lab) +"wqZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-entrance-right" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"wrc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"wre" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"wrp" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"wrw" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wrz" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"wrI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Holodeck" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "holodeck" + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"wrR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"wrY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"wsg" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Chief Medical Officer's Office"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/fax/heads/cmo, +/obj/structure/table/glass, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"wso" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"wsy" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/box/disks{ + pixel_y = 5 + }, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/turf/open/floor/iron/dark, +/area/station/science/research) +"wsD" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/office) +"wtt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"wtz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wtP" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"wua" = ( +/obj/machinery/modular_computer/preset/civilian{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) +"wuc" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/xenobiology) +"wue" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"wuh" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) +"wuo" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/machinery/flasher/directional/west{ + id = "Cell 6"; + name = "Prisoner Pacifier" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"wuv" = ( +/obj/structure/sign/warning/deathsposal, +/turf/closed/wall, +/area/station/maintenance/starboard/aft) +"wuE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"wuI" = ( +/obj/structure/sign/poster/contraband/missing_gloves, +/turf/closed/wall/rust, +/area/station/maintenance/port/greater) +"wuK" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wuT" = ( +/obj/machinery/door/airlock/external{ + name = "Prison External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"wvj" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/command_all, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/engineering/storage/tech) +"wwf" = ( +/obj/machinery/disposal/bin/tagger, +/obj/structure/disposalpipe/trunk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot_white, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/wood, +/area/station/service/library) +"wwj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/turretid{ + control_area = "/area/station/ai/upload/chamber"; + name = "AI Upload Turret Control"; + pixel_x = -30 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"wwv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"wwC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"wwG" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/ordnance/office) +"wwJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"wwM" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"wxa" = ( +/obj/machinery/door/airlock/vault{ + id_tag = "bank"; + name = "Bank Vault" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/vault, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"wxj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/library) +"wxl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/firealarm/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"wxq" = ( +/turf/closed/wall/rust, +/area/station/service/hydroponics) +"wxx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas to Filter" + }, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/engineering/supermatter/engine) +"wxF" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/carpet/green, +/area/ruin/space/has_grav/abandoned_warehouse) +"wxI" = ( +/obj/item/kirbyplants/organic/plant5, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"wxU" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"wyh" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"wyv" = ( +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/red, +/obj/item/folder/blue{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/clipboard, +/obj/item/folder/red, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/cargo/storage) +"wyF" = ( +/obj/structure/sign/departments/science/directional/east, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"wyO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"wyX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"wyY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"wzb" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"wzi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wzk" = ( +/obj/machinery/modular_computer/preset/command{ + dir = 4 + }, +/obj/machinery/requests_console/directional/west{ + department = "Head of Personnel's Desk"; + name = "Head of Personnel's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/hop) +"wzp" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wzr" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"wzy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/vacuum/external, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"wzA" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"wzG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"wzI" = ( +/turf/closed/wall, +/area/station/command/heads_quarters/rd) +"wzW" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "emmd"; + name = "Emergency Medical Lockdown Shutters" + }, +/obj/item/folder/white{ + pixel_x = 4 + }, +/obj/item/clothing/head/soft/paramedic{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/structure/desk_bell{ + pixel_x = -7 + }, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"wzY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"wAn" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/theater) +"wAt" = ( +/turf/closed/wall, +/area/station/security/execution/education) +"wAv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wAz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/glasses/science, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"wAC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/genetics) +"wAG" = ( +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"wAS" = ( +/obj/machinery/telecomms/broadcaster/preset_left, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"wBf" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron, +/area/station/security/prison) +"wBo" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/glass/reinforced, +/area/station/service/chapel) +"wBs" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/obj/structure/sign/warning/secure_area/directional/north, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/box/red, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/station/ai/satellite/chamber) +"wBJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"wCe" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"wCR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"wCY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"wDh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"wDs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"wDz" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/port/lesser) +"wDF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/evidence) +"wDI" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/lowpressure, +/area/space/nearstation) +"wEj" = ( +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/tank/air, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel/monastery) +"wEt" = ( +/turf/closed/wall/r_wall/rust, +/area/station/service/bar/atrium) +"wEw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"wEy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/directional/south, +/obj/machinery/camera/directional/west{ + c_tag = "Prison Maintenance"; + network = list("ss13","prison") + }, +/mob/living/basic/mouse/brown/tom{ + name = "Jerm" + }, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"wEI" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"wEJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/wrench, +/obj/item/storage/toolbox/emergency{ + pixel_y = 4 + }, +/obj/item/hand_labeler, +/obj/item/stack/package_wrap, +/obj/machinery/button/door/directional/east{ + id = "commissaryshutter"; + name = "Commissary Shutter Toggle"; + pixel_x = 26; + pixel_y = 7 + }, +/obj/machinery/button/door/directional/east{ + id = "commissarydoor"; + name = "Commissary Door Lock"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = -2; + specialfunctions = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"wEM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Port Bow Solar"; + name = "engineering camera"; + network = list("ss13","engine") + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/atmospherics/components/tank/air/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"wFa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wFi" = ( +/obj/machinery/biogenerator, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"wFl" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/captain/private) +"wFm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"wFs" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"wFu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"wFB" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/plasma, +/area/station/engineering/atmos) +"wFG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Surgery Maintenance" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"wFJ" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"wFL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/command/vault) +"wFU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1; + name = "lawyer sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/service/law_office, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"wGd" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) +"wGe" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"wGh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"wGp" = ( +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"wGs" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Dock" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/abandoned_warehouse) +"wGA" = ( +/obj/structure/table, +/obj/structure/railing, +/obj/item/seeds/potato{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/seeds/sugarcane{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/seeds/wheat{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/seeds/random{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/reagent_containers/spray/cleaner, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wGD" = ( +/obj/machinery/door/poddoor/preopen{ + id = "gravity"; + name = "Gravity Generator Blast Door" + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"wGE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"wGG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/electrolyzer, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"wGQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/kirbyplants, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wGS" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"wHb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard) +"wHh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/south{ + c_tag = "Brig Cells" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"wHp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"wHr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"wHu" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"wHA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"wHF" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"wHK" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green/opposingcorners, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wHQ" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/obj/item/assembly/flash/handheld, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"wHR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wHT" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "hos sorting disposal pipe" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/security/hos_office, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"wHW" = ( +/obj/structure/closet/secure_closet/security/engine, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/south, +/obj/structure/reagent_dispensers/wall/peppertank/directional/south, +/obj/item/crowbar, +/obj/item/book/manual/wiki/security_space_law, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"wIo" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1; + name = "server vent" + }, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/science/server) +"wIt" = ( +/obj/item/nullrod, +/obj/structure/table/wood, +/obj/machinery/light/very_dim/directional/north, +/turf/open/floor/cult, +/area/station/service/chapel/office) +"wIu" = ( +/obj/item/kirbyplants/organic/plant16, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"wIE" = ( +/obj/machinery/power/shieldwallgen, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"wIL" = ( +/obj/structure/kitchenspike, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"wIR" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wIY" = ( +/obj/structure/table, +/obj/item/assembly/timer, +/obj/item/assembly/timer{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/assembly/timer{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/assembly/timer{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"wJe" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) +"wJj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cardboard, +/obj/structure/grille/broken, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"wJn" = ( +/turf/closed/wall/rust, +/area/station/maintenance/department/cargo) +"wJo" = ( +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"wJw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"wJy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"wJD" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage/gas) +"wKa" = ( +/obj/machinery/modular_computer/preset/id{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"wKb" = ( +/obj/structure/railing/corner, +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"wKG" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/security/execution/transfer) +"wKN" = ( +/obj/structure/barricade/wooden, +/obj/structure/barricade/wooden/crude, +/obj/structure/cable, +/turf/open/floor/iron/stairs/old{ + dir = 1 + }, +/area/station/service/chapel) +"wLp" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) +"wLu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Telecommunications" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, +/obj/effect/landmark/navigate_destination/tcomms, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"wLC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wLM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/engineering/atmos) +"wLX" = ( +/turf/open/floor/circuit/red, +/area/station/ai/upload/chamber) +"wMe" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"wMl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"wMt" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wMH" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"wMY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/poster/random_official{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/poster/random_official, +/obj/effect/turf_decal/stripes/corner, +/obj/item/clothing/head/costume/festive{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wNb" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/bot, +/obj/item/gun/energy/e_gun/mini, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/item/reagent_containers/cup/glass/bottle/applejack, +/obj/item/reagent_containers/cup/glass/drinkingglass, +/obj/item/reagent_containers/cup/glass/drinkingglass, +/obj/item/reagent_containers/cup/glass/flask/gold{ + name = "quartermaster's flask" + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/qm) +"wNf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"wNo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/security/courtroom) +"wNr" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/airlock_pump/unbolt_only{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"wNs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/north{ + c_tag = "Central Hallway Teleporter Access"; + name = "central camera" + }, +/obj/machinery/button/door/directional/north{ + id = "teleshutter"; + name = "Teleporter Shutter Toggle"; + req_access = list("teleporter") + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"wNQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"wNT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/shower/directional/east{ + name = "emergency shower" + }, +/obj/structure/mirror/directional/north, +/obj/structure/sink/directional/south, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) +"wOk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"wOy" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/treatment_center) +"wOB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wPh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wPq" = ( +/turf/closed/wall/r_wall, +/area/station/service/chapel/funeral) +"wPy" = ( +/obj/machinery/door/poddoor/atmos_test_room_mainvent_1, +/turf/open/floor/engine/vacuum, +/area/station/maintenance/disposal/incinerator) +"wPB" = ( +/turf/closed/wall/r_wall/rust, +/area/station/science/genetics) +"wPK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/brig) +"wPO" = ( +/obj/structure/rack, +/obj/item/gun/energy/ionrifle{ + pixel_y = 4 + }, +/obj/item/gun/energy/temperature/security, +/obj/effect/turf_decal/bot, +/obj/item/clothing/suit/hooded/ablative, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/item/gun/ballistic/automatic/battle_rifle, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"wPU" = ( +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"wPX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/cargo/warehouse) +"wQc" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"wQe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/purple, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"wQI" = ( +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/structure/flora/bush/pale/style_random, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"wQK" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/ferny/style_random, +/turf/open/misc/asteroid, +/area/station/hallway/primary/central) +"wQN" = ( +/obj/structure/cable, +/obj/structure/barricade/wooden/crude, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/service/chapel/storage) +"wRj" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/turf/open/floor/engine, +/area/station/ai/upload/chamber) +"wRn" = ( +/obj/effect/turf_decal/box/corners, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"wRr" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/station/maintenance/disposal/incinerator) +"wRs" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/kitchen) +"wRE" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/item/storage/belt/utility, +/obj/item/crowbar/red, +/obj/machinery/light_switch/directional/west{ + pixel_x = -25 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"wRM" = ( +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"wRO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "departures-entrance" + }, +/obj/effect/landmark/navigate_destination/dockesc, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"wRQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"wRU" = ( +/turf/closed/wall, +/area/station/engineering/atmos) +"wSh" = ( +/obj/structure/sign/poster/official/fruit_bowl, +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) +"wSi" = ( +/obj/structure/cable, +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/obj/machinery/requests_console/directional/east{ + department = "Bridge"; + name = "Bridge Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wSq" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"wSv" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"wSz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"wSL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"wSM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"wSU" = ( +/obj/structure/table/glass, +/obj/machinery/requests_console/directional/north{ + department = "Chief Medical Officer's Desk"; + name = "Chief Medical Officer's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/fax{ + fax_name = "Chief Medical Officer's Office"; + name = "Chief Medical Officer's Fax Machine" + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"wSY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer3, +/obj/machinery/camera/motion/directional/south{ + c_tag = "Satellite Antechamber"; + network = list("minisat") + }, +/turf/open/floor/engine, +/area/station/ai/satellite/interior) +"wTe" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/grunge{ + id_tag = "commissarydoor"; + name = "Vacant Commissary" + }, +/turf/open/floor/wood, +/area/station/commons/vacant_room/commissary) +"wTh" = ( +/obj/machinery/food_cart, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"wTx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"wTy" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wTS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"wTU" = ( +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) +"wUC" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/engineering/main) +"wUU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wVb" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/reagent_dispensers/plumbed{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wVc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"wVA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/command/teleporter) +"wVD" = ( +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"wVE" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"wVG" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"wVI" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/candy, +/obj/item/trash/chips, +/obj/effect/spawner/random/contraband/prison, +/obj/item/weldingtool/mini, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"wVR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"wVX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research{ + name = "Ordnance Lab" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"wWk" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"wWm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"wWp" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"wWB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wWD" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/analyzer, +/obj/item/analyzer, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/lobby) +"wWQ" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/grunge{ + name = "Chapel Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel) +"wWW" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall, +/area/station/maintenance/disposal/incinerator) +"wXa" = ( +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"wXt" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 2 + }, +/obj/item/wirecutters, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"wXv" = ( +/obj/structure/railing, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"wXM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"wXT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"wYi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"wYk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/trimline/blue/end{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wYl" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/spawner/random/armory/shotgun, +/turf/open/floor/iron/showroomfloor, +/area/station/security/armory) +"wYx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"wYA" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"wYC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"wYR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"wYW" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder/red, +/obj/item/stamp/denied{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stamp/head/hos, +/turf/open/floor/carpet/red, +/area/station/command/heads_quarters/hos) +"wYX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/station/hallway/secondary/exit/departure_lounge) +"wZW" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wZZ" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + name = "server vent" + }, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/science/server) +"xad" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/space/nearstation) +"xaf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"xag" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"xap" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/sign/departments/security/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"xau" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/closet/crate/freezer, +/obj/machinery/camera/autoname/directional/north, +/obj/item/food/popsicle/creamsicle_berry, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) +"xav" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"xaz" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"xaC" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Chemistry South"; + network = list("ss13","medbay") + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xaZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"xba" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"xbk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/station/maintenance/disposal/incinerator) +"xbx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"xbH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) +"xbZ" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/effect/turf_decal/delivery, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/atmos) +"xca" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"xcf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4; + name = "killroom vent" + }, +/turf/open/floor/circuit/telecomms, +/area/station/science/xenobiology) +"xcj" = ( +/obj/effect/turf_decal/siding/green, +/obj/machinery/door/window/right/directional/south, +/turf/open/water/no_planet_atmos, +/area/station/service/hydroponics/garden) +"xck" = ( +/obj/machinery/power/tracker, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/aft) +"xcp" = ( +/obj/structure/chair/pew/left{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"xcE" = ( +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 5 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos/storage/gas) +"xcJ" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"xcR" = ( +/turf/closed/wall/r_wall, +/area/station/commons/fitness/recreation) +"xcT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"xcV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xdc" = ( +/obj/machinery/camera/autoname/directional/west{ + network = list("ss13","monastery") + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) +"xdl" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/head/helmet/toggleable/justice/escape{ + name = "justice helmet" + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"xds" = ( +/obj/structure/bed, +/obj/effect/landmark/start/assistant, +/obj/effect/spawner/random/bedsheet, +/obj/effect/landmark/start/hangover, +/obj/item/pillow/random, +/turf/open/floor/wood, +/area/station/commons/locker) +"xdv" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/structure/mirror/directional/north, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"xdE" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"xdY" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"xef" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"xeh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"xeo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Room" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/gravity_generator) +"xeq" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/hallway) +"xev" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"xex" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"xeI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"xeP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xeT" = ( +/obj/machinery/power/smes, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"xfe" = ( +/obj/structure/table, +/obj/item/storage/box/evidence{ + pixel_y = 5 + }, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/flashlight/seclite, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"xfx" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/maintenance/department/security) +"xfU" = ( +/obj/item/circuitboard/computer/solar_control, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"xfV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"xfZ" = ( +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"xgs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/processing) +"xgz" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"xgC" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) +"xgV" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"xha" = ( +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) +"xhi" = ( +/obj/structure/sign/departments/chemistry/directional/west, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"xhH" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"xhI" = ( +/obj/machinery/hydroponics/soil, +/obj/item/shovel/spade, +/obj/item/cultivator{ + pixel_x = 8 + }, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"xhJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"xhY" = ( +/obj/machinery/light/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xin" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/machinery/recharger, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"xio" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = 4 + }, +/obj/item/storage/pill_bottle/mannitol, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes, +/obj/item/toy/figure/geneticist{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"xiA" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/sorting) +"xiC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) +"xja" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"xjl" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/keycard_auth/wall_mounted/directional/north{ + pixel_x = -6 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 12 + }, +/obj/item/radio/intercom/directional/east, +/mob/living/basic/parrot/poly, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"xjr" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"xju" = ( +/obj/machinery/newscaster/directional/east, +/turf/closed/wall/r_wall, +/area/station/commons/fitness/recreation) +"xjv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Hallway" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"xjB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/noticeboard/directional/north, +/obj/item/kirbyplants/organic/plant5, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"xjI" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"xjO" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Fore Hallway Monastary Hall"; + name = "fore camera" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"xjR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + name = "Satellite Access" + }, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/effect/landmark/navigate_destination/minisat_access_ai, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"xjT" = ( +/obj/effect/turf_decal/siding/purple/corner, +/turf/closed/wall/r_wall, +/area/station/science/research) +"xke" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"xki" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xkj" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"xkp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xky" = ( +/obj/structure/sink/kitchen/directional/east{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" + }, +/turf/open/floor/plating, +/area/station/security/prison) +"xkP" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/taperecorder{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/camera, +/obj/item/pen{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Library Backroom"; + name = "library camera" + }, +/obj/structure/sign/painting/large/library_private{ + dir = 8; + pixel_x = -29 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"xkQ" = ( +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/brute{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/window/left/directional/east{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"xle" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"xlf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/landmark/navigate_destination/cargo, +/turf/open/floor/iron/dark, +/area/station/cargo/office) +"xlk" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 8; + name = "Airlock Pump"; + target_pressure = 300; + hide = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) +"xlr" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/grenades, +/obj/item/book/manual/wiki/plumbing{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/reagent_containers/dropper, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xlA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/prison) +"xlB" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/wood, +/area/station/service/library) +"xlF" = ( +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"xmf" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Auxiliary Research Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) +"xmn" = ( +/obj/structure/chair/pew/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/station/service/chapel) +"xms" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron, +/area/station/security/courtroom) +"xmB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"xmD" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) +"xmI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/psychology) +"xmO" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-entrance-right" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/landmark/navigate_destination/sec, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"xmQ" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/disposal) +"xng" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/aft) +"xnm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"xnC" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/theater) +"xnJ" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/paper/fluff/holodeck/disclaimer, +/obj/item/pen, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"xnK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xnO" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/auxlab) +"xnU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"xnZ" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/hallway) +"xoh" = ( +/obj/structure/sign/warning/fire/directional/west{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xoI" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xoK" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/paramedic) +"xoO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/cargo/office) +"xoT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"xpa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark, +/area/station/security/office) +"xpk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"xpv" = ( +/obj/machinery/vending/coffee, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"xpJ" = ( +/obj/machinery/telecomms/server/presets/supply, +/obj/machinery/light/directional/east, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"xpM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"xpS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) +"xqf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance/office) +"xqm" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/abandoned_warehouse) +"xqw" = ( +/obj/structure/cable, +/turf/open/floor/bronze, +/area/station/maintenance/department/chapel) +"xqE" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"xqM" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/grass, +/area/station/command/heads_quarters/hop) +"xqQ" = ( +/obj/machinery/exoscanner, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"xrm" = ( +/obj/machinery/blackbox_recorder, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/station/tcommsat/server) +"xrp" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/brigdoor/right/directional/north{ + id = "Cell 6"; + name = "Cell 6"; + req_access = list("security") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/brig) +"xrA" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xrS" = ( +/turf/closed/wall/rust, +/area/station/security/execution/transfer) +"xsn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/disposal/incinerator) +"xsJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xsO" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall, +/area/station/maintenance/starboard/fore) +"xsX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"xta" = ( +/obj/effect/turf_decal/siding/purple/corner{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"xtc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow{ + dir = 6 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"xtk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xtt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"xtu" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/clothing/mask/gas/sechailer/swat, +/obj/item/screwdriver, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/office) +"xtC" = ( +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xtG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"xtO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"xtV" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/closed/wall, +/area/station/maintenance/starboard) +"xun" = ( +/obj/structure/table, +/obj/item/clothing/suit/costume/justice, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"xuA" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"xuG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"xuM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xuR" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel/monastery) +"xuZ" = ( +/turf/closed/wall/rock/porous, +/area/station/hallway/primary/fore) +"xva" = ( +/obj/item/radio/intercom/directional/east, +/turf/closed/wall, +/area/station/maintenance/disposal) +"xvj" = ( +/obj/structure/flora/bush/stalky/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"xvq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Armoury" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/hos, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id = "frontarmory"; + name = "Front Armoury Shutter" + }, +/obj/machinery/button/door/directional/north{ + id = "frontarmory"; + name = "Armoury Shutter Toggle"; + req_access = list("armory") + }, +/turf/open/floor/iron/dark, +/area/station/security/armory) +"xvr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/server) +"xvy" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/security/prison/garden) +"xvF" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/door/poddoor/preopen{ + id = "prisonblast"; + name = "Prison Blast Door" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) +"xvG" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Autopsy" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/detective, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"xvM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"xvP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"xvW" = ( +/turf/closed/wall, +/area/station/medical/paramedic) +"xwk" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"xwn" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"xwt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"xwE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"xwJ" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/clothing/glasses/welding, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/wall_healer/directional/south, +/obj/item/hand_labeler, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/package_wrap{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"xwO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/paramedic, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/office) +"xwU" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 2 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"xxk" = ( +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/cmo) +"xxz" = ( +/obj/structure/table/glass, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/office) +"xxJ" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/foyer) +"xxM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/abandoned_warehouse) +"xxN" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) +"xxP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"xye" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"xym" = ( +/obj/structure/sign/poster/official/enlist/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xyp" = ( +/obj/structure/rack, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/cultivator, +/obj/effect/spawner/random/food_or_drink/seed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) +"xzc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"xzi" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "East Ports to Engine" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"xzA" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"xzC" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/royalblue, +/area/station/service/chapel/office) +"xzI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/spawner/random/food_or_drink/booze, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xzS" = ( +/obj/machinery/chem_master, +/obj/effect/turf_decal/delivery, +/obj/machinery/button/door/directional/north{ + id = "chemistry_shutters"; + name = "Lobby Shutters Toggle"; + pixel_x = 24; + req_one_access = list("medical","pharmacy") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"xAw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "ce sorting disposal pipe" + }, +/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xAI" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 5 + }, +/turf/closed/wall, +/area/station/engineering/atmos) +"xAK" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"xAL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xAQ" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/obj/structure/sign/warning/cold_temp/directional/north, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/cryo) +"xAW" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"xBd" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"xBi" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/item/stack/package_wrap, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/item/fishing_rod, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"xBs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"xBw" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/security/prison/garden) +"xBI" = ( +/turf/closed/wall/rust, +/area/station/maintenance/port/fore) +"xCa" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/disposalpipe/segment, +/obj/structure/sink/kitchen/directional/west, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/bar) +"xCh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xCp" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/stairs, +/area/station/service/chapel) +"xCq" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/structure/sign/poster/official/the_owl/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) +"xCr" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stack/sheet/rglass{ + amount = 50; + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/sheet/plasteel/fifty{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"xCy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"xCz" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/tcomms_all, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"xCA" = ( +/obj/structure/chair/pew/left{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) +"xCP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/cargo/miningdock) +"xCY" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom/directional/north{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = -8 + }, +/obj/item/radio/intercom/directional/west{ + freerange = 1; + listening = 0; + name = "Common Channel" + }, +/obj/item/radio/intercom/directional/south{ + freerange = 1; + frequency = 1447; + listening = 0; + name = "Private Channel"; + pixel_x = -8 + }, +/turf/open/floor/circuit/red, +/area/station/ai/satellite/chamber) +"xDb" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"xDc" = ( +/turf/closed/wall, +/area/station/commons/fitness/recreation) +"xDg" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/sign/warning/xeno_mining/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/fore) +"xDh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) +"xDj" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) +"xDm" = ( +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/bot, +/obj/structure/filingcabinet, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"xDo" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/left/directional/north{ + name = "Inner Pipe Access"; + req_access = list("atmospherics") + }, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"xDE" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Prison Cafeteria"; + network = list("ss13","prison") + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"xDG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/security/prison) +"xDM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "research_shutters"; + name = "Research Privacy Shutter" + }, +/turf/open/floor/plating, +/area/station/science/lab) +"xDP" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/fore) +"xEm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"xEB" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/power/emitter, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xEV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"xEZ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/camera/directional/west{ + c_tag = "Teleporter Access"; + name = "command camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"xFt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/station/medical/psychology) +"xFw" = ( +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/light/directional/north, +/obj/machinery/requests_console/directional/north{ + department = "Xenobiology"; + name = "Xenobiology Requests Console"; + pixel_x = -32 + }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"xFE" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) +"xFH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"xFI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"xFQ" = ( +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"xGa" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/radio/intercom/directional/west, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) +"xGh" = ( +/obj/machinery/computer/telecomms/server, +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) +"xGw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"xGy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"xGI" = ( +/mob/living/basic/carp{ + environment_smash = 0; + name = "Tuna"; + real_name = "Tuna" + }, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) +"xGN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"xGQ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"xHc" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xHn" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"xHP" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"xHR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/duct, +/obj/effect/landmark/firealarm_sanity, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"xHU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/plasticflaps/kitchen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"xIm" = ( +/obj/machinery/door/airlock/engineering{ + name = "Emergency Storage" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/unres/delayed{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer5, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"xIq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/camera/motion/directional/south{ + c_tag = "AI Chamber Door"; + network = list("aicore") + }, +/turf/open/floor/engine, +/area/station/ai/satellite/chamber) +"xIB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"xIJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/closet/crate, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/knife/plastic, +/obj/item/knife/plastic, +/obj/item/knife/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/kitchen/fork/plastic, +/obj/item/kitchen/fork/plastic, +/obj/item/kitchen/fork/plastic, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/effect/spawner/random/contraband/prison, +/obj/item/reagent_containers/cup/bowl, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"xIM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/circuit/telecomms, +/area/station/science/xenobiology) +"xIQ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/security/prison) +"xIS" = ( +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Fore Hallway Monastary Tube"; + name = "fore camera" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) +"xJc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"xJn" = ( +/obj/machinery/computer/records/security{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) +"xJs" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"xJB" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/rxglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/syringe, +/obj/item/folder/white, +/obj/item/flashlight/pen, +/obj/item/pen, +/obj/item/folder/white, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/science/research) +"xJK" = ( +/obj/item/clothing/head/helmet/toggleable/justice/escape{ + name = "justice helmet" + }, +/obj/structure/sign/poster/official/the_owl/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"xJN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"xKn" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/stool/bar/directional/west, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) +"xKr" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/lobby) +"xKO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xKP" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/solars/port/aft) +"xKT" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel/monastery) +"xKW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mech Bay Maintenance" + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"xKX" = ( +/turf/closed/wall, +/area/station/cargo/bitrunning/den) +"xLd" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/spawner/surgery_tray/full, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/theatre) +"xLk" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/machinery/door/airlock{ + name = "Service Hall" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/general, +/obj/effect/landmark/navigate_destination/bar, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/service) +"xLC" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/dark/telecomms, +/area/station/science/server) +"xLL" = ( +/obj/structure/cable, +/obj/machinery/power/tracker, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/aft) +"xLM" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/atmos) +"xLU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xLX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"xMs" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Distro to Waste" + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) +"xMC" = ( +/obj/structure/table/wood, +/obj/item/paper/guides/jobs/security/courtroom, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/courtroom) +"xML" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/airlock/command{ + name = "Captain's Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"xMM" = ( +/obj/structure/bodycontainer/morgue, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/medical) +"xMN" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/washing_machine, +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) +"xNc" = ( +/turf/closed/wall/r_wall/rust, +/area/station/command/heads_quarters/cmo) +"xNe" = ( +/turf/closed/wall, +/area/station/cargo/sorting) +"xNk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/sign/warning/secure_area/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"xNq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"xNu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research/glass{ + name = "Xenobiology Closet" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"xNJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"xNN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"xNP" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"xOa" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "packagereturn"; + name = "crate return belt" + }, +/obj/machinery/door/window/left/directional/north{ + name = "Crate Return Door"; + req_access = list("shipping") + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/cargo/storage) +"xOg" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/construction/mining/aux_base) +"xOh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer1, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"xOq" = ( +/obj/item/kirbyplants/organic/plant16, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"xOB" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/main) +"xOF" = ( +/obj/structure/sign/poster/contraband/missing_gloves, +/turf/closed/wall/rust, +/area/station/maintenance/starboard) +"xOI" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/lobby) +"xOP" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/courtroom) +"xPc" = ( +/obj/structure/table, +/obj/item/storage/box/prisoner, +/obj/item/restraints/handcuffs, +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/processing) +"xPk" = ( +/turf/closed/wall, +/area/station/maintenance/department/bridge) +"xPy" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres/delayed, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) +"xPO" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridge" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"xPT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/miningdock) +"xQq" = ( +/obj/machinery/rnd/production/techfab/department/medical, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/iron/dark, +/area/station/medical/storage) +"xQL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/light/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"xQU" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Satellite Atmospherics"; + name = "satellite camera"; + network = list("minisat") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/ai/satellite/atmos) +"xRm" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer's Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) +"xRv" = ( +/obj/machinery/recharge_station, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/ai/upload/chamber) +"xRB" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"xRC" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"xRE" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/command/vault) +"xRL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/lockers) +"xRM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/stairs/medium{ + dir = 4 + }, +/area/station/service/chapel/monastery) +"xRZ" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) +"xSi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/science/research) +"xSp" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"xSs" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"xSC" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Aft Hallway Security Doors"; + name = "aft camera" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xSO" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/belt/utility, +/obj/item/clothing/head/utility/welding, +/obj/item/clothing/glasses/welding, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"xST" = ( +/obj/item/kirbyplants/organic/plant10, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/cmo) +"xSU" = ( +/obj/structure/railing/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"xTt" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/locker) +"xTx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) +"xTG" = ( +/turf/closed/wall, +/area/station/maintenance/solars/starboard/aft) +"xTH" = ( +/obj/machinery/computer/exoscanner_control{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/drone_bay) +"xTI" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"xUk" = ( +/obj/machinery/computer/security/wooden_tv, +/obj/structure/table/wood, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"xUm" = ( +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xUy" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/command{ + name = "Captain's Tactical Relocation" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"xUB" = ( +/obj/item/canvas/nineteen_nineteen, +/obj/item/canvas/nineteen_nineteen, +/obj/item/canvas/nineteen_nineteen, +/obj/item/canvas/nineteen_nineteen, +/obj/structure/table/rolling, +/obj/item/storage/crayons{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/spawner/random/contraband/prison, +/obj/item/storage/crayons{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/item/paper_bin{ + pixel_x = 11; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 13; + pixel_y = 9 + }, +/obj/item/pen{ + pixel_x = 11; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 11; + pixel_y = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/security/prison) +"xUM" = ( +/obj/machinery/door/poddoor/preopen{ + id = "sci_experimentor"; + name = "Experimentor Blast Door" + }, +/obj/machinery/door/window/brigdoor/left/directional/east{ + name = "Experimentor Access"; + req_access = list("research") + }, +/obj/effect/turf_decal/caution{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine, +/area/station/science/auxlab) +"xUP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/airlock_pump, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/science) +"xUQ" = ( +/obj/structure/closet/cardboard, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"xVm" = ( +/turf/closed/wall/r_wall/rust, +/area/station/engineering/gravity_generator) +"xVo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"xVt" = ( +/obj/machinery/door/airlock/security{ + id_tag = "IsolationCell"; + name = "Isolation Cell" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/turf/open/floor/iron, +/area/station/security/prison/safe) +"xVu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"xVz" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/spawner/random/maintenance, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"xVC" = ( +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"xVH" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/photocopier, +/obj/item/newspaper{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/newspaper, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/port/greater) +"xVK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/storage) +"xVN" = ( +/obj/machinery/button/ignition/incinerator/ordmix{ + pixel_x = -6; + pixel_y = 30 + }, +/obj/machinery/button/door/incinerator_vent_ordmix{ + pixel_x = 8; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/ordnance) +"xWh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) +"xWm" = ( +/obj/item/kirbyplants/random, +/obj/machinery/status_display/ai/directional/east, +/obj/machinery/camera/directional/north{ + c_tag = "ai_upload Turrets"; + name = "upload camera"; + network = list("aiupload") + }, +/turf/open/floor/circuit/red, +/area/station/ai/upload/chamber) +"xWq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"xWw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/janitor) +"xWJ" = ( +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"xWK" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"xWS" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall/rust, +/area/station/maintenance/starboard) +"xWT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_y = -24 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) +"xXo" = ( +/obj/structure/sign/departments/xenobio, +/turf/closed/wall/r_wall, +/area/station/science) +"xXp" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/hallway/secondary/service) +"xXz" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xXG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/science/auxlab) +"xYa" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/status_display/shuttle{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/computer/station_alert{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/north, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/maintenance/storage) +"xYr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/item/kirbyplants/organic/plant16, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"xYx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/cargo/storage) +"xYz" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/service/bar/backroom) +"xYE" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/sign/warning/secure_area/directional/west, +/obj/machinery/suit_storage_unit/standard_unit{ + desc = "An industrial suit storage device carrying retro space suits. Neat!"; + helmet_type = /obj/item/clothing/head/helmet/space; + suit_type = /obj/item/clothing/suit/space + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/eva) +"xYY" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"xZi" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/commons/storage/art) +"xZn" = ( +/obj/machinery/firealarm/directional/west, +/obj/item/reagent_containers/cup/bottle/ammonia, +/obj/structure/rack, +/obj/item/reagent_containers/cup/bucket, +/obj/item/mop, +/obj/item/watertank/janitor, +/turf/open/floor/iron/grimy, +/area/station/security/prison/safe) +"xZr" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/structure/bed/medical/emergency, +/obj/machinery/iv_drip, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/maintenance/fore) +"xZL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"xZO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/door/window/left/directional/north{ + name = "Library Desk Access"; + req_access = list("library") + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/service/library) +"yad" = ( +/obj/machinery/door/poddoor/massdriver_ordnance, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/station/maintenance/starboard) +"yah" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer3, +/turf/open/floor/engine, +/area/station/ai/satellite/maintenance/storage) +"yaE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"yaF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"yaG" = ( +/obj/structure/sign/warning/electric_shock, +/turf/closed/wall/r_wall, +/area/station/ai/upload/chamber) +"yaH" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/delivery, +/obj/item/folder/yellow{ + pixel_x = -4 + }, +/obj/item/pen{ + pixel_x = -4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chemistry_shutters_2"; + name = "Chemistry Hall Shutters" + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/window/left/directional/west{ + name = "Chemistry Desk"; + req_access = list("pharmacy") + }, +/obj/structure/desk_bell{ + pixel_x = 7; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/station/medical/pharmacy) +"yaK" = ( +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/airalarm/directional/east, +/obj/machinery/light_switch/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/research) +"yaM" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/item/folder/white{ + pixel_x = 6 + }, +/obj/item/storage/medkit/regular, +/obj/machinery/door/window/left/directional/north{ + name = "Emergency Storage"; + req_access = list("command") + }, +/obj/machinery/camera/directional/south{ + c_tag = "Bridge Emergency Supplies"; + name = "command camera" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/item/healthanalyzer, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"yaN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"yaY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/remains/human, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) +"yaZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/chemist, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) +"ybm" = ( +/obj/structure/table/wood, +/obj/item/lipstick/purple{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/lipstick/random, +/obj/item/lipstick/jade{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/wood, +/area/station/service/theater) +"ybH" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"ybO" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/item/kirbyplants/organic/plant18, +/obj/machinery/camera/autoname/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) +"ybS" = ( +/obj/structure/flora/grass/jungle/a/style_random, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/leavy/style_random, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) +"ycd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/upload/ai/no_lock{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/ai/upload/chamber) +"ycp" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) +"ycr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/item/weldingtool, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/bridge) +"ycs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/station/maintenance/port/aft) +"ycx" = ( +/turf/closed/wall/rust, +/area/station/maintenance/port/greater) +"ycy" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/door/window/left/directional/south{ + name = "Cargo Delivery Access"; + req_access = list("shipping") + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"ycF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) +"ycL" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin/tagger, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) +"ydh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"ydn" = ( +/obj/structure/flora/bush/grassy/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/grass, +/area/station/science/auxlab) +"ydw" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 + }, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"ydV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ydW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/solars/starboard/aft) +"yef" = ( +/obj/item/target/clown, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera/preset/ordnance{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/bomb) +"yej" = ( +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) +"yem" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) +"yeo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"yeA" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/table/wood, +/obj/item/crowbar/red, +/obj/machinery/recharger, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) +"yeK" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/security/prison) +"yeY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"yfc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"yfq" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/space/nearstation) +"yfA" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/directions/medical{ + dir = 8; + pixel_x = 32; + pixel_y = 8 + }, +/obj/structure/sign/directions/security{ + pixel_x = 32 + }, +/obj/structure/sign/directions/command{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central/fore) +"yfS" = ( +/obj/machinery/light/small/directional/west, +/turf/open/water/no_planet_atmos/deep, +/area/station/service/hydroponics/garden) +"ygj" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/command/bridge) +"ygt" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) +"ygA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Security"; + location = "Courtroom"; + name = "courtroom navigation beacon" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"ygO" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"ygU" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"ygV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/duct, +/obj/machinery/camera/directional/north{ + c_tag = "Service Hall"; + name = "service camera" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/station/hallway/secondary/service) +"yhc" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/departments/cargo/directional/east{ + pixel_y = -32 + }, +/turf/open/floor/iron/dark/textured, +/area/station/hallway/primary/starboard) +"yhf" = ( +/obj/structure/sign/warning, +/turf/closed/wall/r_wall, +/area/station/maintenance/port/lesser) +"yhh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"yhr" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/firealarm/directional/east, +/obj/item/storage/fancy/candle_box, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"yhw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/security/office) +"yhI" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"yhR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/starboard) +"yhU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"yhW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos) +"yip" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"yiF" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen, +/obj/machinery/airalarm/directional/west, +/obj/item/toy/figure/borg{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/ai/satellite/foyer) +"yiK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Tool Storage" + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) +"yiW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"yji" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"yjj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Lab" + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/purple/corner, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"yjq" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) +"yjM" = ( +/obj/machinery/plate_press, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/security/prison) +"yjV" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"yjW" = ( +/obj/machinery/computer/crew{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/requests_console/directional/west{ + department = "Security"; + name = "Security Requests Console"; + pixel_y = -32 + }, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/button/door/directional/west{ + id = "brigcelldoor"; + name = "Cell Blast Door Toggle"; + pixel_y = -6 + }, +/obj/machinery/button/door/directional/west{ + id = "brigfrontdoor"; + name = "Front Blast Door Toggle"; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) +"ykb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) +"ykd" = ( +/obj/structure/sink/directional/east, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) +"ykv" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel/monastery) +"ykB" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/fore) +"ykK" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/obj/structure/noticeboard/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/greater) +"ykO" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder/red, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/carpet/green, +/area/station/security/detectives_office) +"ykP" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) +"yld" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) +"ylu" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/security/brig) +"ylD" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"ylM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"ylP" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/crew_quarters/bar) +"ylT" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/assembly/prox_sensor{ + desc = "Used for scanning and alerting when someone enters a certain proximity. This one is slightly shifted to the left."; + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/assembly/prox_sensor{ + desc = "Used for scanning and alerting when someone enters a certain proximity. This one is slightly shifted to the left."; + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/assembly/prox_sensor{ + desc = "Used for scanning and alerting when someone enters a certain proximity. This one is slightly shifted to the left."; + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/assembly/prox_sensor{ + desc = "Used for scanning and alerting when someone enters a certain proximity. This one is slightly shifted to the left."; + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/crowbar/red, +/obj/item/toy/figure/roboticist{ + pixel_x = 6 + }, +/obj/machinery/light/directional/north, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) +"yma" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/disposal/incinerator) + +(1,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(221,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -fNW -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(2,1,1) = {" +aaa +jhh +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(3,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(4,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(5,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(6,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(7,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(8,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(9,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(10,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(11,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(12,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(13,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +jyr +aeu +aaa +aeu +aeu +aeu +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 +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 +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 +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 +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 +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 +aaa +"} +(14,1,1) = {" +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 +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 +aaa +aaa +aaa +aeU +aeU +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +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 +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 +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 +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 +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 +"} +(15,1,1) = {" +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 +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 +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +cmU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeU +aeU +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(16,1,1) = {" +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 +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 +aeU +aeU +aaa +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +cmU +aeU +aeU +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 +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 +aaa +aeU +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeU +aeU +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(17,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeU +aeU +aeu +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 +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 +aeU +aeU +aeu +aeu +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(18,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeU +mWy +mWy +mWy +mWy +aeU +aeU +aeU +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 +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 +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 +aaa +aaa +aaa +aaa +"} +(19,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeU +aeu +aeu +aeu +aeU +aeU +aeu +dWG +wSh +dWG +nKO +mWy +vUO +esv +mWy +ifQ +aeU +aeU +aeU +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 +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 +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 +aaa +aaa +aaa +"} +(20,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +cmU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeU +aeU +aeU +aeu +nKO +eJN +eJN +toh +nIW +koi +huo +pbx +gSc +isS +xUB +sAv +aeU +aeU +aeU +aeU +aeU +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 +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 +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 +aaa +"} +(21,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeu +aeU +aeU +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeU +aeU +aeU +aeu +dWG +dmw +tzh +toh +piH +ftd +huo +oQv +dxf +mJA +eEi +mWy +aeU +coy +aeU +aeU +aeu +aeu +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 +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 +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 +"} +(22,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aeu +aeU +aeU +aeu +aeU +aeU +aeU +aeu +aaa +aaa +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeU +aeU +aeu +aeu +dWG +sfi +wJw +dWG +dWG +xVt +dWG +cuS +kvU +mTM +mRm +sAv +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(23,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +cmU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +oJU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeU +aeu +aeu +aeU +dWG +dWG +jLk +dWG +dNL +mIW +lrq +gDl +sHX +mTM +oNf +lrq +mWy +mWy +mWy +sAv +sAv +aeu +aeu +aeU +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 +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 +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 +"} +(24,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aeU +aeU +aeU +aeU +cmU +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 +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 +aaa +aaa +aeU +aeU +aeu +aeU +aeU +mWy +gCY +gYA +mqC +mqC +hkF +mqC +cUw +pSN +hhp +mqC +clR +mqC +mqC +hhp +kiW +mWy +aeu +aeu +aeU +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 +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 +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 "} -(222,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(25,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aUz +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeU +aeU +mWy +ssF +goj +eCu +goj +goj +goj +goj +eCu +mUA +goj +gYA +goj +gYA +goj +ssF +mWy +aeu +aUz +aeU +aeU +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 +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 +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 +"} +(26,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeU +aeu +aeu +aeU +dWG +dWG +gMq +dWG +dWG +aes +dWG +sAv +sAv +ssF +mqC +mqC +sAv +pCP +sAm +wkP +mWy +aeU +aeU +aeU +aeU +aeU +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 +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 +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 +"} +(27,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeU +aeu +aeu +aeu +dWG +mmo +wJw +toh +fmm +wJw +dWG +hMC +mWy +tFn +ajw +ajw +hvB +mqC +goj +sAv +sAv +aeU +umr +jYh +myp +myp +jYh +jYh +gyf +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(28,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aeU +aeu +aUz +aeu +dWG +hYo +bNO +dWG +hYo +bNO +dWG +sPK +mWy +hhi +xlA +xlA +mWy +xlA +goj +sAv +aeU +aeU +myp +cqQ +vcY +haP +xhI +aJM +myp +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(29,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +rsd +nKO +eJN +eJN +nKO +eJN +eJN +nKO +sPK +sAv +xDG +pTC +xlA +mWy +wBf +goj +myp +jYh +jYh +myp +xvy +tAM +tYe +ucS +bmn +jYh +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(30,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +rsd +hMC +hMC +hMC +hMC +hMC +hMC +yeK +sPK +sAv +woG +bMw +xlA +vhZ +ssF +lyk +iQg +smC +smC +iQg +aVt +sBJ +irN +sEN +xBw +jYh +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(31,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +rsd +hMC +hMC +hMC +hMC +hMC +hMC +hMC +sPK +thU +glo +jsI +xlA +sAv +mqC +lyk +myp +jYh +jYh +myp +myU +cyZ +uXl +pOo +bBY +jYh +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(32,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aaa +aaa +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aeU +aeu +aeu +rsd +hMC +hMC +hMC +hMC +yeK +hMC +hMC +sPK +twX +nQK +twX +twX +twX +ngI +lyk +sAv +coy +aeU +myp +agx +bHM +pOO +oxC +umA +myp +aeu +aeu +aeu +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(33,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +wPq +vLI +vhK +vhK +vLI +wPq +aeU +aeU +aeU +cmU +aeU +aeU +aeU +aeU +aeU +aaa +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aUz +aeU +aeU +aeU +aUz +aaa +aeU +aeu +aeu +rsd +hMC +xIQ +hMC +hMC +hMC +hMC +xIQ +sPK +giH +mTJ +tMu +lhv +twX +mqC +jhP +sAv +sAv +sAv +myp +jYh +myp +jFC +rec +sYe +myp +aeU +aeu +aeu +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(34,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +sxi +tfI +sxi +aeu +aeu +aeu +aeu +aeu +wPq +hAM +jgN +jgN +xaz +vLI +aeU +aeU +agt +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeU +aeU +aeU +aeu +aeu +rsd +hMC +yeK +hMC +hMC +hMC +hMC +hMC +sPK +twX +rpB +kYP +pKm +uzK +bxj +lyk +dAu +qWN +sAv +aeU +aeU +jYh +tdY +ptQ +tgh +myp +aeU +aeU +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(35,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aeu +aeu +aeU +aeU +aeu +sxi +sxi +urM +sxi +tfI +aeu +aeu +aeu +aeu +vLI +tDk +tDk +tDk +vkL +wPq +aeU +aeU +aeU +cmU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeU +aeu +aeU +rsd +hMC +hMC +hMC +hMC +jhX +sPK +sPK +sPK +twX +miK +lPU +tns +twX +xlA +lyk +jrT +pLi +mWy +aeU +aUz +umr +myp +jYh +jYh +myp +aeU +aeu +aeu +ckn +aeo +acm +acm +aeo +ckn +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(36,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aUz +aeU +aeU +aeU +aeU +aeU +aeU +aeu +tfI +rdk +cmQ +uDn +sxi +aeu +aeu +aeu +aeu +wPq +bZQ +gtT +gtT +jmK +vLI +aeu +aeU +aeU +cmU +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeU +aaa +aaa +aeU +aeu +aeu +aeu +mtV +mtV +hBJ +hBJ +mtV +aeu +aeU +aeu +aeu +rsd +hMC +hMC +hMC +xIQ +hMC +hMC +hMC +hMC +twX +hTQ +twX +nQK +twX +kbC +lyk +avs +yjM +sAv +aeU +aeU +aeU +aeU +cmU +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(37,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aeU +aaa +aaa +aaa +aeU +aeU +aeu +aeu +tfI +wIt +iJV +nfD +tfI +sxi +sxi +tfI +tfI +vLI +iHO +tDk +tDk +vkL +vLI +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeU +aaa +aaa +aeU +aeu +aeu +aeu +mtV +cfN +jZJ +cfN +mtV +aeu +aeU +aeu +aeu +rsd +hPV +hMC +hMC +hMC +hMC +hMC +yeK +hMC +mWy +huK +szK +szK +wkN +reX +fxV +sAv +sAv +sAv +aeU +aeU +aeU +aeU +cmU +aeu +aeu +aeu +ckn +aeo +aeo +acm +aeo +aeo +acm +vQF +ckn +aeu +aeu +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(38,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aeU +aeU +aeu +tfI +rTk +kGs +sxi +fXL +rTk +pah +kKa +jBl +rOz +hMN +hMN +hMN +ixn +wPq +vLI +vhK +wPq +lLN +wPq +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +aaQ +aeo +aeo +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aeU +aeu +aeu +hBJ +ghl +jEw +gCf +hBJ +aeu +vQf +pqD +stu +wDz +wDz +wDz +hMC +hMC +hMC +hMC +hMC +hMC +mWy +qAg +lyk +dHe +xlA +mqC +goj +sAv +xky +sAv +sAv +ifQ +cmU +cmU +cmU +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +ckn +aeu +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(39,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +qJs +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aeU +aeU +aeU +aeu +sxi +qQf +eCU +dIn +pNA +rTk +aJm +dAS +dCd +hMN +rQG +lJR +onr +jgN +rOz +xdc +ovd +fUQ +sEp +vLI +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +aaa +aeu +vku +acm +aaQ +aeo +aeo +acm +vjh +vjh +vjh +ycx +vjh +vjh +acm +vku +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +mtV +mtV +wxa +hgL +hBJ +aeu +hwr +iza +tIu +pYm +iZV +tqD +hMC +hMC +hMC +hMC +hMC +hMC +nKO +dWG +oCE +dWG +dWG +saW +oWG +lmr +bKj +bEv +gOG +tPH +aeU +cmU +aeu +aeu +aeU +aeU +aaa +xLL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +vQF +aeU +cmU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(40,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aUz +aeU +aeu +aeu +sxi +teL +itF +agc +qEV +fBt +wFu +aMj +kXw +mSE +fZz +kQT +mpF +kQT +oTd +qRT +qRT +biq +crI +vLI +aeu +aeu +aaa +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +acm +aeo +aeo +aeo +aeo +aaQ +vku +aeu +aeu +aeu +aaa +aaa +aaa +aaa +vjh +dVN +qly +ykK +lqN +ycx +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vjh +nZt +hzE +xYr +vjh +vjh +bLF +pqD +jhB +atT +ccf +wDz +hMC +yeK +hMC +hMC +hMC +hMC +dWG +wEy +mbh +xZn +eJN +saW +avT +gSF +dsn +oSG +drM +tPH +aeU +cmU +coy +aeU +aeU +aeU +aeU +bSt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +cmU +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(41,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +tfI +awR +kmt +iKT +svZ +rTk +vhL +ciR +xzC +hMN +aoX +alr +wcs +uHL +hMN +nSZ +kcy +cTz +weG +wPq +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +aaa +acm +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +ycx +ufL +fIP +oiV +ssk +vjh +aaa +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ycx +oxK +oTP +kZI +ybH +iqU +raN +pqD +iza +pqD +uzD +wDz +hMC +hMC +hMC +hMC +hMC +hMC +dWG +eXX +mbh +oUS +eJN +saW +rdo +tPH +gFL +oSG +wre +mEg +cmU +cmU +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +aaa +aaa +acm +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(42,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeu +aeu +sxi +ycL +fwJ +fwJ +kmZ +rTk +dIh +kTa +riW +hMN +vvL +vvL +okr +vvL +hMN +hMN +hMN +hMN +vLI +wPq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +aaQ +aeo +aeo +aeo +acm +aaQ +anr +acm +acm +cmU +coy +aUz +aeU +aeu +aeu +aeu +aeu +vku +acm +vjh +xVH +spr +oFt +gfc +vjh +aeU +aeU +vku +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +vjh +lVD +uQn +bsZ +uoB +hPz +eeE +pqD +mMb +iza +ugY +wDz +hMC +hMC +xIQ +hMC +hMC +hMC +dWG +vgz +mbh +wVI +eJN +saW +rdo +tPH +eUd +oSG +xIJ +tPH +aeU +cmU +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(43,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ixB +ixB +hmh +ixB +ixB +tiv +sjG +sjG +tiv +tiv +tiv +wWQ +tiv +tiv +sQJ +sQJ +tiv +tiv +sQJ +siL +oiO +oiO +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +acm +aaa +acm +aaa +grV +cmU +cmU +cmU +cmU +cmU +cmU +aeU +aeu +aeu +aeu +aeu +aaa +vjh +phh +rrQ +vjh +sYs +vjh +aeU +aeu +aeu +aeu +wDI +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ycx +vjh +qDt +jdW +vjh +vjh +urN +cUD +wgK +srR +swR +wDz +wDz +wDz +wDz +wDz +wDz +wDz +yhf +dWG +fQO +dWG +dWG +jKZ +rdo +gSF +soZ +eOh +oWI +tPH +aeU +cmU +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(44,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +hmh +wEj +shE +hJC +dJi +qhZ +vmZ +vmZ +bnn +kcI +toS +cCS +ukQ +oWc +xCp +nsZ +fyG +wKN +jFq +xqw +iGx +oiO +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +acm +hpG +hpG +hpG +ala +hpG +grV +hpG +hpG +hpG +hpG +hpG +cmU +aeU +aeu +aeu +vjh +vjh +ycx +ycx +eso +jqS +lql +xSp +vjh +ycx +vjh +vjh +ycx +vjh +vjh +aeu +aeU +aeu +aeu +aeu +aeu +aeu +vjh +aAR +mid +xnm +vjh +wot +upS +ycx +aTm +mgR +pwT +drG +pqD +kNP +iza +duU +pqD +hxL +wDz +wKG +vmq +pfO +sJD +uJn +vRB +hTz +rOC +fWk +xDE +aKY +cmU +cmU +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +aaa +aaa +acm +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ixB +uGn +aXf +iqQ +snn +wXa +vmZ +eXY +gnh +joC +ehp +jIa +tfW +iMx +gnh +slr +rqG +cop +tiv +rfg +vtv +bJV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +aeo +aaa +mMv +mMv +mMv +mMv +mMv +tpp +mMv +mMv +mMv +mMv +mMv +cmU +aeU +aof +aeu +ycx +whj +jKJ +vjh +jeZ +fJr +kJx +paM +fvr +cjx +aqt +lMx +tuP +xGQ +wuI +aeu +aeu +aeu +aeu +aUz +aeu +aeu +vjh +hah +rTS +fvB +ycx +oVz +aiI +ycx +pqD +iza +pqD +szX +iza +kWA +svC +fbz +qBz +kWA +wDz +ocq +kPd +tpd +sJD +hxd +rdo +cso +tWA +arX +ubN +tPH +aUz +cmU +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(46,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ixB +don +orz +fnN +oGu +vmZ +vmZ +vEv +pUb +pPw +jAu +qbE +jAu +pCX +gnp +rxp +vrs +rZc +tiv +jhc +oiO +oiO +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +acm +hpG +hpG +hpG +hpG +hpG +tpp +hpG +hpG +hpG +hpG +hpG +cmU +aeU +aeU +aeU +vjh +uWS +xpM +sjV +spr +xKn +uYp +iEy +vjh +eVP +vQY +xpk +pdE +lGY +vjh +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vjh +ycx +dsm +vjh +vjh +aAT +xOh +vjh +fzu +xuG +qPE +jkW +jpM +rFD +kAb +wHA +kWA +oIU +wDz +vXn +kPd +hCK +mMy +sIF +rdo +ygt +ygt +ygt +wMH +tPH +aeU +cmU +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(47,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +hmh +pkg +kUh +jAy +dJi +xFQ +vmZ +cjR +iFR +aGC +tUR +aGC +tUR +aGC +iFR +wBo +mCO +tiv +tiv +lOG +cRv +lOG +cGP +qfe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +acm +acm +aaa +tpp +acm +aaa +aaa +acm +tpp +acm +aaa +aaa +acm +tpp +cmU +cmU +aeU +aeU +vjh +tQo +nzD +ycx +ubF +tqC +hVL +lfl +ycx +vrN +ycx +vjh +vXC +vVC +ycx +vjh +vjh +aeu +aeu +aeu +ycx +vjh +vjh +rUQ +vNl +vHC +pMS +frT +wFa +vjh +hVY +lDa +tKY +szX +pqD +pqD +gzA +rrc +rHs +bDp +wDz +ugy +kPd +mvF +jsV +idq +rdo +tfB +aRH +tfB +nbC +gSF +cmU +cmU +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +aaa +aaa +acm +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(48,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ixB +okc +mLd +cdi +dJi +srs +vmZ +nKj +slB +urh +kJu +kUJ +dKy +cHg +was +nKj +vrs +wKb +tiv +jju +xKT +xuR +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +acm +aeo +aaa +cmU +hpG +hpG +hpG +hpG +hpG +lDc +tpp +tpp +hpG +hpG +hpG +hpG +hpG +cmU +aeU +aeU +ycx +vjh +hOJ +vjh +vjh +ycx +vjh +vjh +vjh +aHB +pzc +qBe +lRg +vOl +jhy +aHB +vjh +vjh +vjh +vjh +vjh +kQf +fXy +foQ +vjh +sft +ycx +udn +kFx +vjh +iza +pqD +pqD +szX +mgR +iza +pqD +qiM +pqD +iza +wDz +bYK +dnF +mvF +vAa +qxD +qVF +cXv +nbO +mes +ubN +tPH +aeU +aqQ +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +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 +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 +aaa +aaa +aaa +aaa +"} +(49,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +hmh +pfr +gQu +snn +dJi +tdf +vmZ +vmZ +ewC +qER +xmn +dKm +ggj +aSu +kVd +sKE +eAF +mMp +wlz +cvi +piu +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aeo +aaa +cmU +grV +grV +grV +grV +grV +tpp +tpp +tpp +grV +grV +grV +grV +grV +cmU +aeU +aeU +hPz +tfs +iVk +vEK +gLH +gLH +gLH +tsf +yhU +gLH +mtV +hBJ +mtV +mtV +mtV +jhy +ycx +qJY +qJY +mwR +vjh +ycx +lCs +vjh +vjh +vsq +vjh +vjh +kFx +dij +wMY +iza +jya +hVc +qKv +jes +pqD +yji +wlP +pqD +wDz +bWP +iOR +mvF +agy +iJy +awv +fov +moc +pKQ +rxW +tPH +aeU +cmU +gUw +gUw +gUw +gUw +gUw +awn +gUw +gUw +gUw +gUw +gUw +aaa +aaa +aeo +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(50,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ixB +ixB +snn +snn +tmj +wXa +prn +vmZ +gse +gdI +jIW +kUJ +rcS +hUE +fAM +vrs +prn +wXa +nQo +cvi +mYv +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +cmU +cmU +hpG +hpG +hpG +hpG +hpG +tpp +tpp +tpp +hpG +hpG +hpG +hpG +hpG +cmU +aeU +aeu +vjh +gLH +dBg +hBJ +hPx +ivP +hUC +mtV +mtV +mtV +mtV +bRO +fFe +fUp +hBJ +cYy +vjh +epN +epN +epN +ycx +aNp +gHe +ycx +eah +baK +fFK +ycx +jVD +jVD +iJv +dFM +maK +lWL +mgR +gJE +qWB +wRQ +fiH +wDz +wDz +nqR +qhT +rUh +mMy +tPH +tPH +gSF +gSF +mEg +gSF +aKY +cmU +cmU +awn +fql +awn +awn +awn +awn +awn +awn +awn +awn +awn +aaa +aaa +acm +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(51,1,1) = {" +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 +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +gnh +vAh +vdy +wXa +wXa +uAn +vmZ +owC +rlM +pkI +kUJ +msY +sQz +ssI +vrs +uAn +eXY +oZb +cvi +dpc +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +acm +vku +aeU +cmU +cmU +tpp +acm +aaa +aaa +acm +tpp +acm +aaa +aaa +acm +tpp +cmU +cmU +rYc +vjh +vjh +gLH +mtV +mtV +mlm +mlm +mlm +hBJ +fvh +lXK +tGg +tnP +wHF +maA +mtV +jhy +ycx +vKV +vBi +lnm +xja +foQ +fac +vjh +vjh +iQt +xDc +xDc +iQt +xDc +xDc +pqD +lbJ +pqD +qKv +fKs +iza +gIo +uEi +wDz +oDV +iOR +iOR +vmq +mMy +acK +acK +acK +acK +acm +aeo +aeU +aeU +cmU +cmU +cmU +cmU +cmU +cmU +awn +cmU +cmU +cmU +cmU +cmU +aaa +aaa +aeo +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(52,1,1) = {" +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 +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +rNx +sjG +tiv +srs +wXa +nKj +vmZ +kUd +dKx +cLV +cLV +cLV +upK +ocE +vrs +nKj +cln +tiv +win +piu +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeu +aeU +aeU +cmU +hpG +hpG +hpG +hpG +hpG +tpp +hpG +hpG +hpG +hpG +hpG +cmU +aeU +ycx +mZn +vjh +yhU +mtV +cBJ +gfi +tnP +gfi +tnP +sSD +rZW +nJF +rZW +nJF +tAP +mtV +aHB +vjh +qwB +vBi +aiI +vBi +oVz +dBg +oVz +vjh +nRC +qSJ +qSJ +uOo +qSJ +qug +iza +juF +iza +gBf +pqD +pqD +pqD +pqD +wDz +wDz +wDz +gij +miS +iVj +wrc +wrc +iVj +acm +acm +aeo +aeU +aeU +aeU +aeU +aeU +aeU +aeU +cmU +awn +cmU +aeU +aeU +aeU +aeU +aeu +aeu +aeo +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(53,1,1) = {" +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 +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +gnh +gnh +eAk +jrh +sPx +uEC +hUM +fFa +frh +ccd +slr +wXa +tnA +lHk +ejt +pGD +pMe +tiv +sQJ +aYE +lxE +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +vku +aeu +aeu +aof +aUz +cmU +grV +grV +grV +grV +grV +tpp +grV +grV +grV +grV +grV +cmU +aeU +vjh +tgp +leD +xle +mtV +ozd +nJF +rZW +nJF +rZW +rZW +aux +nJF +rZW +rZW +hjt +hBJ +cYy +vjh +vjh +ycx +kHh +vBi +vBi +vjh +vBi +vmu +keO +kSR +thW +cKR +hyQ +iIP +dfS +wyY +nhZ +wgK +nCL +nCL +nCL +nCL +nCL +nKy +wDz +jQn +cyT +iVj +ivU +lBQ +iVj +iVj +iVj +vps +iVj +aeU +aeu +aeu +aeu +aeU +aeU +cmU +awn +cmU +aeU +aeU +aeU +aeU +aeu +aeu +acm +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(54,1,1) = {" +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 +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +bbO +ecE +pOV +pOV +pOV +tiv +vUi +jpa +cne +rsX +mlD +lCC +mlD +rsX +gJc +sQq +qbP +tiv +sQJ +dvs +kbn +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +cmU +hpG +hpG +hpG +hpG +hpG +tpp +hpG +hpG +hpG +hpG +hpG +cmU +aeu +vjh +sfw +ycx +wrw +sVB +tqb +oeF +wTx +oeF +nJF +nJF +xtk +rZW +rZW +rZW +xaC +mtV +nul +jBr +vjh +rPO +jAc +vBi +uXB +xDc +iQt +xDc +npr +pQo +npr +npr +pQo +npr +pqD +iza +pqD +qsy +tKt +iMA +gmo +iMA +iMA +ryn +rQZ +qQc +cyT +gIt +lBQ +lBQ +hMx +wwM +lBQ +wrc +cmU +aeU +aeU +aeu +aeu +aeu +rkn +aDS +awn +bFI +aeU +coy +aeU +aeU +aeu +aeu +acm +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(55,1,1) = {" +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 +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeu +aeu +aeu +lUq +bnB +lqR +rnj +ecE +nGE +wXa +vmZ +tqB +rJN +dRh +xlF +vZn +dRh +rGK +vrs +wXa +aoi +tiv +piu +smI +piu +vSG +kpS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +cmU +cmU +cmU +cmU +cmU +aDS +tpp +bFI +cmU +cmU +cmU +cmU +cmU +aeu +vjh +vjh +vjh +iJR +mtV +mtZ +nJF +ocn +ctf +ikO +ctf +ikO +ikO +oeF +oeF +dTQ +sVB +bId +oFl +dgi +rPN +wzi +bpI +mjc +xDc +bJv +bJv +bJv +bJv +bJv +vjp +bJv +bJv +bJv +bJv +pqD +bbC +wgK +iMA +xad +adf +iza +llh +wDz +gij +miS +iVj +lFS +wJo +cwl +sWM +sWM +wrc +cmU +aeU +coy +aeU +aeu +aeU +aeU +aDS +ipD +bFI +aeU +aeU +aeU +aeu +aeu +cmU +acm +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(223,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(56,1,1) = {" +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 +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +lUq +uDe +mjn +seK +pOV +laH +ocE +vmZ +wXv +rcB +lCC +hZd +rsX +mlD +iYr +vrs +lQw +iLD +mHf +piu +caB +piu +vSG +kpS +acm +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +coy +xGI +aDS +tpp +bFI +rkn +aeU +aeU +aeu +aeu +aeu +aeu +ycx +sfw +yhU +mtV +vzV +rZW +rZW +ikO +nJF +rZW +nJF +rZW +nJF +wmq +vHr +mtV +vjh +sXT +udn +vjh +wWk +ycx +qXJ +xDc +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +iza +jsN +tKt +iMA +xad +cnQ +sav +mMy +jri +mCu +bIq +wjK +dbu +kES +xfx +dbu +dbu +wjK +cmU +cmU +ptL +aeU +aeU +aeU +aeU +jng +vJy +dYl +aUz +aeU +aeu +aeu +aeu +aeu +ckn +cmU +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(57,1,1) = {" +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 +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +bVv +bbO +dIR +riX +rBV +pOV +ogM +hUM +fFa +jdL +hVT +mlD +dRh +vZn +qFs +tUO +pGD +hUM +eIi +mHf +piu +qDG +piu +vSG +kpS +aaa +acm +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +coy +aDS +grV +bFI +aeU +aeu +aeu +aeu +aeu +aeu +aeu +vjh +tMO +mFt +hBJ +mtZ +nJF +rZW +cSJ +rZW +nJF +nJF +rZW +rZW +rZW +vHr +mtV +hPx +vwv +duA +rNj +vBi +vBi +oct +iQt +bJv +bJv +omO +bJv +bJv +bJv +bJv +bJv +bJv +bJv +pqD +srR +qkA +iza +aeu +acW +xad +sJD +rRM +tzA +kra +iln +wAt +tlV +ezY +qCi +aOf +kiO +acm +acK +cmU +aeU +aUz +xfU +aeU +krY +qQq +uUS +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +cmU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(58,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +qOd +lDK +uFe +pOV +pOV +tiv +vUi +jpa +cbJ +ebU +siH +ebU +siH +ing +eGC +xRM +uAH +lOG +cRv +vim +piu +piu +vSG +kpS +aaa +aaa +acm +acm +acK +acm +acm +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +fEg +icG +cFA +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vjh +pVz +gLH +mtV +xhY +rZW +nJF +cSJ +rZW +rZW +rZW +rZW +nJF +rZW +rgY +mtV +vjh +dhe +ycx +vjh +qVQ +vBi +oct +xDc +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +pqD +fPs +iza +pqD +aeu +aeu +xad +sJD +hUA +cTY +oig +wXt +wAt +bLN +rkV +aLg +aOf +qWz +aaQ +acK +cmU +aeU +aeU +aeu +aeu +krY +fCN +uUS +aeu +aeu +aeu +aeu +aeu +aeu +ckn +aUz +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(59,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +qOd +dVk +luk +ecE +nUf +eTS +wXa +vmZ +wXa +siH +bzu +tcY +hOK +siH +piu +nbZ +piu +ykv +sVD +cvi +mYv +piu +vSG +kpS +aaa +acm +acm +aaa +acm +aaa +acm +acm +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +pST +fCc +pST +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +pVz +tsf +mtV +xki +lRE +rZW +cSJ +nJF +rZW +nJF +nJF +rZW +rZW +vHr +hBJ +pZe +qsn +otO +vjh +eNQ +eNQ +vjh +xDc +bJv +bJv +bJv +bJv +bJv +bJv +omO +bJv +bJv +bJv +iza +tKt +jzF +iVR +aeu +add +cnQ +mxf +jri +hqP +hQa +xrS +wAt +vPG +mRF +apL +lIs +wAt +cJx +uXq +iTj +iTj +iTj +nMD +nMD +uUS +lsu +sWl +uUS +aeu +aeu +aeu +aeu +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(60,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +bbO +wno +aBB +pOV +qeO +qeO +oxD +vmZ +vmZ +kXV +cOR +aGK +buS +dIy +jlY +xBd +ggb +ikg +hda +cvi +dpc +piu +vSG +kpS +acm +acm +aaa +aaa +acm +aaa +aaa +acm +acm +aaa +acm +acm +vku +aeu +aeu +aUz +aap +aeu +aeu +aeu +aeu +aeu +aeU +fzd +dLr +fzd +aeu +aeu +aeu +pVz +xBI +pVz +xBI +pVz +pVz +bAX +eWP +eWP +ugC +fKA +tlU +gqR +wYR +xFE +tWn +juL +wYR +aAP +mtV +rPU +dHL +tPC +cyP +aaO +uKc +kLy +npr +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +iTq +tKt +vKM +iMA +xad +aDQ +cBD +kNf +fDT +pmd +hYY +jri +unv +mLe +bGx +lLa +lXL +mNm +gPA +nMD +ovm +cgU +hcP +jks +nMD +lPX +fjw +jHR +uUS +aeu +aeU +aeU +aeU +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(61,1,1) = {" +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 +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +bVv +aeU +aeU +aeU +lUq +bbO +mAc +wQN +qeO +xFH +xdE +gFn +qci +siH +dEX +rBa +dEX +siH +wYA +wgA +piu +tnr +iYb +cvi +uOd +vSG +vSG +kpS +aaa +acm +acm +acm +acm +acm +acm +acm +acm +acm +acm +aaa +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +tDC +fzd +dSJ +fzd +fzd +aeu +aeu +pVz +kyU +uFN +tGV +dRc +ikX +ijG +bZY +eWP +gSk +gqR +tlU +bcY +mtV +mtV +hBJ +mtV +mtV +mtV +mtV +icR +uJZ +tPC +cyP +abJ +uKc +sOT +npr +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +iTq +tKt +tPw +iMA +xad +cnM +xad +sJD +lix +uRg +nOR +mOb +bdH +hPG +rRW +vvn +tSN +aiL +bvR +ubC +qRD +fhL +kYI +rBd +nMD +eGW +mui +uJg +kMe +aUz +aaa +aaa +aaa +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(62,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aap +aeU +lUq +bbO +bbO +rNx +mZS +bAs +bPZ +foB +ing +fty +tOH +eqD +ebU +tIA +yhr +csL +gPC +cGP +vSG +vSG +vSG +woz +lge +aaa +acm +aaa +aaa +acm +aaa +aaa +aaa +aaa +acm +aaa +aeu +aeu +aeu +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +fzd +vdJ +pcl +xDg +tDC +pVz +pVz +pVz +maN +qwH +aRS +sNx +hBm +kFw +ukc +esG +rFL +nrS +nsl +mxh +mtV +dBg +vjh +pGj +mYX +nLZ +llr +vDU +tSY +tPC +cyP +edS +uKc +wht +npr +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +iTq +srR +uny +iMA +xad +cnQ +aeu +mxf +krk +sqs +mZF +lGV +jtl +bUl +pZM +qnc +qKI +mNm +wNf +ubC +olQ +tSP +cIg +inI +nMD +ftX +xlk +cpC +xKP +cmU +acm +acm +acm +acm +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(63,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +gnh +gnh +tiv +jYX +tiv +gnh +pcc +ikx +kwm +vTV +aoL +cGP +cGP +aoL +aoL +lsE +lsE +lsE +lge +acK +acm +acm +acm +acm +acK +acm +acm +acm +acm +acK +aeU +aeu +aeu +aeu +aap +aeU +aeU +aeu +aeu +aeu +aeu +aeu +tDC +mUp +gtj +vkJ +fzd +jUa +muN +xBI +rfD +qwH +dIQ +dnz +pmA +tYd +kCm +eWP +cGo +fKA +tdd +xlr +mtV +vBi +uOz +dBg +eyc +jGt +vjh +jjP +woV +fRz +cyP +kEp +uKc +eZE +xDc +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +bJv +iza +tKt +heU +pqD +aeu +cnR +aeu +mMy +ceh +hHm +aor +akV +iQn +eJm +irO +aiL +aiL +aiL +eEh +tsF +tsF +kWW +fxw +nMD +nMD +kuL +hOh +cuR +kMe +aeU +coy +aaa +aaa +aaa +aaQ +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(64,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +gnh +oye +pXi +sYM +rNx +psC +hOm +psC +vTV +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +agt +aeU +aeU +aeu +aeu +aeu +aeu +aUz +aeu +aeu +xuZ +xuZ +xuZ +sTO +wEM +vOT +tOo +leH +oYx +ukc +xBI +pVz +pVz +njL +xBI +wrz +vFH +pVz +eWP +sbZ +qxQ +pDT +szL +hBJ +dBg +qXJ +nSy +uwX +vjh +ycx +ycx +vjh +vjh +vjh +eNQ +eNQ +eNQ +xDc +xDc +npr +npr +wrI +npr +npr +wrI +npr +npr +pqD +pqD +cZh +iTq +pqD +aeu +cog +cBN +mMy +biR +xvF +aat +cuR +aiL +aiL +mNm +mNm +iVH +seW +mgn +tCU +tmp +xng +eTG +mij +pFl +ibU +bzo +tCU +aeu +aeu +aeU +aaa +aaa +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(65,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +rNx +rNx +jet +gnh +gnh +aeu +mbC +dKZ +unx +unx +unx +unx +unx +unx +kkc +kkc +kkc +kkc +kkc +kkc +kkc +kkc +kkc +bod +acK +acK +acK +acK +acK +cmU +cmU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pbY +tpY +rgF +sTO +kGj +hkO +eWP +dmW +rrs +ccz +xBI +yeY +hyq +eOs +hBa +mMJ +iqN +eWP +mtV +rxD +kac +rxD +mtV +qRr +hPp +tOr +ozZ +dhz +qFN +fix +iLT +vjh +rGx +hOA +nEf +iCb +rGx +vjh +rdM +dna +trf +oLa +xnJ +trf +hHt +tsn +pqD +nWR +tIY +iYj +iza +aeu +aeu +cBD +add +wDz +eIl +tEX +cuR +meU +tbs +rhy +uwp +hKE +iBi +fnL +aTo +hlS +ezC +uey +mWV +vek +kJs +sKb +tCU +gPA +tCU +tCU +ecY +pxe +beK +sRm +qJs +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(66,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aaa +aaa +rBj +cUc +vlM +gNI +opV +aaa +acm +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aaa +aaa +acm +cmU +cmU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +tfY +qzJ +crH +nki +uHY +dGD +bsa +jSK +tIQ +nKv +mqn +hTj +pmq +pmq +hTj +pmq +mBX +qlg +uvT +sNR +gey +jEQ +neJ +oFf +seB +bRJ +gPH +oVz +dBg +kex +spX +vjh +dLL +ncz +nEf +dLL +nVj +vjh +tSk +meO +uFp +qSC +lch +fOv +ceM +djZ +pqD +iza +qKP +mtw +pqD +pqD +iza +iMA +pqD +pqD +icU +uGB +kgc +tsY +dMd +gLT +tCU +tCU +tCU +gPA +pLv +ycs +bps +tCU +tCU +tCU +qzD +mWg +pQi +nYD +pQi +aaa +aaa +aaa +cry +ouV +acK +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(67,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +acm +acm +cev +acm +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aaa +aaa +acm +aaa +cko +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pCu +pCu +pCu +cXZ +xzc +ukc +pVz +hPY +obi +pcJ +jXi +rwW +eWP +eWP +esG +eWP +eWP +eWP +hBJ +mtV +fEj +mtV +mtV +hBJ +vjh +vjh +xHU +vjh +vjh +kex +jVD +eNQ +svk +csa +csa +csa +csa +eNQ +aPj +deZ +rnB +pIX +pHx +qrn +jzo +sOX +pqD +swc +ozI +shZ +xNq +mlB +vWU +gzh +dbR +bvB +kNe +qSB +gPA +pQi +pPZ +pQi +tCU +tZD +oCr +nuz +rdb +kio +grs +hpW +tzL +tCU +eEX +gDy +hOU +aHz +kZK +nLT +aaa +aaa +cry +vsx +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(68,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aba +acm +acm +acm +acm +acK +acm +acm +acm +acm +gNE +acm +acm +acm +acm +acK +acm +cko +aeU +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pCu +pCu +pCu +cXZ +cXZ +pVz +pVz +xBI +wrz +lLY +cBO +eWP +esG +acD +sKm +jiN +aHQ +esG +cgH +xkQ +eUs +vRU +vRN +gNq +pyr +xau +kHw +myd +ycx +kex +jfy +vjh +qTT +csa +csa +csa +lNe +tYx +oXa +mZO +aLp +kUX +gcL +wjL +jnj +rha +xPy +lQB +htJ +nJQ +pqD +kzh +uZr +rnW +bRo +wDz +hfP +lEQ +cuR +iaY +nhz +qRS +gPA +bvk +hkA +tzY +vpV +iEi +vlg +hwJ +osT +jJH +bIR +pXh +pQi +gDy +pQi +aaa +aaa +aaa +cry +ouV +acK +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(69,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bRh +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aaa +aaa +qWz +aaa +cko +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pCu +pCu +pCu +ejc +cPR +bzp +dtA +sbB +qWC +qOT +lcF +eWP +jfK +sBO +bjN +jzB +pDY +qGK +tzN +iFK +igg +fne +ayc +pKf +mPM +kHw +oMJ +tEt +vjh +hpY +wVb +eNQ +kxr +csa +csa +csa +csa +eNQ +wyX +fzH +pka +voo +gNJ +rll +sOy +pjC +pqD +kzl +bXS +iTq +kTK +wDz +wDz +wDz +kTK +wDz +vGn +oXe +cuR +cuR +qJR +cuR +tCU +aIw +qRf +mnR +xtu +oHe +cjq +hwJ +aYU +tCU +gPA +cuR +cuR +qJR +cuR +cuR +ecY +pxe +aeZ +pmM +qJs +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(70,1,1) = {" +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 +qJs +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bRh +aaa +aaa +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aaa +aaa +anH +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pCu +pCu +jQR +hCV +xAK +jeT +eUN +eUN +ikr +psv +eUN +xNc +wsg +dfW +tXR +tWd +xST +iGI +thG +taW +ktA +hdA +kSx +ruU +pyr +tAx +pTc +pyr +vjh +wFG +ycx +vjh +svk +rGx +nEf +nVj +jFs +vjh +syZ +deZ +sTB +sVQ +qpT +owJ +jbf +lWJ +pqD +ruW +dfK +jJN +sQw +wuo +dwx +plj +mrB +rMl +pon +vMb +rbz +iFU +urx +nAa +ijl +gWb +qRf +pCb +dpw +sxn +dUE +hwJ +rqs +ilv +oKW +vWY +frP +mtI +lwp +aUz +aaa +aaa +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(71,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +mzI +aaa +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +xuZ +pCu +pCu +pCu +ejc +jcj +qVD +eUN +oxp +noO +xfZ +tyA +xxk +buJ +kAR +gbB +ghX +fSK +mfs +vpD +eDu +wcC +hLz +lRq +fzG +pyr +mMa +bBe +pyr +cDJ +eSu +iRJ +vjh +nVj +iCb +nEf +iCb +oqA +vjh +ukV +peJ +rfX +jXX +mzB +ova +pJK +weW +iza +ckJ +wuT +iza +pqD +hCr +kLW +xrp +ngg +sXB +qEh +ddw +gVi +uMD +gVi +gVi +sWV +kcW +kBF +pNe +vYs +dYB +dUE +wsD +vUt +rmT +sgC +umJ +lAW +kUV +lwp +aaa +aaa +aaa +aaa +aeo +aaa +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(72,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bRh +acm +aaa +aaa +aaa +aaa +nqX +aaa +aaa +aeu +aeu +cIV +cIV +cIV +cIV +cIU +cIV +cIV +cIV +cIV +cIV +cXZ +pCu +pCu +pCu +ejc +pLO +xtt +psv +uiu +noO +dHg +kkC +xxk +lWr +khj +pYZ +aTg +lUM +qGK +tOR +pXf +xQq +rHc +sxM +sJM +sJM +rSi +sJM +sJM +vXf +pwF +ufU +vjh +mtV +mtV +mtV +mtV +mtV +mtV +xju +eKU +jiR +mle +hQg +hPq +dny +joS +pqD +fNy +bMY +eEe +pqD +cXh +cXh +cXh +cXh +wlS +pns +wFJ +nzW +kZP +ylu +nzW +xpa +aiN +ebW +pNe +dpw +xdl +dUE +aVI +oKW +joh +joh +afL +afL +afL +joh +acm +acm +acm +acm +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(73,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acn +acm +acm +acm +acm +gNE +acm +iAo +anH +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +nki +nki +cXZ +cXZ +nki +cXZ +qKx +eUN +fFH +ugc +jVZ +xmI +xxk +wSU +hEI +kbH +wKa +tZc +qGK +jop +jop +qGK +gQo +qyo +gbf +nBZ +gbd +woB +sJM +ibL +cdD +rnJ +xLd +ubJ +nWW +ngT +nKC +nWW +ngT +xcR +xDc +xDc +vqr +ilJ +oYc +fkL +xDc +iza +fKJ +guJ +yfc +ofx +iNZ +dwx +plj +mjG +crk +mxH +gLn +kxG +lwu +lwu +lTf +oKW +tUV +uZC +pNe +esn +pZI +pUA +gFD +oKW +mlv +ycp +etB +pya +lsS +afL +afL +aaa +aaa +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(224,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(74,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +mzI +aaa +aaa +aaa +nqX +aaa +aaa +aeu +aeu +cIU +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIV +nPS +brA +ixi +jJJ +pVP +ami +eUN +vsJ +xFt +kUp +itZ +xxk +mrl +ivh +mrl +ivh +tZc +eQb +jBO +hHg +qGK +iZm +sXE +sJM +tBh +nGC +hjh +sJM +qTY +pwF +kJH +srx +ubJ +mtr +ecF +nKC +mtr +pRf +nsA +gwn +jiU +tIk +wIu +kzP +njf +aCp +uHG +bjz +oce +yfc +ofx +rtD +guu +uhy +ngg +sXB +mxH +lTf +wNT +sEs +xMM +hsB +tjO +vBS +uZC +pNe +tWa +qBR +mLP +qyQ +jaW +lsb +qCZ +wXT +tZf +tZf +wnX +afL +aeU +aaa +aaa +aeo +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(75,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bRh +aaa +aaa +nqX +aaa +aaa +aeu +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +xOg +hRg +eRC +ixi +oaU +ocS +eyj +psv +hOY +pqS +kUp +iMr +ccY +qqB +hsW +imP +edU +ccY +uMz +nKV +nKV +sbJ +wue +vFv +gbf +wVD +wGE +ouD +rSi +rzB +jMa +suQ +raS +fYw +eoG +cOY +dEF +bKl +cOY +nsA +uNO +uNO +bDV +sDD +hOH +uNO +osy +pqD +ofz +fNy +gJC +pqD +cXh +skC +cXh +cXh +vVt +uBM +jgv +rjg +uCd +gua +rNJ +veN +iHP +hgf +kiZ +vBI +nqh +mfM +cjN +oKW +nvA +jco +pUH +kjl +tZf +nPo +qbB +aeU +aeU +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(76,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bRh +aaa +nqX +aaa +aaa +aeu +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +gWT +gjD +qku +cIV +irQ +sTe +hms +eUN +eUN +lCa +qez +eUN +ccY +clH +huR +huR +bXe +gZu +jhv +uZT +fph +pMj +dKa +wCR +sJM +ybO +oKJ +fth +sJM +hpv +htS +rKk +hpv +fYw +srg +jOY +hYD +vFc +cOt +nsA +lOZ +iun +uBo +dHi +xsX +qSN +iiQ +bPY +tZX +bjz +yfc +ofx +wpg +dwx +plj +sOi +crk +jmw +kxG +rEi +flt +fPQ +kTe +ijl +lmA +oRT +eqA +oKW +oKW +dKK +xpa +oKW +afL +dMH +crh +vwH +ijd +viu +qbB +aeU +aUz +aeU +acm +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(77,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +mzI +nqX +aaa +aaa +aeu +aeu +cIV +cIX +cIX +cIX +cIX +hkr +cIX +cIX +cIX +cIX +cIV +ike +rKa +xOg +mCk +ocS +hms +rxl +lFN +lBU +hpQ +uEw +pJr +aQQ +rjU +kaT +ekB +ayC +jhv +uCa +jjm +qCu +aOS +hDX +sJM +rSi +cuU +gbf +sJM +qSO +gbk +dQx +sHn +dEF +dEF +dEF +dEF +hQI +vpP +dEF +osy +uNO +dDp +sDD +awW +uNO +uNO +pqD +oce +guJ +yfc +ofx +rtD +fUf +lmh +gYl +wms +wHh +lGs +lGs +lGs +ciY +lGs +oKW +cXh +rmJ +ijl +oKW +var +mVf +pSG +gpM +cFO +pIS +pUH +wYW +tZf +vba +qbB +aeU +aeU +aeu +cke +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(78,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +tlJ +acm +iAo +anH +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIV +dGo +hgW +cIU +rMJ +oRz +uMG +fWK +fWL +kEC +wtP +rwr +wOy +vtF +tSc +gPS +buq +gZu +mEt +anI +son +xiC +eOi +wMl +lHX +nBD +qYv +ubw +pdR +wOk +uGU +omi +eBH +tXm +vvf +geO +jdR +hQI +qlw +dEF +tYi +nXC +cWQ +hDC +jXd +lrP +eRy +qId +fNy +ofz +hVl +iza +cXh +cXh +cXh +cXh +xex +mfd +ciY +tyk +mlj +nvK +yjW +vMg +lDV +vtf +veu +mun +aqq +wHT +thy +oHm +kAt +nuZ +mTK +tVH +nYa +uQj +uZg +aeU +aeU +aeU +aeu +aeu +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(79,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +nqX +cev +aaa +aeu +aeu +cIU +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +gWT +kMw +ntb +qLO +qEs +ocS +uMG +sFu +jIg +pdI +cUk +fcv +paU +tdB +wcN +vkq +wJy +lQK +dea +tpy +utF +wFm +dzQ +qrS +cdd +xev +cHz +cvF +blU +gPa +eHO +rvR +aDo +dEF +fjn +hGm +dEF +iju +unz +hkp +xMN +uQE +qHu +mqU +qEJ +rhN +esq +pqD +pqD +fKJ +yfc +ofx +hph +bwB +plj +qKS +wDs +lmF +pAQ +hCd +xmD +jck +dzy +sCJ +ocz +dZA +lYX +ijl +abj +lzg +nKr +lvP +cFO +lZr +jPG +sYu +mIR +kom +afL +aeu +aeU +aeU +aeU +aeu +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(80,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +nqX +aaa +vks +aeu +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +xOg +mQk +xgV +lCV +mCk +ocS +hms +xAQ +eWH +okQ +xzA +kkV +ugq +iCV +ewa +kDw +kCZ +gZu +mEt +kRu +rFt +sSJ +lAu +sSJ +rFt +owm +jrs +cMT +fVF +vUs +lBB +sRZ +cjS +dEF +dEF +iYf +dEF +eMW +uqF +dEF +rhN +obM +wij +fDB +lsX +rhN +jPq +peZ +iuC +bjz +yfc +ofx +hSa +kLW +iFe +ngg +sXB +jmw +vMg +tVS +esK +ctv +eqK +vMg +jJs +dGp +spw +ijl +lVi +lzg +fNw +aka +aka +aka +amX +xvq +aka +amX +aka +aeu +aeu +aeU +aeU +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(81,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +nqX +aaa +iTZ +aeu +aeu +cIV +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIX +cIV +fSE +sSP +xOg +mCk +bsy +dkh +dkh +jUU +dkh +jUU +dkh +ccY +aHC +uko +gsr +knL +qbk +mEt +rZE +rFt +ddS +fYU +bdM +vkE +mpv +opL +kHG +ofg +ofg +nlR +uBX +ofg +llY +iYW +wEw +dUn +fMn +udI +dEF +nZZ +rNo +xOq +uHv +vgm +tSI +cYv +xds +iuC +fKJ +cuD +pqD +cXh +cXh +cXh +cXh +omQ +jmw +fEe +clN +dup +oFo +hJp +lGs +xex +dSv +gjg +oKW +aHD +lzg +icQ +aka +psn +azo +alv +cez +sVP +qWZ +anG +aeu +aeu +aeu +aeu +aeU +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(82,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aeU +aeU +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +nqX +aaa +iTZ +aeu +aeu +cIV +cIV +cIV +cIU +cIV +cIV +cIV +cIV +cIU +cIU +efG +efG +qlC +cXZ +mCk +ocS +qLB +phH +vJg +uJs +pri +eMB +eer +eer +nbg +qvi +eer +eer +mbc +rUP +sSJ +lfQ +mHm +rVp +rFt +iIF +xJN +fPc +ijC +pIT +ofg +rot +bAQ +nvH +gSC +gjx +jHS +pOb +veV +hkp +lqM +rNo +vPX +dQC +uAF +rhN +rhN +rhN +iza +guJ +yfc +ofx +dnL +bwB +plj +nKu +yld +jmw +vMg +cSX +mpd +lAk +eKT +abB +wVc +eWu +smR +ijl +tfG +lzg +fPP +aka +akC +cHL +cbp +alQ +amr +vaP +amX +aeu +aeu +aeu +aeu +aeu +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(83,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aaa +aaa +aeU +aeU +aeU +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +gNE +aaa +duV +anH +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +anH +iGG +nLm +rhf +fbr +mCk +utj +idY +xjI +yhI +eby +rhs +gtK +eer +bKU +uUm +oWQ +fxx +aAu +cTI +gAO +rFt +lJL +ozt +xJn +rFt +itr +yaZ +tVu +aTe +pcG +mnG +uEX +nCU +llY +fGQ +qZS +egU +fpx +obU +dEF +kzz +iYa +bCO +uHv +nQX +rhN +hfF +vea +jWD +bHP +yfc +ofx +hSa +kqe +skA +ngg +sXB +xaZ +lGs +ons +tgx +gqz +uOA +vMg +joP +dZA +lYX +ijl +mkq +lzg +umj +hkR +caO +tnH +dil +wYl +ams +kSn +aka +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +qJs +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 +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 +aaa +aaa +aaa +aaa +"} +(84,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +nqX +aaa +iTZ +aaa +aaa +acm +aeu +aeu +aeu +vku +aeu +aeu +aeu +aeu +agt +qlC +pWo +efG +qOz +sRL +cVn +jUU +jKQ +gGR +ryC +fgB +axp +lTu +gVg +rQx +xwO +cvL +eer +dAz +kqn +rFt +sSJ +sSJ +sSJ +rFt +ofg +cSl +lkl +jMU +jJd +ofg +iYA +hih +llY +lyr +oYu +aLC +jVf +uYJ +hkp +fzk +nKh +jDs +uHv +vgm +gdL +cYv +hri +jWD +oce +wQI +pqD +skC +cXh +cXh +cXh +ieg +uKO +lGs +vMg +vMg +iBy +vMg +lGs +sJW +dZA +wVE +oKW +cIk +yhw +jaM +swZ +ctt +ibJ +tFS +rTB +iXZ +hZg +aka +aeu +aeu +aeu +cke +jbV +aaa +aaa +aaa +aaa +aaa +aaa +vku +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +tgU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(85,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +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 +nqX +aaa +uHc +aaa +aaa +acm +acm +acm +acm +aCs +cmU +cmU +cmU +cmU +urA +duq +dDO +efG +rdI +hWD +tmd +dkh +uRf +vxZ +tLh +lrc +lHy +eer +eer +rRZ +pbk +qpP +wzW +pFq +bXA +naC +xKr +xKr +xKr +xhi +mJk +vbT +etY +nri +wNQ +ofg +xvW +chM +qjM +qjM +qjM +qYy +dEF +dEF +dEF +rhN +bkT +jTc +hoE +rhN +esq +rhN +cee +pqD +fNy +yfc +ofx +iXM +bwB +plj +rcJ +iTM +rxi +dSv +pXU +qDX +bJm +qbY +qbv +mdp +ycF +oNH +kJq +jUJ +rFh +iYq +aka +vCk +cup +pDd +cxP +czv +vJA +amX +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aaa +aaa +aaa +acm +qVM +aaa +aaa +aaa +aeU +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(86,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +nqX +aaa +aaa +rSk +ucP +ucP +vEC +vEC +ucP +eFE +rvD +rvD +eFE +rvD +aIH +uBH +ooR +eTt +hxf +eRp +ovN +jUU +fOt +dbK +pDs +kmC +geV +wbf +mCg +sTZ +foP +lnc +pqw +eYH +xEm +gxN +tCd +uHg +cel +vsR +kHG +kji +fxt +fbK +rtr +eDr +pBd +jHo +rBS +wFs +oJH +xvW +gbh +umL +bwW +qzu +nCs +pEu +ikE +vgm +dZk +quy +lJA +iza +ofz +yfc +ofx +rtD +uZL +sFW +icp +ydh +uXL +aPF +tiY +nzW +wPK +eDx +srf +veu +dZA +rrY +aEO +yaE +jtL +sQI +iPa +alP +oMr +cdF +ceE +wPO +scR +aka +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +vkY +acm +nTo +qVM +cok +aUz +aeu +aeu +aeu +aeU +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(87,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +jQh +nxx +iSx +iSx +iSx +iSx +hNF +iSx +iSx +lVo +nJV +ccW +ccW +ccW +gLp +tFK +fSS +mBW +uOB +uOB +glY +dkh +uTT +pYb +klN +phL +rvW +fXZ +dkh +pFY +ciA +krM +qaR +jam +fgy +qht +msL +jhr +dQG +phY +uik +vQD +erH +gaE +uNK +qCj +lia +xoK +evD +gZI +ofB +sij +als +vnL +rhN +cVI +nKh +nkd +tDs +xTt +rhN +czz +amn +pqD +ckJ +siS +wDz +kTK +wDz +wDz +cXh +lqn +oQz +cXh +jkk +tIq +bUJ +jkk +jkk +xap +wMe +ktu +dzS +moz +mgC +mop +aka +aka +iPa +ujN +rkU +aka +aka +aka +aeu +aeu +aeu +cke +aeu +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aUz +acm +nTo +mZT +aUz +aeU +aeu +aeu +aeu +aeU +aeU +aeU +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(88,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +acm +cmU +aUz +aeU +aeu +agt +efG +mZR +qlC +rIl +aUW +fPh +jUU +jUU +dkh +jUU +dJU +xef +xwU +dkh +fyw +vUr +xxz +eer +fXm +nes +uTM +eyA +eIW +jJW +vss +aeH +xzS +ouK +fKf +fyZ +qNL +xvW +jDU +ear +qip +aDD +xvW +tqG +cZT +rhN +hXY +nKh +iku +ikE +uwG +rhN +esq +rhN +pqD +llI +ncj +cUY +fGz +dPR +wDz +oIn +gME +dXz +ura +mRp +gvx +ate +jeR +jkk +shC +sFF +wqZ +dzS +bHv +qVs +nrF +wSq +wmj +ojW +sLf +kbx +btg +rkG +aeu +aeu +aUz +aeU +acm +aaa +aaa +aaa +aaa +aaa +aaa +aeu +kCk +kCk +oOW +gJK +oOW +gJK +oOW +mLN +mLN +aeu +aeu +aeu +aeU +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(89,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cmU +vku +aeu +aeu +aeu +aeu +aeu +efG +xLX +efG +ogg +eFR +fVJ +uGc +bMe +uJL +dkh +jUU +nqm +dkh +dkh +uVJ +rKT +aPT +aAu +mlz +gOh +nes +tjv +mYV +aBN +fdY +ofg +aDL +ofg +cRW +yaH +cRW +xvW +xvW +chj +xvW +xvW +bKc +lCz +ryK +esq +qrP +nKh +fEc +ikE +vgm +lqP +uhE +rPx +pqD +pqD +iza +kzl +gHX +qVR +kTK +iHT +sSd +aLi +jVA +jkk +jgy +fGC +iVV +mRp +gJL +odc +eoM +ksM +rFK +qVs +anz +xRL +vLm +xRL +fjz +kir +jIV +moz +aeU +aeU +aeU +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +mLN +kCk +sDv +sDv +mrz +fCe +gin +qjv +aGd +kCk +kCk +aeu +aeu +aeU +aeU +aeu +icx +qJs +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(225,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(90,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +efG +dHc +qlC +tbn +lLp +aWI +eFR +eFR +nCA +cXZ +kxU +oiq +emx +nki +oic +mFQ +wQc +cXZ +hdo +hdo +tWe +sCa +hdo +qic +jQE +bDj +gFY +jQE +dSG +oIg +nHT +jQE +ivm +idQ +wzA +jQE +jQE +pEt +jQE +rhN +rhN +fmy +fti +aBF +bJU +rhN +gDe +pXN +iza +kFB +iza +sQZ +bPH +ukT +wDz +rqx +oJs +dxk +rmd +jkk +lwn +wDF +qXX +jkk +mdE +aUw +vyl +moz +rFK +aJF +nZM +qbf +qbf +qJO +qbf +fQM +csM +rhd +hmO +xgs +kem +acm +qJs +aaa +aaa +aaa +aaa +aaa +qJs +wWW +dMR +sZV +xfV +sZV +sZV +nBd +vYm +sZV +gyV +wWW +aeu +aeU +aeU +kmK +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(91,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +qlC +efG +ofr +efG +xIS +eFR +aWI +eFR +eFR +nax +cXZ +krg +idh +sby +oAN +gQd +gQd +pAq +nki +uWO +wWp +tsg +imM +nbU +kTJ +qbJ +ewW +kLo +cAU +kLo +hkI +vuy +cnn +eJE +mWq +qox +sJY +hdj +qCX +rVA +pZO +eQE +otS +uAA +otb +lXe +rhN +rhN +rhN +pqD +jqI +hWw +jqI +kUR +vWU +wDz +gCu +fRP +aLi +myc +jkk +lYG +lOY +weR +hAP +xmO +sFF +war +rhd +lbD +hCl +kbV +vvB +wHQ +fDi +bpg +gBi +oZE +oZE +vuM +brK +xgs +xgs +qkf +aaa +aaa +aaa +aaa +aaa +acm +mLN +efS +vis +arU +uVU +nec +moK +vYx +sVS +eJH +mLN +aeu +aeu +aeU +aeU +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(92,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +qlC +loI +uDt +qlC +fSY +eFR +xdY +vxf +jTt +oLs +euc +hHL +dUQ +aSX +aSX +aSX +xDP +kPf +qOv +uQI +bHB +gBJ +jLK +fjX +vpY +lrI +ryW +oAo +ryW +ryW +ryW +oAo +ryW +vKa +gXG +byS +ofp +ryW +hXe +qNh +gFR +uqc +jgr +wFU +jWw +uAA +dLk +uAA +uwR +pqD +kPk +pqD +sDq +xav +iwo +wDz +bDu +tXX +nBE +rRY +kvl +hAP +hAP +hAP +hAP +dOk +rVE +hna +rhd +rhd +rkG +rhd +rkG +rhd +jSE +iwL +rhd +oZE +awi +sMe +lRJ +fJs +lIr +rRb +aaa +aaa +aaa +aaa +aaa +acm +oOW +phF +gyV +dfk +eOt +eAu +pTL +qKR +gyV +pBh +oOW +aeU +aeU +aeU +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(93,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +qlC +qlC +efG +efG +uDt +qlC +sLD +eFR +dfV +not +fcM +dxB +xjv +nvE +mog +mog +mog +mog +mog +bSM +rER +vzZ +iXd +ffI +xDb +yfA +piQ +uqW +fTr +rky +fKi +rky +rky +ksr +rbk +azg +gtq +oZX +igR +vUu +pJz +fvX +tFb +pzm +bZg +iHG +afQ +apv +ouM +apv +hoK +vkC +scE +pqD +iza +iNc +ueO +kTK +wDz +jRR +wDz +wDz +jXN +aSo +xSC +xYY +usF +ruB +jhg +sYn +ntE +naw +ttn +psP +igC +hmO +ntR +iYS +xgs +fTQ +bum +hKc +jvl +xgs +xgs +xgs +aaa +aaa +aaa +aaa +aaa +acm +mLN +tAX +gyV +mQB +vHZ +cPw +bwN +qDE +oNr +gyV +mLN +aeu +aeu +hzC +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(94,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +efG +qKE +aUU +efG +uDt +qlC +qlC +uqN +vTD +wdD +kEz +kMs +fmQ +huc +vxb +kEz +kEz +dcl +vxb +dUa +nkQ +fPp +veW +qQj +lbO +cml +lbO +igl +kKm +igl +cml +lbO +cml +lbO +tdk +tdk +xZi +rqq +plX +jCm +cXT +jCm +jCm +qnK +cXT +qZf +pHD +kcE +qSg +mkQ +apv +apv +hoK +gOo +pqD +pqD +fob +oWx +iza +hsr +jHy +pqD +jLy +dOk +jMK +jhg +qcv +jhg +xoI +erN +nVK +dtt +nVK +fWX +boE +kgE +qwi +iZv +gpy +fiR +uap +lnU +riB +hmO +acm +qJs +aaa +aaa +aaa +aaa +aaa +qJs +wWW +tth +oNr +eOt +gbY +mQW +mdX +oNr +pBh +rAA +mLN +mLN +aeu +aeu +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(95,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +efG +vtt +fSW +qlC +uDt +tpr +efG +qlC +efG +bJM +qlC +efG +qlC +uZq +pkE +nEV +pkE +afB +nEV +wjG +ovv +xjO +yeo +qbh +cml +nOc +fIx +raY +jzh +wxj +otF +diZ +bDF +dtD +plX +fFW +qhC +hsO +vqs +jCm +iEu +ayo +ror +tBJ +jCm +rhT +sqg +rhT +rxJ +ssx +qSg +mkQ +hHM +vNS +vfF +pqD +pqD +ofa +tZG +tZG +kUR +gdA +kbl +xCh +weh +weh +weh +xLU +gXJ +vgU +coz +gVv +ePe +wmr +lyd +tjE +gmG +gmG +gmG +sow +mbP +sgA +mGG +xgs +xgs +xgs +aaa +aaa +aaa +aaa +aaa +acm +mLN +phF +arU +xGy +eEY +ewt +rNk +gyV +eOt +eOt +eOt +mLN +aeu +aeu +aeu +cry +aaa +aaQ +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(96,1,1) = {" +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 +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +qlC +aNg +two +efG +efG +bxG +efG +aLK +pvA +llj +ktc +izv +efG +ibi +gjL +cWy +vto +klK +iai +iai +rEV +nIx +pTR +gBx +igl +cyv +uiN +fhv +eOl +oJV +rzr +rYK +hRZ +xcJ +krw +fgo +egs +vxa +hZS +bdF +qHV +rTu +tVC +era +cXT +lam +aia +unQ +rxJ +rxJ +rxJ +sgh +apv +apv +hoK +hkC +pqD +iza +pqD +kwK +hpg +pqD +hNI +nBc +nBc +jqb +jqb +sMa +nVK +nXW +ekM +vJk +mCm +gmG +gmG +pDM +xJK +qlD +gtU +nZE +tOB +sgA +lzs +gOq +lIr +fdC +oSK +aaa +aaa +aaa +aaa +acm +oOW +lGa +arU +arU +gyV +gyV +jvQ +pBh +arU +gyV +wso +mLN +aeu +yma +yma +sYw +yma +nie +acm +qJs +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(97,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aeu +efG +dSe +exJ +usT +qlC +kHI +efG +efG +qVk +efG +qlC +qlC +efG +ize +lqy +dfD +gfz +dXI +dkA +ovv +ovv +nIx +iFm +ocO +eAl +rYf +wqF +usV +aPR +gnN +ixN +fST +hee +oTt +plX +ttt +kQH +lZK +bHj +jCm +eri +lcN +ngF +dgW +jCm +qpx +lwW +qwe +snW +hEw +rxJ +uLJ +rky +xNJ +apv +hoK +hhX +pqD +gqD +jqI +pqD +pqD +vCf +lDS +xfe +prK +jqb +ayY +nVK +wWm +kIz +wgr +nFe +cmc +nPT +gmn +nPT +xun +tjE +tOa +xPc +cRG +rIq +xgs +xgs +qkf +aaa +aaa +aaa +aaa +aaa +acm +kCk +pLC +arU +arU +arU +jvQ +gyV +gyV +qsv +jvQ +vHP +gJK +pNg +iSQ +xbk +vKm +vKm +wPy +aaa +aaa +aaa +aaa +aaa +aaa +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(98,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +qlC +gbU +emo +bpp +enj +gYV +gUZ +ydV +ydV +ydV +efG +yfS +sOS +dfD +pDP +oQe +jdl +oQe +lqy +rEV +ugp +nIx +pqB +sLb +igl +cyv +oCI +kHR +kHR +riQ +lbO +cml +cml +lbO +cXT +cXT +jCm +cXT +jCm +cXT +jCm +jCm +wbo +jCm +cXT +xdv +tKB +foU +gFO +cvm +aeG +xCq +izM +rJJ +rFx +qhf +hKB +pqD +iza +pvs +pqD +tpl +duM +cZW +duM +vlJ +srW +hkq +nOI +tfh +mCm +caS +ruo +gmG +gmG +pDM +pDM +gmG +gmG +hmO +kem +hmO +kem +hmO +acm +qJs +aaa +aaa +aaa +aaa +aaa +qJs +wWW +nhc +vuZ +dqF +gyV +gyV +gyV +gyV +vac +jvQ +tPz +dZS +vKm +uAt +vKm +vKm +vKm +wPy +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(99,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +efG +ukd +uDt +ykB +bAi +ueY +pGS +sdT +efG +gUZ +qlC +oMZ +xcj +dXI +cqE +oQe +odE +oQe +slh +ovv +jtk +nIx +maW +sLb +lbO +jcN +oKV +avy +iFI +pQd +lbO +mHe +xkP +dcr +jCm +cYZ +cjp +cXT +hmn +ylP +cXT +oUc +qHV +xHn +jCm +qnL +spE +wmM +ojs +iIX +rhT +jQE +uVx +jQE +jus +nNM +nam +vkh +lep +ylM +xvG +kqs +ikT +glX +nlA +jRm +taU +ayY +nVK +xym +gmG +gmG +pDM +gmG +rTi +rTi +rTi +gva +rTi +rTi +rTi +rTi +rTi +gva +gva +rTi +rTi +aaa +aaa +aaa +aaa +kCk +mLN +jFZ +pBh +hjR +hjR +hjR +mWM +mWM +rqV +eOt +tBR +gJK +pNg +iSQ +qyR +vKm +vKm +wPy +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(100,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +qlC +tUr +gGq +nZC +qlC +nNT +nrh +efG +efG +hOt +efG +mKP +sOS +dfD +lEI +oQe +pPD +oQe +dmU +rEV +jiJ +nIx +veW +sLb +cml +mgx +vCA +xZO +qLb +lte +aZi +ipI +oUH +bsJ +jCm +xVz +jVG +eMs +dAU +vRk +bEe +qrU +rTu +jCm +cXT +ulS +nex +ulS +ulS +jPB +ulS +rUD +xpv +ulS +cGQ +duW +uEs +vkh +elg +mmd +jqb +rRx +lYa +ykO +lck +nDS +taU +kay +qvJ +njT +gmG +xUQ +nPT +pDM +rTi +ddb +wRM +wRM +rTi +buk +jqW +jqW +rTi +qmZ +iMX +iMX +rTi +aaa +aaa +aaa +aaa +kCk +qqJ +krr +ntH +gcy +cqA +wGG +dIg +gab +gIX +pPC +qHy +kCk +acm +yma +yma +sYw +yma +nie +acm +qJs +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(101,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +qlC +efG +qlC +efG +efG +uTG +fuX +vlv +qlC +sEK +qlC +efG +efG +vrd +dfD +olv +vGs +aTb +ciW +dSB +mlC +ffi +veW +baE +lbO +wwf +xlB +urf +fIw +bdk +cml +cml +cml +lbO +cXT +gLP +cgT +qjr +hlP +gDW +cXT +auS +nrJ +cXT +dsw +bNz +nbJ +sxC +goY +aNH +rdV +rfM +wYi +uTt +rTv +fNe +rqW +vkh +jqb +gHD +jqb +vCG +rbH +ppy +gdP +uNI +bnY +aIl +suo +lYT +gmG +gmG +pRP +gmG +gva +wRM +qXA +gos +rTi +jqW +jeS +dmC +rTi +iMX +uWz +gTD +rTi +acm +fsu +bzb +kCk +kCk +dyC +qAx +wzY +tZM +qoi +xCy +ouE +tnC +jCP +ygO +xWh +lqC +hEU +aaa +aaa +aaa +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(102,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aUz +aeu +aeu +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +efG +skR +rwM +dED +lAC +jqV +sLG +qfu +qlC +qlC +hTK +ufc +fwM +spV +waI +rEV +eBx +nIx +veW +oCJ +cml +lbO +cml +lbO +lbO +cml +lbO +ybm +hoz +jNW +jCm +cXT +cXT +cXT +jCm +cXT +jCm +fPN +oRI +cXT +dVb +uyl +uxz +ose +nps +uwl +nQs +uHF +eRx +lUD +tzI +fNe +cRq +btI +jqb +jqb +hNI +jqb +jqb +jqb +hNI +jqb +jqb +ncB +sHD +rXp +gmG +pRP +nIh +pDM +rTi +oeS +dyD +rbn +gva +dtg +ptu +ulg +rTi +luP +hwY +pfc +gva +acm +osW +cWN +mLN +bzy +vhi +mcs +eNV +fmA +fEb +jyS +brE +wzr +lNp +oix +sAV +kCk +acm +acm +aeo +aeo +acm +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(103,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +agt +acM +vku +aeu +coy +aUz +aeu +vku +acm +aaQ +aeo +aeo +aeo +acm +vku +acm +aaQ +aeo +aeo +aeo +aeo +acm +vku +aeu +aeu +aeu +aeu +aeu +aeu +qlC +drp +aZh +btK +lAC +iLj +amG +gGs +tpr +efG +quG +qlC +efG +qlC +efG +efG +efG +wkC +veW +sLb +lxP +vJT +dZe +fcX +hAF +lxP +pwx +ebK +iaH +fCM +fTW +cXT +gVp +yjq +kLa +xwt +sbX +qwx +wGp +jCm +jiT +mNT +uXe +xMC +xOP +pIa +cLL +hPR +kQI +lUD +gDv +hQF +fNe +tuF +fmo +qKX +koE +peT +oNo +ekM +juj +doj +ekM +vGJ +tdv +rRA +eeq +fhw +sDe +gmG +gva +fLZ +xLM +wGd +rTi +fLZ +xLM +awG +rTi +uhp +xLM +uhp +rTi +acm +osW +vqj +bjJ +isO +ePm +bfA +fdp +mLN +mLN +nmo +gxi +qmR +tAN +upW +lts +yma +aaa +acm +aaa +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(226,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(104,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +cmU +cmU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +acm +aaa +acm +aaa +acm +aaa +acm +aaa +aaa +aeo +aaa +aaa +acm +aUz +coy +aeu +aeu +aeu +aeu +efG +hVZ +rtN +dpe +nNT +pms +qlC +rfo +hne +efV +hne +ehY +gMK +uDt +ehY +tlL +vjY +scN +guC +sFg +okN +xYz +hxb +vew +ias +okN +wnc +usX +oPh +wAn +iTy +cXT +ekY +cgj +rVw +jCm +jCm +eeC +jCm +cXT +ulS +rNN +vze +dYQ +iBV +kiG +pUk +sVi +mfG +lUD +lUD +tzI +gWw +tuF +kNO +ekM +bza +cTi +ipg +eiY +cTi +uqT +bBr +rvj +nsQ +gDJ +gmG +fgb +deI +pDM +sSZ +cVb +vdS +rrS +kVN +oDt +kVN +rrS +kVN +sRi +kVN +oaK +oLp +tvH +osW +uvO +bjJ +nqn +nDX +baS +vCV +dgd +ekp +dtb +xWT +yma +yma +kPK +ijr +crz +ehx +acm +acm +acm +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(105,1,1) = {" +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 +aaa +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +sZw +aeu +aeu +aeu +aeu +ceF +ceF +ceF +ceG +ceF +ceF +ceF +acm +aaa +acm +aaa +aeo +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +cmU +aUz +efG +efG +qlC +efG +efG +qlC +efG +ehY +vTt +qfu +hfl +oiJ +tPD +tPD +vbi +tPD +tPD +uAS +efG +aDO +cQV +lnD +lxP +lVx +scT +jsc +ePf +lxP +vou +jRx +jEp +xnC +sKV +cXT +txi +ndS +vcL +cXT +niy +nOp +lre +vne +jPB +vCO +hKQ +uFh +djC +rAB +oTU +sVi +evt +eRx +lUD +tzI +fNe +uok +vkh +ekM +tBT +drC +kbv +uXZ +pNV +eAa +ekM +hBx +jhg +xXz +gmG +kNz +gmG +mjh +jwV +esZ +vId +eTh +xAI +mSf +msS +aYu +osW +eAs +oup +hSv +wRU +wRU +acF +aWF +kCk +eyx +sQt +bfA +drk +mLN +ckg +dtb +laf +pOG +wRr +nim +cMV +yma +aaa +aaa +cow +aaa +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(106,1,1) = {" +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 +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +asZ +asZ +aAg +asZ +asZ +aAg +aAg +asZ +asZ +ceG +ceF +xbZ +twg +dHw +caN +ceG +ceF +ceF +ceF +aaa +acm +aaa +aaa +aaQ +aaa +aaa +acm +aaa +aaa +acm +aeU +qlC +nas +mFa +cfu +gKC +mLE +ydV +xVu +qfu +sME +dja +tPD +uxN +ifu +hjD +nSq +tPD +tPD +efG +tCY +pVd +gwV +okN +hjZ +lxP +lxP +mNz +okN +dBw +jlw +sVh +pFT +eCd +cXT +jCm +sWp +iUM +jCm +jJx +ljy +gHc +sIO +eMC +pog +bUV +fyf +xCA +joK +oBT +fsZ +aHq +oyP +sWN +rTv +fNe +wgX +uQN +ekM +ekM +ekM +ekM +ekM +ekM +ekM +ekM +ayY +ojG +wWm +gmG +mRV +rrO +cfL +ajo +wiR +hmK +mJP +fVl +bAc +kSs +kbw +qoo +sfV +cEu +dCX +eBi +vWC +hxi +vJZ +vNB +eEz +bwc +clL +qOG +mLN +acK +yma +tur +yma +yma +kix +yma +yma +aaa +aaa +cow +aaa +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(107,1,1) = {" +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 +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aAg +asZ +asZ +asZ +aAg +asZ +asZ +asZ +asZ +aAg +ceF +ciT +sVj +pfM +pYO +mQS +adR +qvc +aak +oVl +cHu +cHu +aeS +aeS +cHu +aeS +aeS +cHu +aeS +aeS +cHu +cHu +iyr +bWI +pnK +bbl +naY +pGM +efG +qlC +fbm +fbm +efG +vbi +rLy +nIq +qlk +mfD +gkb +pvb +jdY +wor +yip +nwE +jlw +tmV +jlw +fOd +fBF +sJd +ovw +kqG +eCd +hwZ +wqd +ugG +fWB +rNX +eJc +sVh +mKv +trj +vCa +wNo +irj +caj +gFF +aKA +xcp +tDu +dRr +qxI +pEA +eZx +ulS +uST +hQF +ygA +nrv +spi +tGQ +qcI +bLR +htP +knR +eYB +knR +rNg +jhg +rqm +gmG +rtc +uwP +mjh +oPO +cRu +tGj +aZe +nGT +svp +whz +buu +sJI +bSw +kHq +bWx +nGM +cNP +lsf +vQt +mLN +cud +fLu +oGO +mLN +mLN +acK +yma +eRK +nkg +goi +lfE +uNv +iyd +aaa +aaa +cow +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(108,1,1) = {" +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 +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +asZ +asZ +aAg +aAg +asZ +asZ +xCY +asZ +asZ +aAg +asZ +ceF +jBT +auf +xQU +nAe +fpk +peu +chO +iyi +ceF +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +efG +efG +efG +qlC +blA +wJj +qlC +aaO +aDQ +aDQ +acW +uxN +jqt +skB +taM +hjE +uCR +hJy +cyp +tEE +kbY +lAA +dBw +jlw +iMN +vUY +rna +mma +oSD +lvy +fEE +jKH +eiz +cIC +dkH +nvP +jyI +ehF +kca +qAc +qAc +xms +ulS +jPB +ulS +nby +nby +gLO +nby +mqa +nby +nby +ulS +ulS +mbp +fNe +bVR +uPM +suo +iHp +vWH +fZk +jhg +jhg +jhg +jhg +jhg +gip +pDM +gmG +qDI +cfL +irG +utk +cLu +vbx +sCY +hFm +rCH +dgE +vum +aAQ +ouX +nDi +fqO +unr +sni +xsn +bjJ +mSm +vEt +gsB +oOW +aaa +acK +yma +eni +kno +yma +oOW +yma +yma +aaa +aaa +cow +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(109,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +asZ +asZ +wBs +raM +qUO +alz +ceg +bGE +cdf +pIy +asZ +adg +azv +grQ +azv +adg +veZ +chD +chD +chD +chI +aaa +acm +acm +acm +acm +aaQ +aeo +vku +aaQ +aeo +aeo +acm +aeo +vku +acm +qlC +tmt +efG +efG +aDQ +adf +add +abJ +uxN +vKc +xRE +pDF +jQW +qXc +itn +cXH +gIz +veW +pji +hRf +dBw +tZK +xCa +kUZ +dUe +iBz +mKw +sVh +ygV +vzr +ohq +wzG +xBi +luK +eCd +fNG +aPK +lRd +woj +qmx +twV +mAf +nby +mwy +wzk +hxQ +lrO +cVH +pxE +olN +ufE +tmZ +efe +mWR +olz +aig +rNP +fHj +cWu +vnJ +pjZ +naK +naK +vkr +ajH +gmG +nIh +uzQ +rBE +kZz +bBE +srX +kPv +hoI +aSv +wjP +ajv +wSL +ajv +uDQ +pED +cSU +dxq +jkB +hkW +kCk +kCk +kCk +mLN +mLN +aaa +aaa +yma +yma +emU +yma +aaa +acm +aaa +aaa +aaa +acm +acm +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(110,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +asZ +aAg +asZ +cIb +tzU +cdV +cdV +cdX +ceD +cdV +hbf +mtA +tSx +mha +cgp +tqQ +adg +eXj +yiF +iGD +lTc +mMj +uba +acm +acK +acm +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +fbm +ydV +fbm +aDQ +add +aDQ +bjR +aDQ +uxN +itn +jRQ +wFL +eBZ +uxN +uxN +qNr +vbd +cuW +phK +qQj +jlw +dBw +jlw +lHE +ele +sbf +gbO +vDD +xLk +rnG +xXp +gZl +sSN +bnl +sVh +xkj +sdd +mRo +fqP +qPX +lLv +ewl +gLO +wbT +dod +dki +vvC +hrN +axt +fBI +puy +kNK +hyl +hXK +hAJ +fqQ +hAJ +dUK +kDR +hAJ +fqQ +woJ +fhs +gmG +jLM +gmG +rRm +aOg +gry +rMi +bDP +inE +fwf +hNy +pkr +nxY +wuK +aLP +jBf +aBi +mnE +xDo +sBm +wRU +dvq +rTi +gva +rTi +rTi +rTi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +cow +cow +cow +acm +aaa +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(111,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +icx +aeu +aAg +asZ +gkD +aaw +uqv +cdY +cdZ +hlC +cdY +upZ +qKf +xIq +adg +byD +cgJ +kBU +alV +uIs +afw +afU +lEf +cit +pem +eTp +acm +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +efG +fpQ +efG +oSs +tre +jbP +tlM +oSs +sac +uxN +uxN +kut +itn +uxN +qNr +beN +hdy +vuj +maW +wjD +fNT +ijQ +dCM +vSi +lMf +fCs +lMf +qJf +hja +wEt +add +rnG +hZp +rnG +rnG +hbE +fYh +fYh +hbE +fYh +rKj +fYh +fYh +cEr +lSt +ept +cfC +dPn +axt +mcN +xqM +tzI +ueZ +djW +hAJ +dsH +lWQ +nWG +prZ +eHa +vqM +vVT +vqM +cfL +pRP +gmG +sfI +biP +cfL +cfL +jwV +bDQ +ouC +kHQ +wRU +wRU +sSh +jBf +jUz +jUz +cre +kja +ndP +uZZ +okk +aGs +hky +gQV +xha +rTi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +aaa +aaa +cow +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(112,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +ciI +rRJ +asZ +asZ +aac +aay +iBD +cdY +jIX +vFk +ceq +atB +xmB +acu +flL +acx +mIX +aKI +kQQ +adI +xxJ +cUR +aed +jsj +rTD +ePb +aqv +aqv +aqv +aqv +aqv +axk +awb +awb +awb +awb +awb +axk +awb +lgQ +vza +lgQ +yfq +kZX +yfq +yfq +yfq +ioT +iwf +lny +sCC +rxu +xjR +hRo +sne +tUe +pzC +rOR +tEE +mfJ +bqd +sHm +ddp +ddp +vRO +rsb +aZw +tud +mQN +aDQ +sIf +rLG +uiX +czT +osR +eGh +jKv +mgA +sNe +kYG +oBy +ncT +cEr +dFA +nGJ +soC +cHI +axt +ixO +pdz +dJg +hyl +rsw +hAJ +hJD +vbP +rIk +mBm +brg +vqM +auN +wvj +cfL +pRP +uUO +csk +uUO +ves +cfL +okq +sOn +ouC +iwT +wRU +cWb +daL +cec +rON +xzi +uYw +elm +nEg +uOC +acT +xLM +fDS +kox +xha +rTi +acK +acm +acm +aaa +acm +cow +cow +cow +cow +acm +cow +cow +cow +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(113,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +anH +aeu +asZ +aAg +bQR +aaI +uqv +cdZ +cdY +lcK +cdY +nhd +wjs +mHq +adg +lxf +nIX +wSY +glG +msW +cij +cio +cio +lJg +hSJ +eTp +acm +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +efG +pOW +qlC +phQ +nig +jQV +ssU +poU +emd +saz +jfY +pOI +dwc +qNr +qNr +jYx +uwT +eLp +ukU +dYy +fzL +yej +ijQ +naG +hJQ +gpS +bMN +nQk +cmG +mQN +uWQ +czT +czT +hbE +fYh +iyT +hIY +qXv +iJN +iJN +qJB +vyV +iWj +cEr +kMM +nsp +iWy +qbA +cfR +boq +pPe +tmZ +aQs +rsw +hAJ +kIf +rIk +seU +htZ +bQE +uUk +giA +nfN +mjh +xhH +uUO +jSC +nPT +kHr +cfL +dgu +dva +anF +iwT +ikt +ylD +gYK +vqv +cjv +iLQ +lst +ofe +tzF +blX +eQf +fOH +eSl +mCT +xha +rTi +acm +aaa +cow +aaa +cow +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 +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 "} -(227,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(114,1,1) = {" +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 +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 +aeU +aeU +aeu +aeu +aeu +asZ +asZ +asZ +hJZ +xaf +abg +abC +abF +abC +abC +tlS +krv +tSx +ixf +ccr +myg +adg +qfq +apx +irE +ill +aSa +gMy +acm +acK +acm +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +aaa +acm +aaa +fbm +aSr +fbm +acW +aaO +hDB +hDB +hDB +qZx +hDB +hDB +qZx +hDB +vqw +vqw +vqw +vqw +vqw +aOc +laB +npo +uke +qTC +kNw +tgZ +bFw +xke +kRU +nIw +mQN +aDQ +czT +wiM +pFs +tnq +fvT +spQ +sQj +cBW +ftz +wVR +mOz +oBe +cEr +wgS +nTr +oJq +qNJ +bgl +dbi +rqi +kNK +hyl +rsw +fqQ +xCz +rIk +rIk +viM +ifv +dHq +nbH +nwh +cfL +dQM +biP +sfI +vmg +gmG +mjh +vpd +hkL +kuf +dgg +wRU +gvu +qgC +aGM +kbZ +iLQ +lVf +mlT +nCK +osW +vfO +rTi +cCe +rTi +gva +rTi +vku +acm +gGF +acm +gGF +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 +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 +"} +(115,1,1) = {" +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 +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 +aeu +aeu +aeu +aeu +aeu +aeu +asZ +aAg +roV +kbf +lLi +abD +abM +poZ +pKt +egV +asZ +alV +azv +dsI +chV +adg +clm +ciM +chI +chI +chI +aaa +acm +acm +acm +aaQ +aeo +aeo +vku +aeo +aeo +aaQ +aeo +aeo +vku +acm +qlC +ukM +efG +efG +tPD +qZx +klm +pac +bNv +bxx +oTw +oZP +pzP +tLM +jEd +bsc +xDm +vqw +dAZ +oHD +fzL +vSq +qTC +fKl +clQ +piB +xSU +kju +wiz +mZW +kLy +dyK +vZv +kNS +faN +pAE +goh +bys +wIR +tMU +kNG +lMZ +eyU +cEr +cEr +qxA +ivG +cEr +hbE +fYh +fYh +utH +hyl +rsw +prX +gBT +hIS +rIk +iqd +mGz +cfL +cfL +mjh +cfL +gmG +biP +gmG +pRP +vpX +mjh +hDV +gIE +kuf +ebp +wRU +ylD +gYK +rah +cjv +iLQ +rov +rol +pet +uZZ +gkx +aGs +iug +fMF +mvW +rTi +acm +aaa +cow +aaa +acm +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 +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 +"} +(116,1,1) = {" +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 +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 +aaa +aeu +aeu +aeu +aeu +aeu +aAg +asZ +asZ +asZ +aAg +asZ +iMJ +asZ +aAg +asZ +asZ +ihg +rLN +fSZ +mHd +kZH +rRw +rRC +ihg +aaa +acm +aaa +aaQ +aaa +aaa +aeo +aaa +aaa +acm +aaa +aaa +acm +aUz +aeu +aeu +aeu +efG +duH +rTp +dbp +tPD +cBG +lun +hLj +hnL +ixc +wAS +ixc +lED +orT +szg +sJJ +pxN +vqw +luA +uet +ttd +jCl +ejO +uCf +soB +xtG +gKg +dtP +sSA +mQN +cnR +czT +xwk +kNS +pGe +sCK +csj +dZM +qQQ +jXk +gMg +wOB +wtz +gHE +bdo +wHR +vrD +smq +pik +dfi +vfb +fgJ +aPx +dpx +hAJ +kax +hAJ +oqN +hAJ +fqQ +gmG +een +iGg +vKO +aEF +rRU +eEJ +nuo +kuk +cfL +tbk +woc +kuf +riI +vRK +enr +ejX +jBf +cCJ +fdd +ryZ +fHH +kRD +oup +vfO +xLM +vns +trt +mvW +rTi +acK +aaa +cow +gGF +cow +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 +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 +"} +(117,1,1) = {" +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 +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 +aaa +aaa +aaa +aeu +aeu +aeu +aeu +asZ +aAg +aAg +asZ +asZ +aAg +asZ +asZ +aAg +asZ +ihg +fLd +yah +wrp +fJz +fmx +jpX +rZN +acm +aeo +aaa +aeo +aaa +aaa +aeo +aaa +aaa +acm +aaa +aeU +qlC +qlC +efG +efG +qlC +efG +hZu +wnV +pEL +vbi +oou +jBi +vvH +vvH +uKp +bkN +rWg +rsT +orT +aIq +suF +tGZ +wLu +mlw +eDT +vJH +bji +ijQ +iRt +hVU +mCs +vYn +eJk +uRG +mQN +sIf +czT +hjn +the +nCI +dsk +jBN +izt +xjr +hGf +wZW +jNe +roT +dOg +eyU +ipC +ipC +ipC +wGQ +eyU +tWL +xEV +fqp +xRB +lcw +wQK +uvi +rDl +uvi +hEE +jQT +acs +lDB +hVj +sxl +gGx +nIh +pDM +sLl +cfL +wRU +tZe +xJs +osW +wRU +wRU +wPh +cUM +qSe +xAW +dkD +pkC +tYZ +blX +eQf +fOH +qWT +wFB +mvW +rTi +acm +aaa +acm +aaa +cow +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 +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 +"} +(118,1,1) = {" +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 +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 +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +asZ +aAg +aAg +asZ +asZ +aAg +asZ +aAg +asZ +rZN +ihg +xYa +mAj +mPo +pwa +ihg +ihg +aaa +aeo +aaa +acm +aaa +aaa +aaQ +aaa +aaa +acm +aUz +efG +efG +pGA +vVM +oYV +mSj +efG +qlC +yaN +efG +tPD +sLU +uWU +nYp +mLJ +jBi +vvH +dRF +mIq +myS +nms +uMf +rLh +vqw +oqu +eAn +tjA +xoT +wiw +ikR +ikR +vYD +bvN +fiY +kzG +mQN +rLG +czT +vZa +axE +lEi +yjV +iLz +eVT +qQQ +hGf +bXj +fqG +tZk +lGF +xPO +vRP +bqy +qoT +vJB +dLh +tWL +tmZ +inF +lwV +qsb +uvi +qHe +czj +qsb +qsb +qsb +eOG +uNY +vlq +gmG +qYr +ttR +gmG +pLl +sOV +knv +xIB +rvk +iKX +oat +hAc +iZB +hRj +lsW +nWU +ugr +mlT +gSz +wRU +vfO +rTi +tHs +gva +rTi +rTi +icx +acm +cow +acm +acm +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 +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 +"} +(119,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aeU +coy +aUz +aeU +aeu +vku +aeu +aUz +dVd +aeu +aeu +aeu +aeu +ihg +rZN +ihg +ihg +ihg +rZN +ihg +acm +acm +vku +aaQ +aeo +aeo +aeo +acm +acm +aaQ +vku +aeu +qlC +rtx +aIv +ngW +tlb +bSA +kFG +qAK +xag +dBs +tPD +uKi +jEC +krN +krN +ipb +tRw +jEC +rsT +orT +pDK +dsc +aFn +vqw +rQl +jzt +fzL +hjJ +qTC +iFv +gTz +jDy +tDW +faZ +cYG +mZW +sIf +dyK +bXb +jRe +pgQ +fnu +eqE +jpF +fZy +njd +cEr +swY +eyU +cEr +cEr +hNR +cEr +ivG +cEr +fYh +fYh +xNk +hyl +qvG +kTq +kxH +rAr +rFg +xYE +eqV +qHe +csW +olP +pDM +kDy +nEe +nbn +vlq +liK +qNH +tcg +wcP +yhW +kOx +eEB +ujT +ccQ +slu +lAV +mST +uoN +mvX +pet +uZZ +gkx +aGs +gpe +tJa +lNn +rTi +acm +aaa +cow +aaa +acm +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 +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 +"} +(120,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +ciI +cmU +cmU +cmU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeu +aeu +efG +kWK +cvT +aNw +rDO +leF +vUo +elw +wnV +emB +tPD +sMO +iBH +ley +mug +nGK +azw +ixc +xrm +orT +xGh +cVg +eQG +vqw +twc +qks +nCv +hdz +qTC +fnZ +wgO +iOb +hbH +uHN +dhT +mQN +abJ +czT +gvM +wSi +kql +dzL +spQ +iVl +pab +jcK +pkK +nEQ +yaM +cEr +hMz +uWM +mwA +cMr +xEZ +wIE +nnV +vMM +hyl +nCc +rHX +rKN +lyT +wjm +wjm +dvu +qsb +huS +yem +lvS +llu +cfL +tUm +mjh +dIN +cfL +wRU +oup +vhp +wLM +wLM +wRU +xjB +eyv +ufG +jia +mOg +dgP +nwN +oup +vfO +xLM +oYN +qms +lNn +rTi +acK +acm +cow +aaa +acm +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 +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 +"} +(121,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +anH +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vku +acm +aaQ +aeo +acm +vku +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +efG +xZr +dDO +yhh +gSL +jas +bed +lrp +xag +irJ +lZi +lZi +lae +kLR +xpJ +hQP +tdt +fzJ +shk +orT +aQB +mfU +vqw +vqw +imo +tEE +fzL +nTG +ijQ +mfT +qOB +vYI +lYE +str +rFS +mQN +jJh +czT +czT +hbE +fYh +oZS +hIY +qXv +iJN +iJN +mBS +qVC +pSj +ivG +ath +cxO +fLx +kXN +fLx +oUL +eon +tmZ +hyl +ojZ +kTq +eMc +rFc +jKz +toZ +bSi +kBd +llu +rRm +gmG +qVA +cfL +gXX +pgA +wJD +unS +wRU +jzm +vXI +dof +wgq +osW +eKA +bdU +jYc +tNB +cUA +tTp +gZm +aeL +eQf +fOH +gyn +qpI +lNn +rTi +acm +aaa +gGF +aaa +cmU +aeU +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 +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 +"} +(122,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aUz +aeu +aeu +aeU +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +efG +qlC +iMG +izL +pIK +tRO +lRk +fvU +iyF +lRk +stA +iUT +lZi +iUT +lZi +lZi +hDB +hDB +qZx +hPW +vqw +vqw +vqw +epA +xxP +wqE +wuh +tzl +ijQ +gHi +jLq +shP +evs +ykb +siI +mQN +aDQ +sIf +cnR +nfR +czT +nep +fez +fMs +pXt +nbu +mzp +cqO +bZt +cEr +nHv +efP +exz +wfk +fgA +ieI +nnV +wpD +vKQ +xGw +fXS +oBA +pqb +lTM +pqb +tdW +qsb +llu +cfL +cfL +mjh +cfL +pvi +giU +nny +hkK +wRU +bcQ +nhO +dof +pvu +lqU +uuK +qRp +jrR +hBk +jrR +ero +vSp +lqU +vfO +rTi +cCe +rTi +rTi +gva +cke +acm +cmU +aUz +cke +aeu +aeU +aeU +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 +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 +"} +(123,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeU +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aeu +aeu +aeu +gNz +gNz +oQg +gNz +gNz +tPD +tPD +vbi +tPD +tPD +iUT +gwa +wrR +cnW +fRw +fRw +fRw +jyF +jNR +fvU +kfh +sZe +ffu +icJ +siF +lac +gba +cDH +maW +cWl +dqa +dCM +ijQ +wEI +lJd +vbo +lJd +hNL +fUP +wEt +wqu +tXg +niQ +tXg +dvk +fYh +aRa +rzE +rcM +lpt +rcM +xML +rcM +rcM +bBS +grq +wVA +dJd +jmj +fvb +vDO +kPo +hyl +xRB +kTq +rDe +whm +iSG +pcO +fkB +qsb +kDy +cfL +kUB +gTc +gtR +pNZ +mSM +kZU +tnp +ikt +baC +fse +ouk +blw +bSg +pJJ +eaw +fts +hnb +aYN +tUc +sGV +uUA +gkx +aGs +wae +vIE +hEV +rTi +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(124,1,1) = {" +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 +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 +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 +aeo +aaa +aeU +aeu +aeu +aeu +gNz +huO +kjS +cJk +oQg +ajZ +brW +dLy +oRA +uvq +iUT +lRk +lRk +fvU +fvU +lRk +lRk +weK +gMp +lRk +hvj +jOA +tXZ +kRd +uBO +kwe +kxS +npo +cDf +bpj +jds +jds +ios +sde +hMf +pvf +bln +qUj +bDr +dvk +niQ +dvk +fpG +gbs +tXg +cEr +oSS +jwi +rcM +scg +vuF +eib +eDg +eRD +bBS +pOd +pjm +kOJ +lfU +iuP +nnV +mmF +hyl +iaw +qsb +qsb +qsb +uvi +qHe +qsb +qsb +wpI +mjh +mCE +nZF +eQj +wbH +sIx +vaz +oYd +wRU +vly +jbg +iNm +mZb +lqU +tZz +eFn +clt +owT +uPX +cPp +vxr +tKi +vfO +xLM +vVP +dlS +hEV +gva +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(125,1,1) = {" +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 +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 +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 +aaQ +aaa +aUz +aeu +aeu +aeu +oQg +rmU +dDH +sCu +oQg +qos +sql +ckm +ydn +kBS +lZi +qPU +kOb +jBy +sdm +cES +fvU +fRw +sWA +lRk +gyx +vXa +exN +byy +jKt +sBz +hEa +sIq +ePU +jds +ios +dOL +qbV +hxw +vWE +ndT +ezV +cTk +kcx +xPk +mej +wTh +bXX +pEc +wcV +tmD +fbF +wnJ +mHc +qxh +iOD +dKN +vOH +sHf +bBS +bBS +bhk +tqz +jlh +jlh +bBS +wNs +kVv +nrv +sPP +tGQ +mMz +rkT +uSk +hrY +luO +lig +jEO +rKm +xcE +vvE +fEu +qFb +jzw +mHa +sMf +uCS +uCS +twu +iTB +vVx +vzt +oqW +dwB +rtF +ipJ +fxB +bks +uAE +bEa +vZy +qaZ +hEV +hEV +gva +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(228,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(126,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aeo +aeU +aeu +aeu +aeu +aeu +gNz +atf +lXB +qlY +oQg +oQg +dek +otr +otr +otr +lZi +fvJ +fOI +vFU +exP +wlm +lRk +wrR +fvU +lRk +aOG +fCH +kGD +ubt +bHK +kVY +spZ +waL +dom +jds +lhB +aPg +etD +iWm +dKo +uew +uew +teH +eHu +pyJ +gka +bRb +nAE +fiy +hMZ +ygj +wMt +gRP +lpt +lTZ +bvA +ssr +vSa +ulp +xUy +ezl +rAQ +wmn +gpz +hfp +vkh +tJX +hyl +nbR +uPM +suo +iHp +nVK +nVK +rwh +nVK +jSM +jEO +hXL +qvV +oKp +sZz +unE +hoV +kEQ +wRU +vRX +iAU +rnP +oJr +tKi +eaQ +sZb +kyR +ikh +lhG +tpw +jYT +pLs +ygU +rTi +rTi +gva +rTi +rTi +aeu +agt +aEg +cko +cko +cke +aeu +aeu +aeu +aeu +aaa +aaa +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(127,1,1) = {" +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 +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 +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 +acm +aeU +aeu +aeu +aeu +aeu +gNz +owq +vOL +rMA +klB +nmu +jRy +rMA +eDq +wzb +iUT +plG +exP +yaY +uIZ +wxI +lRk +wpf +aVn +fvU +vOM +gxe +sAZ +mLb +puB +lac +idF +bpR +sFg +ios +oLQ +qBC +fxP +nSh +pFS +elD +vAw +bXz +ekL +xPk +sWI +xPk +ppl +pfV +tXg +dvk +wFl +dKJ +wFl +swA +lBj +qaF +xUk +pOS +rcM +jlh +qgu +rZU +pQr +hfp +adi +pVQ +mJo +wBJ +hkw +aig +mAa +irM +dEl +prP +rFi +sSg +aWD +aWD +rWT +qPf +aJH +vbj +knh +pRO +jBs +fGu +chS +kep +npR +gwk +pVF +xMs +tJK +sLW +hEY +gXh +uSB +pLs +ygU +aDT +clX +clY +clX +clz +clz +clz +clz +clz +clz +aEs +aeu +agt +aeu +aUz +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(128,1,1) = {" +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 +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 +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 +vku +aeu +aeu +aeu +aeu +aeu +oQg +eGI +rQM +rQM +fSa +fSa +fSa +xba +stF +qUw +iUT +nUi +iVF +elc +hIs +jre +rsZ +qaI +ctZ +lRk +lRk +fvU +xsO +eQO +oLR +lRk +nbU +cQV +bZE +jds +qeT +tuT +ufD +hxt +fkT +bXz +ekL +bXz +pVS +dCW +mXM +sWI +fHw +pdq +xyp +tXg +aVH +joL +wFl +tGS +aYv +qaF +teb +bJR +dmD +tqz +fxd +civ +rNZ +fLy +oYi +ufy +nfa +nJA +ekM +ekM +rtT +exH +ekM +ofq +jhg +xoh +qRv +mGj +mSu +ohj +fvQ +mVo +vPU +xnZ +jBs +lPh +sqM +sFv +dIX +jBs +pLs +pLs +sDy +pLs +pLs +pal +pLs +pLs +ygU +aDU +aDY +aEd +aEi +aEm +aEk +aEf +aEr +aEf +aEr +aEt +aeU +ckf +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(129,1,1) = {" +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 +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 +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 +aeu +aeu +aeu +aeu +aeu +aeu +gNz +pnJ +vIc +rvA +xUM +gnI +uHd +iMu +vHd +wQe +lZi +jSw +kNJ +mOa +qbc +pjV +lRk +hbT +pjE +aEU +wmJ +fvz +knk +fQx +fQx +oXx +iKy +eMf +oHh +jds +kun +tBj +uQS +iWm +luh +vMW +ghp +qeZ +oGo +pBU +wny +uxF +urE +pWj +vTs +dvk +sbz +fun +hUy +oPr +lrk +cau +otP +otP +bTe +jlh +lme +soL +tRL +hfp +mXI +fNe +jiq +bax +kPO +bax +bax +bax +bax +mnO +dtt +nxi +kBs +mwn +xeq +xeq +nwY +fbB +gEo +kJf +nOg +wcg +bVp +tgd +wHW +jBs +sXQ +fVB +rSe +xEB +ekm +qEM +gpL +eHf +ozk +aDU +aDZ +aEe +aEj +aEn +aEp +aEf +aEj +aEf +aEj +aEu +aeU +ckf +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(130,1,1) = {" +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 +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 +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 +aeU +aeu +aeu +aap +aeu +aeu +aeu +oQg +mDQ +xXG +xXG +xXG +kuc +nqs +xnO +qDA +bht +iUT +swW +lda +pvH +lRk +fvU +lRk +fvU +kzT +lRk +lRk +fuZ +lRk +fvU +lRk +lRk +xgC +umq +kMt +ios +ftG +wRs +pLB +hxw +irL +bXz +hdm +dMp +eBu +jDF +rzV +jgB +rPo +kjK +rOX +dvk +uZN +qRK +dKJ +yeA +fiQ +jfV +rxt +vrf +fJv +jlh +aVx +vKp +ewe +hfp +ixo +gWw +jhz +scX +deG +gkr +pmu +wRE +gng +xsJ +jhg +xAw +bSX +ddI +jMo +hpz +hTB +tGz +vMk +ipf +jYd +usp +ljb +sPG +kPS +jBs +qTg +oWX +puS +cvI +twN +vBt +ekm +clX +cHN +aDV +aEa +aEf +aEj +aEm +aEq +aEf +aEj +aEf +aEj +aEt +aeU +ckf +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(131,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeu +aeu +aeU +aeu +aeu +aeu +oQg +lBN +vAm +huj +tIM +vIK +nqs +hib +kfT +jjU +lZi +fvU +lRk +twR +fvU +fhH +nrN +lRk +apC +lRk +iJf +npi +vvd +luQ +uLA +lby +gsu +sIq +tlW +jds +jds +kZx +ibd +mwe +ios +bXz +bXz +wIL +ffv +maX +dyX +xPk +laE +tnc +rPo +tXg +wFl +dKJ +wFl +rcM +lpt +rcM +rcM +rcM +lpt +jlh +owG +jlh +hfp +ivF +pVQ +rHz +aMa +yiK +nFm +nHd +oIy +cWS +nFu +qPz +cLq +vEl +dwL +mxx +qMC +cYt +gev +vrq +uuC +bxE +jBs +fGu +chS +oIS +qUU +jBs +bty +sHQ +kQd +fKg +twN +bJi +ekm +gFQ +twN +ekm +gFQ +ekm +aEk +aEn +aEi +aEf +aEr +aEf +aEr +aEu +aeU +vku +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(132,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeU +aeU +aeU +aeu +aeu +gNz +nwW +fiW +iyI +fiW +ksN +nqs +xnO +qGq +oMq +xmf +kLS +sOD +hYu +pQx +xVo +xVo +prY +bpz +fvU +iPw +onc +aTR +hqr +eji +omH +ijF +umq +nGt +hat +nol +lox +ocZ +oFC +lbj +ipo +wxq +wxq +hat +wxq +hat +xPk +sWI +xPk +kbc +niQ +ejQ +yaG +kEm +cTh +gjc +sHh +kvo +wfD +pmI +yaG +nuL +aGZ +kFl +iLS +lVj +aCi +szY +scX +hJz +iHq +rbT +dtS +scX +xsJ +iuH +jFS +tWM +mGj +see +cjl +rlx +uFb +vZu +mDM +fSt +icw +tKS +kXS +nUZ +ekm +teU +izf +dQK +ekm +ekm +oUj +mBL +pSW +ocx +gHd +ntf +twN +aEl +aEo +aEo +aEo +aEo +aEo +aEo +aEv +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(133,1,1) = {" +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 +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 +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 +aeu +aeu +aap +aeu +aUz +aeu +aeu +oQg +tvO +oQg +oQg +oQg +oQg +rOF +hib +cnc +gNz +uRT +lVe +fvU +fvU +lRk +bbA +hqS +bot +ttB +lRk +kll +ejU +jLT +pqm +tPn +omH +ijF +bjB +tWg +fhP +ipL +omN +omN +xTI +uGD +ejP +fUZ +hJm +qSa +eeb +gTA +jHT +mzs +xPk +ycr +niQ +dch +slo +dRY +lzv +reT +vRQ +vRh +bNM +ioK +slo +jTk +aGZ +nam +bis +nNM +nam +bax +bax +eoT +qgE +rOS +eQq +scX +xsJ +lRl +wjz +xOI +xOI +qkm +uHD +qkm +aMJ +ewK +qkm +tPP +bsT +enS +toi +jvh +ekm +vUC +kCK +kCK +ftS +mfE +pSE +lmb +dzt +hRY +hRY +roy +bWE +rea +rea +ekm +twN +cko +cpY +ckr +cke +aeu +aeu +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(134,1,1) = {" +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 +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 +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +oQg +fBX +ajs +otr +aDF +tAI +ctx +ipQ +oQg +vhf +lVe +mmu +giJ +jOn +vTA +stA +jNR +fhY +xKW +piX +uVe +xbH +iGK +klp +omH +ijF +sIq +tWg +udW +rYx +udF +rSN +xHP +fLv +rbO +lsZ +wLC +pxH +vJN +hat +qvh +sRh +qXn +tnc +niQ +kPt +slo +cfK +vcm +hHP +ftl +uiE +crR +xRv +slo +oUA +skM +ufX +tPS +cVS +pZx +scX +iGT +nYo +rvZ +rdp +nEs +scX +rXv +nVK +pRw +rwD +ixj +ggF +ils +qsA +aYW +hmr +hnD +kUS +kyT +fqN +smn +ceW +rea +wYx +lxu +qfg +qfg +ulF +abq +ffQ +jYo +vHa +qAo +kLx +lmC +dyw +cQt +gGp +ekm +twN +agt +aeu +aeu +aeu +aeu +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(135,1,1) = {" +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 +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 +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +gNz +vBv +ake +reJ +ckp +cld +vVq +gjF +gNz +lVe +cbL +onm +msb +qeJ +oHj +fvU +peC +dqg +lRk +uFl +qZl +wwv +jMZ +eYw +lby +dEc +umq +tWg +hqZ +jrr +cAu +ppH +xHP +lMh +rbO +acj +cAu +cXg +bQb +aMe +mfF +fKS +jkb +urE +niQ +cSq +slo +fjk +wLX +reT +lLl +wDh +ssg +ycd +slo +iqk +skM +sex +gCl +lAr +iio +uuu +ahz +rxQ +sDW +emz +iJg +vDZ +vCn +gaR +nbI +rwD +pwo +hZT +lNK +lNK +rvU +pLu +lbq +kUS +qOi +feD +ydw +mmE +dLN +oDG +tCp +qOq +cqc +lOX +lcn +jIt +fXQ +okp +cgb +sCV +fgH +kZY +dES +uTY +bKM +ekm +aeu +aeu +aeu +aeu +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(136,1,1) = {" +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 +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 +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 +coy +aUz +aeu +cIY +uRT +uRT +uRT +oQg +ugA +cJh +otr +lGS +cJv +ahJ +pLV +oQg +mbW +lVe +mRi +fIB +fvU +lBO +fuY +bpz +iUT +lZi +bBF +qdk +yjj +qdk +qdk +bBF +dpJ +hLS +wuE +cIf +rLs +lFt +rJS +xHP +fLv +dfU +lJJ +cAu +wGA +xvj +aMe +oNk +kbT +sWI +jCZ +niQ +abJ +yaG +xWm +eON +jRF +dsC +aAq +nDK +vPz +yaG +acm +skM +nKn +gCl +qur +jtJ +scX +vwe +ffC +dmp +sZB +kvJ +bax +oCt +fmn +aek +xOI +hON +wcX +mez +die +hwN +oBP +ocQ +gTr +iEG +qVN +rEW +goG +pHy +vxC +iQT +qOq +tkO +okp +uvG +piZ +uvG +lOX +hqW +jbZ +rea +tiz +jnL +tiz +tiz +ekm +aeu +aeu +aeu +aeU +aUz +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 +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 +"} +(137,1,1) = {" +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 +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 +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 +aeU +jaU +cIY +oqa +vZM +uRT +uRT +cbL +otr +otr +oQg +qFw +tzg +uRT +cIY +rel +lVe +cbL +lVe +lRk +vHh +lRk +enP +lZi +xSO +vTu +dRR +tmf +qpw +lvV +bBF +jdE +sIq +tWg +api +rYx +scc +kxf +nAH +fLv +rbO +wYk +qVz +wzp +dcF +hat +gmj +dsJ +xPk +why +niQ +niQ +tXg +tXg +tXg +arl +arl +wRj +arl +arl +arl +skM +vuQ +hqk +gCl +rUO +lkW +kPO +bax +bax +eao +bax +fuB +cuV +cuV +kYU +cuV +xOI +lrU +sHk +tlu +ojj +kGc +mPP +vww +vHH +lQj +gDu +xtc +dKz +rea +wYx +xQL +okp +dPr +cYc +vME +qnH +vME +lOX +paN +hNj +piD +uyK +uyK +rKf +vRo +ekm +aeu +aeu +aeu +aeU +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 +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 +"} +(138,1,1) = {" +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 +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 +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 +aca +aji +tfi +udA +xUP +lRZ +iJu +uFM +qAa +oTE +iJQ +kri +hBD +eeQ +eMX +lVe +pPj +eIM +fRS +gfD +ggI +dGP +xBs +qCI +lZi +mGo +cdH +dlI +vnl +psF +jgn +mWS +baz +sIq +tWg +sSq +wHK +dOW +sKA +mKI +hPX +sgj +vGt +eYl +sMi +eYd +fmV +pqu +pjX +sWI +mza +tnc +vwQ +tXg +rQs +tXg +eIP +wwj +gii +arl +arl +nuF +hqT +lOq +xuM +qzv +qur +iNi +jmE +ioQ +mQR +elz +lxp +cuV +hyJ +sXJ +sXJ +alL +jjs +nPw +piN +xDj +eHc +jzk +sXP +guS +kUS +whP +jWL +bFv +kgB +twN +eiJ +fKD +cYc +wxx +mMB +aRB +aRB +aRB +okp +flx +kOX +rea +skP +vRo +rYi +iJO +twN +aeu +aeu +aeu +aeU +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 +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 +"} +(139,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeu +aeu +uRT +uRT +uRT +cIY +uRT +lVe +bpV +liE +joF +olL +soI +pAx +umG +jcp +ikH +kat +qNb +jKj +iUT +iUT +lZi +lZi +lZi +lyc +cWV +rqJ +vnl +dcD +uoW +bBF +weL +umq +dXN +hat +xuA +hsC +wxq +mqF +aXJ +gql +sVz +wxq +gTN +wFi +hat +wxq +hat +xPk +xPk +nTK +xPk +tXg +tXg +tXg +arl +arl +ipA +arl +jMF +xuM +vnw +vnw +vnw +vnw +ozO +qgz +pZT +rmu +dTd +prW +bMH +cuV +cGm +koc +qZX +qZX +qZX +sxF +xRm +sxF +fvC +vfd +ePY +vfd +iKg +uSH +xOB +xqE +exD +ekm +dgo +uqD +kBz +vyN +mda +hPr +dGG +vyN +eVL +gJa +iAE +rea +gPX +rBO +tHO +oLT +ekm +aeu +aeu +aeu +aeu +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 +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 "} -(229,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(140,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +wuc +gpI +oPn +vuI +uRT +aMK +gJz +uRT +uRT +cIY +uRT +uRT +uRT +cIY +uRT +uRT +nhy +vEW +lZi +cPu +fJq +vnH +eJq +mVL +dBy +rlT +vnZ +nNW +lpH +mWS +baz +sIq +tWg +hat +sRw +jBS +wxq +oUg +feV +eUT +vme +hat +nkn +sRg +hat +rQQ +hsx +nYP +jiS +eeo +dke +yhR +xWK +nwI +fIR +vNE +cvr +ffm +jso +mTz +vHx +bHl +nHy +eZm +bdX +jNt +lwT +mPC +gwW +bwk +diA +gBC +sXJ +ipO +qZX +kDg +chH +ctg +dUY +cYk +pIO +evb +tNW +oCo +wnl +wUC +eOW +aGR +eEZ +uJN +vUD +quv +lhm +lYb +kvM +mNt +mNt +mNt +dPr +sMY +hSt +rea +tiz +tiz +eIT +fsx +ekm +aeu +aeu +aeu +aeu +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 +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 +"} +(141,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +vJc +qmW +nQx +qmW +uRT +rcN +xXo +uRT +gpI +eWT +vuI +wpw +gpI +dxu +vuI +cIY +cbL +qWJ +lZi +uDT +nyN +hpC +cDZ +nfe +eKG +qyA +irZ +lxw +cJe +amv +pkY +umq +mQY +gDm +bZE +xKO +oyA +rQH +kcX +wyO +czX +qkn +vHS +vHS +fvK +vHS +vHS +iHY +mhi +gCl +jWx +rRu +dON +smi +xUm +uDi +iHC +nWM +qVJ +rUj +tho +tho +qiB +lgv +khe +hNi +etm +inf +gbp +wmG +hLr +cuV +oQk +aAU +jjs +cwj +cLx +jNM +ueJ +tav +snU +oDh +dJw +jgt +kmo +kmo +dGX +tyI +pSh +rea +mSC +pqH +lOX +uWA +lhm +idk +mno +idk +lOX +obh +hNj +piD +uyK +uyK +oiS +tiz +ekm +aeu +aeu +aeu +aeu +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 +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 +"} +(142,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vJc +jhN +qmW +cKd +wpw +ieb +xcf +wpw +vhx +nQx +qmW +uXM +qmW +nQx +vhx +uRT +qdM +vEW +iUT +lhJ +mQu +ggZ +cDZ +sVN +dqw +bla +lGQ +qoF +nJK +moD +oQH +cMj +iDh +xwn +txl +vPd +rOq +nMj +anN +kCa +asu +anN +mit +tXz +anN +twG +qXa +cpZ +tXz +anN +ijy +wwJ +aot +xnK +nMQ +ogk +ogk +ogk +sUq +fQf +nmq +yhc +nYP +fVj +gne +sHC +vzy +ioQ +ioQ +ioQ +inf +cuV +cuV +bhJ +jjs +tzH +sXC +sdp +hRa +cEa +snU +uso +afH +gII +sCr +hur +gKR +tyI +bkn +rea +mSC +kHK +aGQ +oAk +lOX +fCX +cPM +fCX +okp +hqW +lZV +rea +vRo +vRo +vRo +vRo +ekm +aeu +aeu +aeu +aeU +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 +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 +"} +(143,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +vJc +vJc +vJc +vJc +vJc +vJc +bOR +bOR +bOR +uXM +vzD +xIM +wpw +jhN +qmW +wRn +hZn +jhN +qmW +wRn +uRT +dBV +vEW +lZi +aYX +uJP +moG +bBF +ylT +lWg +gpP +bLf +mii +vqN +bBF +oAO +maj +aUn +ayh +byK +mCt +lxQ +lBk +wyF +prq +vao +qpJ +fqq +tho +vTx +wxU +lrR +lrR +fkw +hDK +ege +fak +ykP +xcV +gUK +kUN +kvL +bCz +bpn +ihU +xNe +gtC +xNe +qEf +qIv +ykP +vWF +sqK +igo +fFj +tDR +gtI +cuV +pgG +qZX +xjl +vqg +gYS +eYE +dxU +pqF +dpR +eto +uMk +pGE +doU +kaM +tyI +bjb +rea +mSC +naQ +ksp +oAk +lOX +lcn +jIt +lcn +lOX +xwE +oow +rYh +hVH +dES +rKV +gyM +twN +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(144,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +vJc +kMx +gqn +elS +wuc +jJD +oVc +mwp +lth +wpw +iPY +odd +wpw +ffN +hnw +ffN +wpw +gRg +kXJ +gRg +uRT +tcn +mTk +lZi +lko +oHP +xjT +bBF +gkv +lYg +app +gkv +iNU +gkv +bBF +sxB +kBP +kBP +kBP +vFY +ofs +mnl +gkW +vVw +xDM +xDM +aND +tOx +mee +vZB +xtC +sPd +gcq +aMy +dEw +okJ +liB +liB +hJa +liB +liB +xNe +dRm +teu +oRt +gXc +uIx +ihU +xHc +pai +kua +fuq +hnA +sLw +xWw +goc +fYs +uGA +xeh +qZX +qZX +qZX +poK +xin +rja +fvC +xCr +kmo +gMC +uSH +uSH +uSH +qUJ +uSH +ekm +vUD +iwS +shH +uYM +sJH +shH +shH +wXM +iEr +boG +oow +iwM +vHe +oQm +juR +ekm +ekm +aeu +aeu +aeu +aeu +aeU +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 +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 +"} +(145,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +wuc +egE +oQl +gqn +vJc +lev +gSQ +riN +bEd +pig +prr +mIT +wpw +xFw +okt +ppB +syu +gqk +okt +qVc +uRT +rAO +hZP +lZi +tFq +kwV +edj +wsy +xJB +sJU +mDj +cGl +tfV +wWD +wdf +sxB +cOT +sQT +sxB +aND +xDM +hcH +uTa +aND +lie +cqm +lDu +kNY +rZV +rZV +oNO +riS +bsB +oNO +tQI +xlf +liB +cBc +hKV +cIW +liB +lpf +cox +eLU +pRu +rEE +upa +xNe +ghO +jJB +tuO +vzy +vyE +toE +bXf +aVC +aJh +fuB +ore +gDM +bRv +jjs +qZX +jjs +qZX +qZX +ccR +kmo +vKj +uvm +amq +lDb +hjj +bGj +vOq +rKn +dnS +rfm +pbL +pbL +ifB +cfs +qai +rIm +lRS +qzz +ekm +iwM +rea +twN +ekm +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(146,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +vJc +gqn +bXa +gqn +qdR +lev +lUH +bqi +rAD +eZa +luI +rJO +cAz +jFv +vgJ +xta +ykd +shS +epI +rtK +lev +kKw +hFx +dAx +oMA +spG +hIq +gVC +gDT +gVC +ngi +tfV +lJU +qDZ +gGf +teE +hsg +nxj +dLA +rOJ +hRU +kzK +mhP +hhE +pwy +mGS +lDu +vMo +pqh +vOX +vOO +gsO +nVc +plT +iVO +mlx +hJa +vNL +jEy +jOi +hJa +sAR +wLp +mPZ +gjP +iCK +pFw +hMo +qRh +ucm +jGW +lIR +jHm +mbY +oAS +vzy +kSp +cuV +kkL +cuV +gmB +iFa +cAq +pQC +wHr +qZX +kHs +rbp +nan +uvm +vLG +aov +aov +aov +ekm +xNP +wPU +xtO +rnp +sWj +tIr +vDk +tDJ +tIr +qZX +qZX +jjs +sUB +acm +acm +joY +oam +joY +joY +oam +joY +oam +vku +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(147,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +wuc +vct +rRz +saA +tGx +boo +vse +jmM +mQe +jec +oJm +kkP +nKQ +oJm +mQe +dJk +nqE +xgz +xHR +nPl +uYb +rHm +uXI +pnI +dcS +aAy +uNi +ieV +hma +hZr +uYP +tNe +dkM +eog +iUm +eog +eog +riC +meP +rhK +uAh +iQd +mfY +qqV +qqV +lWw +qwR +dzp +mrt +aMp +viW +fQg +snw +gQJ +xoO +fGI +rfF +sKy +vRl +nnA +qAn +qJi +nIR +jYL +oJd +uov +uIx +kFo +rpN +bHl +drl +nxc +rIy +kDC +sLP +qny +uKa +jgf +lyb +jRv +qeX +mFb +qeX +cXQ +cAq +qZX +qZX +qZX +nym +ekm +ekm +ekm +ekm +ekm +ekm +pKR +fyj +qZX +pKR +qZX +qZX +qZX +ljA +qZX +jjs +baF +cuV +fuB +cuV +cuV +cuV +piW +jSu +jay +tRX +pKM +kHX +acK +acK +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(148,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +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 +aeU +aeu +aeu +vJc +gqn +qwK +gqn +uQF +lev +pJM +wAG +fQr +sQx +xFI +nDZ +vys +pNL +kWe +ecf +mPE +oiu +peF +mAH +lev +cHZ +jdp +xSi +yaK +pSe +iBh +dJm +bUx +cKY +mDj +vGY +eHI +eHI +eHI +rPy +fsj +plp +aYz +lZn +gwO +geE +wqQ +rwR +gPy +gxu +mdw +nOJ +bls +hnl +iuE +peY +dcq +ulm +rpD +jhD +liB +nqg +vha +nJv +liB +hEk +ebF +xiA +tmq +rmK +cHG +xNe +eUk +kTk +yiW +vzy +bmu +qZL +lKi +nHO +vxN +cuV +mZz +fuB +qED +jTm +gDM +jxy +jID +qqZ +iHN +mFb +mFb +mwG +xJc +hDy +lue +xJc +nEl +scJ +qeX +jRv +mFb +xvM +cFq +ejk +vBR +isD +cFq +aVl +pDm +tJh +dOz +jYe +fuB +vaI +vAl +eLv +oam +sda +joY +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(149,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeu +aeu +vJc +gqn +oQl +gqn +vJc +lev +nXp +opE +kDe +dmA +hvl +mOt +wpw +gcp +puJ +aNt +ndz +kYR +puJ +vna +vJc +avo +leB +rST +lDu +nfX +vIR +nfX +gtW +imS +wzI +wzI +unp +wAz +jpx +nEA +jeU +plp +jSx +rOJ +fJR +nvI +vyD +qzA +knu +lNP +oLH +tPN +uoA +rZV +erl +pnl +idM +aau +aEC +vWA +dyj +hJa +qAn +hJa +liB +uqI +tLo +xNe +xNe +fKx +uIx +ihU +dpT +vWv +oGV +vzy +vWF +jTa +vzy +vzy +vzy +fuB +cuV +cuV +ehc +cuV +fuB +cuV +cuV +cuV +feU +cuV +fuB +cuV +ine +ine +cuV +ine +ine +cuV +fuB +cuV +ckQ +nsM +cuV +gbF +jra +wGD +cuV +fuB +uGm +cuV +gDM +pop +kWz +flH +jzf +aGn +bhH +uib +ifw +aaQ +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(150,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +vJc +vPW +xRZ +uwY +vJc +qld +ulZ +iSS +uLt +wpw +aQl +xNu +kwx +doy +hbe +doy +wpw +iBt +pCa +iBt +lDu +kaW +aeX +jcs +lDu +bhB +xvr +kkT +gtW +sBl +ltQ +imS +imS +imS +imS +sfd +jeU +plp +uJE +rOJ +sIo +vSC +eot +rKI +dfv +xwJ +lDu +rrK +rZV +rZV +sMu +sMu +sMu +nfY +hUw +vlm +lKq +svW +uCi +aII +sAr +wyv +cON +rup +xNe +ihU +gtC +ihU +kWm +bHl +rVj +oSI +jgu +ssV +cXX +rdD +nPV +jSJ +cvM +rgv +aqe +xGa +uAb +keE +lgb +cuV +cuV +fuB +caP +bUI +caP +caP +caP +caP +crG +bUI +caP +cuV +fuB +qZX +qZX +qZX +hiQ +vGu +qZX +gDM +dqL +aAU +aAU +stx +wuv +tmH +asY +mZK +oam +oam +joY +vku +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(151,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +vJc +vJc +wuc +wuc +vJc +vJc +agz +agz +agz +wpw +fVM +orY +wpw +gpI +qmW +vuI +hZn +gpI +qmW +vuI +lDu +xZL +vqe +kYB +oLH +jOZ +qhx +lVL +gSW +nzz +gVt +lfd +dlc +hhc +imS +cka +jeU +plp +lKk +aND +aND +cOl +mtN +frO +frO +frO +frO +dJS +vOX +jGg +iNL +aru +wNb +atu +tXr +jfc +bfI +vUH +gnB +qxC +udE +ehI +pUj +sZL +hGC +ulq +vXp +lKq +hKg +aaT +bHl +nHy +asU +bHl +xWq +bHl +bHl +gRq +nyw +eCf +fgu +djQ +atc +gBp +tXB +hGX +mkk +iVL +bPP +bUN +bUN +bUN +lOt +bUN +bUN +bUN +bUd +iVL +iVL +usr +oki +oCd +mqK +qGi +qZX +jIR +cuV +kuK +vmP +xca +fuB +hQA +ght +wHu +pbs +joY +oam +gGi +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(152,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vJc +kdr +qmW +vuI +uXM +hBR +rqu +wpw +qmW +nQx +qmW +wpw +vhx +nQx +qmW +lDu +eJO +ckA +rAL +lDu +rwu +roF +pMT +gtW +hTb +bQn +vTX +mtq +tCh +imS +saE +jeU +pdg +iHL +rDd +qth +awT +aMU +iLX +qZc +jqJ +frO +xZL +rZV +gEB +tDf +wwC +kZw +gHI +cTX +lJD +eKk +lJD +eKk +lJD +oQL +lJD +fLo +nFy +hfr +xOa +nQO +lKq +lkF +npy +nwf +sNa +fur +gel +gCl +iyM +rDj +tZa +mkk +exV +ozV +fFs +rCi +lxo +dZR +itC +rCi +iVL +fIn +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUe +iVL +iVL +usr +fqe +qOQ +rzR +nCf +qZX +cuV +qZX +qpj +mbS +jjs +qZX +cAp +auR +mCV +rNR +pKB +xmQ +gny +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(153,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vJc +qmW +nQx +qmW +wpw +tpD +aew +uXM +jhN +iNh +wRn +wpw +jhN +iXD +wRn +lDu +xZL +rZV +tMW +lDu +bkK +xLC +tnR +gtW +voa +ncC +kmN +mVh +gQq +imS +wzI +gER +pdg +iHL +cYA +iwB +wAC +nvq +nMB +fEI +uhx +oWm +wtt +vOX +kXp +qFV +nTz +dXJ +atu +iht +drw +gQx +eQD +tNj +owA +gQx +mlH +rpF +tGb +tOy +tOy +jnp +tOy +wJn +wJn +fBh +cQR +cQR +pIl +pIl +mbE +eHY +nXu +eLm +iSw +eLm +eLm +eLm +mkk +xIm +cvM +mkk +rCi +jEK +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUk +bUE +iVL +usr +xVm +usr +xeo +jzH +usr +aeu +xTG +qrk +ydW +cGF +xTG +joY +joY +xva +oam +joY +oam +cnf +aeU +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(230,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(154,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +wuc +jhN +fEC +wRn +lDu +osn +tly +lDu +oLH +lDu +lDu +lDu +lDu +oLH +lDu +lDu +gfe +syF +mKC +lDu +wZZ +ubU +wIo +gtW +iAC +fOu +iRR +hZi +rwy +feZ +wzI +uZR +pmD +vMK +dWs +lgu +aNa +hfV +nwp +qLh +frO +frO +wtt +rZV +pKv +wTU +cRO +sGF +atu +lea +qLi +vgd +eQD +jaR +qdd +lxU +xpS +iko +euX +tOy +akD +shW +bAS +vUp +byb +ozz +uAc +cQR +lPb +eZL +hIm +cPZ +vJh +iWL +hSy +ssi +qjq +eLm +fiZ +wHp +wSM +tbE +rFN +gJj +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUp +qWA +iVL +usr +uOa +cJf +ijc +uPm +usr +aeu +hwA +diQ +ari +fxW +xTG +aeu +aeu +aeu +aeu +aeu +aeu +anH +aeu +aUz +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(155,1,1) = {" +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 +aaa +aaa +aaa +aaa +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +vku +aeU +aeu +vJc +wuc +vJc +lDu +lDu +eCh +tSD +rZV +mfI +weV +roO +mxo +guT +xAL +rZV +wSv +xZL +vOX +nrB +lDu +oLH +lDu +lDu +lDu +lDu +tjR +nmR +aeJ +egr +fxQ +wzI +giG +hpu +bWZ +frO +tbu +eLV +lPE +nkV +xio +frO +wtt +wtt +rZV +nfY +nfY +quX +quX +nfY +lmO +orD +gUS +aSZ +aTx +jhH +gQx +xpS +ncH +nFy +tbS +pHE +bmX +dwh +cQR +jBC +pdZ +ecl +wJn +lFB +cQc +wyh +nXu +ttZ +lmi +aXA +gNM +pvF +tCQ +slC +lhx +owX +lAB +lAB +lAB +bUN +bUN +bUN +bUN +bUN +bUN +bUN +caP +eob +rCi +usr +sVq +jOb +gou +rDi +usr +aeu +xTG +pnE +lQu +oft +hwA +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(156,1,1) = {" +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 +aaa +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +acm +aaa +aUz +aeu +aeu +aeu +rZV +pOy +mxo +hUD +gmJ +rjR +xZL +sjo +wCY +xZL +xZL +fsp +wCY +wCY +bQD +pio +qpZ +wCY +nDp +vOX +fkP +lDu +lDu +wzI +ovo +qhH +imS +wzI +kOw +wVX +sDd +frO +bhr +bhr +frO +frO +wPB +frO +nIg +dME +dME +cqT +eYS +iYI +fRf +mVP +hjL +cXd +wdL +xYx +wdL +iFE +suA +mEH +fOX +iIp +tOy +gzv +yaF +pOq +cQR +nTd +hDa +tNa +cQR +rDh +lux +hEQ +beo +qtA +mrI +iKq +iTQ +gQB +ppd +mRf +pvK +lMo +rrm +lAB +bPR +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUk +iVL +iVL +xVm +tWc +mWn +tds +gJs +xVm +aeu +xTG +xTG +eGL +xTG +xTG +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(157,1,1) = {" +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 +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +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 +qJs +aDT +beK +jbt +mmY +rZV +rZV +vOX +rZV +fQF +mrt +fsd +xZL +wCY +rZV +cQJ +iFd +mCF +fML +gxW +oHR +fkP +vKE +ufQ +rZV +qUp +iBY +wCY +gyv +oLH +sIH +xqf +jiO +uLW +kkg +iUH +tQD +rqn +cqr +fyq +tXS +vls +gBd +xxN +lDu +nIg +dME +oJa +boO +oiK +mvm +ncQ +clV +jwu +mIe +qWh +gSp +xVK +kxu +npx +rqp +lgC +pWC +jnp +ixx +bHR +xTH +wJn +lfu +cQR +cQR +eMo +pIl +wRO +mbE +iSw +nXu +eLm +dkL +tCQ +eLm +eLm +dnl +plx +wGe +izU +axd +fIn +bUN +bUN +bUN +bUN +bUN +bUN +bUN +lWC +rCi +rCi +xVm +ibN +wVG +qij +fFh +usr +aeu +aeu +xTG +hYw +xTG +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(158,1,1) = {" +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 +aeu +aeU +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +acK +utw +cry +aaa +aaa +aaa +sJS +czH +sJS +kIY +sVZ +rZV +rZV +rZV +vOX +rZV +rZV +lcZ +fpz +rZV +vOX +rZV +pJs +npg +vOX +rZV +rZV +fRp +rVY +lDu +ajt +wdu +mEW +cAl +iKN +iUH +nfI +ciK +bso +dif +kOt +kpH +xxN +xxN +lDu +tOJ +cTN +mwf +boO +hdq +wPX +xNN +toN +dME +tiK +dWM +oAJ +sPV +eiI +dok +kZq +nFT +tsD +tOy +pLe +yaF +jAl +cQR +bFm +wJn +wpn +cLG +jwn +lFC +oPf +btb +apw +hBf +xSs +krc +rCi +qUb +hUL +pBR +pZj +nuh +lAB +bPX +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUd +iVL +iVL +usr +dxm +bnT +lAs +qqM +usr +aeu +aeu +uyX +sWb +uyX +aeU +aeU +aeu +aeu +aeu +icx +aeu +vku +aeU +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(159,1,1) = {" +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 +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +iak +cry +aaa +aaa +suU +fRt +oBf +nxa +czH +smb +rZV +aeu +aeu +asj +jtD +ntG +rZK +xeI +tpM +vbe +rZV +rHi +wct +axT +xOF +ucG +mrt +khy +lDu +dIv +wdu +blZ +jiO +tQM +gao +tNC +sXG +rtw +hRG +ceT +sgn +uuW +uuW +oLH +wCY +cTN +dME +qTJ +chT +oCC +wrY +tVt +dME +hxP +ntn +hxP +lmO +wer +tKv +hqm +eXJ +diU +tOy +xcT +tDG +kTD +cQR +gMA +qih +tNQ +dNx +xhJ +sRb +mdl +phX +phX +phX +brz +lxL +fSC +mjU +kPE +pBR +tla +lAB +lAB +lAB +bUN +bUN +bUN +bUN +bUN +bUN +bUN +caP +eob +rCi +usr +usr +usr +xVm +usr +usr +aeu +aeu +odA +irn +odA +aeU +aUz +aeU +aeu +aeu +acm +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(160,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +acK +utw +cry +aaa +aaa +aaa +sJS +oBf +sJS +chc +vOX +vOX +aeu +aeu +rpl +iAR +qyn +rSL +iri +ncS +bhm +vOX +kIE +dTW +wmB +aGu +bOD +xZL +rxo +oLH +vJv +hpS +ieu +ron +hCY +bwA +xRC +aPJ +gYx +lDm +ksg +akH +vCh +reo +lDu +wCY +giT +jWs +oXK +wdx +vuu +rqL +qRm +itR +gyl +tvB +ipd +tue +wer +eHJ +fCb +ijH +bib +pmy +eYv +kVD +cQb +cQR +jgI +cQR +hEH +oSX +kdO +oXm +gLK +chg +vPB +noE +phX +dsh +blx +hev +cyc +kwM +xbx +tbE +wNr +gJj +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUy +iVL +iVL +rCi +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aDS +nNb +bFI +rkn +coy +aeU +aeU +aeU +acm +aaa +aeo +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(161,1,1) = {" +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +aKr +aeZ +jbt +lEs +vOX +rZV +rZV +rZV +vOX +rZV +aeu +aeu +aeu +rpl +rpl +jiW +tbb +xTx +gLm +asj +rZV +xtV +vOX +rZV +rZV +rKY +mrt +gyd +awX +iSC +wxl +nSf +oRK +wua +bwA +dya +nDM +dty +fIu +jYp +qew +sVI +dry +lDu +pkM +xZL +vOX +qAR +qAR +uRi +kaX +qAR +qAR +mUT +jyH +eal +lKq +iSb +rNO +lKq +pAr +tey +tOy +etO +etO +tOy +cQR +cQR +cQR +vOW +aoE +sMh +iCW +gLK +chg +vHF +miM +jYb +sIr +rCi +rCi +rCi +rCi +mkk +rCi +mkk +jEK +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUe +bUF +iVL +rCi +aeu +aeu +aeu +aeU +aeU +aeU +aUz +aDS +nNb +bFI +aeU +aeU +aeU +coy +aeU +aaQ +aeo +aeo +aeo +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(162,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +asj +pSu +esO +pCj +esO +esO +rou +rZV +syF +rZV +eNy +wCY +xZL +vOX +rZV +lDu +mfh +wwG +mfh +hFy +mfh +ggS +lJw +nEk +dty +kMu +dty +mvz +dty +dty +lDu +lDu +xZL +rZV +ngV +iRq +aLI +dVB +kyj +qAR +snL +eXQ +kwl +hOc +hBg +srA +nfd +sls +hLO +hOc +aaa +acm +aaa +acm +uJV +lcg +hyt +dPK +wTe +acZ +seN +chg +ybS +noE +tej +lFC +wdZ +utU +mnK +oIu +eQg +ddT +iNK +mkk +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUk +ctu +iVL +rCi +aeu +aeU +cmU +cmU +cmU +cmU +cmU +aDS +nNb +bFI +cmU +cmU +cmU +cmU +aaa +aaQ +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(163,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +rpl +hkd +eki +rxX +dBe +gVc +xeT +vOX +fhe +dQS +vCc +rZV +cfm +vOX +acm +bmB +lMy +hjk +oTD +loO +oTD +uZX +kFN +uYh +hvz +clw +gfT +oay +dAQ +eGD +rcI +lDu +xZL +vOX +pNY +bRx +izu +dVB +rNe +qAR +xKX +hxP +xKX +bBV +iSb +dMq +hOc +czy +tey +gkf +jAF +xqQ +jAF +acm +qBs +wEJ +fol +oMU +baG +oaF +gLK +chg +vHF +noE +dSt +tej +tej +vte +ruc +fQb +lSl +xGN +gYm +rCi +bUN +bUN +bUN +bUN +bUN +bUN +bUN +bUC +kdH +iVL +rCi +aeu +aUz +cmU +kgD +gix +gix +gix +gix +nNb +kgD +kgD +kgD +kgD +kgD +acm +aeo +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 +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 +"} +(164,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +rpl +adT +bFu +adT +bFu +adT +adT +vOX +dJo +mua +adp +kxT +mrt +vsb +acK +bmB +nFN +fLH +apu +pii +sbd +lkB +lkB +lkB +lkB +lkB +lkB +oSf +aMb +djo +cGr +oLH +kxT +rZV +rBq +udJ +gmb +fxY +tHu +oUz +qJs +aaa +aaa +aaa +aaa +dhL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acK +uJV +jUi +kMi +vhn +seO +mHu +hVF +chg +tdn +xWJ +cua +tej +dSt +heX +iyk +qYt +cpi +nlM +bzS +rCi +bUO +bUN +bUN +bUN +bUN +bUN +crK +bUD +iVL +iVL +rCi +aeU +aeU +cmU +oAg +oAg +oAg +oAg +oAg +nNb +oAg +oAg +oAg +oAg +oAg +aaa +aeo +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 +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 +"} +(165,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +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 +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +lDu +lDu +lWm +xWS +lDu +xZL +pJs +acm +bmB +vgc +ret +eUM +kYr +eUM +xVN +lfz +lkB +lkB +lkB +lkB +shO +dAQ +rPl +uwq +oLH +wCY +rZV +lSg +tIe +twd +dVB +gPO +oUz +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acK +vOW +vOW +vOW +sMh +vOW +eWd +evu +seN +iVy +gLK +rZO +rJw +jMl +bpU +ajb +pcC +uAe +udg +cdt +mkk +cic +cic +cic +cos +cic +cic +cic +nZG +iVL +iVL +rCi +aeU +aeU +cmU +kgD +kgD +gix +gix +gix +nNb +kgD +kgD +kgD +gix +gix +acm +aeo +acm +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 +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 +"} +(166,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +aaa +aaa +aaa +aaa +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aap +aeu +aeu +aeu +aeu +uVQ +mER +rif +orm +lDu +xZL +rZV +vOX +lDu +oLH +lDu +lDu +wHb +lDu +ldc +bcE +ocv +fHZ +bIm +hMW +tkP +aMb +fqb +lDu +lDu +mrt +vOX +qAR +uoL +wCe +xDh +gKI +fae +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acK +wJe +rMI +iSU +jij +wJe +otA +hRO +xnU +mPS +ijL +nFg +dOF +cKz +dfY +vkd +cHO +vOW +qaa +bPK +cVr +bYe +bYe +bYe +bYe +bYe +bYe +bYe +mkk +rCi +rCi +rCi +rCi +cmU +cmU +nNb +acm +aaa +aaa +acm +nNb +acm +aaa +aaa +acm +nNb +aaa +aaa +aaQ +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(167,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +cOp +acm +acm +acm +qJs +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 +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aUz +aap +aeu +aeu +aeu +plm +fjI +sbh +fLD +lDu +xZL +wCY +wCY +wCY +xZL +tQp +gmJ +ued +lDu +lDu +lDu +hBV +oLH +wIY +lkB +rdl +aaA +sWU +lDu +xZL +xkp +kCd +qAR +rLR +rcp +fxY +umw +oUz +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +vOW +dSw +qiL +msZ +gHA +wkB +uEa +vHF +aiB +vHF +dSt +dOF +pfH +nHC +pGg +apl +sMh +cdl +gpH +vOW +gyb +gKd +gKd +gKd +gKd +gKd +gKd +gKd +gKd +gKd +wYX +sMh +hVy +kgD +kgD +gix +kgD +kgD +nNb +nNb +nNb +kgD +kgD +kgD +kgD +kgD +acm +aeo +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 +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 +"} +(168,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +fsJ +fsJ +fsJ +mUs +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 +aeU +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +uVQ +lqE +doH +ikm +oLH +rZV +vOX +rZV +tck +and +mrt +fsd +xZL +wCY +kAj +mrt +mIo +lDu +wGS +ocL +rdl +roI +oPX +lDu +wCY +kLm +kCd +gKI +ces +bBK +dVB +jJp +oUz +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +wJe +hQs +gsl +bHL +wJe +wkB +hxx +wTS +epv +wTS +tej +dOF +ycy +bzc +rcY +hsV +vOW +vOW +gFE +vOW +qeH +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +rso +dyH +cmU +oAg +oAg +oAg +oAg +oAg +nNb +nNb +nNb +oAg +oAg +oAg +oAg +oAg +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(231,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(169,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +mDD +mUs +mUs +mDD +qVW +gJF +rLW +mDD +mUs +acm +qJs +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 +aeu +aeu +aeu +aeu +aeU +aeU +aap +aeu +aeu +uVQ +uVQ +mbl +uVQ +uVQ +aeu +aeu +rZV +mrR +nGH +vEU +vOX +dSn +hHj +ijV +vOX +mtc +oLH +urW +sFr +hnU +fBm +vFW +oLH +wCY +cxR +xzI +gKI +gQt +aLI +fxY +pmk +oUz +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +sMh +iZX +lkp +nqx +awt +emV +fyM +fyM +fyM +esX +fyM +qjK +dmf +vGa +wSz +pnd +vOW +kpq +tBn +dhY +qYN +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +vJm +vOW +cmU +kgD +kgD +kgD +kgD +gix +nNb +nNb +nNb +gix +gix +kgD +kgD +kgD +acm +acm +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 +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 +"} +(170,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +mDD +fkI +waq +mDD +aKe +nuf +nuf +vAr +sfx +mDD +fsJ +iEB +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 +aeU +aeu +aeu +aap +coy +aeu +aeu +aeu +aeu +aeu +uVQ +hjb +uVQ +aeu +aeu +aeu +rZV +avo +lpp +khy +vOX +sJS +fzn +sJS +rZV +mtc +oLH +oWj +lkB +iaX +eWS +eWS +sRz +xZL +aVG +kCd +qAR +eSY +kzr +oCu +rwa +qAR +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +wJe +twj +unb +wGh +wJe +cdu +dyu +lFC +rzJ +lFC +cOf +pID +dfY +khK +qbO +aYd +vOW +nho +hKP +sMh +qeH +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +ffa +rso +vOW +acm +aaa +nNb +acm +aaa +aaa +acm +nNb +acm +aaa +aaa +acm +nNb +aaa +aaa +aeo +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 +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 +"} +(171,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +gKB +scp +wTy +aqY +lPY +btt +quu +dgD +dkQ +oTg +cWi +oTg +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 +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +waT +hdY +waT +aeu +aeu +aeu +rZV +awq +vJP +mff +rZV +xeP +xeP +xeP +vOX +mtc +lDu +doB +fJo +lkB +xye +nwP +lDu +wCY +hbC +rZV +mjW +xPT +xPT +vld +jgC +mjW +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +vOW +wJe +wJe +iCP +pZA +fGM +iOW +cYN +qwa +kQO +iOW +fGM +sMh +vCM +iOW +iOW +vOW +sMh +acJ +vOW +iWT +sza +sza +sza +sza +sza +sza +kFs +sza +sza +toG +vOW +aeo +acm +kgD +kgD +kgD +kgD +kgD +nNb +gix +gix +gix +kgD +kgD +acm +aeo +aeo +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 +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 +"} +(172,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +wlO +wAv +qgV +fsJ +qUZ +fSD +ibm +mwj +tZh +mdB +nOL +suj +thC +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 +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +txb +itw +txb +aeu +aeu +aeu +vOX +rZV +pLw +kVk +vOX +sJS +kYy +sJS +rZV +mtc +lDu +lOh +eIb +seG +cMD +drm +oLH +wCY +kCd +rZV +fyS +fsV +tRg +nuS +hpH +mjW +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +iOW +lmk +iOW +lmk +iOW +iOW +tbi +iOW +iOW +lmk +iOW +rZb +iOW +uKE +acm +acm +acm +vOW +nZJ +nZJ +nZJ +nZJ +nZJ +nZJ +nZJ +vOW +vOW +sMh +vOW +noM +aeo +aaa +oAg +oAg +lLc +oAg +oAg +nNb +oAg +oAg +oAg +oAg +oAg +aaa +aeo +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 +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 +"} +(173,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mDD +lgh +xxM +iyB +jBR +wWB +eCy +iay +gzx +eqx +lSE +pQM +lSE +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aDS +uFL +bFI +aeU +aeu +aeu +aeu +rZV +rZV +vOX +vOX +aaa +bNl +aaa +rZV +mtc +oLH +lDu +lDu +sJS +lDu +yad +lDu +wCY +rZV +rZV +ssw +enQ +vSM +gAF +miW +jgC +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +qJs +acm +qJs +iOW +noj +iOW +vuk +iOW +tlA +oVP +juq +iOW +noj +iOW +vuk +iOW +acm +aaa +acm +acm +acm +acm +acm +acm +acm +acm +acm +acm +aaa +aaa +aaa +aaa +acm +aeo +acm +kgD +kgD +kgD +kgD +kgD +oAg +kgD +kgD +kgD +kgD +kgD +acm +aaQ +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 +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 +"} +(174,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mDD +lxG +gFt +mSq +lLH +wUU +cnq +oNI +hOs +lXP +mUs +fsJ +dgw +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 +aaa +vku +aeu +aeU +aUz +coy +aeU +rkn +aDS +uFL +bFI +aeU +aUz +aeU +fYy +aeu +aeu +aeu +mmY +aaa +aaa +aaa +lEs +mtc +mtc +dWj +fyp +hOE +pnA +ubM +daG +wCY +sjd +fej +mME +xCP +pra +rEu +gEs +xPT +aeo +acm +aaQ +aeo +aeo +aeo +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +iOW +jQy +iOW +jQy +iOW +iOW +tbi +iOW +iOW +jQy +iOW +jQy +iOW +acm +aaa +aeo +aeo +aaQ +aeo +aeo +aeo +aeo +aeo +aaQ +aeo +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aaa +acm +aaa +acm +aaa +oAg +aaa +acm +aaa +acm +aaa +aaa +aeo +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 +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 +"} +(175,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +fsJ +mDD +fsJ +mUs +gIw +nuf +eNb +sTy +ulJ +fsJ +acm +qJs +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 +aaa +aaQ +aeU +cmU +cmU +cmU +cmU +cmU +aDS +qzg +bFI +cmU +cmU +cmU +cmU +cmU +aeu +aeu +jbt +aaa +aaa +aaa +chh +sJS +sJS +jNn +fFE +tqZ +mmt +aYI +exg +kMP +ddQ +dez +aPr +rYa +pIb +mVu +kPI +mjW +acm +aaa +acm +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +iOW +wkT +wzy +emb +iOW +qJs +acm +qJs +iOW +emb +wzy +lPK +iOW +acm +aaa +aaa +aaa +aaa +qJs +acm +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aeo +aeo +aeo +aeo +acm +acm +xck +acm +aaQ +acm +aeo +aeo +aeo +aeo +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 +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 +"} +(176,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mDD +mUs +uCQ +mis +ipE +mDD +eXZ +ngl +lhf +sTy +uQt +fsJ +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 +aaa +aaa +aaa +aeo +aeU +cmU +pyg +pyg +pyg +pyg +pyg +qzg +pyg +pyg +pyg +pyg +pyg +cmU +aeU +aeu +aDU +aaa +aaa +aaa +aoe +aeU +aeU +vOX +vOX +sJS +rZV +smo +vOX +fIl +rZV +hLH +dOu +olq +kYE +gjv +oiE +mjW +acm +aaa +acm +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +tlc +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 +acm +aaa +acm +aaa +aaa +aaa +aeo +aaa +aaa +aeo +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 +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 +"} +(177,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +iUV +pQT +rZi +oLG +vfL +wYC +lqp +gUT +ihD +uQt +mUs +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 +aaa +aaa +aaa +aeo +aaa +cmU +uFL +dnt +uFL +uFL +uFL +qzg +uFL +uFL +uFL +uFL +uFL +cmU +aeU +aof +qJs +cry +pRF +cry +qJs +aeu +aeU +aUz +aaa +aaa +acm +acm +rZV +xrA +rZV +jgC +mjW +jgC +ksJ +iVn +xPT +jgC +ckn +acm +acK +acm +acK +acK +acm +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aeo +aeo +aeo +acm +acm +aeo +aeo +acm +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 +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 +"} +(178,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +hBG +rZi +wpu +amU +dsD +heD +wGs +mUs +uZS +fsJ +mDD +mUs +qJs +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 +aaa +aeo +acm +cmU +pyg +pyg +pyg +pyg +pyg +qzg +pyg +pyg +pyg +pyg +pyg +cmU +aeU +aeU +aaQ +acK +acm +acK +acm +aeu +aeu +aeU +aeU +acm +aeo +aaa +acm +acK +aaa +aaa +acm +xPT +vQK +cZo +vFL +xPT +acm +aaa +acm +aaa +aaa +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +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 +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 +aaa +aaa +aaa +aaa +"} +(179,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mDD +cdI +ozw +tNY +xvP +bhR +lFr +jGU +fsJ +nuf +iQK +jSF +mUs +acm +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 +aeo +aaa +aeo +aaa +aaa +qzg +acm +aaa +aaa +acm +qzg +acm +aaa +aaa +acm +qzg +cmU +cmU +aUz +vku +aeo +aeo +aaQ +vku +aeu +aeu +aeu +vku +acm +acm +aaa +acK +qDp +aaa +aaa +aaQ +mjW +jwB +lzF +dFj +mjW +aaQ +aaa +acm +aaa +aaa +aaa +acm +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aeo +aeo +acm +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 +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 +aaa +aaa +"} +(180,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +mDD +rRD +fsJ +pCF +mUs +mob +gau +vfL +ocg +fdA +wxF +fsJ +acm +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 +aeo +acm +acm +aaQ +pyg +pyg +pyg +pyg +pyg +qzg +qzg +qzg +pyg +pyg +pyg +pyg +pyg +cmU +aeU +aaQ +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +acm +aaa +acm +eiW +aaa +aaa +qJs +vNn +xPT +ilI +xPT +ohR +qJs +acm +acm +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(181,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +qoW +hKA +rrG +mDD +hzO +cbF +mDD +mWZ +jSF +lds +fsJ +acm +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 +aeo +aaa +aeo +aaa +uFL +uFL +uFL +uFL +uFL +qzg +qzg +qzg +uFL +uFL +uFL +uFL +uFL +cmU +aeU +aeo +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +acm +acK +aaa +acm +viq +aaa +aaa +aaa +aaa +aaa +pBi +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 +aaa +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 +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 +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 +"} +(182,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +jvR +fII +cjI +mUs +mDD +mUs +mUs +rvz +rVt +gDS +mDD +acm +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 +aaQ +aaa +aeo +acm +pyg +pyg +pyg +pyg +pyg +qzg +qzg +qzg +pyg +pyg +pyg +pyg +pyg +cmU +aeU +aeo +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +acm +aaa +acm +viq +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(183,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +mUs +hbr +xqm +rsY +mUs +aeu +aeu +mUs +mDD +mUs +mUs +mUs +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aaa +qzg +acm +aaa +aaa +acm +qzg +acm +aaa +aaa +acm +qzg +cmU +cmU +aeU +acm +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +acm +aaa +acm +acK +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(184,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ult +ogA +ogA +ogA +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +aaQ +acm +aaQ +aeo +acm +pyg +pyg +pyg +pyg +pyg +qzg +pyg +pyg +pyg +pyg +pyg +cmU +aeU +aeU +vku +acm +aaQ +aeo +acm +vku +aeu +aeu +vku +acm +acm +aaa +acm +acK +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(185,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +dvN +dvN +ogA +cNZ +ogA +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +aeo +aaa +aeo +aaa +uFL +uFL +uFL +uFL +uFL +qzg +uFL +uFL +uFL +uFL +uFL +cmU +coy +aof +aeu +aeu +aaa +aaa +aaa +aeu +aeu +aeU +aUz +aaa +aeo +acm +acm +acK +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(186,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +wDI +dvN +qvq +dvN +dvN +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aeU +aeU +aUz +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +acm +aaQ +acm +pyg +pyg +pyg +pyg +pyg +uFL +pyg +pyg +pyg +pyg +pyg +cmU +aUz +aeu +aeu +aeu +aeU +aaa +aaa +aeu +aeu +aeU +aaa +aaa +aeo +aaa +acm +qDp +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(187,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +dvN +dvN +dvN +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aeo +aaa +aaa +acm +aaa +acm +aaa +uFL +aaa +cmU +cmU +cmU +cmU +cmU +aeu +aeu +aeu +aeu +aUz +aeU +aaa +aeu +aaa +aaa +aaa +aaa +acm +aaa +acK +eiW +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(188,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +arz +dvN +dvN +dvN +dvN +wDI +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +aeo +aaQ +aeo +aeo +aaQ +vLR +acm +acm +acm +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aaa +aaa +aaa +aaa +aaa +aaa +acK +aaa +aeo +acK +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(189,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +dvN +dvN +aoz +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +aeo +aaa +acm +aaa +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeo +acK +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(190,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +wDI +apm +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aeo +aeo +acm +acm +acm +aeo +acm +vku +aeu +aeu +aeu +aeU +aap +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeo +viq +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +"} +(191,1,1) = {" +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 +qJs +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +aoz +bQN +dvN +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aaa +aaa +aeu +aeu +aeu +aUz +aeU +aeU +aeu +aeu +vku +acm +aaQ +aeo +aeo +aeo +aaQ +aeo +acm +acK +acm +acK +acK +aaQ +aeo +acm +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 +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 +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 +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 +aaa +aaa +"} +(192,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aoz +dvN +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aeu +aeu +aeu +aeu +aap +aeu +aUz +aeu +aeu +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +acm +lGO +acK +acK +acK +aeo +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 +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 +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 +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 +aaa +"} +(193,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +wDI +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aeo +aeo +acm +aaQ +vku +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeo +acm +dwz +hlb +wog +dwz +aeo +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 +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 +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 +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 +"} +(194,1,1) = {" +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +bRy +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aeU +aeu +aeu +aaa +aaa +aeu +aeu +aeu +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aeo +aaa +iBc +tmv +qKH +iBc +viq +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 +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 +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 +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 +"} +(195,1,1) = {" +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 +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +dvN +dvN +aoz +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaQ +aaa +iBc +wqL +fAI +iBc +viq +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 +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 +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 +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 +"} +(196,1,1) = {" +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 +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aeo +aaa +iBc +oVY +qlX +iBc +viq +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 +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 +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 +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 +"} +(197,1,1) = {" +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 +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aUz +aeU +aeU +aeU +aeU +aeU +aeU +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 +acm +aaa +aaa +aaa +aaa +aaa +aaB +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +acm +acm +dwz +hlb +wog +dwz +aeo +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 +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 +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 +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 +"} +(198,1,1) = {" +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 +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aaa +aaa +aeU +aeU +aeU +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 +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +aaa +acK +acK +aeo +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 +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 +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 +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 +aaa +"} +(199,1,1) = {" +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 +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aeo +acm +aaQ +aeo +aeo +aeo +acm +acm +acm +vku +aeu +vku +acm +aeo +aeo +aaQ +aeo +aeo +aeo +acm +acK +acm +acK +acm +aeo +acm +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 +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 +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 +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 +aaa +aaa +aaa +"} +(200,1,1) = {" +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 +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aUz +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +acm +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(201,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +coy +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +coy +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeo +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(202,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaQ +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aaa +aaa +aaa +aaa +acm +aaa +aeo +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(203,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +acm +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aaa +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(204,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aeU +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aeu +vku +aeU +aUz +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aeo +aaa +acm +acm +acm +qJs +acm +acK +acK +acK +acm +qJs +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 +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 +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 +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 +"} +(205,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +coy +aeU +aeU +aeU +aeU +aeU +aeU +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +coy +aaa +aaa +aaa +aeU +aeU +aeu +aeu +aUz +aeU +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +acm +aaa +acm +acm +acm +aaQ +aeo +aeo +acm +aeo +aeo +aaQ +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 +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 +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 +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 +"} +(206,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeU +aeU +aeU +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +aaa +acm +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 +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 +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 +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 +aaa +aaa +aaa +"} +(207,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +vku +aaQ +aeo +aeo +acm +acK +acm +acK +aaQ +aeo +aeo +acm +aeo +acm +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 +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 +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 +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 +"} +(208,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +acm +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +acm +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +acm +aaa +aaa +aaa +aaa +aaQ +aaa +aeo +aeo +aeo +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 +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 +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 +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 +aaa +aaa +aaa +aaa +"} +(210,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaQ +aaa +aaa +aaa +aaa +aaQ +aaa +aeo +acm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aeo +aaa +acm +aeo +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 +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 +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 +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 +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 +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeo +aaa +aaa +aaa +aaa +aeo +aaa +acm +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeo +aaa +aaa +aaa +aaa +aeo +aaa +aaQ +aeo +aaQ +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 +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 +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 +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 +aaa +aaa +aaa +aaa +"} +(214,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +aeu +aaa +aaa +acm +aaa +aaa +aaa +aaa +acm +aaa +aaQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +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 +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 +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 +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 +"} +(215,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +coy +aeU +aeu +aeu +aeu +aeu +aeu +aaa +aeo +aaa +aaa +aaa +aaa +acK +acm +acK +acm +aeo +aaa +aaa +aaa +aeU +aUz +aeU +aeu +icx +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 +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 +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 +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 +"} +(216,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aeo +aaa +aaa +aaa +aaa +aaQ +aaa +acm +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +acm +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 +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 +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 +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 +"} +(217,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +acm +aaa +aaa +aaa +aaa +acm +aaa +acm +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aaQ +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 +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 +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 +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 +"} +(218,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +coy +cmU +icx +acm +aeo +aaQ +acm +aaa +acm +acm +aaQ +aeo +icx +aeu +aeu +aeu +aeU +aaa +aeo +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 +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 +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 +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 +"} +(219,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +acm +aaa +acm +nkN +ddW +nkN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +coy +aaa +aaQ +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 +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 +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 +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 +"} +(220,1,1) = {" +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeu +aeu +aeu +cmU +aeu +bcs +nkN +dix +nkN +jOI +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aaa +aeU +aeU +aUz +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(221,1,1) = {" +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 +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 +jyr +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +nkN +nkN +iTL +wqi +vBE +nkN +nkN +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeu +aeu +aeu +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(222,1,1) = {" +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 +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 +qJs +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +coy +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +rdc +rdc +jca +kPQ +xVC +kDG +vxL +rdc +nkN +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +aeu +aeu +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(223,1,1) = {" +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 +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 +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +nkN +jSe +jgz +xVC +bxs +xVC +mol +bpK +nkN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(224,1,1) = {" +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 +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 +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +nkN +rdc +vjm +fWq +ijN +iTW +tNk +nkN +rdc +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(225,1,1) = {" +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 +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 +aaa +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +nkN +nkN +gwI +yef +wpM +nkN +nkN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +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 +"} +(226,1,1) = {" +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 +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 +aaa +aaa +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +coy +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dJp +nkN +glI +nkN +rko +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +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 "} -(232,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(227,1,1) = {" +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 +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 +aaa +aaa +aaa +aeU +aeU +aUz +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +nkN +rdc +nkN +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 "} -(233,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(228,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeU +aaa +aeu +aeu +aeu +aeu +aeu +jyr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aUz +aeu +aeu +aeu +aap +aeu +aeu +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +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 +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 +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 +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 "} -(234,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(229,1,1) = {" +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +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 +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 +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 +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 "} -(235,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(230,1,1) = {" +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 +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 +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 +aeu +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +coy +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +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 "} -(236,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(231,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +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 +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 +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 +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 +aaa "} -(237,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(232,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 +aaa "} -(238,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(233,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aUz +aeU +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 +aaa "} -(239,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(234,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aaa +aaa +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 +aaa +aaa "} -(240,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(235,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeU +aeu +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 +aaa +aaa +aaa "} -(241,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -cxg -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(236,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +jyr +aaa +aaa +aaa +aaa +aaa +aaa +jyr +aeu +aaa +aaa +aeu +aeu +aeu +aaa +aeu +aeu +aeu +aaa +aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +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 +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 +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 +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 +aaa +aaa +aaa +aaa +"} +(237,1,1) = {" +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +qJs +aaa +aaa +aaa +aaa +aaa +aaa +qJs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUz +aeU +aeu +aeu +aeU +aeu +aeu +aeu +aeu +aeU +aUz +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 +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 +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 +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 +aaa +aaa +aaa +aaa "} -(242,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -cKD -wSj -cxg -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(238,1,1) = {" +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 +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 +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 +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 +aaa +aaa +aeU +jyr +aUz +aeU +aeu +aeu +jyr +aeU +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa "} -(243,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -wSj -pwU -wSj -wSj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(239,1,1) = {" +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 +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 +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 +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 +aaa +aaa +aaa +qJs +aaa +aaa +aaa +aaa +qJs +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +"} +(240,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(241,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(244,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -cxg -wSj -wSj -wSj -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(242,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(245,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(243,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(244,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(245,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(246,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(246,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(247,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(247,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(248,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(248,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(249,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(249,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(250,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(250,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(251,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(251,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(252,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(252,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(253,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(253,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(254,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(254,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(255,1,2) = {" -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX -hhX +(255,1,1) = {" +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 +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 +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 +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 +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 +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 +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 +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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index d8b9a3fbce16..4945b2afa4d0 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1051,6 +1051,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) "auw" = ( @@ -1907,6 +1908,9 @@ dir = 8 }, /obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "aJI" = ( @@ -2494,7 +2498,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/item/toy/figure/qm{ pixel_x = 3; pixel_y = 12 @@ -2700,6 +2704,7 @@ /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 }, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/white, /area/station/medical/virology) "aWH" = ( @@ -4568,6 +4573,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/robotics/lab) +"bCe" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/machinery/fax/heads/rd, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "bCo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, @@ -5775,6 +5790,7 @@ /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "bYm" = ( @@ -6310,6 +6326,9 @@ }, /obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) "cji" = ( @@ -7196,9 +7215,6 @@ /area/station/security/brig) "cxt" = ( /obj/effect/turf_decal/trimline/red/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "cxw" = ( @@ -7522,7 +7538,7 @@ /area/station/commons/lounge) "cEv" = ( /obj/item/food/grown/wheat, -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/item/food/grown/citrus/orange, /obj/item/food/grown/grapes, /obj/structure/extinguisher_cabinet/directional/west, @@ -8538,17 +8554,6 @@ "cXW" = ( /turf/open/floor/carpet/green, /area/station/maintenance/port/aft) -"cYc" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "cYx" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -10788,7 +10793,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/west, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/wood, /area/station/maintenance/port/aft) "dMv" = ( @@ -11818,6 +11823,15 @@ "ecO" = ( /turf/open/floor/carpet, /area/station/service/library) +"edk" = ( +/obj/structure/table/glass, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/cmo) "edl" = ( /obj/docking_port/stationary/escape_pod, /turf/open/space/basic, @@ -11860,6 +11874,13 @@ "eeg" = ( /turf/closed/wall/mineral/plastitanium, /area/station/hallway/secondary/entry) +"eeh" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/table/wood, +/obj/machinery/fax/heads/hop, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/hop) "eek" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16672,6 +16693,14 @@ /obj/machinery/power/tracker, /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) +"fLR" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/fax/heads/ce, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "fMa" = ( /obj/structure/rack, /obj/effect/spawner/random/trash/ghetto_containers, @@ -17713,11 +17742,12 @@ /turf/open/floor/plating, /area/station/maintenance/disposal) "ghc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "ghk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -18930,7 +18960,6 @@ /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "gDq" = ( @@ -18941,11 +18970,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) -"gDv" = ( -/obj/item/kirbyplants, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "gDH" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -20077,7 +20101,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "gWz" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/structure/cable, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; @@ -21868,7 +21892,7 @@ /turf/open/floor/iron/dark, /area/station/ai/satellite/exterior) "hBo" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/structure/cable, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; @@ -22552,29 +22576,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) -"hQc" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Quartermaster"; - name = "Quartermaster's Fax Machine" - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/requests_console/directional/north{ - department = "Quartermaster's Desk"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/ore_update, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) "hQu" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron, @@ -23726,16 +23727,6 @@ /obj/structure/table/wood, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) -"iiE" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/hop) "iiL" = ( /obj/machinery/air_sensor/mix_tank, /turf/open/floor/engine/vacuum, @@ -25706,7 +25697,10 @@ /turf/open/floor/plating, /area/station/maintenance/disposal) "iPM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 9 }, /turf/open/floor/iron/white, @@ -27714,15 +27708,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"jxv" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "jxM" = ( /obj/item/radio/intercom/directional/west{ pixel_y = -10 @@ -29451,6 +29436,26 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/station/command/bridge) +"jYY" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/requests_console/directional/north{ + department = "Quartermaster's Desk"; + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/machinery/fax/heads/qm, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/qm) "jZt" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -30050,6 +30055,7 @@ pixel_y = 8; req_access = list("cargo") }, +/obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/cargo/storage) "kkr" = ( @@ -30607,7 +30613,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil/slippery, /obj/effect/decal/cleanable/blood/gibs/down, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ name = "Leaping Rabbit" }, /obj/structure/disposalpipe/segment, @@ -31327,6 +31333,12 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"kGp" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/fax/heads/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "kGq" = ( /obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ @@ -33271,9 +33283,6 @@ /turf/open/floor/iron/dark, /area/station/security/armory) "lpk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ color = "#52B4E9" @@ -33643,6 +33652,7 @@ /area/station/security/medical) "lvU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/kirbyplants, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "lvZ" = ( @@ -36360,6 +36370,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "mvZ" = ( @@ -36982,7 +36995,7 @@ /area/station/medical/virology) "mFC" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /obj/structure/sign/poster/random/directional/north, /turf/open/floor/wood, /area/station/service/bar/backroom) @@ -39565,7 +39578,6 @@ /turf/closed/wall, /area/station/engineering/atmos/pumproom) "nwL" = ( -/obj/machinery/computer/upload/ai, /obj/machinery/door/window/right/directional/south{ name = "Upload Console Window"; req_access = list("ai_upload") @@ -39573,6 +39585,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/computer/upload/ai/no_lock, /turf/open/floor/iron/dark, /area/station/ai/upload/chamber) "nwT" = ( @@ -42933,6 +42946,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) "oGZ" = ( @@ -43298,9 +43312,6 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, /obj/machinery/camera/directional/east, /turf/open/floor/iron/white, @@ -46008,10 +46019,7 @@ /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hop) "pJU" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/central) "pJV" = ( @@ -46659,7 +46667,7 @@ pixel_x = 8; pixel_y = -1 }, -/obj/item/radio/intercom/directional/east, +/obj/item/radio/intercom/interrogation/outside/directional/east, /turf/open/floor/iron/grimy, /area/station/security/interrogation) "pVE" = ( @@ -47630,16 +47638,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/construction/storage_wing) -"qmf" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/table/wood, -/obj/structure/cable, -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) "qmi" = ( /turf/open/floor/iron/dark/textured_large, /area/station/science/cytology) @@ -50695,6 +50693,13 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"rpm" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/table/wood, +/obj/structure/cable, +/obj/machinery/fax/heads/hos, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) "rps" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/machinery/duct, @@ -52458,13 +52463,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"rTp" = ( -/obj/effect/spawner/structure/window, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/medical/medbay/central) "rTw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57252,6 +57250,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) "tAH" = ( @@ -62036,18 +62035,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/ai/satellite/exterior) -"vgZ" = ( -/obj/structure/table/glass, -/obj/structure/cable, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) "vhb" = ( /obj/machinery/chem_dispenser, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -62129,7 +62116,6 @@ /turf/open/floor/iron/dark, /area/station/command/vault) "viF" = ( -/obj/machinery/computer/upload/borg, /obj/machinery/door/window/left/directional/south{ name = "Cyborg Upload Console Window"; req_access = list("ai_upload") @@ -62137,6 +62123,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/computer/upload/borg/no_lock, /turf/open/floor/iron/dark, /area/station/ai/upload/chamber) "viH" = ( @@ -62704,7 +62691,7 @@ /obj/item/seeds/potato, /obj/item/seeds/apple, /obj/item/grown/corncob, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/wheat, /obj/item/food/grown/pumpkin{ pixel_y = 5 @@ -63603,12 +63590,7 @@ /obj/structure/table, /obj/item/folder/red, /obj/item/taperecorder, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1423; - listening = 0; - name = "Interrogation Intercom" - }, +/obj/item/radio/intercom/interrogation/inside/directional/south, /turf/open/floor/iron/dark, /area/station/security/interrogation) "vFx" = ( @@ -63698,10 +63680,7 @@ /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/storage/gas) "vGI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/warning{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, /turf/open/floor/iron/white, @@ -64042,6 +64021,7 @@ dir = 8 }, /obj/machinery/status_display/ai/directional/south, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) "vMX" = ( @@ -64581,12 +64561,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai/satellite/maintenance/storage) -"vVM" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/structure/closet/crate/goldcrate, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/vault) "vVV" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -67863,6 +67837,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) +"xci" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate/stocked, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/vault) "xcv" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69277,14 +69257,14 @@ /turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) "xAb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "xAg" = ( /obj/machinery/newscaster/directional/south, /obj/effect/turf_decal/tile/blue, @@ -70095,19 +70075,6 @@ /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"xPm" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "xPx" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -92059,7 +92026,7 @@ aaa rlU dfl lmF -vVM +xci nYl rlU aaa @@ -92067,7 +92034,7 @@ jXu jXu ken kQP -hQc +jYY dFg wyV iqo @@ -94163,12 +94130,12 @@ wcN uyr fDk vVV -htd +cSu tAG -gDv +ghc cjb iPM -mvY +xAb oYp mvY mvY @@ -94420,14 +94387,14 @@ tOh tOh tOh nNY -hPM -ttV pJU -rTp +ttV +dYa +duu vGI xxU lpk -ghc +nmQ cxt oNP gDh @@ -94677,8 +94644,8 @@ dYb dYb tOh iun -htd -xAb +cSu +ttV nvI fEK ehE @@ -94934,7 +94901,7 @@ wjQ dLC rGm gqX -htd +cSu aum qPJ qPJ @@ -95191,7 +95158,7 @@ omd ukk rGm gqX -htd +cSu vMV qPJ luN @@ -95430,7 +95397,7 @@ pJR pJR pJR pJR -iiE +eeh rGj evA pJR @@ -95448,7 +95415,7 @@ uEx xBF rGm gqX -htd +cSu oGK qPJ rQk @@ -95462,7 +95429,7 @@ kyQ kHg jhk cOR -vgZ +edk ijZ tYt qLk @@ -101855,7 +101822,7 @@ eCB tyY xFx sxR -jxv +kGp sqJ gPA lZM @@ -104459,7 +104426,7 @@ nBj gYe vQb sQQ -xPm +bCe ohZ sac huq @@ -104636,7 +104603,7 @@ aaa euT yeV hUB -qmf +rpm jTH gMZ gMZ @@ -110583,7 +110550,7 @@ uXd dIm nLz vGl -cYc +fLR iIP qrj sqE diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 3912d3676aac..b37b1385b0aa 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -3207,6 +3207,7 @@ /obj/effect/turf_decal/bot, /obj/structure/ore_box, /obj/structure/sign/poster/official/do_not_question/directional/north, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "qd" = ( @@ -3375,6 +3376,7 @@ "rm" = ( /obj/structure/sign/warning/gas_mask/directional/west, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "ro" = ( @@ -3577,7 +3579,6 @@ /obj/effect/turf_decal/bot, /obj/structure/sign/departments/medbay/alt/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp/production) "sH" = ( @@ -8054,7 +8055,6 @@ /area/lavaland/surface/outdoors) "Ub" = ( /obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/west, /obj/machinery/airalarm/directional/north, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, @@ -8806,7 +8806,7 @@ /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "Yc" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/iron/white/smooth_edge{ dir = 1 }, @@ -24775,7 +24775,7 @@ Nz Ez pQ uq -Jw +jU ff Gc RV @@ -25289,7 +25289,7 @@ oq fe yu uq -jU +Jw ff Ge dr diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index bd3547f33d83..2dbf08716f73 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -7172,6 +7172,12 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/command/heads_quarters/rd) +"bdi" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/paperwork/cargo, +/obj/machinery/fax/heads/qm, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/qm) "bdk" = ( /obj/structure/frame/machine, /turf/open/floor/plating, @@ -15100,7 +15106,7 @@ /obj/item/seeds/potato, /obj/item/seeds/apple, /obj/item/grown/corncob, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/wheat, /obj/item/food/grown/pumpkin{ pixel_y = 5 @@ -15555,14 +15561,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library/printer) -"cqG" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/turf/open/floor/carpet/purple, -/area/station/command/heads_quarters/rd) "cqH" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -18050,7 +18048,7 @@ /area/station/engineering/storage) "cII" = ( /obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ home_destination = "QM #2"; suffix = "#2" }, @@ -19864,15 +19862,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"cXo" = ( -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/item/disk/computer/engineering, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/ce) "cXs" = ( /obj/effect/turf_decal/weather/sand{ dir = 9 @@ -22737,19 +22726,6 @@ }, /turf/open/floor/carpet/neon/simple/red/nodots, /area/station/commons/fitness/recreation/lasertag) -"dsn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Detective's Office"; - name = "Detective's Fax Machine" - }, -/obj/structure/detectiveboard/directional/north, -/turf/open/floor/wood/large, -/area/station/security/detectives_office) "dsq" = ( /obj/machinery/power/emitter, /obj/effect/turf_decal/bot{ @@ -49599,7 +49575,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "hnZ" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /obj/item/reagent_containers/cup/glass/bottle/beer{ pixel_y = -3; pixel_x = 9 @@ -49756,7 +49732,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/misc/asteroid/airless, /area/space/nearstation) "hps" = ( @@ -50118,13 +50094,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/security/prison/garden) -"hrX" = ( -/obj/vehicle/sealed/car/vim, -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/confetti, -/obj/structure/marker_beacon/yellow, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) "hrZ" = ( /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/glass/reinforced, @@ -54014,13 +53983,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"hVv" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/structure/closet/crate/goldcrate, -/turf/open/floor/iron/dark, -/area/station/command/vault) "hVw" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -56814,7 +56776,7 @@ /area/station/maintenance/department/cargo) "iqZ" = ( /obj/item/fish/pufferfish, -/obj/item/food/grown/carrot{ +/obj/item/food/grown/carrotlike/carrot{ pixel_x = 7; preserved_food = 1 }, @@ -62650,7 +62612,7 @@ /turf/open/floor/iron/white/textured_large, /area/station/engineering/break_room) "jke" = ( -/obj/machinery/computer/upload/borg{ +/obj/machinery/computer/upload/borg/no_lock{ dir = 4 }, /obj/structure/window/reinforced/spawner/directional/west, @@ -63512,6 +63474,16 @@ dir = 8 }, /area/station/security/execution/education) +"jsl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/table/wood, +/obj/structure/detectiveboard/directional/north, +/obj/machinery/fax/heads/hos, +/turf/open/floor/wood/large, +/area/station/security/detectives_office) "jsm" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -66232,6 +66204,7 @@ pixel_y = 2 }, /obj/item/storage/box/syringes, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/dark, /area/station/medical/virology) "jLY" = ( @@ -67547,17 +67520,6 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron/dark, /area/station/science/cytology) -"jWh" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/folder/blue, -/obj/item/clothing/neck/stethoscope, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/cmo) "jWn" = ( /obj/machinery/door/poddoor/preopen{ id = "queue_hop"; @@ -68759,14 +68721,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"kfr" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "kfu" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 @@ -74257,14 +74211,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/break_room) -"kRR" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/hop) "kSl" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/turf_decal/siding/dark, @@ -75322,7 +75268,7 @@ /area/station/engineering/supermatter/room) "lcm" = ( /obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ home_destination = "QM #2"; suffix = "#2" }, @@ -76841,7 +76787,7 @@ /area/space/nearstation) "lnV" = ( /obj/item/food/grown/wheat, -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/item/food/grown/citrus/orange, /obj/item/food/grown/grapes, /obj/structure/table/glass, @@ -90386,10 +90332,7 @@ pixel_x = -5; pixel_y = 4 }, -/obj/item/radio/intercom/directional/west{ - name = "Interrogation Intercom"; - frequency = 1423 - }, +/obj/item/radio/intercom/interrogation/outside/directional/west, /obj/structure/table/reinforced, /obj/item/flashlight/lamp{ pixel_x = 11; @@ -90689,7 +90632,7 @@ /area/station/hallway/primary/fore) "nvZ" = ( /obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot{ +/mob/living/basic/bot/mulebot{ home_destination = "QM #2"; suffix = "#2" }, @@ -96387,6 +96330,13 @@ dir = 8 }, /area/station/medical/surgery/theatre) +"oma" = ( +/obj/vehicle/sealed/mecha/vim, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/confetti, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/engine/hull/reinforced, +/area/space/nearstation) "omd" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 1 @@ -97452,6 +97402,11 @@ dir = 4 }, /area/station/security/brig/lower) +"oui" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax/heads/captain, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "ouj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -108946,6 +108901,12 @@ }, /turf/open/floor/carpet/neon/simple/red/nodots, /area/station/commons/fitness/recreation/lasertag) +"pZS" = ( +/obj/item/disk/computer/engineering, +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax/heads/ce, +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/ce) "qab" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -111358,15 +111319,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/wood/large, /area/station/command/heads_quarters/hop) -"quR" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/item/paperwork/cargo, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "quT" = ( /obj/structure/flora/grass/brown/style_random, /obj/structure/flora/bush/snow/style_2, @@ -117351,7 +117303,7 @@ /turf/open/floor/iron/white, /area/station/science/lab) "rop" = ( -/obj/machinery/computer/upload/ai{ +/obj/machinery/computer/upload/ai/no_lock{ dir = 8 }, /obj/structure/window/reinforced/spawner/directional/east, @@ -126609,6 +126561,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"sIf" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax/heads/hop, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "sIh" = ( /obj/effect/spawner/random/decoration/showcase, /obj/structure/window/reinforced/spawner/directional/west, @@ -134887,12 +134844,7 @@ "tQX" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp, -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - listening = 0; - name = "Interrogation Intercom"; - frequency = 1423 - }, +/obj/item/radio/intercom/interrogation/inside/directional/north, /obj/machinery/light/cold/dim/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -135869,11 +135821,6 @@ dir = 1 }, /area/station/command) -"tYE" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/station/maintenance/solars/port/fore) "tYH" = ( /obj/effect/spawner/random/vending/colavend, /obj/structure/window/spawner/directional/north, @@ -144007,7 +143954,7 @@ /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) "vjZ" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/structure/table/wood, /turf/open/floor/wood, /area/station/maintenance/port/fore) @@ -146260,6 +146207,14 @@ }, /turf/open/floor/plastic, /area/station/commons/dorms/laundry) +"vAN" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/folder/blue, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) "vAQ" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 4 @@ -151296,6 +151251,13 @@ /obj/machinery/light/small/red/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/central) +"wpA" = ( +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/obj/structure/closet/crate/goldcrate/stocked, +/turf/open/floor/iron/dark, +/area/station/command/vault) "wpH" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /obj/effect/turf_decal/siding/dark{ @@ -159552,6 +159514,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"xEq" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax/heads/rd, +/turf/open/floor/carpet/purple, +/area/station/command/heads_quarters/rd) "xED" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -192463,7 +192430,7 @@ gym gkr fGC fGC -jWh +vAN oYA eof vGS @@ -196805,7 +196772,7 @@ gym fDY nnP nnP -quR +bdi lNi oZM cjE @@ -198718,7 +198685,7 @@ lnO mkr diw aHQ -cXo +pZS wqt wqt ykP @@ -202745,7 +202712,7 @@ gym gym dCk xFP -cqG +xEq jNP eNJ aPZ @@ -209214,7 +209181,7 @@ gym gJT sIZ sIZ -kfr +oui wMq fdp stu @@ -213309,7 +213276,7 @@ gwv gwv bNF wmK -hVv +wpA gwv gwv mqK @@ -250538,7 +250505,7 @@ bsn bsn bsn cGq -tYE +bsn bsn bsn bsn @@ -273225,7 +273192,7 @@ dVp dVp dVp fsP -dsn +jsl puC hcI jRm @@ -275253,7 +275220,7 @@ gkg kan awX ukF -hrX +oma kED lrh jVn @@ -276281,7 +276248,7 @@ xKy fsc oHf oHf -kRR +sIf blf exz aOs diff --git a/_maps/map_files/Vampire/admin_central.dmm b/_maps/map_files/Vampire/admin_central.dmm index e24f15cdf99e..9ed860ddcc05 100644 --- a/_maps/map_files/Vampire/admin_central.dmm +++ b/_maps/map_files/Vampire/admin_central.dmm @@ -8704,7 +8704,7 @@ "MI" = ( /obj/machinery/light/directional/north, /obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg{ +/obj/effect/spawner/random/food_or_drink/keg{ pixel_y = 6; pixel_x = 5 }, @@ -9699,7 +9699,7 @@ /area/centcom/tdome/observation) "QT" = ( /obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, @@ -11522,7 +11522,7 @@ /obj/item/food/grown/corn, /obj/item/food/grown/chili, /obj/item/food/grown/chili, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/apple, /obj/item/food/grown/ambrosia/vulgaris, /obj/machinery/status_display/evac/directional/north, diff --git a/_maps/map_files/Vampire/runtimetown.dmm b/_maps/map_files/Vampire/runtimetown.dmm index a9943f1a5176..8cb8bb00248a 100644 --- a/_maps/map_files/Vampire/runtimetown.dmm +++ b/_maps/map_files/Vampire/runtimetown.dmm @@ -223,7 +223,7 @@ /obj/structure/table/wood, /obj/item/scythe/vamp, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "eQ" = ( /turf/open/floor/plating/sidewalk, /area/vtm/outside/pacificheights) @@ -503,7 +503,7 @@ /area/vtm/outside/pacificheights) "jH" = ( /turf/closed/wall/vampwall/brick, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "jK" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -581,7 +581,7 @@ pixel_y = 14 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kn" = ( /obj/structure/table, /obj/item/molotov, @@ -821,7 +821,7 @@ pixel_y = 14 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "pg" = ( /obj/structure/vampfence/rich{ dir = 4; @@ -1234,7 +1234,7 @@ pixel_y = 2 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "vl" = ( /obj/effect/turf_decal/bordur{ dir = 8 @@ -1260,7 +1260,7 @@ pixel_y = -2 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "vA" = ( /obj/transfer_point_vamp{ id = "test_5" @@ -1372,7 +1372,7 @@ }, /obj/effect/mapping_helpers/door/access/graveyard, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "xH" = ( /obj/lombard, /obj/structure/table/countertop/beige, @@ -1636,7 +1636,7 @@ pixel_y = 19 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "CM" = ( /obj/transfer_point_vamp{ id = "test_1" @@ -1654,7 +1654,7 @@ pixel_y = 11 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "Df" = ( /obj/structure/closet/crate/freezer/blood{ name = "vampire blood freezer" @@ -2089,7 +2089,7 @@ "IC" = ( /obj/structure/table/wood, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ID" = ( /turf/open/floor/plating/sidewalk/poor, /area/vtm/outside/pacificheights) @@ -2324,7 +2324,7 @@ dir = 1 }, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "LP" = ( /obj/structure/vampdoor/simple, /obj/effect/mapping_helpers/door/access/police, @@ -2542,7 +2542,7 @@ }, /obj/effect/mapping_helpers/door/access/graveyard, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "OA" = ( /obj/effect/turf_decal/bordur, /obj/structure/lamppost/one, @@ -2610,7 +2610,7 @@ "Po" = ( /obj/structure/platform/lowwall/brick/window/reinforced, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "Pr" = ( /obj/structure/roofstuff/vent_end, /turf/open/misc/grass, @@ -3067,7 +3067,7 @@ /area/vtm/interior/sewer) "WH" = ( /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "WJ" = ( /obj/structure/transport/linear/public, /turf/open/floor/plating/elevatorshaft, @@ -3171,7 +3171,7 @@ "XX" = ( /obj/machinery/light/dim/directional/east, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "XY" = ( /obj/structure/lamppost/three, /turf/open/floor/plating/sidewalk, diff --git a/_maps/map_files/Vampire/san_fangsisco/sanfangsisco.dmm b/_maps/map_files/Vampire/san_fangsisco/sanfangsisco.dmm index 748f4441fa5c..e9777b3db04f 100644 --- a/_maps/map_files/Vampire/san_fangsisco/sanfangsisco.dmm +++ b/_maps/map_files/Vampire/san_fangsisco/sanfangsisco.dmm @@ -1325,7 +1325,7 @@ /obj/effect/mapping_helpers/door/lock_difficulty/five, /obj/effect/mapping_helpers/door/bash_difficulty/five, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "atl" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/brown{ @@ -2182,7 +2182,7 @@ "aFG" = ( /obj/structure/closet/crate/coffin, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "aFM" = ( /obj/structure/lamppost/one{ dir = 4 @@ -3364,7 +3364,7 @@ /area/vtm/interior/millennium_tower/f4) "aWz" = ( /turf/closed/wall/vampwall/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "aWU" = ( /obj/structure/weightmachine/weightlifter, /obj/item/clothing/suit/vampire/kasaya, @@ -3792,7 +3792,7 @@ "bdx" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "bdH" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/turf_decal/stripes/white/line{ @@ -4354,7 +4354,7 @@ "bme" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "bml" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -4785,7 +4785,7 @@ /obj/structure/table/wood, /obj/machinery/light/small/directional/south, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "brP" = ( /turf/open/floor/carpet/red, /area/vtm/interior) @@ -5483,7 +5483,7 @@ /obj/item/ammo_box/darkpack/c12g, /obj/item/ammo_box/darkpack/c12g, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "bBX" = ( /obj/effect/mapping_helpers/door/access/toreador, /obj/effect/mapping_helpers/door/lock_difficulty/seven, @@ -5804,7 +5804,7 @@ /obj/item/reagent_containers/cup/watering_can/metal, /obj/structure/sink/directional/south, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "bHC" = ( /obj/structure/chair/wood, /obj/effect/turf_decal/weather/dirt{ @@ -6855,7 +6855,7 @@ /obj/structure/table/reinforced, /obj/item/knife/vamp, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "bXP" = ( /obj/effect/turf_decal/bordur{ dir = 5 @@ -7721,7 +7721,7 @@ dir = 8 }, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "clu" = ( /obj/structure/vampfence/rich{ pixel_y = 13 @@ -7982,7 +7982,7 @@ /obj/structure/table/wood, /obj/item/storage/fancy/cigarettes/cigpack_cannabis, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "cot" = ( /obj/effect/turf_decal/siding/white{ dir = 6 @@ -8062,7 +8062,7 @@ /obj/structure/closet/crate/coffin, /obj/structure/coclock, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "cpD" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -8535,7 +8535,7 @@ name = "Jamal" }, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "cwd" = ( /obj/machinery/vending/cigarette, /turf/open/floor/wood/ornate, @@ -10468,7 +10468,7 @@ "cYp" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "cYu" = ( /obj/effect/turf_decal/bordur{ dir = 8 @@ -11165,7 +11165,7 @@ /obj/item/gun/ballistic/shotgun/vampire, /obj/structure/coclock, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "djl" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/city/plating_mono, @@ -12745,7 +12745,7 @@ }, /obj/machinery/light/small/directional/south, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "dJm" = ( /obj/item/gun/ballistic/automatic/darkpack/aug{ desc = "A specialty Steyr AUG, a holdover from your days in the SWAT unit. For when the freaks come out to riot, you'll be ready."; @@ -13863,7 +13863,7 @@ /obj/structure/bed, /obj/item/bedsheet/black, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ebz" = ( /turf/open/floor/plating/sidewalk/poor, /area/vtm/outside/pacificheights/forest) @@ -14222,7 +14222,7 @@ /obj/item/bong, /obj/machinery/light/small/pink/directional/west, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "egf" = ( /obj/effect/decal/pallet{ pixel_x = 6; @@ -14882,7 +14882,7 @@ /obj/effect/mapping_helpers/door/lock_difficulty/five, /obj/effect/mapping_helpers/door/bash_difficulty/five, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "epZ" = ( /obj/effect/decal/wallpaper, /turf/closed/wall/vampwall/brick, @@ -16626,7 +16626,7 @@ /obj/item/flashlight/lantern, /obj/structure/coclock, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "eSt" = ( /obj/structure/vampfence/corner/rich{ dir = 8 @@ -16692,7 +16692,7 @@ /obj/machinery/light/small/directional/west, /obj/structure/chair/comfy/black, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "eTB" = ( /obj/effect/turf_decal/bordur, /obj/effect/turf_decal/bordur{ @@ -16931,7 +16931,7 @@ /obj/structure/sink/directional/south, /obj/machinery/light/small/directional/east, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "eYf" = ( /obj/effect/decal/cleanable/trash, /obj/effect/turf_decal/weather/dirt, @@ -17422,7 +17422,7 @@ /area/vtm/interior) "feW" = ( /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ffb" = ( /obj/structure/chair/sofa/corp, /obj/machinery/light/small/pink/directional/north, @@ -17506,7 +17506,7 @@ /obj/structure/table/wood, /obj/vampire_computer, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fga" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/wood/smooth/old, @@ -18223,7 +18223,7 @@ "fqw" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fqy" = ( /obj/structure/railing{ dir = 1; @@ -18311,7 +18311,7 @@ /area/vtm/interior) "frW" = ( /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fsc" = ( /obj/structure/table/wood, /obj/structure/mirror{ @@ -18548,7 +18548,7 @@ "fuY" = ( /obj/effect/decal/rugs, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fuZ" = ( /obj/item/storage/basket{ pixel_x = -5; @@ -19022,7 +19022,7 @@ /obj/machinery/light/small/directional/east, /obj/structure/closet/crate/coffin, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fBa" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -19785,7 +19785,7 @@ /obj/item/shovel/vamp, /obj/item/gun/ballistic/revolver/darkpack/magnum, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "fMU" = ( /obj/machinery/light/prince/directional/west, /obj/effect/turf_decal/siding/white{ @@ -20988,7 +20988,7 @@ /obj/item/melee/vamp/tire, /obj/structure/coclock, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ges" = ( /obj/structure/rack, /turf/open/floor/plating/concrete, @@ -21431,7 +21431,7 @@ /obj/item/melee/vamp/tire, /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "gjZ" = ( /obj/effect/turf_decal/bordur{ dir = 6 @@ -22737,7 +22737,7 @@ "gDv" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "gDw" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -23770,7 +23770,7 @@ /obj/structure/closet/crate/coffin, /obj/machinery/light/small/directional/south, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "gSS" = ( /obj/effect/turf_decal/bordur{ dir = 4 @@ -25199,7 +25199,7 @@ /obj/structure/table/wood, /obj/item/newspaper, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "hpH" = ( /obj/structure/platform/lowwall/rich/old/window, /turf/open/floor/plating/rough, @@ -27264,11 +27264,6 @@ }, /turf/open/floor/plating/sidewalk/poor, /area/vtm) -"hYv" = ( -/obj/structure/chair/wood, -/obj/effect/landmark/start/darkpack/citizen/graveyardkeeper, -/turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) "hYC" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -29473,7 +29468,7 @@ /obj/item/ammo_box/darkpack/c44, /obj/item/ammo_box/darkpack/c44, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "iHY" = ( /obj/effect/turf_decal/siding/wideplating/dark, /obj/structure/hedge, @@ -29726,7 +29721,7 @@ /obj/effect/mapping_helpers/door/lock_difficulty/five, /obj/effect/mapping_helpers/door/bash_difficulty/five, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "iMc" = ( /obj/structure/bonfire/fire_barrel, /turf/open/floor/plating/rough/cave, @@ -30495,7 +30490,7 @@ /obj/machinery/light/small/directional/east, /obj/item/kirbyplants/random, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "iXd" = ( /obj/item/cigbutt, /turf/open/floor/plating/rough/cave, @@ -31678,7 +31673,7 @@ /obj/effect/decal/rugs, /obj/machinery/light/small/directional/north, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "jqg" = ( /obj/structure/closet/crate/bin, /turf/open/floor/city/plating, @@ -34571,7 +34566,7 @@ pixel_y = 8 }, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kiB" = ( /obj/the_matrix{ alpha = 0 @@ -34675,7 +34670,7 @@ dir = 1 }, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kkI" = ( /obj/effect/decal/wallpaper, /obj/effect/turf_decal/siding/white/corner, @@ -35039,7 +35034,7 @@ /obj/structure/table/wood, /obj/item/flashlight/lantern, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kpV" = ( /obj/structure/lamppost/one{ dir = 8 @@ -35358,7 +35353,7 @@ /obj/structure/dresser, /obj/structure/coclock, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kvF" = ( /obj/structure/flora/bush/style_random, /turf/open/misc/grass, @@ -35594,7 +35589,7 @@ /obj/item/kirbyplants/random, /obj/machinery/light/small/directional/north, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kzh" = ( /obj/effect/decal/cleanable/cardboard, /obj/structure/closet/crate/freezer, @@ -36444,7 +36439,7 @@ "kNl" = ( /obj/structure/closet/crate/bin, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kNr" = ( /obj/structure/closet/cardboard, /turf/open/floor/plating/sidewalk/old, @@ -36714,7 +36709,7 @@ /obj/effect/mapping_helpers/door/lock_difficulty/five, /obj/effect/mapping_helpers/door/bash_difficulty/five, /turf/open/floor/plating/sidewalk/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kRe" = ( /obj/structure/chair/wood{ dir = 1; @@ -36791,7 +36786,7 @@ /obj/item/clothing/mask/vampire/balaclava, /obj/item/scythe/vamp, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kSg" = ( /obj/structure/chair/plastic{ dir = 4 @@ -37291,7 +37286,7 @@ /obj/item/clothing/mask/vampire/balaclava, /obj/item/melee/vamp/handsickle, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "kYA" = ( /obj/structure/rack, /obj/item/vamp/keys/hack, @@ -37582,7 +37577,7 @@ /obj/structure/table/reinforced, /obj/item/melee/vamp/tire, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lcY" = ( /obj/item/clothing/suit/vampire/slickbackcoat, /obj/item/clothing/suit/vampire/fancy_gray, @@ -38189,7 +38184,7 @@ /obj/machinery/hydroponics/simple/plastic, /obj/machinery/light/small/pink/directional/north, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "llD" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 6 @@ -38519,7 +38514,7 @@ /obj/item/shovel/vamp, /obj/item/gun/ballistic/shotgun/vampire, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lrT" = ( /obj/effect/turf_decal/siding/white{ dir = 5 @@ -38669,7 +38664,7 @@ /obj/structure/table/wood, /obj/machinery/light/small/directional/east, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "luy" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/rough, @@ -39677,7 +39672,7 @@ "lIE" = ( /obj/structure/table/wood, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lIL" = ( /obj/effect/decal/wallpaper/paper/rich, /turf/closed/wall/vampwall/rich/old, @@ -39894,7 +39889,7 @@ /obj/item/clothing/head/vampire/top, /obj/item/melee/vamp/handsickle, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lMe" = ( /turf/open/floor/plating/rough, /area/vtm/interior) @@ -40161,7 +40156,7 @@ "lRs" = ( /obj/effect/decal/cleanable/blood/footprints, /turf/closed/wall/vampwall/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lRu" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -40588,7 +40583,7 @@ /obj/item/storage/box/bodybags, /obj/item/storage/box/bodybags, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "lXB" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -41530,7 +41525,7 @@ /obj/item/kirbyplants/random, /obj/machinery/light/small/directional/south, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "mnU" = ( /obj/structure/table/wood, /obj/structure/platform/lowwall/painted, @@ -43838,7 +43833,7 @@ "mUM" = ( /obj/effect/decal/pallet, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "mUY" = ( /obj/structure/table/wood, /obj/item/kirbyplants/darkpack/plant5{ @@ -45030,7 +45025,7 @@ /obj/item/flashlight/lantern, /obj/machinery/light/small/directional/north, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "nmY" = ( /obj/structure/bed, /obj/effect/spawner/random/bedsheet/any, @@ -45676,7 +45671,7 @@ /obj/machinery/light/small/directional/west, /obj/structure/closet/crate/coffin, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "nwU" = ( /obj/item/kirbyplants/random, /turf/open/floor/wood/smooth, @@ -48789,7 +48784,7 @@ /obj/structure/table/wood, /obj/machinery/light/small/pink/directional/south, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "osl" = ( /obj/machinery/light/prince/directional/east, /obj/effect/turf_decal/siding/wood{ @@ -52020,7 +52015,7 @@ /obj/effect/decal/pallet, /obj/item/melee/vamp/handsickle, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ply" = ( /obj/effect/turf_decal/bordur{ dir = 8 @@ -52523,7 +52518,7 @@ /obj/effect/mapping_helpers/door/lock, /obj/effect/mapping_helpers/door/lock_difficulty/five, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ptd" = ( /obj/effect/turf_decal/bordur{ dir = 1 @@ -54340,7 +54335,7 @@ "pQA" = ( /obj/effect/decal/rugs, /turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "pQD" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -54907,7 +54902,7 @@ "pZg" = ( /obj/structure/curtain, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "pZu" = ( /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/misc/grass, @@ -56638,7 +56633,7 @@ "qyR" = ( /obj/item/flashlight/lantern, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "qyS" = ( /obj/structure/railing{ dir = 4 @@ -59622,7 +59617,7 @@ /area/vtm/interior/clinic) "rph" = ( /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "rpn" = ( /obj/machinery/light/prince/directional/east, /obj/effect/turf_decal/siding/wood{ @@ -60231,7 +60226,7 @@ /area/vtm/interior/hotel) "rxa" = ( /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "rxb" = ( /obj/structure/closet/secure_closet/freezer/meat/open, /turf/open/floor/city/toilet, @@ -60730,7 +60725,7 @@ /area/vtm/interior/laundromat) "rGp" = ( /obj/effect/turf_decal/bordur, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/plating/roofwalk, /area/vtm) "rGw" = ( @@ -61682,7 +61677,7 @@ /obj/structure/table/reinforced, /obj/item/shovel/vamp, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "rTZ" = ( /obj/effect/turf_decal/bordur{ dir = 4 @@ -64505,7 +64500,7 @@ /obj/machinery/light/small/directional/north, /obj/item/kirbyplants/random, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "sJl" = ( /obj/structure/toilet{ dir = 8 @@ -65085,7 +65080,7 @@ /obj/item/vampire_stake, /obj/item/vampire_stake, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "sUz" = ( /obj/machinery/sprinkler/area_managed, /turf/open/floor/wood/smooth, @@ -67659,7 +67654,7 @@ /obj/item/vampire_stake, /obj/item/vampire_stake, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "tJi" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -67872,7 +67867,7 @@ /obj/effect/decal/pallet, /obj/item/scythe/vamp, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "tMD" = ( /obj/structure/closet/cardboard, /turf/open/floor/plating/rough/cave, @@ -68782,7 +68777,7 @@ }, /obj/structure/sink/directional/south, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "ucq" = ( /obj/effect/decal/wallpaper/stone, /turf/closed/wall/vampwall/brick_old, @@ -70951,7 +70946,7 @@ "uIS" = ( /obj/machinery/shower/directional/north, /turf/open/floor/city/toilet, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "uIX" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -71544,7 +71539,7 @@ "uTo" = ( /obj/machinery/hydroponics/simple/plastic, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "uTp" = ( /obj/machinery/light/directional/west, /turf/open/floor/wood/smooth, @@ -72750,7 +72745,7 @@ "vlA" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "vlC" = ( /obj/structure/closet/secure_closet/weapons{ pixel_y = 10 @@ -73641,7 +73636,7 @@ "vzT" = ( /obj/structure/closet/crate/freezer, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "vAf" = ( /obj/effect/turf_decal/bordur, /obj/effect/turf_decal/bordur{ @@ -74914,7 +74909,7 @@ "vTt" = ( /obj/effect/decal/wallpaper/paper/darkred, /turf/closed/wall/vampwall/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "vTH" = ( /obj/machinery/light/small/directional/north, /obj/structure/closet/crate/bin, @@ -75279,10 +75274,6 @@ /obj/effect/spawner/random/bedsheet/any, /turf/open/floor/carpet/royalblack, /area/vtm/interior/police/fed) -"vYv" = ( -/obj/effect/landmark/start/darkpack/citizen/graveyardkeeper, -/turf/open/floor/plating/rough, -/area/vtm/graveyard/interior) "vYx" = ( /obj/structure/curtain/bounty, /obj/structure/platform/lowwall/market/window, @@ -75479,7 +75470,7 @@ "waG" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "waL" = ( /obj/machinery/processor, /turf/open/floor/city/toilet, @@ -76027,7 +76018,7 @@ "wjm" = ( /obj/effect/decal/rugs, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "wjp" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/wood/smooth/old, @@ -77849,7 +77840,7 @@ /obj/item/flashlight/lantern, /obj/machinery/light/small/directional/west, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "wMx" = ( /obj/structure/railing{ dir = 1; @@ -79489,12 +79480,12 @@ "xlN" = ( /obj/item/flashlight/lantern, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "xlS" = ( /obj/effect/decal/rugs, /obj/machinery/light/small/directional/south, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "xlV" = ( /obj/machinery/hydroponics/simple/plastic, /turf/open/floor/wood/smooth/old, @@ -79919,7 +79910,7 @@ /obj/machinery/light/small/directional/north, /obj/effect/decal/pallet, /turf/open/floor/plating/concrete, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "xsx" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -81558,7 +81549,7 @@ "xRE" = ( /obj/structure/chair/wood, /turf/open/floor/wood/smooth/old, -/area/vtm/graveyard/interior) +/area/vtm/interior/graveyard) "xRI" = ( /obj/structure/closet/cardboard, /turf/open/floor/wood/old, @@ -134668,7 +134659,7 @@ fpX vTt kpT feW -hYv +xRE ffY wMq kkE @@ -138284,7 +138275,7 @@ mKL vTt jqf wjm -vYv +frW rph vlA aWz diff --git a/_maps/map_files/Vampire/san_fangsisco/sanfangsisco_umbra.dmm b/_maps/map_files/Vampire/san_fangsisco/sanfangsisco_umbra.dmm index 9f4b1454ebb7..b547c769f46b 100644 --- a/_maps/map_files/Vampire/san_fangsisco/sanfangsisco_umbra.dmm +++ b/_maps/map_files/Vampire/san_fangsisco/sanfangsisco_umbra.dmm @@ -3124,7 +3124,7 @@ /turf/open/floor/plating/concrete, /area/vtm/outside/penumbra) "TL" = ( -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/effect/decal/cleanable/trash, /turf/open/floor/plating/concrete, /area/vtm/outside/penumbra) diff --git a/_maps/map_files/Vampire/westfield_mall/westfield_umbra.dmm b/_maps/map_files/Vampire/westfield_mall/westfield_umbra.dmm index ad8ada2a8228..a710d8fd19f7 100644 --- a/_maps/map_files/Vampire/westfield_mall/westfield_umbra.dmm +++ b/_maps/map_files/Vampire/westfield_mall/westfield_umbra.dmm @@ -3124,7 +3124,7 @@ /turf/open/floor/plating/concrete, /area/vtm/outside/penumbra) "TL" = ( -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/effect/decal/cleanable/trash, /turf/open/floor/plating/concrete, /area/vtm/outside/penumbra) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 5e4af937de03..ea7c73d53cf4 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -8769,7 +8769,7 @@ "MI" = ( /obj/machinery/light/directional/north, /obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg{ +/obj/structure/reagent_dispensers/keg/beer{ pixel_y = 6; pixel_x = 5 }, @@ -9785,7 +9785,7 @@ /area/centcom/tdome/observation) "QT" = ( /obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/reagent_dispensers/keg/beer, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, @@ -11690,7 +11690,7 @@ /obj/item/food/grown/corn, /obj/item/food/grown/chili, /obj/item/food/grown/chili, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/apple, /obj/item/food/grown/ambrosia/vulgaris, /obj/machinery/status_display/evac/directional/north, diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm index d644068cab3c..8fddeb91b496 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_attachment_a_3.dmm @@ -33,7 +33,7 @@ /area/station/maintenance/department/cargo) "p" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/iron/smooth, /area/station/maintenance/department/cargo) "q" = ( diff --git a/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_b_3.dmm b/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_b_3.dmm index 8dcce8fec682..64d867acec33 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_b_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_b_3.dmm @@ -37,7 +37,7 @@ /turf/open/floor/iron/smooth, /area/station/maintenance/department/crew_quarters/dorms) "p" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/misc/asteroid, /area/station/asteroid) "q" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index c6f10ec5116e..3f91df390e11 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1913,7 +1913,7 @@ /area/station/commons/vacant_room) "agH" = ( /obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /obj/structure/cable, /turf/open/floor/wood, /area/station/service/bar/backroom) @@ -5539,15 +5539,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"aPm" = ( -/obj/structure/table/glass, -/obj/machinery/fax{ - name = "Chief Medical Officer's Fax Machine"; - fax_name = "Chief Medical Officer's Office" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "aPs" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -7550,12 +7541,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"bEz" = ( -/obj/structure/closet/crate/goldcrate, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/vault) "bEM" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 @@ -9455,6 +9440,12 @@ dir = 4 }, /area/station/command/eva) +"cgn" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/fax/heads/cmo, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "cgw" = ( /obj/machinery/computer/operating{ dir = 8 @@ -14570,6 +14561,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) +"dSQ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/fax/heads/ce, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "dSU" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark/smooth_edge{ @@ -17676,6 +17675,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/cargo/miningdock/oresilo) +"fcm" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/wood, +/obj/machinery/light/warm/directional/north, +/obj/machinery/fax/heads/hop, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/hop) "fdc" = ( /obj/machinery/brm, /obj/machinery/conveyor{ @@ -20207,7 +20213,7 @@ /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) "fYw" = ( -/obj/machinery/computer/upload/borg{ +/obj/machinery/computer/upload/borg/no_lock{ dir = 8 }, /obj/machinery/status_display/ai/directional/east, @@ -21785,6 +21791,15 @@ /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/iron/white, /area/station/science/research) +"gCo" = ( +/obj/structure/table, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/structure/sign/calendar/directional/west, +/obj/machinery/fax/heads/qm, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "gCq" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -26194,6 +26209,11 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/science/lower) +"ilb" = ( +/obj/structure/table, +/obj/item/radio/intercom/interrogation/outside, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) "ild" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26818,7 +26838,7 @@ /turf/open/floor/catwalk_floor, /area/station/maintenance/tram/mid) "ixC" = ( -/obj/machinery/computer/upload/ai{ +/obj/machinery/computer/upload/ai/no_lock{ dir = 8 }, /obj/machinery/status_display/evac/directional/east, @@ -30210,6 +30230,37 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/commons/lounge) +"jER" = ( +/obj/structure/table, +/obj/machinery/button/door/directional/south{ + name = "Science Lockdown Toggle"; + pixel_x = -6; + id = "Sciencelockdown"; + req_access = list("research") + }, +/obj/machinery/button/door/directional/south{ + name = "Research Lab Shutter Control"; + pixel_x = 6; + id = "rndlab1"; + req_access = list("research") + }, +/obj/machinery/button/door/directional/south{ + name = "Xenobiology Containmenr Blast Door"; + pixel_x = -6; + pixel_y = -34; + id = "xenobiomain"; + req_access = list("xenobiology") + }, +/obj/machinery/button/door/directional/south{ + name = "Test Chamber Blast Doors"; + pixel_x = 6; + pixel_y = -34; + id = "misclab"; + req_access = list("xenobiology") + }, +/obj/machinery/fax/heads/rd, +/turf/open/floor/iron/cafeteria, +/area/station/command/heads_quarters/rd) "jFh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -31135,40 +31186,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/closed/wall/r_wall, /area/station/science/ordnance/storage) -"jXF" = ( -/obj/structure/table, -/obj/machinery/fax{ - name = "Research Director's Fax Machine"; - fax_name = "Research Director's Office" - }, -/obj/machinery/button/door/directional/south{ - name = "Science Lockdown Toggle"; - pixel_x = -6; - id = "Sciencelockdown"; - req_access = list("research") - }, -/obj/machinery/button/door/directional/south{ - name = "Research Lab Shutter Control"; - pixel_x = 6; - id = "rndlab1"; - req_access = list("research") - }, -/obj/machinery/button/door/directional/south{ - name = "Xenobiology Containmenr Blast Door"; - pixel_x = -6; - pixel_y = -34; - id = "xenobiomain"; - req_access = list("xenobiology") - }, -/obj/machinery/button/door/directional/south{ - name = "Test Chamber Blast Doors"; - pixel_x = 6; - pixel_y = -34; - id = "misclab"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/cafeteria, -/area/station/command/heads_quarters/rd) "jXG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -37251,7 +37268,7 @@ /turf/open/floor/iron/dark, /area/station/security/prison/garden) "lQz" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/effect/turf_decal/delivery, /obj/machinery/navbeacon{ location = "QM #2"; @@ -41060,6 +41077,7 @@ }, /obj/item/storage/box/syringes, /obj/structure/sign/clock/directional/north, +/obj/item/storage/pill_bottle/sepsisillin, /turf/open/floor/iron/white, /area/station/medical/virology) "nlm" = ( @@ -42305,7 +42323,7 @@ /turf/open/floor/iron/dark, /area/station/medical/virology) "nIC" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/effect/turf_decal/delivery, /obj/machinery/navbeacon{ location = "QM #6"; @@ -48524,7 +48542,7 @@ /turf/open/floor/iron/dark, /area/station/ai/satellite/interior) "pXq" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/effect/turf_decal/delivery, /obj/machinery/navbeacon{ location = "QM #3"; @@ -51833,6 +51851,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/warehouse) +"rgh" = ( +/obj/structure/closet/crate/goldcrate/stocked, +/obj/effect/turf_decal/bot_white/right, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/vault) "rgo" = ( /obj/machinery/bouldertech/refinery{ dir = 4 @@ -53129,7 +53153,7 @@ /turf/closed/wall, /area/station/engineering/atmospherics_engine) "rCs" = ( -/mob/living/simple_animal/bot/mulebot, +/mob/living/basic/bot/mulebot, /obj/effect/turf_decal/delivery, /obj/machinery/navbeacon{ location = "QM #1"; @@ -55616,17 +55640,6 @@ /obj/item/reagent_containers/syringe, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"suM" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/fax{ - name = "Chief Engineer's Fax Machine"; - fax_name = "Chief Engineer's Office" - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "suR" = ( /obj/structure/table/wood, /obj/structure/window/reinforced/spawner/directional/south{ @@ -57854,6 +57867,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/security/detectives_office) +"tli" = ( +/obj/structure/table/wood, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/machinery/fax/heads/hos, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/hos) "tlP" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -58014,15 +58033,6 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/catwalk_floor, /area/station/hallway/primary/tram/left) -"toY" = ( -/obj/structure/table/wood, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/machinery/fax{ - name = "Head of Security's Fax Machine"; - fax_name = "Head of Security's Office" - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/hos) "tpm" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59375,6 +59385,10 @@ }, /turf/open/floor/iron/dark, /area/station/medical/virology) +"tMf" = ( +/obj/item/radio/intercom/interrogation/inside/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) "tMg" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -67334,18 +67348,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/miningdock) -"wuC" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/sign/calendar/directional/west, -/obj/machinery/fax{ - name = "Quartermaster's Fax Machine"; - fax_name = "Quartermaster's Office" - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "wuE" = ( /obj/structure/railing/corner{ dir = 4 @@ -67907,6 +67909,13 @@ }, /turf/open/floor/iron, /area/station/science/explab) +"wDA" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/wood, +/obj/item/radio/intercom/directional/east, +/obj/machinery/fax/heads/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "wDB" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68255,16 +68264,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/wood, /area/station/command/meeting_room) -"wKk" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/east, -/obj/machinery/fax{ - name = "Captain's Fax Machine"; - fax_name = "Captain's Office" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "wKm" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/trimline/red/filled/corner, @@ -70868,16 +70867,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"xNl" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table/wood, -/obj/machinery/fax{ - name = "Head of Personnel's Fax Machine"; - fax_name = "Head of Personnel's Office" - }, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/hop) "xNm" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /turf/open/floor/iron, @@ -89880,7 +89869,7 @@ rUR rUR aaa rUR -bEz +rgh dAL lQM abM @@ -104835,7 +104824,7 @@ wqY tMP cHW qoX -suM +dSQ sHH sHH sHH @@ -152596,7 +152585,7 @@ jAi mSx tHv wHT -xNl +fcm dqm bZZ wHT @@ -158724,7 +158713,7 @@ aaa rmB pxf bWb -toY +tli wpM auP auY @@ -160020,12 +160009,12 @@ uIt uIt uIt jKq -pTr +tMf drq ohd gWD iRZ -ohd +ilb avG gwR tFJ @@ -160044,7 +160033,7 @@ aVj ltw sWY hhJ -wKk +wDA phl sSx xJH @@ -167543,7 +167532,7 @@ kZC mBq dsw aOJ -aPm +cgn wWa qIc dQI @@ -181377,7 +181366,7 @@ ePw dAx oum nAH -wuC +gCo kCM whL eKt @@ -182960,7 +182949,7 @@ rGj tes rGj wcB -jXF +jER pbH mAL nKU diff --git a/_maps/minigame/basketball/ass_blast_usa.dmm b/_maps/minigame/basketball/ass_blast_usa.dmm index baeb945de767..63fc56c06740 100644 --- a/_maps/minigame/basketball/ass_blast_usa.dmm +++ b/_maps/minigame/basketball/ass_blast_usa.dmm @@ -363,7 +363,7 @@ /turf/open/floor/iron/dark, /area/centcom/basketball) "Gi" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/reagent_dispensers/keg/beer, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/centcom/basketball) "Hu" = ( diff --git a/_maps/minigame/deathmatch/arena_station.dmm b/_maps/minigame/deathmatch/arena_station.dmm index 0cca2ac3d9d7..58e073ab8653 100644 --- a/_maps/minigame/deathmatch/arena_station.dmm +++ b/_maps/minigame/deathmatch/arena_station.dmm @@ -601,7 +601,7 @@ /area/deathmatch) "wd" = ( /obj/effect/turf_decal/tile/brown/fourcorners, -/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/reagent_dispensers/keg/beer, /turf/open/indestructible, /area/deathmatch) "yA" = ( diff --git a/_maps/minigame/deathmatch/ragnarok.dmm b/_maps/minigame/deathmatch/ragnarok.dmm index c55693d46fbe..0cff89dd8469 100644 --- a/_maps/minigame/deathmatch/ragnarok.dmm +++ b/_maps/minigame/deathmatch/ragnarok.dmm @@ -891,7 +891,7 @@ /area/deathmatch) "My" = ( /obj/structure/table/wood, -/obj/item/food/grown/holymelon, +/obj/item/food/grown/melonlike/holymelon, /turf/open/floor/wood/tile, /area/deathmatch) "MM" = ( diff --git a/_maps/runtimestation_minimal.json b/_maps/runtimestation_minimal.json index 101a156d4829..52965f5747a0 100644 --- a/_maps/runtimestation_minimal.json +++ b/_maps/runtimestation_minimal.json @@ -17,5 +17,6 @@ "/datum/unit_test/modify_fantasy_variable", "/datum/unit_test/create_and_destroy", "/datum/unit_test/unallocated_transfer_points" - ] + ], + "is_unit_test_map": true } diff --git a/_maps/shuttles/arrival_birdshot.dmm b/_maps/shuttles/arrival/arrival_birdshot.dmm similarity index 100% rename from _maps/shuttles/arrival_birdshot.dmm rename to _maps/shuttles/arrival/arrival_birdshot.dmm diff --git a/_maps/shuttles/arrival_box.dmm b/_maps/shuttles/arrival/arrival_box.dmm similarity index 100% rename from _maps/shuttles/arrival_box.dmm rename to _maps/shuttles/arrival/arrival_box.dmm diff --git a/_maps/shuttles/arrival_catwalk.dmm b/_maps/shuttles/arrival/arrival_catwalk.dmm similarity index 100% rename from _maps/shuttles/arrival_catwalk.dmm rename to _maps/shuttles/arrival/arrival_catwalk.dmm diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival/arrival_delta.dmm similarity index 100% rename from _maps/shuttles/arrival_delta.dmm rename to _maps/shuttles/arrival/arrival_delta.dmm diff --git a/_maps/shuttles/arrival_donut.dmm b/_maps/shuttles/arrival/arrival_donut.dmm similarity index 100% rename from _maps/shuttles/arrival_donut.dmm rename to _maps/shuttles/arrival/arrival_donut.dmm diff --git a/_maps/shuttles/arrival_kilo.dmm b/_maps/shuttles/arrival/arrival_kilo.dmm similarity index 100% rename from _maps/shuttles/arrival_kilo.dmm rename to _maps/shuttles/arrival/arrival_kilo.dmm diff --git a/_maps/shuttles/arrival_nebula.dmm b/_maps/shuttles/arrival/arrival_nebula.dmm similarity index 100% rename from _maps/shuttles/arrival_nebula.dmm rename to _maps/shuttles/arrival/arrival_nebula.dmm diff --git a/_maps/shuttles/arrival_northstar.dmm b/_maps/shuttles/arrival/arrival_northstar.dmm similarity index 100% rename from _maps/shuttles/arrival_northstar.dmm rename to _maps/shuttles/arrival/arrival_northstar.dmm diff --git a/_maps/shuttles/arrival_pubby.dmm b/_maps/shuttles/arrival/arrival_pubby.dmm similarity index 100% rename from _maps/shuttles/arrival_pubby.dmm rename to _maps/shuttles/arrival/arrival_pubby.dmm diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base/aux_base_default.dmm similarity index 100% rename from _maps/shuttles/aux_base_default.dmm rename to _maps/shuttles/aux_base/aux_base_default.dmm diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base/aux_base_small.dmm similarity index 100% rename from _maps/shuttles/aux_base_small.dmm rename to _maps/shuttles/aux_base/aux_base_small.dmm diff --git a/_maps/shuttles/cargo_birdboat.dmm b/_maps/shuttles/cargo/cargo_birdboat.dmm similarity index 100% rename from _maps/shuttles/cargo_birdboat.dmm rename to _maps/shuttles/cargo/cargo_birdboat.dmm diff --git a/_maps/shuttles/cargo_birdshot.dmm b/_maps/shuttles/cargo/cargo_birdshot.dmm similarity index 100% rename from _maps/shuttles/cargo_birdshot.dmm rename to _maps/shuttles/cargo/cargo_birdshot.dmm diff --git a/_maps/shuttles/cargo_box.dmm b/_maps/shuttles/cargo/cargo_box.dmm similarity index 100% rename from _maps/shuttles/cargo_box.dmm rename to _maps/shuttles/cargo/cargo_box.dmm diff --git a/_maps/shuttles/cargo_catwalk.dmm b/_maps/shuttles/cargo/cargo_catwalk.dmm similarity index 100% rename from _maps/shuttles/cargo_catwalk.dmm rename to _maps/shuttles/cargo/cargo_catwalk.dmm diff --git a/_maps/shuttles/cargo_delta.dmm b/_maps/shuttles/cargo/cargo_delta.dmm similarity index 100% rename from _maps/shuttles/cargo_delta.dmm rename to _maps/shuttles/cargo/cargo_delta.dmm diff --git a/_maps/shuttles/cargo_kilo.dmm b/_maps/shuttles/cargo/cargo_kilo.dmm similarity index 100% rename from _maps/shuttles/cargo_kilo.dmm rename to _maps/shuttles/cargo/cargo_kilo.dmm diff --git a/_maps/shuttles/cargo_mini.dmm b/_maps/shuttles/cargo/cargo_mini.dmm similarity index 100% rename from _maps/shuttles/cargo_mini.dmm rename to _maps/shuttles/cargo/cargo_mini.dmm diff --git a/_maps/shuttles/cargo_nebula.dmm b/_maps/shuttles/cargo/cargo_nebula.dmm similarity index 100% rename from _maps/shuttles/cargo_nebula.dmm rename to _maps/shuttles/cargo/cargo_nebula.dmm diff --git a/_maps/shuttles/cargo_northstar.dmm b/_maps/shuttles/cargo/cargo_northstar.dmm similarity index 100% rename from _maps/shuttles/cargo_northstar.dmm rename to _maps/shuttles/cargo/cargo_northstar.dmm diff --git a/_maps/shuttles/cargo_pubby.dmm b/_maps/shuttles/cargo/cargo_pubby.dmm similarity index 100% rename from _maps/shuttles/cargo_pubby.dmm rename to _maps/shuttles/cargo/cargo_pubby.dmm diff --git a/_maps/shuttles/emergency_arena.dmm b/_maps/shuttles/emergency/emergency_arena.dmm similarity index 100% rename from _maps/shuttles/emergency_arena.dmm rename to _maps/shuttles/emergency/emergency_arena.dmm diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency/emergency_asteroid.dmm similarity index 100% rename from _maps/shuttles/emergency_asteroid.dmm rename to _maps/shuttles/emergency/emergency_asteroid.dmm diff --git a/_maps/shuttles/emergency_backup.dmm b/_maps/shuttles/emergency/emergency_backup.dmm similarity index 100% rename from _maps/shuttles/emergency_backup.dmm rename to _maps/shuttles/emergency/emergency_backup.dmm diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency/emergency_bar.dmm similarity index 100% rename from _maps/shuttles/emergency_bar.dmm rename to _maps/shuttles/emergency/emergency_bar.dmm diff --git a/_maps/shuttles/emergency_bballhooper.dmm b/_maps/shuttles/emergency/emergency_bballhooper.dmm similarity index 100% rename from _maps/shuttles/emergency_bballhooper.dmm rename to _maps/shuttles/emergency/emergency_bballhooper.dmm diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency/emergency_birdboat.dmm similarity index 100% rename from _maps/shuttles/emergency_birdboat.dmm rename to _maps/shuttles/emergency/emergency_birdboat.dmm diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency/emergency_birdshot.dmm similarity index 100% rename from _maps/shuttles/emergency_birdshot.dmm rename to _maps/shuttles/emergency/emergency_birdshot.dmm diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency/emergency_box.dmm similarity index 100% rename from _maps/shuttles/emergency_box.dmm rename to _maps/shuttles/emergency/emergency_box.dmm diff --git a/_maps/shuttles/emergency_casino.dmm b/_maps/shuttles/emergency/emergency_casino.dmm similarity index 99% rename from _maps/shuttles/emergency_casino.dmm rename to _maps/shuttles/emergency/emergency_casino.dmm index 09a114aeac22..c6b8705251c8 100644 --- a/_maps/shuttles/emergency_casino.dmm +++ b/_maps/shuttles/emergency/emergency_casino.dmm @@ -270,7 +270,7 @@ /area/shuttle/escape) "jH" = ( /obj/structure/table/reinforced, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_catwalk.dmm b/_maps/shuttles/emergency/emergency_catwalk.dmm similarity index 100% rename from _maps/shuttles/emergency_catwalk.dmm rename to _maps/shuttles/emergency/emergency_catwalk.dmm diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency/emergency_cere.dmm similarity index 100% rename from _maps/shuttles/emergency_cere.dmm rename to _maps/shuttles/emergency/emergency_cere.dmm diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency/emergency_clown.dmm similarity index 100% rename from _maps/shuttles/emergency_clown.dmm rename to _maps/shuttles/emergency/emergency_clown.dmm diff --git a/_maps/shuttles/emergency_construction.dmm b/_maps/shuttles/emergency/emergency_construction.dmm similarity index 100% rename from _maps/shuttles/emergency_construction.dmm rename to _maps/shuttles/emergency/emergency_construction.dmm diff --git a/_maps/shuttles/emergency_constructionbig.dmm b/_maps/shuttles/emergency/emergency_constructionbig.dmm similarity index 100% rename from _maps/shuttles/emergency_constructionbig.dmm rename to _maps/shuttles/emergency/emergency_constructionbig.dmm diff --git a/_maps/shuttles/emergency_cramped.dmm b/_maps/shuttles/emergency/emergency_cramped.dmm similarity index 100% rename from _maps/shuttles/emergency_cramped.dmm rename to _maps/shuttles/emergency/emergency_cramped.dmm diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency/emergency_cruise.dmm similarity index 100% rename from _maps/shuttles/emergency_cruise.dmm rename to _maps/shuttles/emergency/emergency_cruise.dmm diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency/emergency_delta.dmm similarity index 100% rename from _maps/shuttles/emergency_delta.dmm rename to _maps/shuttles/emergency/emergency_delta.dmm diff --git a/_maps/shuttles/emergency_discoinferno.dmm b/_maps/shuttles/emergency/emergency_discoinferno.dmm similarity index 100% rename from _maps/shuttles/emergency_discoinferno.dmm rename to _maps/shuttles/emergency/emergency_discoinferno.dmm diff --git a/_maps/shuttles/emergency_donut.dmm b/_maps/shuttles/emergency/emergency_donut.dmm similarity index 100% rename from _maps/shuttles/emergency_donut.dmm rename to _maps/shuttles/emergency/emergency_donut.dmm diff --git a/_maps/shuttles/emergency_fame.dmm b/_maps/shuttles/emergency/emergency_fame.dmm similarity index 100% rename from _maps/shuttles/emergency_fame.dmm rename to _maps/shuttles/emergency/emergency_fame.dmm diff --git a/_maps/shuttles/emergency_fish.dmm b/_maps/shuttles/emergency/emergency_fish.dmm similarity index 100% rename from _maps/shuttles/emergency_fish.dmm rename to _maps/shuttles/emergency/emergency_fish.dmm diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency/emergency_goon.dmm similarity index 100% rename from _maps/shuttles/emergency_goon.dmm rename to _maps/shuttles/emergency/emergency_goon.dmm diff --git a/_maps/shuttles/emergency_hugcage.dmm b/_maps/shuttles/emergency/emergency_hugcage.dmm similarity index 100% rename from _maps/shuttles/emergency_hugcage.dmm rename to _maps/shuttles/emergency/emergency_hugcage.dmm diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency/emergency_humpback.dmm similarity index 100% rename from _maps/shuttles/emergency_humpback.dmm rename to _maps/shuttles/emergency/emergency_humpback.dmm diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency/emergency_imfedupwiththisworld.dmm similarity index 100% rename from _maps/shuttles/emergency_imfedupwiththisworld.dmm rename to _maps/shuttles/emergency/emergency_imfedupwiththisworld.dmm diff --git a/_maps/shuttles/emergency_kilo.dmm b/_maps/shuttles/emergency/emergency_kilo.dmm similarity index 100% rename from _maps/shuttles/emergency_kilo.dmm rename to _maps/shuttles/emergency/emergency_kilo.dmm diff --git a/_maps/shuttles/emergency_lance.dmm b/_maps/shuttles/emergency/emergency_lance.dmm similarity index 100% rename from _maps/shuttles/emergency_lance.dmm rename to _maps/shuttles/emergency/emergency_lance.dmm diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency/emergency_luxury.dmm similarity index 100% rename from _maps/shuttles/emergency_luxury.dmm rename to _maps/shuttles/emergency/emergency_luxury.dmm diff --git a/_maps/shuttles/emergency_medisim.dmm b/_maps/shuttles/emergency/emergency_medisim.dmm similarity index 100% rename from _maps/shuttles/emergency_medisim.dmm rename to _maps/shuttles/emergency/emergency_medisim.dmm diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency/emergency_meta.dmm similarity index 100% rename from _maps/shuttles/emergency_meta.dmm rename to _maps/shuttles/emergency/emergency_meta.dmm diff --git a/_maps/shuttles/emergency_meteor.dmm b/_maps/shuttles/emergency/emergency_meteor.dmm similarity index 100% rename from _maps/shuttles/emergency_meteor.dmm rename to _maps/shuttles/emergency/emergency_meteor.dmm diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency/emergency_mini.dmm similarity index 100% rename from _maps/shuttles/emergency_mini.dmm rename to _maps/shuttles/emergency/emergency_mini.dmm diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency/emergency_monastery.dmm similarity index 100% rename from _maps/shuttles/emergency_monastery.dmm rename to _maps/shuttles/emergency/emergency_monastery.dmm diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency/emergency_narnar.dmm similarity index 100% rename from _maps/shuttles/emergency_narnar.dmm rename to _maps/shuttles/emergency/emergency_narnar.dmm diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency/emergency_nature.dmm similarity index 100% rename from _maps/shuttles/emergency_nature.dmm rename to _maps/shuttles/emergency/emergency_nature.dmm diff --git a/_maps/shuttles/emergency_nebula.dmm b/_maps/shuttles/emergency/emergency_nebula.dmm similarity index 100% rename from _maps/shuttles/emergency_nebula.dmm rename to _maps/shuttles/emergency/emergency_nebula.dmm diff --git a/_maps/shuttles/emergency_northstar.dmm b/_maps/shuttles/emergency/emergency_northstar.dmm similarity index 100% rename from _maps/shuttles/emergency_northstar.dmm rename to _maps/shuttles/emergency/emergency_northstar.dmm diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency/emergency_omega.dmm similarity index 100% rename from _maps/shuttles/emergency_omega.dmm rename to _maps/shuttles/emergency/emergency_omega.dmm diff --git a/_maps/shuttles/emergency_pod.dmm b/_maps/shuttles/emergency/emergency_pod.dmm similarity index 100% rename from _maps/shuttles/emergency_pod.dmm rename to _maps/shuttles/emergency/emergency_pod.dmm diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency/emergency_pubby.dmm similarity index 100% rename from _maps/shuttles/emergency_pubby.dmm rename to _maps/shuttles/emergency/emergency_pubby.dmm diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency/emergency_raven.dmm similarity index 100% rename from _maps/shuttles/emergency_raven.dmm rename to _maps/shuttles/emergency/emergency_raven.dmm diff --git a/_maps/shuttles/emergency_rollerdome.dmm b/_maps/shuttles/emergency/emergency_rollerdome.dmm similarity index 100% rename from _maps/shuttles/emergency_rollerdome.dmm rename to _maps/shuttles/emergency/emergency_rollerdome.dmm diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency/emergency_russiafightpit.dmm similarity index 100% rename from _maps/shuttles/emergency_russiafightpit.dmm rename to _maps/shuttles/emergency/emergency_russiafightpit.dmm diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency/emergency_scrapheap.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap.dmm rename to _maps/shuttles/emergency/emergency_scrapheap.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic1.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic1.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic1.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic1.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic2.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic2.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic2.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic2.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_aft1.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_aft1.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_aft1.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_aft1.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_aft2.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_aft2.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_aft2.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_aft2.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_aft3.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_aft3.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_aft3.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_aft3.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_fore1.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_fore1.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_fore1.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_fore1.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_fore2.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_fore2.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_fore2.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_fore2.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_fore3.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_fore3.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_fore3.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_fore3.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_starboard1.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_starboard1.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_starboard1.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_starboard1.dmm diff --git a/_maps/shuttles/emergency_scrapheap/classic_starboard2.dmm b/_maps/shuttles/emergency/emergency_scrapheap/classic_starboard2.dmm similarity index 100% rename from _maps/shuttles/emergency_scrapheap/classic_starboard2.dmm rename to _maps/shuttles/emergency/emergency_scrapheap/classic_starboard2.dmm diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency/emergency_shadow.dmm similarity index 100% rename from _maps/shuttles/emergency_shadow.dmm rename to _maps/shuttles/emergency/emergency_shadow.dmm diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency/emergency_supermatter.dmm similarity index 100% rename from _maps/shuttles/emergency_supermatter.dmm rename to _maps/shuttles/emergency/emergency_supermatter.dmm diff --git a/_maps/shuttles/emergency_tram.dmm b/_maps/shuttles/emergency/emergency_tram.dmm similarity index 100% rename from _maps/shuttles/emergency_tram.dmm rename to _maps/shuttles/emergency/emergency_tram.dmm diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency/emergency_tranquility.dmm similarity index 100% rename from _maps/shuttles/emergency_tranquility.dmm rename to _maps/shuttles/emergency/emergency_tranquility.dmm diff --git a/_maps/shuttles/emergency_venture.dmm b/_maps/shuttles/emergency/emergency_venture.dmm similarity index 100% rename from _maps/shuttles/emergency_venture.dmm rename to _maps/shuttles/emergency/emergency_venture.dmm diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency/emergency_wabbajack.dmm similarity index 100% rename from _maps/shuttles/emergency_wabbajack.dmm rename to _maps/shuttles/emergency/emergency_wabbajack.dmm diff --git a/_maps/shuttles/emergency_wawa.dmm b/_maps/shuttles/emergency/emergency_wawa.dmm similarity index 100% rename from _maps/shuttles/emergency_wawa.dmm rename to _maps/shuttles/emergency/emergency_wawa.dmm diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency/emergency_zeta.dmm similarity index 100% rename from _maps/shuttles/emergency_zeta.dmm rename to _maps/shuttles/emergency/emergency_zeta.dmm diff --git a/_maps/shuttles/escape_pod_cramped.dmm b/_maps/shuttles/escape_pod/escape_pod_cramped.dmm similarity index 100% rename from _maps/shuttles/escape_pod_cramped.dmm rename to _maps/shuttles/escape_pod/escape_pod_cramped.dmm diff --git a/_maps/shuttles/escape_pod_default.dmm b/_maps/shuttles/escape_pod/escape_pod_default.dmm similarity index 100% rename from _maps/shuttles/escape_pod_default.dmm rename to _maps/shuttles/escape_pod/escape_pod_default.dmm diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod/escape_pod_large.dmm similarity index 100% rename from _maps/shuttles/escape_pod_large.dmm rename to _maps/shuttles/escape_pod/escape_pod_large.dmm diff --git a/_maps/shuttles/escape_pod_luxury.dmm b/_maps/shuttles/escape_pod/escape_pod_luxury.dmm similarity index 100% rename from _maps/shuttles/escape_pod_luxury.dmm rename to _maps/shuttles/escape_pod/escape_pod_luxury.dmm diff --git a/_maps/shuttles/ferry_base.dmm b/_maps/shuttles/ferry/ferry_base.dmm similarity index 100% rename from _maps/shuttles/ferry_base.dmm rename to _maps/shuttles/ferry/ferry_base.dmm diff --git a/_maps/shuttles/ferry_fancy.dmm b/_maps/shuttles/ferry/ferry_fancy.dmm similarity index 100% rename from _maps/shuttles/ferry_fancy.dmm rename to _maps/shuttles/ferry/ferry_fancy.dmm diff --git a/_maps/shuttles/ferry_kilo.dmm b/_maps/shuttles/ferry/ferry_kilo.dmm similarity index 100% rename from _maps/shuttles/ferry_kilo.dmm rename to _maps/shuttles/ferry/ferry_kilo.dmm diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry/ferry_lighthouse.dmm similarity index 100% rename from _maps/shuttles/ferry_lighthouse.dmm rename to _maps/shuttles/ferry/ferry_lighthouse.dmm diff --git a/_maps/shuttles/ferry_meat.dmm b/_maps/shuttles/ferry/ferry_meat.dmm similarity index 100% rename from _maps/shuttles/ferry_meat.dmm rename to _maps/shuttles/ferry/ferry_meat.dmm diff --git a/_maps/shuttles/ferry_nebula.dmm b/_maps/shuttles/ferry/ferry_nebula.dmm similarity index 100% rename from _maps/shuttles/ferry_nebula.dmm rename to _maps/shuttles/ferry/ferry_nebula.dmm diff --git a/_maps/shuttles/hunter_bounty.dmm b/_maps/shuttles/hunter/hunter_bounty.dmm similarity index 100% rename from _maps/shuttles/hunter_bounty.dmm rename to _maps/shuttles/hunter/hunter_bounty.dmm diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter/hunter_mi13_foodtruck.dmm similarity index 100% rename from _maps/shuttles/hunter_mi13_foodtruck.dmm rename to _maps/shuttles/hunter/hunter_mi13_foodtruck.dmm diff --git a/_maps/shuttles/hunter_psyker.dmm b/_maps/shuttles/hunter/hunter_psyker.dmm similarity index 100% rename from _maps/shuttles/hunter_psyker.dmm rename to _maps/shuttles/hunter/hunter_psyker.dmm diff --git a/_maps/shuttles/hunter_russian.dmm b/_maps/shuttles/hunter/hunter_russian.dmm similarity index 100% rename from _maps/shuttles/hunter_russian.dmm rename to _maps/shuttles/hunter/hunter_russian.dmm diff --git a/_maps/shuttles/hunter_space_cop.dmm b/_maps/shuttles/hunter/hunter_space_cop.dmm similarity index 100% rename from _maps/shuttles/hunter_space_cop.dmm rename to _maps/shuttles/hunter/hunter_space_cop.dmm diff --git a/_maps/shuttles/infiltrator_advanced.dmm b/_maps/shuttles/infiltrator/infiltrator_advanced.dmm similarity index 100% rename from _maps/shuttles/infiltrator_advanced.dmm rename to _maps/shuttles/infiltrator/infiltrator_advanced.dmm diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator/infiltrator_basic.dmm similarity index 99% rename from _maps/shuttles/infiltrator_basic.dmm rename to _maps/shuttles/infiltrator/infiltrator_basic.dmm index 61f8ea231df2..468a10b865b7 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator/infiltrator_basic.dmm @@ -19,9 +19,9 @@ /area/shuttle/syndicate/hallway) "ae" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor/shutters{ - id = "syndieshutters"; - name = "Blast Shutters" +/obj/machinery/door/poddoor/shutters/syndicate{ + name = "Blast Shutters"; + id = "syndieshutters" }, /turf/open/floor/plating, /area/shuttle/syndicate/bridge) @@ -191,10 +191,6 @@ }, /area/shuttle/syndicate/airlock) "aY" = ( -/obj/machinery/door/poddoor{ - id = "smindicate"; - name = "Outer Blast Door" - }, /obj/docking_port/mobile/infiltrator, /obj/structure/fans/tiny, /obj/machinery/button/door/directional/north{ @@ -205,6 +201,11 @@ /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, +/obj/machinery/door/poddoor/shutters/syndicate/indestructible{ + id = "smindicate"; + name = "Outer Blast Door"; + dir = 4 + }, /turf/open/floor/plating, /area/shuttle/syndicate/airlock) "aZ" = ( @@ -601,9 +602,7 @@ /obj/item/storage/box/zipties, /obj/machinery/computer/security/telescreen/entertainment/directional/west, /obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 2 - }, +/turf/open/floor/iron/dark/smooth_corner, /area/shuttle/syndicate/airlock) "iE" = ( /obj/structure/closet/syndicate/nuclear, diff --git a/_maps/shuttles/infiltrator_clown.dmm b/_maps/shuttles/infiltrator/infiltrator_clown.dmm similarity index 100% rename from _maps/shuttles/infiltrator_clown.dmm rename to _maps/shuttles/infiltrator/infiltrator_clown.dmm diff --git a/_maps/shuttles/labour_box.dmm b/_maps/shuttles/labour/labour_box.dmm similarity index 100% rename from _maps/shuttles/labour_box.dmm rename to _maps/shuttles/labour/labour_box.dmm diff --git a/_maps/shuttles/labour_delta.dmm b/_maps/shuttles/labour/labour_delta.dmm similarity index 100% rename from _maps/shuttles/labour_delta.dmm rename to _maps/shuttles/labour/labour_delta.dmm diff --git a/_maps/shuttles/labour_generic.dmm b/_maps/shuttles/labour/labour_generic.dmm similarity index 100% rename from _maps/shuttles/labour_generic.dmm rename to _maps/shuttles/labour/labour_generic.dmm diff --git a/_maps/shuttles/labour_kilo.dmm b/_maps/shuttles/labour/labour_kilo.dmm similarity index 100% rename from _maps/shuttles/labour_kilo.dmm rename to _maps/shuttles/labour/labour_kilo.dmm diff --git a/_maps/shuttles/labour_nebula.dmm b/_maps/shuttles/labour/labour_nebula.dmm similarity index 100% rename from _maps/shuttles/labour_nebula.dmm rename to _maps/shuttles/labour/labour_nebula.dmm diff --git a/_maps/shuttles/mining_box.dmm b/_maps/shuttles/mining/mining_box.dmm similarity index 100% rename from _maps/shuttles/mining_box.dmm rename to _maps/shuttles/mining/mining_box.dmm diff --git a/_maps/shuttles/mining_common_kilo.dmm b/_maps/shuttles/mining/mining_common_kilo.dmm similarity index 52% rename from _maps/shuttles/mining_common_kilo.dmm rename to _maps/shuttles/mining/mining_common_kilo.dmm index 26e16830b804..d42b2fe9e90f 100644 --- a/_maps/shuttles/mining_common_kilo.dmm +++ b/_maps/shuttles/mining/mining_common_kilo.dmm @@ -7,73 +7,32 @@ /turf/open/floor/plating, /area/shuttle/mining) "c" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/mineral/plastitanium, +/obj/effect/spawner/structure/window/reinforced/shuttle, +/turf/open/space/basic, /area/shuttle/mining) "d" = ( -/obj/machinery/computer/shuttle/mining/common, /obj/effect/turf_decal/bot, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/mining) -"e" = ( -/obj/structure/table, -/obj/item/radio, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/mineral/plastitanium, +/obj/effect/spawner/structure/window/reinforced/shuttle, +/turf/open/floor/plating, /area/shuttle/mining) "f" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/yellow, +/obj/machinery/computer/shuttle/mining/common, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/mineral/plastitanium, /area/shuttle/mining) -"g" = ( +"j" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/mining) -"h" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/mining) -"j" = ( /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, /obj/structure/sign/nanotrasen/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/mining) -"k" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/mining) -"l" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 8 - }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/mining) -"m" = ( +"k" = ( /obj/machinery/door/airlock/titanium{ name = "Lavaland Shuttle Airlock" }, @@ -83,22 +42,14 @@ name = "lavaland shuttle"; port_direction = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible{ - dir = 4 - }, /turf/open/floor/plating, /area/shuttle/mining) "n" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/mining) -"o" = ( -/obj/structure/closet/crate, +/obj/structure/ore_box, /obj/effect/turf_decal/delivery, -/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/mineral/plastitanium, /area/shuttle/mining) "p" = ( @@ -106,11 +57,6 @@ /obj/machinery/power/shuttle_engine/heater, /turf/open/floor/plating, /area/shuttle/mining) -"q" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/delivery, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/mining) "r" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/mineral/titanium, @@ -122,46 +68,25 @@ (1,1,1) = {" a -a -b -a b a +d +r a "} (2,1,1) = {" -a c f j n -o -r -"} -(3,1,1) = {" -b -d -g -k -n p s "} -(4,1,1) = {" -a -e -h -l -n -q -r -"} -(5,1,1) = {" -a +(3,1,1) = {" a b -m +k b -a +r a "} diff --git a/_maps/shuttles/mining_common_meta.dmm b/_maps/shuttles/mining/mining_common_meta.dmm similarity index 100% rename from _maps/shuttles/mining_common_meta.dmm rename to _maps/shuttles/mining/mining_common_meta.dmm diff --git a/_maps/shuttles/mining_common_northstar.dmm b/_maps/shuttles/mining/mining_common_northstar.dmm similarity index 100% rename from _maps/shuttles/mining_common_northstar.dmm rename to _maps/shuttles/mining/mining_common_northstar.dmm diff --git a/_maps/shuttles/mining_delta.dmm b/_maps/shuttles/mining/mining_delta.dmm similarity index 100% rename from _maps/shuttles/mining_delta.dmm rename to _maps/shuttles/mining/mining_delta.dmm diff --git a/_maps/shuttles/mining_freight.dmm b/_maps/shuttles/mining/mining_freight.dmm similarity index 100% rename from _maps/shuttles/mining_freight.dmm rename to _maps/shuttles/mining/mining_freight.dmm diff --git a/_maps/shuttles/mining_kilo.dmm b/_maps/shuttles/mining/mining_kilo.dmm similarity index 100% rename from _maps/shuttles/mining_kilo.dmm rename to _maps/shuttles/mining/mining_kilo.dmm diff --git a/_maps/shuttles/mining_large.dmm b/_maps/shuttles/mining/mining_large.dmm similarity index 100% rename from _maps/shuttles/mining_large.dmm rename to _maps/shuttles/mining/mining_large.dmm diff --git a/_maps/shuttles/mining_nebula.dmm b/_maps/shuttles/mining/mining_nebula.dmm similarity index 100% rename from _maps/shuttles/mining_nebula.dmm rename to _maps/shuttles/mining/mining_nebula.dmm diff --git a/_maps/shuttles/mining_northstar.dmm b/_maps/shuttles/mining/mining_northstar.dmm similarity index 100% rename from _maps/shuttles/mining_northstar.dmm rename to _maps/shuttles/mining/mining_northstar.dmm diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate/pirate_default.dmm similarity index 100% rename from _maps/shuttles/pirate_default.dmm rename to _maps/shuttles/pirate/pirate_default.dmm diff --git a/_maps/shuttles/pirate_dutchman.dmm b/_maps/shuttles/pirate/pirate_dutchman.dmm similarity index 100% rename from _maps/shuttles/pirate_dutchman.dmm rename to _maps/shuttles/pirate/pirate_dutchman.dmm diff --git a/_maps/shuttles/pirate_ex_interdyne.dmm b/_maps/shuttles/pirate/pirate_ex_interdyne.dmm similarity index 99% rename from _maps/shuttles/pirate_ex_interdyne.dmm rename to _maps/shuttles/pirate/pirate_ex_interdyne.dmm index c2bfc4f4d0e3..cc52ce319ea1 100644 --- a/_maps/shuttles/pirate_ex_interdyne.dmm +++ b/_maps/shuttles/pirate/pirate_ex_interdyne.dmm @@ -555,10 +555,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/iron/dark, /area/shuttle/pirate) -"mD" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/pirate) "mU" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted, /turf/open/floor/iron/dark, @@ -1060,7 +1056,7 @@ qy ED aj aj -mD +aj bB Ur aj @@ -1132,7 +1128,7 @@ af af aO DD -mD +aj DD DD aO diff --git a/_maps/shuttles/pirate_geode.dmm b/_maps/shuttles/pirate/pirate_geode.dmm similarity index 100% rename from _maps/shuttles/pirate_geode.dmm rename to _maps/shuttles/pirate/pirate_geode.dmm diff --git a/_maps/shuttles/pirate_grey.dmm b/_maps/shuttles/pirate/pirate_grey.dmm similarity index 100% rename from _maps/shuttles/pirate_grey.dmm rename to _maps/shuttles/pirate/pirate_grey.dmm diff --git a/_maps/shuttles/pirate_irs.dmm b/_maps/shuttles/pirate/pirate_irs.dmm similarity index 100% rename from _maps/shuttles/pirate_irs.dmm rename to _maps/shuttles/pirate/pirate_irs.dmm diff --git a/_maps/shuttles/pirate_medieval.dmm b/_maps/shuttles/pirate/pirate_medieval.dmm similarity index 100% rename from _maps/shuttles/pirate_medieval.dmm rename to _maps/shuttles/pirate/pirate_medieval.dmm diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate/pirate_silverscale.dmm similarity index 100% rename from _maps/shuttles/pirate_silverscale.dmm rename to _maps/shuttles/pirate/pirate_silverscale.dmm diff --git a/_maps/shuttles/ruin_caravan_victim.dmm b/_maps/shuttles/ruin/ruin_caravan_victim.dmm similarity index 100% rename from _maps/shuttles/ruin_caravan_victim.dmm rename to _maps/shuttles/ruin/ruin_caravan_victim.dmm diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin/ruin_cyborg_mothership.dmm similarity index 100% rename from _maps/shuttles/ruin_cyborg_mothership.dmm rename to _maps/shuttles/ruin/ruin_cyborg_mothership.dmm diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin/ruin_pirate_cutter.dmm similarity index 100% rename from _maps/shuttles/ruin_pirate_cutter.dmm rename to _maps/shuttles/ruin/ruin_pirate_cutter.dmm diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin/ruin_syndicate_dropship.dmm similarity index 100% rename from _maps/shuttles/ruin_syndicate_dropship.dmm rename to _maps/shuttles/ruin/ruin_syndicate_dropship.dmm diff --git a/_maps/shuttles/ruin_syndicate_fighter_shiv.dmm b/_maps/shuttles/ruin/ruin_syndicate_fighter_shiv.dmm similarity index 100% rename from _maps/shuttles/ruin_syndicate_fighter_shiv.dmm rename to _maps/shuttles/ruin/ruin_syndicate_fighter_shiv.dmm diff --git a/_maps/shuttles/starfury_corvette.dmm b/_maps/shuttles/starfury/starfury_corvette.dmm similarity index 100% rename from _maps/shuttles/starfury_corvette.dmm rename to _maps/shuttles/starfury/starfury_corvette.dmm diff --git a/_maps/shuttles/starfury_fighter1.dmm b/_maps/shuttles/starfury/starfury_fighter1.dmm similarity index 100% rename from _maps/shuttles/starfury_fighter1.dmm rename to _maps/shuttles/starfury/starfury_fighter1.dmm diff --git a/_maps/shuttles/starfury_fighter2.dmm b/_maps/shuttles/starfury/starfury_fighter2.dmm similarity index 100% rename from _maps/shuttles/starfury_fighter2.dmm rename to _maps/shuttles/starfury/starfury_fighter2.dmm diff --git a/_maps/shuttles/starfury_fighter3.dmm b/_maps/shuttles/starfury/starfury_fighter3.dmm similarity index 100% rename from _maps/shuttles/starfury_fighter3.dmm rename to _maps/shuttles/starfury/starfury_fighter3.dmm diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship/whiteship_birdshot.dmm similarity index 100% rename from _maps/shuttles/whiteship_birdshot.dmm rename to _maps/shuttles/whiteship/whiteship_birdshot.dmm diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship/whiteship_box.dmm similarity index 100% rename from _maps/shuttles/whiteship_box.dmm rename to _maps/shuttles/whiteship/whiteship_box.dmm diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship/whiteship_cere.dmm similarity index 100% rename from _maps/shuttles/whiteship_cere.dmm rename to _maps/shuttles/whiteship/whiteship_cere.dmm diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship/whiteship_delta.dmm similarity index 100% rename from _maps/shuttles/whiteship_delta.dmm rename to _maps/shuttles/whiteship/whiteship_delta.dmm diff --git a/_maps/shuttles/whiteship_donut.dmm b/_maps/shuttles/whiteship/whiteship_donut.dmm similarity index 100% rename from _maps/shuttles/whiteship_donut.dmm rename to _maps/shuttles/whiteship/whiteship_donut.dmm diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship/whiteship_kilo.dmm similarity index 100% rename from _maps/shuttles/whiteship_kilo.dmm rename to _maps/shuttles/whiteship/whiteship_kilo.dmm diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship/whiteship_meta.dmm similarity index 100% rename from _maps/shuttles/whiteship_meta.dmm rename to _maps/shuttles/whiteship/whiteship_meta.dmm diff --git a/_maps/shuttles/whiteship_obelisk.dmm b/_maps/shuttles/whiteship/whiteship_obelisk.dmm similarity index 100% rename from _maps/shuttles/whiteship_obelisk.dmm rename to _maps/shuttles/whiteship/whiteship_obelisk.dmm diff --git a/_maps/shuttles/whiteship_personalshuttle.dmm b/_maps/shuttles/whiteship/whiteship_personalshuttle.dmm similarity index 100% rename from _maps/shuttles/whiteship_personalshuttle.dmm rename to _maps/shuttles/whiteship/whiteship_personalshuttle.dmm diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship/whiteship_pubby.dmm similarity index 100% rename from _maps/shuttles/whiteship_pubby.dmm rename to _maps/shuttles/whiteship/whiteship_pubby.dmm diff --git a/_maps/shuttles/whiteship_tram.dmm b/_maps/shuttles/whiteship/whiteship_tram.dmm similarity index 100% rename from _maps/shuttles/whiteship_tram.dmm rename to _maps/shuttles/whiteship/whiteship_tram.dmm diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index 30452f41e5cf..1260b153b4dc 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -1033,7 +1033,7 @@ /obj/item/food/grown/citrus/lime, /obj/item/food/grown/citrus/orange, /obj/item/food/grown/citrus/lemon, -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/machinery/light/small/directional/west, /turf/open/floor/carpet/black, /area/centcom/central_command_areas/holding) diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 707e8a251f31..1156100a9fd8 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -7,14 +7,6 @@ "ae" = ( /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_bombthreat) -"ah" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/mech_bay_recharge_port, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "al" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -22,15 +14,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood/tile, /area/centcom/syndicate_mothership/control) -"as" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/structure/sign/poster/contraband/cybersun_six_hundred/directional/east, -/obj/item/kirbyplants/random, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) -"au" = ( -/turf/open/floor/circuit/red, -/area/centcom/syndicate_mothership/control) "ay" = ( /obj/structure/table/reinforced, /obj/item/papercutter, @@ -54,6 +37,13 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"aS" = ( +/obj/effect/turf_decal/siding/red/corner, +/obj/item/folder/red, +/obj/item/pen/red, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "aX" = ( /obj/machinery/shower/directional/south, /turf/open/floor/iron/freezer, @@ -77,10 +67,6 @@ /obj/structure/mirror/directional/east, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"bp" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "bB" = ( /obj/structure/railing{ dir = 4 @@ -123,6 +109,10 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) +"bS" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/turf/closed/indestructible/syndicate, +/area/centcom/syndicate_mothership/control) "bT" = ( /obj/structure/flora/rock/pile/style_random, /turf/open/misc/asteroid/snow/airless, @@ -162,6 +152,15 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/centcom/syndicate_mothership/control) +"cC" = ( +/obj/machinery/vending/cola, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/white/textured_large{ + color = "#b51026" + }, +/area/centcom/syndicate_mothership/control) "cF" = ( /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/indestructible/syndicate, @@ -219,6 +218,20 @@ /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"cW" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/machinery/light/red/dim/directional/north, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) +"cY" = ( +/obj/machinery/light/cold/directional/east, +/obj/machinery/vending/snack/teal, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/open/floor/catwalk_floor/iron_dark, +/area/centcom/syndicate_mothership/control) "cZ" = ( /obj/structure/mop_bucket/janitorialcart{ dir = 4 @@ -233,15 +246,6 @@ /obj/machinery/shower/directional/south, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) -"dn" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west{ - network = list("nukie") - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "dq" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/iron/smooth_half, @@ -252,22 +256,16 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"du" = ( -/obj/structure/chair/stool/directional/north, -/obj/effect/landmark/start/nukeop_base, -/obj/structure/sign/poster/contraband/donk_co/directional/south, -/turf/open/floor/wood/tile, -/area/centcom/syndicate_mothership/control) -"dw" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/turf/open/floor/carpet, -/area/centcom/syndicate_mothership/control) "dx" = ( /obj/machinery/shower/directional/east, /obj/effect/turf_decal/stripes/box, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) +"dB" = ( +/obj/machinery/recharger, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/carpet, +/area/centcom/syndicate_mothership/control) "dF" = ( /obj/machinery/light/cold/directional/west, /obj/structure/table/glass/plasmaglass, @@ -467,6 +465,12 @@ /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) +"eM" = ( +/obj/effect/turf_decal/siding/red, +/obj/machinery/recharger, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "fa" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -478,15 +482,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) -"fb" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/north{ - network = list("nukie") - }, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "fk" = ( /turf/open/floor/circuit/red/off, /area/centcom/syndicate_mothership/expansion_bioterrorism) @@ -497,6 +492,15 @@ /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/plating, /area/centcom/syndicate_mothership/expansion_bombthreat) +"fr" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/folder/white, +/obj/item/pen/red, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) "fu" = ( /obj/machinery/shower/directional/south, /obj/machinery/light/floor, @@ -546,6 +550,14 @@ /obj/machinery/hydroponics/constructable, /turf/open/floor/mineral/titanium/tiled, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"fP" = ( +/obj/effect/turf_decal/siding/red, +/obj/effect/turf_decal/tile/red/half{ + dir = 1 + }, +/obj/machinery/light/red/dim/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "fR" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/junction, @@ -554,6 +566,11 @@ "fT" = ( /turf/open/floor/engine/bz, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"fU" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/red/half, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "fV" = ( /obj/structure/frame/computer{ dir = 1 @@ -579,36 +596,24 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/expansion_bombthreat) -"go" = ( -/obj/machinery/light/cold/directional/east, -/obj/machinery/vending/snack/teal, +"gs" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/mineral/titanium, +/area/centcom/syndicate_mothership/control) +"gu" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/turf/open/floor/catwalk_floor/titanium, -/area/centcom/syndicate_mothership/control) -"gs" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/mineral/titanium, +/turf/open/floor/catwalk_floor/iron_dark, /area/centcom/syndicate_mothership/control) "gw" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"gB" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "War Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/textured_large, -/area/centcom/syndicate_mothership/control) "gD" = ( /obj/structure/flora/tree/dead/style_random, /obj/structure/flora/grass/both/style_random, @@ -789,21 +794,13 @@ dir = 4 }, /area/centcom/syndicate_mothership/expansion_fridgerummage) -"ij" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 +"ih" = ( +/obj/machinery/camera/autoname/directional/west{ + network = list("nukie") }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/turf/open/floor/catwalk_floor/titanium, -/area/centcom/syndicate_mothership/control) -"il" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ +/obj/effect/turf_decal/tile/red/half{ dir = 1 }, -/obj/effect/turf_decal/siding/red/corner, /turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "is" = ( @@ -812,6 +809,13 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"iz" = ( +/obj/effect/turf_decal/siding/red/corner{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "iA" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -842,9 +846,11 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) -"iV" = ( -/obj/structure/chair/stool/directional/north, -/turf/open/floor/iron/dark/textured_large, +"iU" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/control) "iX" = ( /obj/machinery/vending/dinnerware, @@ -856,6 +862,16 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"jd" = ( +/obj/structure/chair/stool/directional/south, +/obj/structure/sign/map/left{ + desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; + icon_state = "map-left-MS"; + pixel_y = 32 + }, +/obj/effect/landmark/start/nukeop_base, +/turf/open/floor/wood/tile, +/area/centcom/syndicate_mothership/control) "je" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 8 @@ -917,6 +933,15 @@ /obj/structure/noticeboard/directional/north, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"kf" = ( +/obj/effect/turf_decal/siding/red/corner{ + dir = 8 + }, +/obj/item/folder/red, +/obj/item/pen/red, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "kg" = ( /turf/open/misc/ice/icemoon, /area/centcom/syndicate_mothership/control) @@ -1022,12 +1047,6 @@ }, /turf/open/lava/plasma/ice_moon, /area/centcom/syndicate_mothership/control) -"lc" = ( -/obj/effect/turf_decal/siding/red/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "ld" = ( /turf/open/floor/iron/smooth_edge{ dir = 8 @@ -1047,13 +1066,6 @@ /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"lo" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/machinery/camera/autoname/directional/south{ - network = list("nukie") - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "lt" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/mineral/plastitanium, @@ -1125,18 +1137,6 @@ /obj/machinery/chem_dispenser/mutagensaltpeter, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) -"my" = ( -/obj/effect/landmark/start/nukeop_base/leader, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/centcom/syndicate_mothership/control) -"mz" = ( -/obj/machinery/vending/cola, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "mA" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -1152,6 +1152,10 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bombthreat) +"mC" = ( +/obj/effect/turf_decal/tile/red/half, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "mJ" = ( /obj/structure/sign/poster/contraband/free_key, /turf/closed/indestructible/syndicate, @@ -1176,19 +1180,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) -"ng" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/machinery/door/poddoor/shutters/syndicate{ - id = "FBBZ1"; - name = "Security Shutters"; - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "nk" = ( /obj/structure/flora/tree/dead/style_random, /obj/structure/flora/grass/both/style_random, @@ -1217,14 +1208,14 @@ /obj/structure/flora/tree/pine/style_random, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"nD" = ( -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/mineral/titanium/yellow, -/area/centcom/syndicate_mothership/control) "nF" = ( /obj/effect/turf_decal/syndicateemblem/top/middle, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/control) +"nG" = ( +/obj/machinery/vending/cigarette/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "nH" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/structure/closet/syndicate/personal, @@ -1234,6 +1225,10 @@ dir = 8 }, /area/centcom/syndicate_mothership/control) +"nI" = ( +/obj/machinery/minimap_table, +/turf/open/floor/circuit/red/no_power, +/area/centcom/syndicate_mothership/control) "nL" = ( /obj/structure/chair/office/light{ dir = 1 @@ -1255,6 +1250,12 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"nV" = ( +/obj/structure/chair/stool/directional/north, +/obj/effect/landmark/start/nukeop_base, +/obj/structure/sign/poster/contraband/donk_co/directional/south, +/turf/open/floor/wood/tile, +/area/centcom/syndicate_mothership/control) "oc" = ( /obj/structure/fence{ dir = 4 @@ -1270,13 +1271,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bombthreat) -"oh" = ( -/obj/structure/table/reinforced, -/obj/item/syndicatedetonator{ - desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press." - }, -/turf/open/floor/carpet, -/area/centcom/syndicate_mothership/control) "oi" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -1288,16 +1282,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/centcom/syndicate_mothership/control) -"or" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/machinery/door/airlock/hatch{ - name = "Gangway" +"om" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, +/obj/structure/sign/poster/contraband/smoke/directional/north, +/turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "os" = ( /obj/effect/turf_decal/stripes/box, @@ -1314,10 +1304,19 @@ }, /turf/open/floor/engine/vacuum, /area/centcom/syndicate_mothership/expansion_bombthreat) -"oD" = ( +"oA" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom/syndicate_mothership/control) +"oH" = ( /obj/effect/turf_decal/siding/red{ dir = 1 }, +/obj/item/folder/red, +/obj/item/pen/red, +/obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "oK" = ( @@ -1356,6 +1355,14 @@ }, /turf/open/floor/engine, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"oU" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/machinery/recharger, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "oW" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 9 @@ -1402,11 +1409,11 @@ /obj/structure/flora/rock/icy/style_random, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"pr" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ +"pp" = ( +/obj/effect/turf_decal/siding/red, +/obj/effect/turf_decal/tile/red/half{ dir = 1 }, -/obj/effect/turf_decal/siding/red, /turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "ps" = ( @@ -1438,13 +1445,6 @@ /obj/machinery/vending/tool, /turf/open/floor/mineral/titanium/yellow, /area/centcom/syndicate_mothership/control) -"pS" = ( -/obj/structure/chair/greyscale{ - dir = 4 - }, -/obj/effect/landmark/start/nukeop_base/overwatch, -/turf/open/floor/mineral/plastitanium, -/area/centcom/syndicate_mothership) "pU" = ( /obj/structure/chair/office/light{ dir = 8 @@ -1515,10 +1515,6 @@ }, /turf/open/floor/plastic, /area/centcom/syndicate_mothership/expansion_fridgerummage) -"qv" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "qw" = ( /turf/open/floor/plating, /area/centcom/syndicate_mothership/control) @@ -1583,25 +1579,28 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"qU" = ( -/obj/structure/flora/rock/icy/style_random{ - pixel_x = -7 +"qR" = ( +/obj/effect/turf_decal/siding/wideplating{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating, +/obj/machinery/door/poddoor/shutters/syndicate/indestructible{ + name = "Base Lift"; + dir = 1; + id_tag = "nukiespawnlift"; + id = "nukiespawnlift" + }, +/turf/open/floor/iron/dark/textured_half, +/area/centcom/syndicate_mothership/control) +"qU" = ( +/obj/structure/flora/rock/icy/style_random{ + pixel_x = -7 }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) "qX" = ( /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) -"rb" = ( -/obj/effect/turf_decal/siding/red, -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/item/stack/spacecash/c10{ - pixel_x = -19; - pixel_y = 10 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "rf" = ( /turf/open/floor/iron/stairs/old, /area/centcom/syndicate_mothership/control) @@ -1623,25 +1622,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /turf/open/floor/iron/smooth, /area/centcom/syndicate_mothership/control) -"ru" = ( -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating, -/obj/machinery/door/poddoor/shutters/syndicate/indestructible{ - name = "Base Lift"; - dir = 1; - id_tag = "nukiespawnlift"; - id = "nukiespawnlift" - }, -/turf/open/floor/iron/dark/textured_half, -/area/centcom/syndicate_mothership/control) -"rw" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/centcom/syndicate_mothership/control) "rA" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -1681,6 +1661,14 @@ /obj/structure/fence/door/opened, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"rO" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 8 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/folder/red, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) "rS" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -1838,20 +1826,6 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) -"tu" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) -"tv" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red/corner, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "tz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -1922,6 +1896,13 @@ /obj/structure/statue/uranium/nuke, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"ux" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/open/floor/catwalk_floor/iron_dark, +/area/centcom/syndicate_mothership/control) "uK" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 1 @@ -1954,6 +1935,14 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"uY" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half, +/obj/machinery/light/red/dim/directional/south, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "ve" = ( /obj/effect/turf_decal/syndicateemblem/top/middle{ dir = 1 @@ -1974,26 +1963,17 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/open/floor/plating, /area/centcom/syndicate_mothership/expansion_bombthreat) -"vv" = ( -/obj/structure/table/reinforced, -/obj/item/paper/fluff/stations/centcom/disk_memo{ - pixel_x = -6; - pixel_y = -7 - }, -/obj/item/taperecorder{ - pixel_y = 15 +"vn" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/item/stack/spacecash/c50, -/turf/open/floor/carpet, +/turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) -"vx" = ( -/obj/machinery/door/airlock/external/ruin, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +"vB" = ( +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 1 }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "vI" = ( /obj/structure/railing, @@ -2038,16 +2018,6 @@ /obj/structure/filingcabinet/medical, /turf/open/floor/carpet, /area/centcom/syndicate_mothership/control) -"wc" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) -"we" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/centcom/syndicate_mothership/control) "wg" = ( /obj/structure/fence/corner{ dir = 6 @@ -2077,6 +2047,16 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) +"ww" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/open/floor/catwalk_floor/iron_dark, +/area/centcom/syndicate_mothership/control) "wC" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -2084,6 +2064,15 @@ /obj/structure/sign/poster/contraband/rebels_unite/directional/south, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) +"wD" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/north{ + network = list("nukie") + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "wG" = ( /turf/open/floor/iron/smooth_half{ dir = 1 @@ -2112,10 +2101,6 @@ dir = 8 }, /area/centcom/syndicate_mothership/control) -"wS" = ( -/obj/effect/landmark/nukeop_elevator/exterior, -/turf/closed/indestructible/syndicate, -/area/centcom/syndicate_mothership/control) "wW" = ( /obj/structure/flora/rock/pile/style_random, /obj/effect/light_emitter{ @@ -2124,6 +2109,10 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) +"wX" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) "wY" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ desc = "Has a valve and pump attached to it. Slightly more menacing than Nanotrasen's standard."; @@ -2150,11 +2139,18 @@ /obj/effect/turf_decal/siding/thinplating_new/dark/corner, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) -"xj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/turf/open/floor/mineral/titanium, +"xt" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/door/poddoor/shutters/syndicate{ + dir = 1 + }, +/turf/open/floor/iron, /area/centcom/syndicate_mothership/control) "xu" = ( /turf/closed/indestructible/syndicate, @@ -2177,6 +2173,12 @@ "ya" = ( /turf/open/floor/carpet, /area/centcom/syndicate_mothership/control) +"yb" = ( +/obj/effect/turf_decal/tile/red/half{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "ye" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 10 @@ -2260,6 +2262,10 @@ /obj/structure/chair/office, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) +"zl" = ( +/obj/machinery/light/small/red/directional/west, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "zo" = ( /obj/item/stack/sheet/mineral/sandbags, /turf/open/floor/catwalk_floor/iron_dark, @@ -2290,11 +2296,14 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) -"zH" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/item/kirbyplants/random, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) +"zI" = ( +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/obj/structure/flora/tree/dead/style_random, +/turf/closed/indestructible/rock/snow, +/area/centcom/syndicate_mothership) "zL" = ( /obj/structure/rack, /obj/item/restraints/handcuffs/cable/pink, @@ -2395,6 +2404,10 @@ }, /turf/open/floor/plating, /area/centcom/syndicate_mothership/expansion_bombthreat) +"AE" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) "AL" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/smooth_half{ @@ -2404,29 +2417,6 @@ "AM" = ( /turf/closed/indestructible/iron, /area/centcom/syndicate_mothership/control) -"AN" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/door/poddoor/shutters/syndicate{ - dir = 1 - }, -/turf/open/floor/iron, -/area/centcom/syndicate_mothership/control) -"AO" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red/corner{ - dir = 4 - }, -/obj/item/stack/spacecash/c1{ - pixel_y = 12 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "AR" = ( /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/indestructible/syndicate, @@ -2436,16 +2426,6 @@ /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) -"AV" = ( -/obj/structure/chair/stool/directional/south, -/obj/structure/sign/map/left{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-left-MS"; - pixel_y = 32 - }, -/obj/effect/landmark/start/nukeop_base, -/turf/open/floor/wood/tile, -/area/centcom/syndicate_mothership/control) "AW" = ( /obj/machinery/chem_master, /turf/open/floor/mineral/titanium/tiled/yellow, @@ -2577,6 +2557,17 @@ }, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) +"Cn" = ( +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/obj/machinery/light/cold/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/open/floor/catwalk_floor/iron_dark, +/area/centcom/syndicate_mothership/control) "Ct" = ( /obj/machinery/door/airlock/hatch{ name = "Closet" @@ -2631,6 +2622,15 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) +"CW" = ( +/obj/effect/turf_decal/siding/red{ + dir = 4 + }, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "CX" = ( /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership) @@ -2648,6 +2648,16 @@ /obj/structure/sign/poster/contraband/gorlex_recruitment/directional/west, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) +"Dt" = ( +/obj/effect/turf_decal/siding/red/corner{ + dir = 4 + }, +/obj/item/stack/spacecash/c1{ + pixel_y = 12 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Du" = ( /obj/docking_port/stationary{ area_type = /area/centcom/syndicate_mothership; @@ -2685,6 +2695,10 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) +"DQ" = ( +/obj/effect/landmark/nukeop_elevator/exterior, +/turf/closed/indestructible/syndicate, +/area/centcom/syndicate_mothership/control) "DV" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -2729,13 +2743,6 @@ "DZ" = ( /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/control) -"Ed" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/smoke/directional/north, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "Ef" = ( /obj/structure/fence, /turf/open/misc/asteroid/snow/airless, @@ -2799,23 +2806,16 @@ /obj/effect/turf_decal/siding/purple, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) -"Fm" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red/corner{ - dir = 8 - }, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) -"Fp" = ( -/obj/machinery/vending/cigarette/syndicate, -/turf/open/floor/mineral/titanium, +"Fl" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/landmark/start/nukeop_base, +/turf/open/floor/wood/tile, /area/centcom/syndicate_mothership/control) -"Fq" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp, -/turf/open/floor/carpet, +"Fo" = ( +/obj/machinery/light/small/red/directional/north{ + allow_break_on_init = 0 + }, +/turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/control) "FB" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -2826,6 +2826,25 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) +"FC" = ( +/obj/item/paper/fluff/stations/centcom/disk_memo{ + pixel_x = -6; + pixel_y = -7 + }, +/obj/item/taperecorder{ + pixel_y = 15 + }, +/obj/item/stack/spacecash/c50, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/carpet, +/area/centcom/syndicate_mothership/control) +"FE" = ( +/obj/item/syndicatedetonator{ + desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press." + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/carpet, +/area/centcom/syndicate_mothership/control) "FG" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/corner{ @@ -2847,6 +2866,12 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"FQ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "FR" = ( /obj/machinery/light/floor, /turf/open/floor/iron/dark/textured_half{ @@ -2926,12 +2951,12 @@ /obj/item/food/grown/bell_pepper, /obj/item/food/grown/chili, /obj/item/food/grown/chili, -/obj/item/food/grown/parsnip, -/obj/item/food/grown/parsnip, +/obj/item/food/grown/carrotlike/parsnip, +/obj/item/food/grown/carrotlike/parsnip, /obj/item/food/grown/redbeet, /obj/item/food/grown/redbeet, -/obj/item/food/grown/watermelon, -/obj/item/food/grown/watermelon, +/obj/item/food/grown/melonlike/watermelon, +/obj/item/food/grown/melonlike/watermelon, /obj/item/food/grown/peas, /obj/item/food/grown/peas, /obj/item/food/grown/onion, @@ -2991,17 +3016,6 @@ dir = 8 }, /area/centcom/syndicate_mothership/control) -"GI" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/machinery/light/cold/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/turf/open/floor/catwalk_floor/titanium, -/area/centcom/syndicate_mothership/control) "GL" = ( /obj/structure/lattice/catwalk, /obj/effect/turf_decal/stripes/line{ @@ -3057,10 +3071,6 @@ }, /turf/open/misc/ice/icemoon, /area/centcom/syndicate_mothership/control) -"Hs" = ( -/obj/machinery/shuttle_manipulator, -/turf/open/floor/circuit/red, -/area/centcom/syndicate_mothership/control) "Ht" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -3114,12 +3124,26 @@ /obj/item/stack/sheet/mineral/plasma, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"HE" = ( +/obj/effect/landmark/start/nukeop_base/leader, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron, +/area/centcom/syndicate_mothership/control) "HJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) +"HN" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/white/textured_large{ + color = "#b51026" + }, +/area/centcom/syndicate_mothership/control) "HW" = ( /obj/effect/light_emitter{ set_cap = 1; @@ -3140,6 +3164,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/centcom/syndicate_mothership/control) +"Ic" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/hatch{ + name = "Security Checkpoint" + }, +/turf/open/floor/plating, +/area/centcom/syndicate_mothership/control) "Id" = ( /obj/structure/closet/crate/freezer{ name = "meat freezer" @@ -3158,8 +3193,8 @@ /obj/item/food/meat/slab/spider, /obj/item/food/meat/slab/penguin, /obj/item/food/meat/slab/rawcrab, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, +/obj/item/food/grown/carrotlike/carrot, +/obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/garlic, /obj/item/food/grown/garlic, /obj/item/food/grown/tomato, @@ -3204,6 +3239,11 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"IA" = ( +/obj/item/flashlight/lamp, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/carpet, +/area/centcom/syndicate_mothership/control) "IC" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -3212,41 +3252,12 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) -"IL" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red, -/obj/item/toy/nuke{ - pixel_x = -5; - pixel_y = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) -"IM" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/floor/mineral/titanium, -/area/centcom/syndicate_mothership/control) "IQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"IV" = ( -/obj/structure/chair/stool/directional/south, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) -"Ja" = ( -/obj/machinery/light/small/red/directional/north{ - allow_break_on_init = 0 - }, -/turf/open/floor/mineral/plastitanium, -/area/centcom/syndicate_mothership/control) "Jc" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks/beer{ @@ -3282,6 +3293,10 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"Jr" = ( +/obj/effect/turf_decal/stripes/full, +/turf/open/floor/mineral/titanium, +/area/centcom/syndicate_mothership/control) "Js" = ( /obj/structure/table/wood, /obj/item/rag, @@ -3298,6 +3313,19 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) +"JE" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/centcom/syndicate_mothership/control) +"JG" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/full, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "JJ" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -3341,6 +3369,13 @@ /obj/effect/turf_decal/syndicateemblem/top/left, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/control) +"JY" = ( +/obj/effect/turf_decal/siding/red/corner, +/obj/effect/turf_decal/tile/red/half{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Ka" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -3361,6 +3396,12 @@ /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"KB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/open/floor/iron/smooth_large, +/area/centcom/syndicate_mothership/control) "KD" = ( /obj/effect/turf_decal/trimline/red, /obj/effect/turf_decal/trimline/red, @@ -3410,6 +3451,14 @@ }, /turf/open/lava/plasma/ice_moon, /area/centcom/syndicate_mothership/control) +"KT" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/machinery/mech_bay_recharge_port, +/obj/machinery/light/red/dim/directional/south, +/turf/open/floor/mineral/titanium, +/area/centcom/syndicate_mothership/control) "KU" = ( /obj/effect/light_emitter{ set_cap = 1; @@ -3426,18 +3475,24 @@ }, /turf/open/floor/iron/smooth_half, /area/centcom/syndicate_mothership/control) +"KX" = ( +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Ld" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/structure/closet/syndicate/personal, /obj/effect/turf_decal/tile/red/full, /turf/open/floor/iron/dark/textured_half, /area/centcom/syndicate_mothership/control) -"Lk" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red{ - dir = 8 +"Le" = ( +/obj/structure/chair/comfy/black{ + dir = 4 }, -/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/tile/red/full, /turf/open/floor/iron/dark/textured_large, /area/centcom/syndicate_mothership/control) "Lu" = ( @@ -3473,15 +3528,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /turf/open/floor/stone, /area/centcom/syndicate_mothership/control) -"LB" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red{ - dir = 1 - }, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "LH" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/binary/pump/on, @@ -3530,13 +3576,6 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/centcom/syndicate_mothership/control) -"Me" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/turf/open/floor/catwalk_floor/titanium, -/area/centcom/syndicate_mothership/control) "Mh" = ( /obj/structure/sign/poster/contraband/lamarr/directional/south, /turf/open/floor/iron/smooth_half{ @@ -3608,6 +3647,12 @@ /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /turf/open/floor/catwalk_floor/iron, /area/centcom/syndicate_mothership/control) +"MF" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "MH" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light/cold/directional/west, @@ -3632,14 +3677,6 @@ dir = 8 }, /area/centcom/syndicate_mothership/control) -"MU" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/obj/structure/chair/stool/directional/east, -/obj/effect/landmark/start/nukeop_base, -/turf/open/floor/wood/tile, -/area/centcom/syndicate_mothership/control) "Nb" = ( /obj/structure/chair/sofa/right/brown{ dir = 4 @@ -3653,6 +3690,13 @@ name = "Tac-Com" }, /area/centcom/syndicate_mothership/control) +"Ne" = ( +/obj/effect/turf_decal/siding/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Ni" = ( /obj/machinery/light/small/directional/north, /obj/machinery/computer/slot_machine/syndicate, @@ -3734,6 +3778,13 @@ /obj/item/melee/powerfist, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bombthreat) +"Og" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Oi" = ( /obj/structure/cable, /turf/closed/indestructible/syndicate, @@ -3858,6 +3909,24 @@ "Ph" = ( /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"Pp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/turf/open/floor/iron/smooth_large, +/area/centcom/syndicate_mothership/control) +"Ps" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/shutters/syndicate{ + id = "FBBZ1"; + name = "Security Shutters"; + dir = 1 + }, +/turf/open/floor/mineral/titanium, +/area/centcom/syndicate_mothership/control) "Pu" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -4057,6 +4126,13 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/centcom/syndicate_mothership/control) +"Re" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Rn" = ( /obj/item/circuitboard/computer/syndicate_shuttle{ pixel_x = 2; @@ -4132,6 +4208,14 @@ /obj/effect/baseturf_helper/asteroid/snow, /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/expansion_bioterrorism) +"RV" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/chair/stool/directional/east, +/obj/effect/landmark/start/nukeop_base, +/turf/open/floor/wood/tile, +/area/centcom/syndicate_mothership/control) "Sc" = ( /obj/structure/railing, /turf/open/floor/iron/stairs/old{ @@ -4139,18 +4223,6 @@ initial_gas_mix = "TEMP=2.7" }, /area/centcom/syndicate_mothership) -"Se" = ( -/obj/machinery/door/airlock/external/ruin, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/centcom/syndicate_mothership/control) "Sg" = ( /obj/machinery/camera/autoname/directional/east{ network = list("nukie") @@ -4210,6 +4282,11 @@ /obj/item/mop, /turf/open/floor/catwalk_floor/iron_smooth, /area/centcom/syndicate_mothership/control) +"Sz" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/structure/sign/poster/contraband/cybersun_six_hundred/directional/east, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "SD" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -4217,6 +4294,12 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bombthreat) +"SH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, +/turf/closed/indestructible/opsglass, +/area/centcom/syndicate_mothership/control) "SJ" = ( /obj/machinery/atmospherics/components/trinary/filter{ dir = 8 @@ -4242,6 +4325,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /turf/closed/indestructible/opsglass, /area/centcom/syndicate_mothership/control) +"SN" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/smooth_half, +/area/centcom/syndicate_mothership/control) "SR" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, @@ -4352,12 +4441,6 @@ }, /turf/open/floor/wood/tile, /area/centcom/syndicate_mothership/control) -"TH" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/centcom/syndicate_mothership/control) "TK" = ( /obj/structure/barricade/sandbags, /obj/effect/light_emitter{ @@ -4405,6 +4488,12 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/control) +"Uc" = ( +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Um" = ( /obj/machinery/button/door/directional/south{ id = "syn_ordmix_vent"; @@ -4457,10 +4546,28 @@ }, /turf/open/floor/plating/icemoon, /area/centcom/syndicate_mothership/control) +"UC" = ( +/obj/structure/chair/greyscale{ + dir = 4 + }, +/obj/effect/landmark/start/nukeop_base/overwatch, +/turf/open/floor/mineral/plastitanium, +/area/centcom/syndicate_mothership) "UE" = ( /obj/machinery/light/cold/directional/east, /turf/open/floor/plating, /area/centcom/syndicate_mothership/control) +"UH" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/machinery/door/airlock/hatch{ + name = "Gangway" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/centcom/syndicate_mothership/control) "Va" = ( /obj/effect/turf_decal/syndicateemblem/middle/left{ dir = 8 @@ -4481,6 +4588,13 @@ /obj/structure/flora/rock/pile/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) +"Vq" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/syndicate_pistol/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "Vr" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -4545,12 +4659,15 @@ /obj/item/stack/sheet/mineral/silver/fifty, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) -"Wc" = ( -/obj/machinery/vending/coffee, +"Wb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, -/turf/open/floor/mineral/titanium, +/turf/open/floor/catwalk_floor/iron_dark, /area/centcom/syndicate_mothership/control) "Wo" = ( /obj/effect/light_emitter{ @@ -4562,16 +4679,6 @@ "Wp" = ( /turf/open/floor/iron/smooth, /area/centcom/syndicate_mothership/control) -"Wr" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, -/turf/open/floor/catwalk_floor/titanium, -/area/centcom/syndicate_mothership/control) "Ws" = ( /obj/structure/flora/tree/pine/style_random, /obj/effect/light_emitter{ @@ -4580,9 +4687,16 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) -"Wu" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark/textured_large, +"Wt" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/hatch{ + name = "Security Checkpoint" + }, +/turf/open/floor/plating, /area/centcom/syndicate_mothership/control) "Wz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -4609,25 +4723,18 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) -"WG" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 +"WD" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 5 }, -/obj/structure/sign/poster/contraband/syndicate_pistol/directional/north, -/turf/open/floor/mineral/titanium, +/turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/control) "WI" = ( /obj/structure/sign/poster/contraband/revolver/directional/south, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"WR" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red{ - dir = 4 - }, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/dark/textured_large, +"WQ" = ( +/turf/open/floor/circuit/red/no_power, /area/centcom/syndicate_mothership/control) "WS" = ( /obj/structure/sign/poster/contraband/energy_swords/directional/north, @@ -4652,22 +4759,9 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/centcom/syndicate_mothership/control) -"Xj" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/red{ - dir = 1 - }, -/obj/machinery/recharger, -/turf/open/floor/iron/dark/textured_large, -/area/centcom/syndicate_mothership/control) "Xk" = ( /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership) -"Xu" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/landmark/start/nukeop_base, -/turf/open/floor/wood/tile, -/area/centcom/syndicate_mothership/control) "Xv" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -4748,12 +4842,6 @@ dir = 1 }, /area/centcom/syndicate_mothership/control) -"XZ" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/centcom/syndicate_mothership/control) "Yd" = ( /obj/machinery/camera/autoname/directional/south{ network = list("nukie") @@ -4795,6 +4883,15 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, /area/centcom/syndicate_mothership/control) +"YM" = ( +/obj/effect/turf_decal/siding/red, +/obj/item/toy/nuke{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/centcom/syndicate_mothership/control) "YO" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -6512,7 +6609,7 @@ HW wW Kq sv -pS +UC fV Kq CX @@ -6939,7 +7036,7 @@ Pc ZZ DZ gE -my +HE uX Jc ek @@ -7552,7 +7649,7 @@ bF DZ al Gd -MU +RV YO DZ tL @@ -7652,7 +7749,7 @@ VK BD sO DZ -AV +jd mK er TS @@ -7757,7 +7854,7 @@ DZ OS TG jT -du +nV DZ Dy Wp @@ -7857,7 +7954,7 @@ VK GE DZ Ni -Xu +Fl mL BH DZ @@ -9382,16 +9479,16 @@ bW qw nw MP -ng +Ps DZ VK VK VK VK DZ -Ed -GI -IM +om +Cn +Og wG wG Te @@ -9484,16 +9581,16 @@ bW qw qw qw -ng +Ps hb TC FR TC TC hb -ZZ -Me -wc +qN +ux +ov wG AL DZ @@ -9586,20 +9683,20 @@ bW qw qw qw -ng +Ps qJ TC TC FR TC qJ -ZZ -Me -wc +qN +ux +ov wG wG DZ -Ja +Fo Ov DZ DZ @@ -9695,14 +9792,14 @@ Xv KE VK DZ -WG -ij -zH +Vq +ww +OF wG wG -ru -XZ -TH +qR +JE +oA Ov DZ Ox @@ -9797,14 +9894,14 @@ so uX zL DZ -fb -Wr -zH +wD +gu +OF wG wG -ru -we -rw +qR +WD +iU Ov DZ Ox @@ -9892,20 +9989,20 @@ bW qw qw qw -AN +xt uX uX uX uX uX RA -ZZ -Me -wc +qN +ux +ov wG lE DZ -Ja +Fo Ov DZ DZ @@ -9994,19 +10091,19 @@ bW qw qw qw -AN +xt LS Mn uX ZH LN DZ -Fp -go -as +nG +cY +Sz wG wG -wS +DQ DZ DZ DZ @@ -10106,12 +10203,11 @@ DZ DZ qp DZ -gB -gB -DZ -mz -Wc +NY +NY DZ +cC +HN DZ DZ DZ @@ -10119,6 +10215,7 @@ DZ DZ VK VK +VK Ov DZ XC @@ -10208,20 +10305,20 @@ DZ pK pg VK -ZZ -ZZ -dn +wX +SN +ih qN qN -qN -Wu -ov -or +zl +fU +UH zE sl Ov Ov Ov +Ov DZ Ox Ox @@ -10310,14 +10407,14 @@ DZ CM FN VK -ZZ -ZZ -IV -tv -WR -AO -iV -ov +AE +vB +vn +Le +Le +Le +mC +DZ DZ DZ DZ @@ -10412,14 +10509,13 @@ DZ DZ eg tL -bp -ZZ -IV -IL -Hs -Xj -iV -ov +cW +yb +qN +aS +CW +Dt +mC Cg DZ Ox @@ -10428,6 +10524,7 @@ Ox Ox Ox Ox +Ox sq Ox sU @@ -10511,20 +10608,20 @@ Ld ol zo VK -ZZ -ZZ -Me -ZZ -ZZ -IV -rb -au -LB -iV -ov -ah +qN +qN +ux +AE +yb +qN +YM +nI +oU +mC +KT DZ Ox +Ox sq sq Ox @@ -10613,18 +10710,17 @@ Tc Ib Ib en -xj -xj -Me -ZZ -ZZ -IV -Fm -Lk -tu -iV -ov -nD +Pp +Pp +KB +AE +yb +qN +eM +WQ +oH +mC +Jr DZ Ox Ox @@ -10633,6 +10729,7 @@ Ox Ox Ox Ox +Ox sU sU sU @@ -10715,21 +10812,21 @@ Ld XL RQ VK -ZZ -ZZ -Me -ZZ -ZZ -il -dV -dV -dV -lc -lo +MF +MF +Wb +AE +yb +qN +kf +KX +iz +mC ec DZ DZ Ox +Ox sU sU sU @@ -10817,21 +10914,21 @@ DZ DZ DZ DZ -DZ -VK -Se VK -ZZ -pr -oh -vv -Fq -oD -ov +Wt +SH +cW +Uc +FQ +JG +JG +JG +mC Nd gf DZ Ox +Ox sU sU sU @@ -10919,21 +11016,21 @@ DZ tJ HW HW -Zt VK qw VK -qv -pr -ya -PF -ya -oD -OF +rO +fr +JY +dV +dV +dV +Ne DZ DZ DZ Ox +Ox sU sU sU @@ -11021,21 +11118,21 @@ QM HW HW lj -HW VK qw VK DZ -VK -wb -wq -dw -VK -DZ +bS +fP +FE +FC +IA +uY DZ Ox Ox Ox +Ox sU sU sU @@ -11123,20 +11220,20 @@ HW HW HW HW -tJ VK Hv VK -Ho -VK -VK -VK -VK -VK -Zt -KU +uT +bS +pp +ya +PF +ya +Re +DZ Ye uT +Ox Ye sU sU @@ -11225,20 +11322,20 @@ nz Zt HW HW -HW VK qw VK -HW -QM -HW -Zt -HW -HW -lj -KU +uT +DZ +VK +wb +wq +dB +VK +DZ Ye uT +Ox Ye sU sU @@ -11327,18 +11424,18 @@ HW HW HW QM -Zt VK qw VK +uT Zt +VK +VK +VK +VK +VK HW -HW -HW -tJ -HW -HW -KU +zI KU Ye Ye @@ -11429,10 +11526,10 @@ uT uT uT uT -HW VK -vx +Ic VK +uT HW tJ HW @@ -11532,11 +11629,11 @@ uT uT uT uT -uT Du uT uT uT +uT HW QM HW diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index 67b5155b9b4c..f474297cc1ed 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -64,7 +64,7 @@ /area/misc/survivalpod) "l" = ( /obj/structure/table/wood/fancy/black, -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/random/food_or_drink/keg, /turf/open/floor/pod/dark, /area/misc/survivalpod) "m" = ( diff --git a/_maps/templates/unit_tests.dmm b/_maps/templates/unit_tests.dmm index a3bb3f87471c..72d1633d73de 100644 --- a/_maps/templates/unit_tests.dmm +++ b/_maps/templates/unit_tests.dmm @@ -3,15 +3,15 @@ /turf/closed/indestructible, /area/misc/testroom) "m" = ( -/turf/open/floor/iron, +/turf/open/indestructible, /area/misc/testroom) "r" = ( /obj/effect/landmark/unit_test_top_right, -/turf/open/floor/iron, +/turf/open/indestructible, /area/misc/testroom) "L" = ( /obj/effect/landmark/unit_test_bottom_left, -/turf/open/floor/iron, +/turf/open/indestructible, /area/misc/testroom) (1,1,1) = {" diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index a41b0c87d93c..8a17361fcac0 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -689,7 +689,7 @@ /turf/open/floor/plating, /area/virtual_domain/fullbright) "Ev" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/spawner/holiday/bar_keg, /turf/open/floor/wood, /area/virtual_domain/fullbright) "EC" = ( diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm index 4688e496bbfa..009ccc6c76b9 100644 --- a/_maps/virtual_domains/island_brawl.dmm +++ b/_maps/virtual_domains/island_brawl.dmm @@ -72,7 +72,7 @@ /area/virtual_domain) "aZ" = ( /obj/structure/table/wood, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 8; pixel_x = 6 }, @@ -786,7 +786,7 @@ /area/virtual_domain/fullbright) "iY" = ( /obj/item/storage/bag/tray, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 4; pixel_x = -1 }, @@ -1124,11 +1124,11 @@ /area/virtual_domain) "oq" = ( /obj/structure/table/wood, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 13; pixel_x = 6 }, -/obj/item/food/grown/watermelon{ +/obj/item/food/grown/melonlike/watermelon{ pixel_y = 8; pixel_x = -4 }, diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm index 12e17b3c68a0..0bc444cab153 100644 --- a/_maps/virtual_domains/pirates.dmm +++ b/_maps/virtual_domains/pirates.dmm @@ -300,7 +300,7 @@ /turf/open/floor/carpet/blue, /area/virtual_domain) "rm" = ( -/obj/structure/closet/crate/goldcrate, +/obj/structure/closet/crate/goldcrate/stocked, /turf/open/misc/dirt/jungle, /area/virtual_domain/protected_space) "rn" = ( diff --git a/_maps/virtual_domains/stairs_and_cliffs.dmm b/_maps/virtual_domains/stairs_and_cliffs.dmm index e95f96ffe516..513b62f11b76 100644 --- a/_maps/virtual_domains/stairs_and_cliffs.dmm +++ b/_maps/virtual_domains/stairs_and_cliffs.dmm @@ -146,7 +146,7 @@ /area/virtual_domain/safehouse) "wZ" = ( /obj/effect/baseturf_helper/virtual_domain, -/turf/closed/indestructible/rock/snow/ice, +/turf/closed/indestructible/ice, /area/icemoon/underground/explored/virtual_domain) "xB" = ( /obj/structure/railing/corner{ @@ -281,7 +281,7 @@ /turf/open/floor/wood, /area/icemoon/underground/explored/virtual_domain) "Qv" = ( -/turf/closed/indestructible/rock/snow/ice, +/turf/closed/indestructible/ice, /area/icemoon/underground/explored/virtual_domain) "RD" = ( /turf/closed/indestructible/binary, diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm index 34dc74685bd1..e821bcb8387f 100644 --- a/_maps/virtual_domains/wendigo.dmm +++ b/_maps/virtual_domains/wendigo.dmm @@ -5,7 +5,7 @@ }, /area/icemoon/underground/explored/virtual_domain) "ab" = ( -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/explored/virtual_domain) "ac" = ( /obj/effect/turf_decal/weather/snow/corner{ @@ -359,7 +359,7 @@ /area/icemoon/underground/explored/virtual_domain) "Vt" = ( /obj/structure/flora/grass/brown/style_random, -/turf/closed/indestructible/rock/snow/ice/ore, +/turf/closed/indestructible/rock/snow/ore, /area/icemoon/underground/explored/virtual_domain) (1,1,1) = {" diff --git a/_maps/wawastation.json b/_maps/wawastation.json deleted file mode 100644 index 1dc86affba79..000000000000 --- a/_maps/wawastation.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "exclude_from_ci": true, - "version": 1, - "map_name": "Wawastation", - "map_path": "map_files/wawastation", - "map_file": "wawastation.dmm", - "give_players_hooks": 1, - "shuttles": { - "cargo": "cargo_box", - "ferry": "ferry_fancy", - "whiteship": "whiteship_meta", - "emergency": "emergency_wawa" - }, - "traits": [ - { - "Baseturf": "/turf/open/misc/asteroid/airless", - "Linkage": "Cross" - }, - { - "Baseturf": "/turf/open/openspace", - "Linkage": "Cross" - } - ], - "job_changes": { - "Cook": { - "additional_cqc_areas": [ - "/area/station/service/bar", - "/area/station/commons/lounge" - ] - }, - "Captain": { - "special_charter": "asteroid" - } - } -} diff --git a/bin/tgui-bench.cmd b/bin/tgui-bench.cmd deleted file mode 100644 index 333115f79548..000000000000 --- a/bin/tgui-bench.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-bench %* -pause diff --git a/bin/tgui-sonar.cmd b/bin/tgui-sonar.cmd deleted file mode 100644 index e083f65362ac..000000000000 --- a/bin/tgui-sonar.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-sonar %* diff --git a/biome.json b/biome.json index 73718decc5b2..e00e95dc4c01 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.3.10/schema.json", + "$schema": "https://biomejs.dev/schemas/2.4.16/schema.json", "assist": { "actions": { "source": { diff --git a/bun.lock b/bun.lock index fde39f4c0a08..12a035251e19 100644 --- a/bun.lock +++ b/bun.lock @@ -4,30 +4,30 @@ "workspaces": { "": { "devDependencies": { - "@biomejs/biome": "^2.3.10", - "prettier": "^3.7.4", - }, - }, + "@biomejs/biome": "^2.4.16", + "prettier": "^3.8.3" + } + } }, "packages": { - "@biomejs/biome": ["@biomejs/biome@2.3.10", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.10", "@biomejs/cli-darwin-x64": "2.3.10", "@biomejs/cli-linux-arm64": "2.3.10", "@biomejs/cli-linux-arm64-musl": "2.3.10", "@biomejs/cli-linux-x64": "2.3.10", "@biomejs/cli-linux-x64-musl": "2.3.10", "@biomejs/cli-win32-arm64": "2.3.10", "@biomejs/cli-win32-x64": "2.3.10" }, "bin": { "biome": "bin/biome" } }, "sha512-/uWSUd1MHX2fjqNLHNL6zLYWBbrJeG412/8H7ESuK8ewoRoMPUgHDebqKrPTx/5n6f17Xzqc9hdg3MEqA5hXnQ=="], + "@biomejs/biome": ["@biomejs/biome@2.4.16", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.4.16", "@biomejs/cli-darwin-x64": "2.4.16", "@biomejs/cli-linux-arm64": "2.4.16", "@biomejs/cli-linux-arm64-musl": "2.4.16", "@biomejs/cli-linux-x64": "2.4.16", "@biomejs/cli-linux-x64-musl": "2.4.16", "@biomejs/cli-win32-arm64": "2.4.16", "@biomejs/cli-win32-x64": "2.4.16" }, "bin": { "biome": "bin/biome" } }, "sha512-x9ajFh1zChVybCiM3TN6OD4phAqLgtPZjFrZF+aTMYCPjwBO+k529TX7PPsAqtGNLeV4UgzwQnowEgS7bGmzcA=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-M6xUjtCVnNGFfK7HMNKa593nb7fwNm43fq1Mt71kpLpb+4mE7odO8W/oWVDyBVO4ackhresy1ZYO7OJcVo/B7w=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.4.16", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wxPvu4XOA85YJk9ixSWUmq/QBHbid85BISbOAqqBM/5xQpPk9ayjk5375tOlSC0BeCwNSbPFafQBm+vBumXq0A=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-Vae7+V6t/Avr8tVbFNjnFSTKZogZHFYl7MMH62P/J1kZtr0tyRQ9Fe0onjqjS2Ek9lmNLmZc/VR5uSekh+p1fg=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.4.16", "", { "os": "darwin", "cpu": "x64" }, "sha512-xFCqGPwYusQJp4N4NJLi1XJiZqjwFdjhT+KqtNy+Ug3qgfczqnTa6MSDvxJF6TkuDLoYJItMapz6tAf7kCekFw=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-hhPw2V3/EpHKsileVOFynuWiKRgFEV48cLe0eA+G2wO4SzlwEhLEB9LhlSrVeu2mtSn205W283LkX7Fh48CaxA=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.4.16", "", { "os": "linux", "cpu": "arm64" }, "sha512-2kFb4//jxfZaP6D+Rj5VkHkxgyD9EoRAVBEQb8PKRv+s4NO2zYNJKXFaJmK1CmhufJOWEfpHKaRbOja7qjmdhQ=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-B9DszIHkuKtOH2IFeeVkQmSMVUjss9KtHaNXquYYWCjH8IstNgXgx5B0aSBQNr6mn4RcKKRQZXn9Zu1rM3O0/A=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.4.16", "", { "os": "linux", "cpu": "arm64" }, "sha512-oYxnW0ARfJkr72ezzF2OR8N/rtkgLUQeYtF8cFhVswbknHxtTcmzSsanVJP8yQKnGpGpc2ck6c5zLvHahL6Cbg=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-wwAkWD1MR95u+J4LkWP74/vGz+tRrIQvr8kfMMJY8KOQ8+HMVleREOcPYsQX82S7uueco60L58Wc6M1I9WA9Dw=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.4.16", "", { "os": "linux", "cpu": "x64" }, "sha512-NbcBbi/nJqn5baae6wqRXdS7Gadf2uRpehSh6vMSYpG8OhkXl/Xg8aorWrJ+9VWqAT5ml90alLvorkpMW0nBwQ=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-QTfHZQh62SDFdYc2nfmZFuTm5yYb4eO1zwfB+90YxUumRCR171tS1GoTX5OD0wrv4UsziMPmrePMtkTnNyYG3g=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.4.16", "", { "os": "linux", "cpu": "x64" }, "sha512-iHDS+MCM65DPqWGu+ECC3uoALyj2H7F4nVUPxIPjz/PIl94EUu+EDfGZDzFP+NY1EOPVt9NQvwFqq7HdMmowdg=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-o7lYc9n+CfRbHvkjPhm8s9FgbKdYZu5HCcGVMItLjz93EhgJ8AM44W+QckDqLA9MKDNFrR8nPbO4b73VC5kGGQ=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.4.16", "", { "os": "win32", "cpu": "arm64" }, "sha512-0rgImMsNb5v/chhkIFe3wu7PEFClS6RBAYUijGL9UsYN3PanSaoK24HSSuSJb1pYbYYVjzAyZTl3gtjJ84BM8A=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.10", "", { "os": "win32", "cpu": "x64" }, "sha512-pHEFgq7dUEsKnqG9mx9bXihxGI49X+ar+UBrEIj3Wqj3UCZp1rNgV+OoyjFgcXsjCWpuEAF4VJdkZr3TrWdCbQ=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.4.16", "", { "os": "win32", "cpu": "x64" }, "sha512-Kp85jgoBHa05gix6UIRjfCDiUV3w/8VIdZ247VyyO2gEjaw12WEVhdIjlxp/AMzXxqxQwbxNTDVZ3Mwd2RG5rw=="], - "prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], + "prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="] } } diff --git a/code/__DEFINES/ai/ai.dm b/code/__DEFINES/ai/ai.dm index f8285b075e4b..a6724aeb4aae 100644 --- a/code/__DEFINES/ai/ai.dm +++ b/code/__DEFINES/ai/ai.dm @@ -21,6 +21,7 @@ ///For JPS pathing, the maximum length of a path we'll try to generate. Should be modularized depending on what we're doing later on #define AI_MAX_PATH_LENGTH 30 // 30 is possibly overkill since by default we lose interest after 14 tiles of distance, but this gives wiggle room for weaving around obstacles #define AI_BOT_PATH_LENGTH 60 +#define AI_MULEBOT_PATH_LENGTH 150 //we making a pilgramage sometimes... // How far should we, by default, be looking for interesting things to de-idle? #define AI_DEFAULT_INTERESTING_DIST 10 diff --git a/code/__DEFINES/ai/bot_keys.dm b/code/__DEFINES/ai/bot_keys.dm index 0c7758f61348..653bace09d8a 100644 --- a/code/__DEFINES/ai/bot_keys.dm +++ b/code/__DEFINES/ai/bot_keys.dm @@ -149,3 +149,12 @@ #define BB_ROBOT_TARGET "robot_target" ///key that holds materials we can refill #define BB_REFILLABLE_TARGET "refillable_target" + + +//mulebots +///key that holds our delivery destination's name +#define BB_MULEBOT_DESTINATION_BEACON "mulebot_destination" +///key that holds our home port's name +#define BB_MULEBOT_HOME_BEACON "mulebot_home_beacon" +///key that holds our current delivery target atom +#define BB_MULEBOT_TRAVEL_TARGET "mulebot_travel_target" diff --git a/code/__DEFINES/atmospherics/atmos_core.dm b/code/__DEFINES/atmospherics/atmos_core.dm index 0b5742d24a57..e2c66a83095e 100644 --- a/code/__DEFINES/atmospherics/atmos_core.dm +++ b/code/__DEFINES/atmospherics/atmos_core.dm @@ -1,11 +1,4 @@ //LISTMOS -//indices of values in gas lists. -///Amount of total moles in said gas mixture -#define MOLES 1 -///Archived version of MOLES -#define ARCHIVE 2 -///All gas related variables -#define GAS_META 3 ///Gas specific heat per mole #define META_GAS_SPECIFIC_HEAT 1 ///Name of the gas @@ -22,6 +15,8 @@ #define META_GAS_FUSION_POWER 7 ///Short description of the gas. #define META_GAS_DESC 8 +///Length of gas meta array +#define META_GAS_LENGTH 8 //ATMOS //stuff you should probably leave well alone! /// kPa*L/(K*mol) @@ -54,7 +49,7 @@ /// Molar accuracy to round to #define MOLAR_ACCURACY 1E-4 /// Types of gases (based on gaslist_cache) -#define GAS_TYPE_COUNT GLOB.gaslist_cache.len +#define GAS_TYPE_COUNT 20 /// Maximum error caused by QUANTIZE when removing gas (roughly, in reality around 2 * MOLAR_ACCURACY less) #define MAXIMUM_ERROR_GAS_REMOVAL (MOLAR_ACCURACY * GAS_TYPE_COUNT) @@ -182,3 +177,5 @@ #define ATMOS_PRESSURE_APPROXIMATION_ITERATIONS 20 /// We deal with big numbers and a lot of math, things are bound to get imprecise. Take this traveller. #define ATMOS_PRESSURE_ERROR_TOLERANCE 0.01 +/// Helper function for retrieving gas meta info for use in performace critical places +#define GAS_META /datum/gas_mixture::gas_meta diff --git a/code/__DEFINES/atmospherics/atmos_helpers.dm b/code/__DEFINES/atmospherics/atmos_helpers.dm index ce3e2f40a687..cd6ca3aa0dd8 100644 --- a/code/__DEFINES/atmospherics/atmos_helpers.dm +++ b/code/__DEFINES/atmospherics/atmos_helpers.dm @@ -53,41 +53,24 @@ ///Calculate the thermal energy of the selected gas (J) #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) -///Directly adds a gas to a gas mixture without checking for its presence beforehand, use only if is certain the absence of said gas -#define ADD_GAS(gas_id, out_list)\ - var/list/tmp_gaslist = GLOB.gaslist_cache[gas_id]; out_list[gas_id] = tmp_gaslist.Copy(); - -///Adds a gas to a gas mixture but checks if is already present, faster than the same proc -#define ASSERT_GAS(gas_id, gas_mixture) ASSERT_GAS_IN_LIST(gas_id, gas_mixture.gases) - -///Adds a gas to a gas LIST but checks if is already present, accepts a list instead of a datum, so faster if the list is locally cached -#define ASSERT_GAS_IN_LIST(gas_id, gases) if (!gases[gas_id]) { ADD_GAS(gas_id, gases) }; - -//prefer this to gas_mixture/total_moles in performance critical areas -///Calculate the total moles of the gas mixture, faster than the proc, good for performance critical areas -#define TOTAL_MOLES(cached_gases, out_var)\ - out_var = 0;\ - for(var/total_moles_id in cached_gases){\ - out_var += cached_gases[total_moles_id][MOLES];\ - } - GLOBAL_LIST_INIT(nonoverlaying_gases, typecache_of_gases_with_no_overlays()) ///Returns a list of overlays of every gas in the mixture -#define GAS_OVERLAYS(gases, out_var, z_layer_turf)\ +#define GAS_OVERLAYS(moles, out_var, z_layer_turf)\ do { \ out_var = list();\ var/offset = GET_TURF_PLANE_OFFSET(z_layer_turf) + 1;\ - for(var/_ID in gases){\ - if(GLOB.nonoverlaying_gases[_ID]) continue;\ - var/_GAS = gases[_ID];\ - var/_GAS_META = _GAS[GAS_META];\ - if(_GAS[MOLES] <= _GAS_META[META_GAS_MOLES_VISIBLE]) continue;\ - var/_GAS_OVERLAY = _GAS_META[META_GAS_OVERLAY][offset];\ - out_var += _GAS_OVERLAY[min(TOTAL_VISIBLE_STATES, CEILING(_GAS[MOLES] / MOLES_GAS_VISIBLE_STEP, 1))];\ - } \ + var/list/_META_MOLES_VISIBLE = GAS_META[META_GAS_MOLES_VISIBLE];\ + var/list/_META_GAS_OVERLAY = GAS_META[META_GAS_OVERLAY];\ + for(var/gas_id, amount in moles){\ + if(GLOB.nonoverlaying_gases[gas_id]) continue;\ + if(amount <= _META_MOLES_VISIBLE[gas_id]) continue;\ + var/_GAS_OVERLAY = _META_GAS_OVERLAY[gas_id][offset];\ + out_var += _GAS_OVERLAY[min(TOTAL_VISIBLE_STATES, CEILING(amount / MOLES_GAS_VISIBLE_STEP, 1))];\ + }\ }\ while (FALSE) + #ifdef TESTING GLOBAL_LIST_INIT(atmos_adjacent_savings, list(0,0)) #define CALCULATE_ADJACENT_TURFS(T, state) if (SSair.adjacent_rebuild[T]) { GLOB.atmos_adjacent_savings[1] += 1 } else { GLOB.atmos_adjacent_savings[2] += 1; SSair.adjacent_rebuild[T] = state} diff --git a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm index cd4bcf088ee8..33d0ed270b94 100644 --- a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm +++ b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm @@ -27,6 +27,8 @@ #define SPACE_TEMP_NOBLIUM GAS_HYPER_NOBLIUM + "=7500;TEMP=2.7" ///Xenobio slime containment turf #define XENOBIO_BZ GAS_BZ + "=100;TEMP=293.15" +///Gas mix snowflaked onto the moonbase19 gas mixture. +#define MOONBASE19_ATMOS GAS_CO2 + "=48.7;" + GAS_N2 + "=13.2;" + GAS_O2 + "=32.4;TEMP=251" //ATMOSPHERICS DEPARTMENT GAS TANK TURFS #define ATMOS_TANK_N2O GAS_N2O + "=6000;TEMP=293.15" diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 91c9e3eae1f2..bfb97ae7a46f 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -3,19 +3,19 @@ // /datum/atom_hud expects these to be unique // these need to be strings in order to make them associative lists -/// dead, alive, sick, health status -#define HEALTH_HUD "1" /// a simple line rounding the mob's number health +#define HEALTH_HUD "1" +/// dead, alive, sick, health status #define STATUS_HUD "2" /// the job asigned to your ID #define ID_HUD "3" /// wanted, released, parroled, security status #define WANTED_HUD "4" -/// loyality implant +/// shows loyalty implant if we have one #define IMPLOYAL_HUD "5" -/// chemical implant +/// shows implant type installed #define IMPSEC_FIRST_HUD "6" -/// tracking implant +/// shows implant type installed if we have multiple. most recently implanted. #define IMPSEC_SECOND_HUD "7" /// Silicon/Mech/Circuit Status #define DIAG_STAT_HUD "8" @@ -38,9 +38,9 @@ #define AI_DETECT_HUD "17" /// Displays launchpads' targeting reticle #define DIAG_LAUNCHPAD_HUD "18" -//for antag huds. these are used at the /mob level +/// for antag huds. these are used at the /mob level #define ANTAG_HUD "19" -// for fans to identify pins +/// for fans to identify pins #define FAN_HUD "20" /// Mech camera HUD #define DIAG_CAMERA_HUD "21" diff --git a/code/__DEFINES/bodyparts.dm b/code/__DEFINES/bodyparts.dm index 9aa4951ed796..a9b152578115 100644 --- a/code/__DEFINES/bodyparts.dm +++ b/code/__DEFINES/bodyparts.dm @@ -54,8 +54,6 @@ #define LIMB_COLOR_FISH_INFUSION 15 /// Carp infusion color priority #define LIMB_COLOR_CARP_INFUSION 20 -/// Untextured fish suicide color priority -#define LIMB_COLOR_CS_SOURCE_SUICIDE 30 /// Base priority for atom colors, gets atom priorities added to it #define LIMB_COLOR_ATOM_COLOR 40 /// Voidwalker effect color priority diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 722eb68de803..c255aa069dc7 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -332,6 +332,45 @@ #define COLOR_PRIDE_BLUE "#42FFF2" #define COLOR_PRIDE_PURPLE "#5D5DFC" +#define PRIDE_FLAG_COLORS list(COLOR_PRIDE_PURPLE, COLOR_PRIDE_BLUE, COLOR_PRIDE_GREEN, COLOR_PRIDE_YELLOW, COLOR_PRIDE_ORANGE, COLOR_PRIDE_RED) + +#define COLOR_LESBIAN_RED "#D62800" +#define COLOR_LESBIAN_ORANGE "#FF9B56" +#define COLOR_LESBIAN_PINK "#D452A6" +#define COLOR_LESBIAN_MAGENTA "#A40062" + +#define LESBIAN_FLAG_COLORS list(COLOR_LESBIAN_MAGENTA, COLOR_LESBIAN_PINK, COLOR_LESBIAN_ORANGE, COLOR_LESBIAN_RED) + +#define COLOR_GAY_GREEN "#078D70" +#define COLOR_GAY_LIGHT_GREEN "#98E8C1" +#define COLOR_GAY_LIGHT_BLUE "#7BADE2" +#define COLOR_GAY_BLUE "#3D1A78" + +#define GAY_MAN_FLAG_COLORS list(COLOR_GAY_BLUE, COLOR_GAY_LIGHT_BLUE, COLOR_GAY_LIGHT_GREEN, COLOR_GAY_GREEN) + +#define COLOR_TRANS_BLUE "#5BCEFA" +#define COLOR_TRANS_PINK "#F5A9B8" + +#define TRANS_FLAG_COLORS list(COLOR_TRANS_PINK, COLOR_WHITE, COLOR_TRANS_PINK, COLOR_TRANS_BLUE) + +#define COLOR_BI_PINK "#D60270" +#define COLOR_BI_PURPLE "#9B4F96" +#define COLOR_BI_BLUE "#0038A8" + +#define BI_FLAG_COLORS list(COLOR_BI_BLUE, COLOR_BI_PURPLE, COLOR_BI_PINK) + +#define COLOR_ACE_BLACK "#292929" +#define COLOR_ACE_GREY "#888888" +#define COLOR_ACE_PURPLE "#800080" + +#define ACE_FLAG_COLORS list(COLOR_ACE_PURPLE, COLOR_WHITE, COLOR_ACE_GREY, COLOR_ACE_BLACK) + +#define COLOR_PAN_MAGENTA "#FF218C" +#define COLOR_PAN_YELLOW "#FFE45E" +#define COLOR_PAN_CYAN "#2CCAFF" + +#define PAN_FLAG_COLORS list(COLOR_PAN_CYAN, COLOR_PAN_YELLOW, COLOR_PAN_MAGENTA) + /// Colors for status/tram/incident displays #define COLOR_DISPLAY_RED "#BE3455" #define COLOR_DISPLAY_ORANGE "#FF9900" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 068257c2b5f2..deb4be811df4 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -125,7 +125,7 @@ DEFINE_BITFIELD(status_flags, list( #define GRAB_SUCCESS 2 //Grab breakout odds -//#define BASE_GRAB_RESIST_CHANCE 60 //base chance for whether or not you can escape from a grab // DARKPACK EDIT REMOVAL - STORYTELLER_DICE +#define BASE_GRAB_RESIST_CHANCE 60 //base chance for whether or not you can escape from a grab //slowdown when in softcrit. Note that crawling slowdown will also apply at the same time! #define SOFTCRIT_ADD_SLOWDOWN 2 diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_lighting.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_lighting.dm index 93bb52058370..0e5f73741e56 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_lighting.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_lighting.dm @@ -56,3 +56,8 @@ #define COMSIG_ATOM_OVERLAY_LIGHT_REMOVED "atom_overlay_light_removed" ///Above, but send to the holder of the light instead of the light source itself: (atom/movable/light_source) #define COMSIG_ATOM_HOLDER_OVERLAY_LIGHT_REMOVED "atom_holder_overlay_light_removed" + +/// Called when a light fixture is broken, from base of [/obj/machinery/light/break_light_tube]: (was_ok) +#define COMSIG_LIGHT_FIXTURE_BROKEN "light_fixture_broken" +/// Called when a light fixture is toggled on or off, from base of [/obj/machinery/light/toggle_light]: (new_status) +#define COMSIG_LIGHT_FIXTURE_TOGGLED "light_fixture_toggled" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm index 412f5701eebd..39e4ee1e0ba8 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm @@ -86,6 +86,11 @@ #define COMSIG_MOVABLE_SET_ANCHORED "movable_set_anchored" ///from base of atom/movable/setGrabState(): (newstate) #define COMSIG_MOVABLE_SET_GRAB_STATE "living_set_grab_state" +/// from base of mob/living/resist_grab(), to the grabber: (mob/living/grabbed, list/grab_stats) +#define COMSIG_MOVABLE_GRABBED_RESISTING "movable_grabbed_resisting" + #define GRAB_STAT_EFFECTIVE_STATE 1 + #define GRAB_STAT_FAIL_DAMAGE 2 + #define GRAB_STAT_ESCAPE_CHANCE 3 ///called when the movable's glide size is updated: (new_glide_size) #define COMSIG_MOVABLE_UPDATE_GLIDE_SIZE "movable_glide_size" ///Called when a movable is hit by a plunger in layer mode, from /obj/item/plunger/attack_atom() diff --git a/code/__DEFINES/dcs/signals/signals_camera.dm b/code/__DEFINES/dcs/signals/signals_camera.dm index 92e9b94f35bb..06ccb68bd145 100644 --- a/code/__DEFINES/dcs/signals/signals_camera.dm +++ b/code/__DEFINES/dcs/signals/signals_camera.dm @@ -1,4 +1,6 @@ ///Signal sent when a /datum/trackable found a target: (mob/living/target) #define COMSIG_TRACKABLE_TRACKING_TARGET "comsig_trackable_tracking_target" +///Signal sent when a /datum/trackable begins tracking a new target, before any eye movement: (mob/living/target) +#define COMSIG_TRACKABLE_TRACKING_STARTED "comsig_trackable_tracking_started" ///Signal sent when the mob a /datum/trackable is actively following changes glide size: mob/living/target, new_glide_size) #define COMSIG_TRACKABLE_GLIDE_CHANGED "comsig_trackable_glide_changed" diff --git a/code/__DEFINES/dcs/signals/signals_fax.dm b/code/__DEFINES/dcs/signals/signals_fax.dm new file mode 100644 index 000000000000..3cb78d607759 --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_fax.dm @@ -0,0 +1 @@ +#define COMSIG_FAX_MESSAGE_RECEIVED "fax_message_received" diff --git a/code/__DEFINES/dcs/signals/signals_food.dm b/code/__DEFINES/dcs/signals/signals_food.dm index ba3b9415080c..753786574727 100644 --- a/code/__DEFINES/dcs/signals/signals_food.dm +++ b/code/__DEFINES/dcs/signals/signals_food.dm @@ -39,10 +39,10 @@ #define COMPONENT_MICROWAVE_SUCCESS (1<<0) /// Returned on "failure" - an item was produced but it was the default fail recipe #define COMPONENT_MICROWAVE_BAD_RECIPE (1<<1) -///called on item when created through microwaving (): (obj/machinery/microwave/M, cooking_efficiency) -#define COMSIG_ITEM_MICROWAVE_COOKED "microwave_cooked" -///called on the ingredient through microwawing: (result) -#define COMSIG_ITEM_MICROWAVE_COOKED_FROM "item_microwave_cooked_from" +///called on the ingredient through microwawing: (result, cooking_efficiency) +#define COMSIG_ITEM_MICROWAVE_COOKED "item_microwave_cooked_from" +///called on item when created through microwaving (): (coooked_from, cooking_efficiency) +#define COMSIG_ITEM_MICROWAVE_COOKED_RESULT "microwave_cooked" // Grilling foods (griddle, grill, and bonfire) ///Called when an object is placed onto a griddle @@ -79,6 +79,9 @@ ///Sent to the newly spawned object when it's baked in an oven. #define COMSIG_ITEM_BAKED_RESULT "item_baked_result" +///When an object is used in a food processor recipe: (atom/movable/result, datum/food_processor_process/recipe) +#define SIGNAL_USED_IN_FOOD_PROCESSOR "movable_used_in_food_processor" + /// From /datum/element/basic_eating/finish_eating() : (mob/living/eater, mob/living/feeder) #define COMSIG_ITEM_EATEN_BY_BASIC_MOB "item_eaten_by_basic_mob" diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index 81c37f60afa5..f706e6b9fe9f 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -88,6 +88,14 @@ /// global signal when a global nullrod type is picked #define COMSIG_GLOB_NULLROD_PICKED "!nullrod_picked" +/// global signal when someone prays via prayer verb. +#define COMSIG_GLOB_SEND_PRAYER "!send_prayer" + #define ARG_PRAYING_MOB 1 + #define ARG_PRAYER_MSG 2 + #define ARG_PRAYER_TYPE 3 + #define ARG_PRAYER_SYMBOL 4 + #define ARG_PRAYED_DEITIES 5 + /// Global signal when light debugging is canceled #define COMSIG_LIGHT_DEBUG_DISABLED "!light_debug_disabled" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_basic.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_basic.dm index b1f2431ccbb3..b459c2530b13 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_basic.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_basic.dm @@ -35,3 +35,6 @@ #define COMPONENT_CANCEL_RAPTOR_GROWTH (1<<0) // Called when the revenant is to be released from its prison : (cause) #define COMSIG_REVENANT_RELEASE "revenant_release" + +/// Called when a proficient_miner mob mines a tile +#define COMSIG_PROFICIENT_MINER_MINED "proficient_miner_mined" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm index 87577cb73e46..13deb5794787 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm @@ -121,6 +121,8 @@ #define COMSIG_CARBON_REMOVE_OVERLAY "carbon_remove_overlay" ///Called when a carbon checks their mood #define COMSIG_CARBON_MOOD_CHECK "carbon_mod_check" +///Called when a carbon is adding a fire overlay +#define COMSIG_CARBON_GET_FIRE_OVERLAY "carbon_get_fire_overlay" // /mob/living/carbon/human signals @@ -153,7 +155,7 @@ #define COMSIG_MONKEY_HUMANIZE "monkey_humanize" ///From mob/living/carbon/human/suicide() -#define COMSIG_HUMAN_SUICIDE_ACT "human_suicide_act" +#define COMSIG_LIVING_SUICIDE_ACT "human_suicide_act" ///from base of /mob/living/carbon/regenerate_limbs(): (excluded_limbs) #define COMSIG_CARBON_REGENERATE_LIMBS "living_regen_limbs" @@ -167,7 +169,7 @@ /// Return to skip oxyloss and similar effects from blood level #define HANDLE_BLOOD_NO_OXYLOSS (1<<2) -/// from /datum/status_effect/limp/proc/check_step(mob/whocares, OldLoc, Dir, forced) iodk where it should go +/// from /datum/status_effect/limp/proc/check_step(mob/whocares, OldLoc, Dir, forced): (var/obj/item/bodypart/limping_leg) #define COMSIG_CARBON_LIMPING "mob_limp_check" #define COMPONENT_CANCEL_LIMP (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm index cf26bbbad24b..81697e545ee3 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm @@ -23,11 +23,11 @@ #define COMSIG_MOB_CANCEL_CLICKON (1<<0) ///from base of mob/alt_click_on_secodary(): (atom/A) #define COMSIG_MOB_ALTCLICKON_SECONDARY "mob_altclickon_secondary" -/// From base of /mob/living/simple_animal/bot/proc/bot_step() +/// From base of /mob/living/basic/bot/proc/bot_step() #define COMSIG_MOB_BOT_PRE_STEP "mob_bot_pre_step" /// Should always match COMPONENT_MOVABLE_BLOCK_PRE_MOVE as these are interchangeable and used to block movement. #define COMPONENT_MOB_BOT_BLOCK_PRE_STEP COMPONENT_MOVABLE_BLOCK_PRE_MOVE -/// From base of /mob/living/simple_animal/bot/proc/bot_step() +/// From base of /mob/living/basic/bot/proc/bot_step() #define COMSIG_MOB_BOT_STEP "mob_bot_step" /// From base of /mob/proc/update_held_items @@ -188,6 +188,9 @@ ///Called on user, from base of /datum/strippable_item/try_(un)equip() (atom/target, obj/item/equipping?) #define COMSIG_TRY_STRIP "try_strip" #define COMPONENT_CANT_STRIP (1<<0) +///Called when a mob's strip menu is attempting to be opened,from base /datum/element/strippable/proc/mouse_drop_onto (datum/source, atom/over, mob/user) +#define COMSIG_MOB_STRIP_MENU_OPEN "mob_strip_menu_open" + #define COMPONENT_BLOCK_STRIP_MENU_OPEN (1<<0) ///From /datum/component/face_decal/splat/Initialize() #define COMSIG_MOB_HIT_BY_SPLAT "hit_by_splat" ///From /obj/item/gun/proc/check_botched() @@ -285,3 +288,12 @@ /// from /mob/eye/camera/remote/assign_user(): (mob/living/new_user, mob/living/old_user) #define COMSIG_REMOTE_CAMERA_ASSIGN_USER "remote_camera_assign_user" + +///sent to TTS sounds when the volume preference is changed and applied +#define COMSIG_MOB_TTS_VOLUME_PREFERENCE_APPLIED "tts_volume_preference_applied" + +///sent to radio TTS sounds when the volume preference is changed and applied +#define COMSIG_MOB_TTS_RADIO_VOLUME_PREFERENCE_APPLIED "tts_radio_volume_preference_applied" + +///from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left) +#define COMSIG_ON_MULTIPLE_LIVES_RESPAWN "on_multiple_lives_respawn" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_silicon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_silicon.dm index 5fab93418bb7..ca40ca7aef0f 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_silicon.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_silicon.dm @@ -12,5 +12,3 @@ #define COMSIG_SILICON_AI_VACATE_APC "AI_vacate_apc" ///called when an AI's control is toggled #define COMSIG_SILICON_AI_SET_CONTROL_DISABLED "AI_set_control_disabled" -///called when borg module is activated/deactivated -#define COMSIG_SILICON_MODULE_ACTIVATION "borg_module_select" diff --git a/code/__DEFINES/dcs/signals/signals_moveloop.dm b/code/__DEFINES/dcs/signals/signals_moveloop.dm index 8a354f8bfbb1..95208dd1e811 100644 --- a/code/__DEFINES/dcs/signals/signals_moveloop.dm +++ b/code/__DEFINES/dcs/signals/signals_moveloop.dm @@ -11,3 +11,6 @@ #define COMSIG_MOVELOOP_JPS_REPATH "moveloop_jps_repath" ///from [/datum/move_loop/has_target/jps/on_finish_pathing] #define COMSIG_MOVELOOP_JPS_FINISHED_PATHING "moveloop_jps_finished_pathing" + +///from /datum/move_loop/has_target/jps/frustrations/handle_move_attempt_failure +#define COMSIG_MOVELOOP_JPS_FRUSTRATION_INCREMENTED "moveloop_jps_frustration_incremented" diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index b3dbc04a26e8..7092efd0e2d5 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -143,7 +143,9 @@ #define COMSIG_ITEM_ON_JUICE "on_juice" ///from /obj/machinery/hydroponics/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) when an object is used as compost: (mob/user) #define COMSIG_ITEM_ON_COMPOSTED "on_composted" -///Called when an item is dried by a drying rack +///Called when an item has finished being deied by a drying rack +#define COMSIG_ITEM_FINISH_DRYING "item_finish_drying" +///Called after we're done applying the dried status to the item with the dryable element #define COMSIG_ITEM_DRIED "item_dried" ///from base of obj/item/dropped(): (mob/user) #define COMSIG_ITEM_DROPPED "item_drop" @@ -222,7 +224,7 @@ #define COMPONENT_OFFER_TAKE_INTERRUPT (1<<0) /// sent from obj/effect/attackby(): (/obj/effect/hit_effect, /mob/living/attacker, list/modifiers) #define COMSIG_ITEM_ATTACK_EFFECT "item_effect_attacked" -/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file) +/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape) #define COMSIG_ITEM_GET_WORN_OVERLAYS "item_get_worn_overlays" /// Called by /obj/item/proc/separate_worn_overlays(list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) #define COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS "item_get_separate_worn_overlays" @@ -467,15 +469,6 @@ ///sent to the projectile when successfully embedding into something: (new_item, victim) #define COMSIG_PROJECTILE_ON_EMBEDDED "projectile_on_embedded" -// /obj/vehicle/sealed/car/vim signals - -///from /datum/action/vehicle/sealed/noise/chime/Trigger(): () -#define COMSIG_VIM_CHIME_USED "vim_chime_used" -///from /datum/action/vehicle/sealed/noise/buzz/Trigger(): () -#define COMSIG_VIM_BUZZ_USED "vim_buzz_used" -///from /datum/action/vehicle/sealed/headlights/vim/Trigger(): (headlights_on) -#define COMSIG_VIM_HEADLIGHTS_TOGGLED "vim_headlights_toggled" - ///from /datum/computer_file/program/messenger/proc/receive_message #define COMSIG_COMPUTER_RECEIVED_MESSAGE "computer_received_message" ///from /datum/computer_file/program/virtual_pet/proc/handle_level_up @@ -604,6 +597,11 @@ /// Sent from /obj/item/organ/wings/functional/proc/close_wings(): (mob/living/carbon/owner) #define COMSIG_WINGS_CLOSED "wings_closed" +/// Sent from /obj/item/clothing/shoes/bhop/rocket/jet, specifically it's toggle action /datum/action/item_action/toggle_flight +#define COMSIG_JETBOOTS_ACTIVE "jets_on" +/// Sent from /obj/item/clothing/shoes/bhop/rocket/jet, specifically it's toggle action /datum/action/item_action/toggle_flight +#define COMSIG_JETBOOTS_INACTIVE "jets_off" + /// Sent from /obj/item/assembly/on_attach(): (atom/holder) #define COMSIG_ASSEMBLY_ATTACHED "assembly_attached" @@ -683,6 +681,11 @@ /// From /obj/machinery/vending/dispense(): (obj/item/vended_item) #define COMSIG_VENDING_DISPENSED "vending_dispensed" +/// From /obj/machinery/vending/vend(): (mob/user, obj/machinery/vending_machine, obj/item/vended_item) +#define COMSIG_MOB_VENDING_PURCHASE "mob_vending_purchase" + /// Stops the mob from picking up whatevr they just purchased (it just goes to the floor) + #define VENDING_NO_PICKUP (1<<0) + /// Sent from /datum/component/reflection when the reflection is updated to the mob reflecting: (atom/movable/reflecting_in, obj/effect/abstract/reflection) #define COMSIG_REFLECTION_UPDATED "reflection_updated" @@ -696,3 +699,8 @@ #define COMSIG_ITEM_PRE_CUFFED_TO_MOB "item_cuffed_to_mob" /// Return to stop the cuffing from happening. #define BLOCK_ITEM_CUFF (1<<0) + +/// Sent from /obj/machinery/door/airlock/close, to a movable blocking it from closing: (obj/machinery/door/being_blocked, force_close, force_crush) +#define COMSIG_MOVABLE_BLOCKING_AIRLOCK "movable_blocking_airlock" + /// Forces the airlock to crush whatever's blocking it even if it normally wouldn't + #define AIRLOCK_BLOCK_FORCE_CRUSH (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_reagent.dm b/code/__DEFINES/dcs/signals/signals_reagent.dm index 8bdd4cbd3977..61b0e95b0a74 100644 --- a/code/__DEFINES/dcs/signals/signals_reagent.dm +++ b/code/__DEFINES/dcs/signals/signals_reagent.dm @@ -21,8 +21,10 @@ ///from base of [/datum/reagent/proc/on_transfer_creation(reagent, target_holder, new_reagent)]: (datum/reagents/target_holder, datum/reagent/new_reagent) #define COMSIG_REAGENT_ON_TRANSFER "reagent_on_transfer" -///from base of [/datum/component/multiple_lives/proc/respawn]: (mob/respawned_mob, gibbed, lives_left) -#define COMSIG_ON_MULTIPLE_LIVES_RESPAWN "on_multiple_lives_respawn" +///from base of [/datum/reagents/proc/add_reagent] - Sent before the reagent is added: (reagenttype, amount, reagtemp, data, no_react) +#define COMSIG_REAGENTS_PRE_ADD_REAGENT "reagents_pre_add_reagent" + /// Prevents the reagent from being added. + #define COMPONENT_CANCEL_REAGENT_ADD (1<<0) ///from base of [/datum/reagents/proc/update_total()] #define COMSIG_REAGENTS_HOLDER_UPDATED "reagents_update_total" diff --git a/code/__DEFINES/dcs/signals/signals_storage.dm b/code/__DEFINES/dcs/signals/signals_storage.dm index 98fc78018504..6cd02dbd7148 100644 --- a/code/__DEFINES/dcs/signals/signals_storage.dm +++ b/code/__DEFINES/dcs/signals/signals_storage.dm @@ -1,3 +1,8 @@ +/// Sent to the parent before even attempting to dump items, from base of /datum/storage/dump_content_at(): (datum/storage/storage, atom/over, mob/user) +#define COMSIG_STORAGE_DUMP_PRE_TRANSFER "storage_dump_pre_transfer" + /// Return to stop the dump before it even has a chance of starting + #define CANCEL_STORAGE_DUMP (1<<0) + /// Sent when /datum/storage/dump_content_at(): (obj/item/storage_source, mob/user) #define COMSIG_STORAGE_DUMP_CONTENT "storage_dump_contents" /// Return to stop the standard dump behavior. @@ -5,6 +10,7 @@ /// Sent after dumping into some other storage object: (atom/dest_object, mob/user) #define COMSIG_STORAGE_DUMP_POST_TRANSFER "storage_dump_into_storage" + /// Sent before storing an item (obj/item/being_stored, mob/user, force, messages) #define COMSIG_ATOM_PRE_STORED_ITEM "atom_pre_storing_item" /// Return to block the item from being stored. diff --git a/code/__DEFINES/devices.dm b/code/__DEFINES/devices.dm index 6b216c799f7a..1547e23fdf85 100644 --- a/code/__DEFINES/devices.dm +++ b/code/__DEFINES/devices.dm @@ -9,3 +9,7 @@ /// Used to prevent health analyzers from switching modes when they shouldn't. /// Functions the same as [SCANNER_CONDENSED] #define SCANNER_NO_MODE -1 + +#define SCANPOWER_BASIC 0 +#define SCANPOWER_ADVANCED 1 +#define SCANPOWER_SUPER 2 diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 6f3cc8acc340..253e4db7ee2a 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -60,7 +60,7 @@ #define CIV_JOB_SEC 4 #define CIV_JOB_DRINK 5 #define CIV_JOB_CHEM 6 -#define CIV_JOB_VIRO 7 +#define CIV_JOB_MED_VIRO 7 #define CIV_JOB_SCI 8 #define CIV_JOB_ENG 9 #define CIV_JOB_MINE 10 diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm index 4cc21f210d61..a9ab7623b91c 100644 --- a/code/__DEFINES/exosuit_fab.dm +++ b/code/__DEFINES/exosuit_fab.dm @@ -35,6 +35,8 @@ #define EXOSUIT_MODULE_MARAUDER (1<<10) /// Module is compatible with Paddy models #define EXOSUIT_MODULE_PADDY (1<<11) +/// Module is compatible with VIM models +#define EXOSUIT_MODULE_VIM (1<<12) /// Module is compatible with "Working" Exosuit models - Ripley and Clarke #define EXOSUIT_MODULE_WORKING (EXOSUIT_MODULE_RIPLEY | EXOSUIT_MODULE_CLARKE) diff --git a/code/__DEFINES/gizmo.dm b/code/__DEFINES/gizmo.dm index e48b14e21c28..178cf77032e5 100644 --- a/code/__DEFINES/gizmo.dm +++ b/code/__DEFINES/gizmo.dm @@ -18,9 +18,10 @@ /// From base of /datum/gizactive/lights_off/activate(): () #define COMSIG_GIZMO_OFF_STATE "gizmo_off_state" -#define GIZMO_PUZZLE_WRONG 1 -#define GIZMO_PUZZLE_CORRECT 2 -#define GIZMO_PUZZLE_SOLVED 3 +#define GIZMO_PUZZLE_WRONG 1 +#define GIZMO_PUZZLE_CORRECT 2 +#define GIZMO_PUZZLE_SOLVED 3 +#define GIZMO_PUZZLE_SOLVED_MODE_CONTROL 4 #define GIZMO_INTERFACE_WIRES "gizmo_interface_wires" #define GIZMO_INTERFACE_VOICE "gizmo_interface_voices" @@ -37,4 +38,5 @@ /datum/gizmodes/sputter = 1,\ /datum/gizmodes/copier = 1,\ /datum/gizmodes/bad = 1,\ + /datum/gizmodes/code_crack/tutorial = 1,\ ) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index bed1a6b24ace..2869abf37131 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -75,7 +75,7 @@ #define HUD_HUMAN_TOGGLE_INVENTORY "human_toggle_inventory" #define HUD_NEW_PLAYER_START_NOW "new_player_start_now" -#define HUD_NEW_PLAYER_SIGN_UP "newp_layer_sign_up" +#define HUD_NEW_PLAYER_LOBBY_BUTTON(type) "new_player_lobby_button:[type]" #define HUD_KEY_NEW_PLAYER(slot) "newplayer_hud:[slot]" #define HUD_SILICON_TAKE_IMAGE "silicon_camera" @@ -158,6 +158,8 @@ #define HUD_WIZARD_COMPACT_PERKS "wizard_compact_perks" #define HUD_WIZARD_PERK(slot) "wizard_perk:[slot]" +#define HUD_MULEBOT_CHARGE "mulebot_charge" + /// Converts item slots to hud keys #define HUD_KEY_ITEM_SLOT(slot) "item_slot:[slot]" /// Converts item slots to hud keys as a compiler constant @@ -169,6 +171,19 @@ #define HUD_XENOBIO_CONSOLE "xenobio_console" +#define HUD_TAC_MINIMAP "tac_minimap" +#define HUD_TAC_MINIMAP_DIMMER "tac_minimap_dimmer" +#define HUD_TAC_MINIMAP_Z_INDICATOR "tac_minimap_z_indicator" +#define HUD_TAC_MINIMAP_Z_INDICATOR_UP "tac_minimap_z_up" +#define HUD_TAC_MINIMAP_Z_INDICATOR_DOWN "tac_minimap_z_down" +#define HUD_TAC_MINIMAP_TOOL_RED "tac_minimap_tool_red" +#define HUD_TAC_MINIMAP_TOOL_YELLOW "tac_minimap_tool_yellow" +#define HUD_TAC_MINIMAP_TOOL_PURPLE "tac_minimap_tool_purple" +#define HUD_TAC_MINIMAP_TOOL_BLUE "tac_minimap_tool_blue" +#define HUD_TAC_MINIMAP_TOOL_ERASE "tac_minimap_tool_erase" +#define HUD_TAC_MINIMAP_TOOL_LABEL "tac_minimap_tool_label" +#define HUD_TAC_MINIMAP_TOOL_CLEAR "tac_minimap_tool_clear" + /* These defines specificy screen locations. For more information, see the byond documentation on the screen_loc var. diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index c551998af2ac..3c2b96257c12 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -192,9 +192,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define isrevenant(A) (istype(A, /mob/living/basic/revenant)) -#define isbot(A) (istype(A, /mob/living/simple_animal/bot) || istype(A, /mob/living/basic/bot)) - -#define isbasicbot(A) (istype(A, /mob/living/basic/bot)) +#define isbot(A) istype(A, /mob/living/basic/bot) #define ismouse(A) (istype(A, /mob/living/basic/mouse)) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index a372cc8e9020..1e6235e28a98 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -160,46 +160,62 @@ //Bots #define JOB_MEDIBOT "Medibot" + +/** + * Indexes are based the primary/first department in the jobs list as this is how jobs are acctually catorgized in menus. + * Structured this way to avoid a massive list of 40~ indexes that all have to be reindexed if you tweak one before them. + * Unit tests ensure no overlaping indexes. + */ +// Command +#define JOB_DISPLAY_ORDER_CAPTAIN 1 +#define JOB_DISPLAY_ORDER_BRIDGE_ASSISTANT 2 +// Security +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 1 +#define JOB_DISPLAY_ORDER_VETERAN_ADVISOR 2 +#define JOB_DISPLAY_ORDER_WARDEN 3 +#define JOB_DISPLAY_ORDER_DETECTIVE 4 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 5 +// Engieneering +#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 1 +#define JOB_DISPLAY_ORDER_STATION_ENGINEER 2 +#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 3 +// Medical +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 1 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 2 +#define JOB_DISPLAY_ORDER_PARAMEDIC 3 +#define JOB_DISPLAY_ORDER_CHEMIST 4 +#define JOB_DISPLAY_ORDER_CORONER 5 +// Science +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 1 +#define JOB_DISPLAY_ORDER_SCIENTIST 2 +#define JOB_DISPLAY_ORDER_ROBOTICIST 3 +#define JOB_DISPLAY_ORDER_GENETICIST 4 +// Cargo +#define JOB_DISPLAY_ORDER_QUARTERMASTER 1 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 2 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 3 +#define JOB_DISPLAY_ORDER_BITRUNNER 4 +#define JOB_DISPLAY_ORDER_CARGO_GORILLA 5 +// Service +#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 1 +#define JOB_DISPLAY_ORDER_BARTENDER 2 +#define JOB_DISPLAY_ORDER_BOTANIST 3 +#define JOB_DISPLAY_ORDER_COOK 4 +#define JOB_DISPLAY_ORDER_JANITOR 5 +#define JOB_DISPLAY_ORDER_CLOWN 6 +#define JOB_DISPLAY_ORDER_MIME 7 +#define JOB_DISPLAY_ORDER_CURATOR 8 +#define JOB_DISPLAY_ORDER_LAWYER 9 +#define JOB_DISPLAY_ORDER_CHAPLAIN 10 +#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 11 +#define JOB_DISPLAY_ORDER_PUN_PUN 12 +// Silicon +#define JOB_DISPLAY_ORDER_AI 1 +#define JOB_DISPLAY_ORDER_CYBORG 2 + +// No department #define JOB_DISPLAY_ORDER_ASSISTANT 1 -#define JOB_DISPLAY_ORDER_CAPTAIN 2 -#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 -#define JOB_DISPLAY_ORDER_BRIDGE_ASSISTANT 4 -#define JOB_DISPLAY_ORDER_BARTENDER 5 -#define JOB_DISPLAY_ORDER_BOTANIST 6 -#define JOB_DISPLAY_ORDER_COOK 7 -#define JOB_DISPLAY_ORDER_JANITOR 8 -#define JOB_DISPLAY_ORDER_CLOWN 9 -#define JOB_DISPLAY_ORDER_MIME 10 -#define JOB_DISPLAY_ORDER_CURATOR 11 -#define JOB_DISPLAY_ORDER_LAWYER 12 -#define JOB_DISPLAY_ORDER_CHAPLAIN 13 -#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 14 -#define JOB_DISPLAY_ORDER_PUN_PUN 15 -#define JOB_DISPLAY_ORDER_AI 16 -#define JOB_DISPLAY_ORDER_CYBORG 17 -#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 18 -#define JOB_DISPLAY_ORDER_STATION_ENGINEER 19 -#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 20 -#define JOB_DISPLAY_ORDER_QUARTERMASTER 21 -#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 22 -#define JOB_DISPLAY_ORDER_SHAFT_MINER 23 -#define JOB_DISPLAY_ORDER_BITRUNNER 24 -#define JOB_DISPLAY_ORDER_CARGO_GORILLA 25 -#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 26 -#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 27 -#define JOB_DISPLAY_ORDER_PARAMEDIC 28 -#define JOB_DISPLAY_ORDER_CHEMIST 29 -#define JOB_DISPLAY_ORDER_CORONER 30 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 31 -#define JOB_DISPLAY_ORDER_SCIENTIST 32 -#define JOB_DISPLAY_ORDER_ROBOTICIST 33 -#define JOB_DISPLAY_ORDER_GENETICIST 34 -#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 35 -#define JOB_DISPLAY_ORDER_VETERAN_ADVISOR 36 -#define JOB_DISPLAY_ORDER_WARDEN 37 -#define JOB_DISPLAY_ORDER_DETECTIVE 38 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 39 -#define JOB_DISPLAY_ORDER_PRISONER 40 +#define JOB_DISPLAY_ORDER_PRISONER 2 #define DEPARTMENT_UNASSIGNED "No Department" diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index 937fc987aa66..1ae7d8982038 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -1,7 +1,20 @@ -#define NO_STUTTER 1 -#define TONGUELESS_SPEECH 2 -#define LANGUAGE_HIDE_ICON_IF_UNDERSTOOD 4 -#define LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD 8 +// Language flags +/// Language is never stuttered +#define LANGUAGE_NO_STUTTER (1<<0) +/// Language is speakable without a tongue +#define LANGUAGE_TONGUELESS_SPEECH (1<<1) +/// Language icon is hidden if the language is understood +#define LANGUAGE_HIDE_ICON_IF_UNDERSTOOD (1<<2) +/// Language icon is hidden if the language is not understood +#define LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD (1<<3) + +// Returns from display_icon_type +/// Display no icon for this language +#define DISPLAY_LANGUAGE_ICON_NONE 0 +/// Display the full icon for this language +#define DISPLAY_LANGUAGE_ICON_FULL 1 +/// Display a blended icon for this language, indicating partial understanding +#define DISPLAY_LANGUAGE_ICON_PARTIAL 2 // LANGUAGE SOURCE DEFINES /// For use in full removal only. diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 142965794cf1..54d8b7a9536a 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -35,11 +35,12 @@ #define DEFAULT_PLANE 0 //Marks out the default plane, even if we don't use it -#define WEATHER_PLANE 1 -#define AREA_PLANE 2 -#define MASSIVE_OBJ_PLANE 3 -#define GHOST_PLANE 4 -#define POINT_PLANE 5 +#define PARTICLE_WEATHER_PLANE 1 +#define WEATHER_PLANE 2 +#define AREA_PLANE 3 +#define MASSIVE_OBJ_PLANE 4 +#define GHOST_PLANE 5 +#define POINT_PLANE 6 //---------- LIGHTING ------------- /// Normal 1 per turf dynamic lighting objects @@ -315,6 +316,10 @@ #define CURSE_LAYER 6 #define ECHO_LAYER 7 #define PARRY_LAYER 8 +#define MINIMAP_IMAGE_LAYER 9 +#define MINIMAP_BLIPS_LAYER 10 +#define MINIMAP_LOCATOR_LAYER 11 +#define MINIMAP_LABELS_LAYER 12 #define FOV_EFFECT_LAYER 100 diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index ecaa3226d0bb..5b9437db4d7f 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -151,6 +151,7 @@ #define LOG_CATEGORY_GAME_ACCESS "game-access" #define LOG_CATEGORY_GAME_BLOOD_WORM "game-blood-worm" #define LOG_CATEGORY_GAME_EMOTE "game-emote" +#define LOG_CATEGORY_GAME_MINIMAP_DRAWING "game-minimap-drawing" #define LOG_CATEGORY_GAME_INTERNET_REQUEST "game-internet-request" #define LOG_CATEGORY_GAME_OOC "game-ooc" #define LOG_CATEGORY_GAME_PRAYER "game-prayer" diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 1e546cf96b17..0e48cec6ccb2 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -74,6 +74,19 @@ /// For wiremod/integrated circuits. Uses various minerals. #define COMPONENT_PRINTER (1<<10) +GLOBAL_LIST_INIT(build_types_to_string, list( + "[IMPRINTER]" = "Circuit Imprinter", + "[PROTOLATHE]" = "Protolathe", + "[AUTOLATHE]" = "Autolathe", + "[MECHFAB]" = "Exosuit Fabricator", + "[BIOGENERATOR]" = "Biogenerator", + "[LIMBGROWER]" = "Limb Grower", + "[SMELTER]" = "Smelter", + "[AWAY_LATHE]" = "Off-Grid Protolathe", + "[AWAY_IMPRINTER]" = "Off-Grid Circuit Imprinter", + "[COMPONENT_PRINTER]" = "Component Printer", +)) + #define HYPERTORUS_INACTIVE 0 // No or minimal energy #define HYPERTORUS_NOMINAL 1 // Normal operation #define HYPERTORUS_WARNING 2 // Integrity damaged diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index fd672571299b..459339701bd3 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -135,7 +135,7 @@ Always compile, always use that verb, and always make sure that it works for wha ///Z level traits for Deep Space #define ZTRAITS_SPACE list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_SPACE_RUINS = TRUE) ///Z level traits for -#define ZTRAITS_WILDS list(\ +#define ZTRAITS_ICY_WILDS list(\ ZTRAIT_LINKAGE = GRIDLINKED, \ ZTRAIT_ICE_RUINS = TRUE, \ ZTRAIT_SNOWSTORM = FALSE, \ diff --git a/code/__DEFINES/minimap.dm b/code/__DEFINES/minimap.dm new file mode 100644 index 000000000000..05629ef5d0b9 --- /dev/null +++ b/code/__DEFINES/minimap.dm @@ -0,0 +1,62 @@ +///Converts the overworld x and y to minimap x and y values +#define MINIMAP_PIXEL_FROM_WORLD(val) (val*2-3) + +//actual size of a users screen in pixels +#define SCREEN_PIXEL_SIZE 480 + +//Drawing tool colors +#define TACMAP_DRAWING_RED "#ff0000" +#define TACMAP_DRAWING_YELLOW "#FFFF00" +#define TACMAP_DRAWING_PURPLE "#A020F0" +#define TACMAP_DRAWING_BLUE "#0000FF" + + +//Turf colours +#define TACMAP_BLACK "#111111d0" +#define TACMAP_SOLID "#ebe5e5ee" +#define TACMAP_DOOR "#451e5eee" +#define TACMAP_WINDOW "#525252d0" +#define TACMAP_FENCE "#8c2294ee" +#define TACMAP_LAVA "#db4206d0" +#define TACMAP_DIRT "#9c906dd0" +#define TACMAP_SHALE "#706955d0" +#define TACMAP_SNOW "#c4e3e9d0" +#define TACMAP_MARS_DIRT "#aa5f44d0" +#define TACMAP_ICE "#93cae0d0" +#define TACMAP_WATER "#94b0d59c" //lower opacity as its really bright + +//Area colours +//Departments +#define TACMAP_AREA_COMMAND COLOR_COMMAND_BLUE +#define TACMAP_AREA_CARGO COLOR_CARGO_BROWN +#define TACMAP_AREA_ENGINEERING COLOR_ENGINEERING_ORANGE +#define TACMAP_AREA_MEDICAL COLOR_MEDICAL_BLUE +#define TACMAP_AREA_SCIENCE COLOR_SCIENCE_PINK +#define TACMAP_AREA_SECURITY COLOR_SECURITY_RED +#define TACMAP_AREA_SERVICE COLOR_SERVICE_LIME +//General +#define TACMAP_AREA_MAINTENANCE COLOR_WEBSAFE_DARK_GRAY + +/// How much we multiply the drawn image by, and as a result the pixel coordinates +#define MINIMAP_PIXEL_MULTIPLIER 2 +/// Converts an icon pixel coordinate (from ICON_X/ICON_Y modifiers) to a world tile coordinate. +#define MINIMAP_ICON_TO_WORLD(icon_coord, minimap_min) ((minimap_min) + floor(((icon_coord) - 1) / MINIMAP_PIXEL_MULTIPLIER)) +/// Converts a world tile coordinate to a pixel_w/pixel_z offset for placing a blip on the minimap display. +#define MINIMAP_WORLD_TO_PIXEL(world_coord, minimap_min, half_size) (((world_coord) - (minimap_min)) * MINIMAP_PIXEL_MULTIPLIER + 1 - (half_size)) +#define COMSIG_MINIMAP_ADD(blip_tag) "minimap_add_" + blip_tag +#define COMSIG_MINIMAP_REMOVE(blip_tag) "minimap_remove_" + blip_tag +// sends a index of how much to change by +#define COMSIG_MINIMAP_CHANGE_Z_LEVEL "minimap_z_change" +#define COMSIG_MINIMAP_ACTION_TRIGGER "minimap_action_trigger" + #define COMSIG_MINIMAP_ACTION_TRIGGER_CANCEL (1<<0) + + +#define MINIMAP_BOMB_BLIP "nuke" +#define MINIMAP_NUKEDISK_BLIP "nuke_disk" +#define MINIMAP_NUKEOP_BLIP "nukeop" +#define MINIMAP_NUKEOP_BORG_BLIP "nukeop_borg" +#define MINIMAP_SYNDICATE_MECH_BLIP "syndicate_mech" +#define MINIMAP_SYNDIE_TURRET_BLIP "syndie_turret" +#define MINIMAP_LADDER_BLIP "ladder" +#define MINIMAP_STAIR_BLIP "stair" +#define MINIMAP_ANNOTATION_TAG_NUCLEAR "nuclear_ops" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index cd622f6723f3..48428c4cb6d8 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -188,10 +188,12 @@ /// Golem's wacky rocky limbs #define BODYSHAPE_GOLEM (1<<4) -/// List of body part flags that can not be bioscrambled -#define BODYTYPE_BIOSCRAMBLE_INCOMPATIBLE (BODYTYPE_ROBOTIC | BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_GOLEM | BODYTYPE_PEG) /// Check to see if a bodypart limb can be bioscrambled -#define BODYPART_CAN_BE_BIOSCRAMBLED(bodypart) (!(bodypart.bodytype & BODYTYPE_BIOSCRAMBLE_INCOMPATIBLE) && !(bodypart.flags_1 & HOLOGRAM_1)) +#define BODYPART_CAN_BE_BIOSCRAMBLED(bodypart) ( \ + !(bodypart.bodytype & (BODYTYPE_ROBOTIC | BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_GOLEM | BODYTYPE_PEG)) \ + && !(bodypart.flags_1 & HOLOGRAM_1) \ + && !(bodypart.bodypart_flags & BODYPART_STUMP) \ +) // Defines for Species IDs. Used to refer to the name of a species, for things like bodypart names or species preferences. #define SPECIES_ABDUCTOR "abductor" @@ -264,12 +266,15 @@ ///Heartbeat is gone... He's dead Jim :( #define BEAT_NONE 0 -#define HUMAN_MAX_OXYLOSS 3 -#define HUMAN_CRIT_MAX_OXYLOSS (SSMOBS_DT/3) +/// Damage dealt every life tick on suffocation +#define SUFFOCATION_OXYLOSS 3 +/// Modifier to damage dealt every life tick on suffocation when the suffocator is in crit +#define SUFFOCATION_OXYLOSS_CRIT_MODIFIER 0.22 /// Combined brute and burn damage states on a human's head after which they become disfigured #define HUMAN_DISFIGURATION_HEAD_DAMAGE_STATES 3 +/// Lung temperature defines #define HEAT_DAMAGE_LEVEL_1 1 //Amount of damage applied when your body temperature just passes the 360.15k safety point #define HEAT_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 400K point #define HEAT_DAMAGE_LEVEL_3 4 //Amount of damage applied when your body temperature passes the 460K point and you are on fire @@ -287,6 +292,14 @@ #define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point #define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point +/// These are for the default lungs +#define COLD_LEVEL_1_THRESHOLD 260 +#define COLD_LEVEL_2_THRESHOLD 200 +#define COLD_LEVEL_3_THRESHOLD 120 +#define HEAT_LEVEL_1_THRESHOLD 360 +#define HEAT_LEVEL_2_THRESHOLD 400 +#define HEAT_LEVEL_3_THRESHOLD 1000 + //Brain Damage defines #define BRAIN_DAMAGE_MILD 20 #define BRAIN_DAMAGE_ASYNC_BLINKING 60 @@ -333,6 +346,9 @@ #define NUTRITION_LEVEL_START_MIN 250 #define NUTRITION_LEVEL_START_MAX 400 +// After this amount of time overeating carbons become fat +#define OVEREAT_TIME_LIMIT 200 SECONDS + //Disgust levels for humans #define DISGUST_LEVEL_MAXEDOUT 150 #define DISGUST_LEVEL_VERYDISGUSTED 100 @@ -736,6 +752,16 @@ #define GRADIENT_APPLIES_TO_HAIR (1<<0) #define GRADIENT_APPLIES_TO_FACIAL_HAIR (1<<1) +// Used in applying height +/// Used for overlays centered around the upper half of the human sprite +#define UPPER_BODY "upper body" +/// Used for overlays centered around the lower half of the human sprite +#define LOWER_BODY "lower body" +/// Used for overlays that should not offset at all +#define NO_MODIFY "do not modify" +/// Used for overlays that stretch the full body and thus need a filter +#define ENTIRE_BODY "full body" + // Height defines // - They are numbers so you can compare height values (x height < y height) // - They do not start at 0 for futureproofing @@ -751,167 +777,134 @@ #define HUMAN_HEIGHT_TALL 14 #define HUMAN_HEIGHT_TALLER 16 #define HUMAN_HEIGHT_TALLEST 18 - -/// Assoc list of all heights, cast to strings, to """"tuples""""" -/// The first """tuple""" index is the upper body offset -/// The second """tuple""" index is the lower body offset -GLOBAL_LIST_INIT(human_heights_to_offsets, list( - "[MONKEY_HEIGHT_DWARF]" = list(-9, -3), - "[MONKEY_HEIGHT_MEDIUM]" = list(-7, -4), - "[HUMAN_HEIGHT_DWARF]" = list(-5, -4), - "[HUMAN_HEIGHT_SHORTEST]" = list(-2, -1), - "[HUMAN_HEIGHT_SHORT]" = list(-1, -1), - "[HUMAN_HEIGHT_MEDIUM]" = list(0, 0), - "[HUMAN_HEIGHT_TALL]" = list(1, 1), - "[HUMAN_HEIGHT_TALLER]" = list(2, 1), - "[HUMAN_HEIGHT_TALLEST]" = list(3, 2), +// If you add a height here update human_heights_to_offsets as well! + +/// Assoc list of all heights, to offset values +GLOBAL_ALIST_INIT(human_heights_to_offsets, alist( + MONKEY_HEIGHT_DWARF = list("[UPPER_BODY]" = -9, "[LOWER_BODY]" = -3), + MONKEY_HEIGHT_MEDIUM = list("[UPPER_BODY]" = -7, "[LOWER_BODY]" = -4), + HUMAN_HEIGHT_DWARF = list("[UPPER_BODY]" = -5, "[LOWER_BODY]" = -4), + HUMAN_HEIGHT_SHORTEST = list("[UPPER_BODY]" = -2, "[LOWER_BODY]" = -1), + HUMAN_HEIGHT_SHORT = list("[UPPER_BODY]" = -1, "[LOWER_BODY]" = -1), + HUMAN_HEIGHT_MEDIUM = list("[UPPER_BODY]" = 0, "[LOWER_BODY]" = 0), + HUMAN_HEIGHT_TALL = list("[UPPER_BODY]" = 1, "[LOWER_BODY]" = 1), + HUMAN_HEIGHT_TALLER = list("[UPPER_BODY]" = 2, "[LOWER_BODY]" = 1), + HUMAN_HEIGHT_TALLEST = list("[UPPER_BODY]" = 3, "[LOWER_BODY]" = 2), )) -// Mob Overlays Indexes -/// Total number of layers for mob overlays -/// KEEP THIS UP-TO-DATE OR SHIT WILL BREAK -/// Also consider updating layers_to_offset -#define TOTAL_LAYERS 40 // DARKPACK EDIT CHANGE - POWERS +/* + * Mob overlays + * + * Integers are standing overlays which are managed by the mob overlay system + * They're drawn in order from least to greatest, with the lowest layer drawn highest on the screen + * + * Decimals are sub-layers or alternate layers + * These are not managed by the mob overlay system, but still layer according to their value + * + * Please keep this organized and in order, to make it easier to see at a glance how mobs layer + * Don't be afraid to change the values of existing layers either, it won't break anything so long as order is the same + * + * If you want to add a new layer, make sure to update TOTAL_LAYERS and layers_to_offset as needed + * NOTE: You ONLY need to add standing layers if you're using the standing overlay system, ie. apply_overlay(YOUR_LAYER)! + * If you're NOT using this sytem just add it as a sub-layer where appropriate + */ + +/// The highest most layer for mob overlays. Unused +#define HIGHEST_LAYER 1 + /// Blood cult ascended halo layer + #define HALO_LAYER 1.1 +/// Bleeding wound icons +#define WOUND_LAYER 2 + /// Special body layer for the rare cases where something on the head needs to be above everything else (e.g. flowers) + #define ABOVE_BODY_FRONT_HEAD_LAYER 2.3 + /// The layer above mutant body parts + #define ABOVE_BODY_FRONT_LAYER 2.4 + /// Body front layer. Usually used for mutant bodyparts that need to be in front of stuff (e.g. cat ears) + #define BODY_FRONT_LAYER 2.5 +/// Hands layer (for the actual hand, not the arm... I think?) +#define HANDS_LAYER 3 +/// Legcuff layer (when your feet are cuffed) +#define LEGCUFF_LAYER 4 +/// Handcuff layer (when your hands are cuffed) +#define HANDCUFF_LAYER 5 + /// Hair that layers out above clothing, including hats (high ponytails and such) + #define OUTER_HAIR_LAYER 5.9 +/// Head layer (hats, helmets, etc.) +#define HEAD_LAYER 6 + /// The layer underneath the head (for hats) + #define UNDER_HEAD_LAYER 6.1 +/// Facemask layer (gas masks, breath masks, etc.) +#define FACEMASK_LAYER 7 +/// Hair layer (mess with the fro and you got to go!) +#define HAIR_LAYER 8 + /// Special layer for rendering beneath hair, for special facemasks + #define BENEATH_HAIR_LAYER 8.1 +/// Back layer (for backpacks and equipment on your back) +#define BACK_LAYER 9 +/// Neck layer (for wearing capes and bedsheets) +#define NECK_LAYER 10 +/// Suit storage layer (tucking a gun or baton underneath your armor) +#define SUIT_STORE_LAYER 11 +/// Belt layer +#define BELT_LAYER 12 //Possible make this an overlay of something required to wear a belt? +/// Glasses layer +#define GLASSES_LAYER 13 +/// Suit layer (armor, coats, etc.) +#define SUIT_LAYER 14 + /// The layer underneath the suit + #define UNDER_SUIT_LAYER 14.1 + /// Layer for neck apperal that should appear below the suit slot (like neckties) + #define LOW_NECK_LAYER 14.2 +/// Ears layer (Spessmen have ears? Wow) +#define EARS_LAYER 15 + /// Layer for masks that are worn below ears and eyes (like Balaclavas) (layers below hair, use flagsinv=HIDEHAIR as needed) + #define LOW_FACEMASK_LAYER 15.1 + /// The layer above shoes + #define ABOVE_SHOES_LAYER 15.9 +/// Shoes layer +#define SHOES_LAYER 16 +/// Gloves layer +#define GLOVES_LAYER 17 + /// Layer for bodyparts that should appear above every other bodypart - Currently only used for hands + #define BODYPARTS_HIGH_LAYER 17.5 +/// ID card layer +#define ID_LAYER 18 +/// Jumpsuit clothing layer +#define UNIFORM_LAYER 19 + /// The layer underneath the uniform + #define UNDER_UNIFORM_LAYER 19.1 +/// Damage indicators (cuts and burns) +#define DAMAGE_LAYER 20 + /// Mutations that should appear above everything else (e.g. laser eyes) + #define FRONT_MUTATIONS_LAYER 20.9 +/// Eyes and eyelids +#define EYES_LAYER 21 +/// Underwear, undershirts, socks +#define BODY_LAYER 22 + /// Mutantrace features (snout, body markings) that must appear above the body parts + #define BODY_ADJ_LAYER 22.9 +/// Layer for most bodyparts, appears above BODYPARTS_LOW_LAYER and below BODYPARTS_HIGH_LAYER +#define BODYPARTS_LAYER 23 + /// Layer for bodyparts that should appear behind every other bodypart - Mostly, legs when facing WEST or EAST + #define BODYPARTS_LOW_LAYER 23.1 + /// Mutantrace features (tail when looking south) that must appear behind the body parts + #define BODY_BEHIND_LAYER 23.2 + /// Mutations layer - Tk headglows, cold resistance glow, etc. Very bottom of the mob + #define MUTATIONS_LAYER 23.9 // DARKPACK EDIT ADD START - POWERS /// Temporary effects applied via gifts/discs/etc -#define POWERS_LAYER 39 +#define POWERS_LAYER 24 // DARKPACK EDIT ADD END -/// Mutations layer - Tk headglows, cold resistance glow, etc -#define MUTATIONS_LAYER 38 -/// Mutantrace features (tail when looking south) that must appear behind the body parts -#define BODY_BEHIND_LAYER 37 -/// Layer for bodyparts that should appear behind every other bodypart - Mostly, legs when facing WEST or EAST -#define BODYPARTS_LOW_LAYER 36 -/// Layer for most bodyparts, appears above BODYPARTS_LOW_LAYER and below BODYPARTS_HIGH_LAYER -#define BODYPARTS_LAYER 35 -/// Mutantrace features (snout, body markings) that must appear above the body parts -#define BODY_ADJ_LAYER 34 -/// Underwear, undershirts, socks -#define BODY_LAYER 33 -/// Eyes and eyelids -#define EYES_LAYER 32 -/// Mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define FRONT_MUTATIONS_LAYER 31 -/// Damage indicators (cuts and burns) -#define DAMAGE_LAYER 30 -/// Jumpsuit clothing layer -#define UNIFORM_LAYER 29 -/// ID card layer -#define ID_LAYER 28 -/// ID card layer (might be deprecated) -#define ID_CARD_LAYER 27 -/// Layer for bodyparts that should appear above every other bodypart - Currently only used for hands -#define BODYPARTS_HIGH_LAYER 26 -/// Gloves layer -#define GLOVES_LAYER 25 -/// Shoes layer -#define SHOES_LAYER 24 -/// Layer for masks that are worn below ears and eyes (like Balaclavas) (layers below hair, use flagsinv=HIDEHAIR as needed) -#define LOW_FACEMASK_LAYER 23 -/// Ears layer (Spessmen have ears? Wow) -#define EARS_LAYER 22 -/// Layer for neck apperal that should appear below the suit slot (like neckties) -#define LOW_NECK_LAYER 21 -/// Suit layer (armor, coats, etc.) -#define SUIT_LAYER 20 -/// Glasses layer -#define GLASSES_LAYER 19 -/// Belt layer -#define BELT_LAYER 18 //Possible make this an overlay of something required to wear a belt? -/// Suit storage layer (tucking a gun or baton underneath your armor) -#define SUIT_STORE_LAYER 17 -/// Neck layer (for wearing capes and bedsheets) -#define NECK_LAYER 16 -/// Back layer (for backpacks and equipment on your back) -#define BACK_LAYER 15 -/// Special layer for rendering beneath hair, for special facemasks -#define BENEATH_HAIR_LAYER 14 -/// Hair layer (mess with the fro and you got to go!) -#define HAIR_LAYER 13 //TODO: make part of head layer? -/// Facemask layer (gas masks, breath masks, etc.) -#define FACEMASK_LAYER 12 -/// Head layer (hats, helmets, etc.) -#define HEAD_LAYER 11 -/// Hair that layers out above clothing, including hats (high ponytails and such) -#define OUTER_HAIR_LAYER 10 -/// Handcuff layer (when your hands are cuffed) -#define HANDCUFF_LAYER 9 -/// Legcuff layer (when your feet are cuffed) -#define LEGCUFF_LAYER 8 -/// Hands layer (for the actual hand, not the arm... I think?) -#define HANDS_LAYER 7 -/// Body front layer. Usually used for mutant bodyparts that need to be in front of stuff (e.g. cat ears) -#define BODY_FRONT_LAYER 6 -/// Special body layer that actually require to be above the hair (e.g. lifted welding goggles) -#define ABOVE_BODY_FRONT_GLASSES_LAYER 5 -/// Special body layer for the rare cases where something on the head needs to be above everything else (e.g. flowers) -#define ABOVE_BODY_FRONT_HEAD_LAYER 4 -/// Bleeding wound icons -#define WOUND_LAYER 3 -/// Blood cult ascended halo layer, because there's currently no better solution for adding/removing -#define HALO_LAYER 2 -/// The highest most layer for mob overlays. Unused -#define HIGHEST_LAYER 1 +/// Total number of standing overlays. +/// KEEP THIS UP-TO-DATE OR SHIT WILL BREAK. +/// (You ONLY need to update this if you add a standing overlay, adding an integer.) +#define TOTAL_LAYERS 24 // DARKPACK EDIT CHANGE - POWERS -#define UPPER_BODY "upper body" -#define LOWER_BODY "lower body" -#define NO_MODIFY "do not modify" - -/// Used for human height overlay adjustments -/// Certain standing overlay layers shouldn't have a filter applied and should instead just offset by a pixel y -/// This list contains all the layers that must offset, with its value being whether it's a part of the upper half of the body (TRUE) or not (FALSE) -GLOBAL_LIST_INIT(layers_to_offset, list( - // Weapons commonly cross the middle of the sprite so they get cut in half by the filter - "[HANDS_LAYER]" = LOWER_BODY, - // Very tall hats will get cut off by filter - "[HEAD_LAYER]" = UPPER_BODY, - // Hair will get cut off by filter - "[HAIR_LAYER]" = UPPER_BODY, - // Doesn't do much - "[EYES_LAYER]" = UPPER_BODY, - // Long belts (sabre sheathe) will get cut off by filter - "[BELT_LAYER]" = LOWER_BODY, - // Everything below looks fine with or without a filter, so we can skip it and just offset - // (In practice they'd be fine if they got a filter but we can optimize a bit by not.) - "[NECK_LAYER]" = UPPER_BODY, - "[GLASSES_LAYER]" = UPPER_BODY, - "[LOW_NECK_LAYER]" = UPPER_BODY, - "[ABOVE_BODY_FRONT_GLASSES_LAYER]" = UPPER_BODY, // currently unused - "[ABOVE_BODY_FRONT_HEAD_LAYER]" = UPPER_BODY, // only used for head stuff - "[GLOVES_LAYER]" = LOWER_BODY, - "[HALO_LAYER]" = UPPER_BODY, // above the head - "[HANDCUFF_LAYER]" = LOWER_BODY, - "[ID_CARD_LAYER]" = UPPER_BODY, // unused - "[ID_LAYER]" = UPPER_BODY, - "[FACEMASK_LAYER]" = UPPER_BODY, - "[LOW_FACEMASK_LAYER]" = UPPER_BODY, - "[BENEATH_HAIR_LAYER]" = UPPER_BODY, // alt mask layer - // These two are cached, and have their appearance shared(?), so it's safer to just not touch it - "[MUTATIONS_LAYER]" = NO_MODIFY, - "[FRONT_MUTATIONS_LAYER]" = NO_MODIFY, - // These DO get a filter, I'm leaving them here as reference, - // to show how many filters are added at a glance - // BACK_LAYER (backpacks are big) - // BODYPARTS_HIGH_LAYER (arms) - // BODY_LAYER (body markings (full body), underwear (full body)) - // BODY_ADJ_LAYER (external organs like wings) - // BODY_BEHIND_LAYER (external organs like wings) - // BODY_FRONT_LAYER (external organs like wings) - // DAMAGE_LAYER (full body) - // HIGHEST_LAYER (full body) - // UNIFORM_LAYER (full body) - // WOUND_LAYER (full body) -)) - -//Bitflags for the layers a bodypart overlay can draw on (can be drawn on multiple layers) -/// Draws overlay on the BODY_FRONT_LAYER -#define EXTERNAL_FRONT (1 << 0) -/// Draws overlay on the BODY_ADJ_LAYER -#define EXTERNAL_ADJACENT (1 << 1) -/// Draws overlay on the BODY_BEHIND_LAYER -#define EXTERNAL_BEHIND (1 << 2) -/// Draws organ on all EXTERNAL layers -#define ALL_EXTERNAL_OVERLAYS EXTERNAL_FRONT | EXTERNAL_ADJACENT | EXTERNAL_BEHIND +// Legacy mutant bodypart layering defines for icon states +// Don't change these without updating all relevant icon states +#define EXTERNAL_FRONT "FRONT" +#define EXTERNAL_ADJACENT "ADJ" +#define EXTERNAL_BEHIND "BEHIND" // Bitflags for external organs restylability #define EXTERNAL_RESTYLE_ALL ALL @@ -922,20 +915,6 @@ GLOBAL_LIST_INIT(layers_to_offset, list( /// This organ allows restyling with enamel restyling (like a fucking file or something?). It's for horns and shit #define EXTERNAL_RESTYLE_ENAMEL (1 << 2) -//Mob Overlay Index Shortcuts for alternate_worn_layer, layers -//Because I *KNOW* somebody will think layer+1 means "above" -//IT DOESN'T OK, IT MEANS "UNDER" -/// The layer underneath the suit -#define UNDER_SUIT_LAYER (SUIT_LAYER+1) -/// The layer underneath the head (for hats) -#define UNDER_HEAD_LAYER (HEAD_LAYER+1) - -//AND -1 MEANS "ABOVE", OK?, OK!?! -/// The layer above shoes -#define ABOVE_SHOES_LAYER (SHOES_LAYER-1) -/// The layer above mutant body parts -#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1) - /// If gravity must be present to perform action (can't use pens without gravity) #define NEED_GRAVITY (1<<0) /// If reading is required to perform action (can't read a book if you are illiterate) @@ -1102,6 +1081,15 @@ GLOBAL_LIST_INIT(layers_to_offset, list( /// Helper macro that determines if the mob is at the threshold to start vomitting due to high toxin levels #define AT_TOXIN_VOMIT_THRESHOLD(mob) (mob.get_tox_loss() > 45 && mob.nutrition > 20) +/// Shared cooldown for manually triggered emote audio +#define MANUAL_GENERAL_EMOTE_AUDIO_COOLDOWN "manual_general_emote_audio_cooldown" +/// Per emote cooldown for manually triggered emote audio +#define MANUAL_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type) "manual_specific_emote_audio_cooldown_[type]" +/// Shared cooldown for forced emote audio +#define FORCED_GENERAL_EMOTE_AUDIO_COOLDOWN "forced_general_emote_audio_cooldown" +/// Per emote cooldown for forced emote audio +#define FORCED_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type) "forced_specific_emote_audio_cooldown_[type]" + /// The duration of the flip emote animation #define FLIP_EMOTE_DURATION 0.7 SECONDS ///The duration of a taunt emote, so how long they can deflect projectiles diff --git a/code/__DEFINES/modular_computer.dm b/code/__DEFINES/modular_computer.dm index 16b0996a78f7..f8bd39e2b3d7 100644 --- a/code/__DEFINES/modular_computer.dm +++ b/code/__DEFINES/modular_computer.dm @@ -26,10 +26,8 @@ #define PROGRAM_UNIQUE_COPY (1<<3) ///The program is a header and will show up at the top of the ModPC's UI. #define PROGRAM_HEADER (1<<4) -///The program will run despite the ModPC not having any power in it. -#define PROGRAM_RUNS_WITHOUT_POWER (1<<5) ///The circuit ports of this program can be triggered even if the program is not open -#define PROGRAM_CIRCUITS_RUN_WHEN_CLOSED (1<<6) +#define PROGRAM_CIRCUITS_RUN_WHEN_CLOSED (1<<5) //Program categories #define PROGRAM_CATEGORY_DEVICE "Device Tools" @@ -39,6 +37,7 @@ #define PROGRAM_CATEGORY_ENGINEERING "Engineering" #define PROGRAM_CATEGORY_SUPPLY "Supply" #define PROGRAM_CATEGORY_SCIENCE "Science" +#define PROGRAM_CATEGORY_SERVICE "Service" ///The default amount a program should take in cell use. #define PROGRAM_BASIC_CELL_USE 2 WATTS diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 303bb3310116..32ec4118ce24 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -211,3 +211,7 @@ #define RADIO_SPECIAL_CENTCOM (1<<1) ///Bitflag for if a headset can use the binary radio channel #define RADIO_SPECIAL_BINARY (1<<2) + +/// Past this amount of compression, the resulting gibberish will actually +/// replace characters, making it even harder to understand. +#define COMPRESSION_REPLACE_CHARACTER_THRESHOLD 30 diff --git a/code/__DEFINES/religion.dm b/code/__DEFINES/religion.dm index d3fb3d36e410..694968e0356d 100644 --- a/code/__DEFINES/religion.dm +++ b/code/__DEFINES/religion.dm @@ -68,3 +68,20 @@ #define RITE_ALLOW_MULTIPLE_PERFORMS (1<<1) ///The rite can only be fully performed once, so we'll completely remove it from the rite list afterwards. #define RITE_ONE_TIME_USE (1<<2) + +///Default prayer type for the pray verb +#define DEFAULT_PRAYER "PRAYER" +///Cult prayer type +#define CULT_PRAYER "CULTIST PRAYER" +//Heretic prayer type +#define HERETIC_PRAYER "HERETICAL PRAYER" +///Chaplain prayer type +#define CHAPLAIN_PRAYER "CHAPLAIN PRAYER" +///Spiritual prayer type +#define SPIRITUAL_PRAYER "SPIRITUAL PRAYER" +///Evil prayer type +#define EVIL_PRAYER "EVIL PRAYER" +///Standard prayer type that santa sees +#define SANTA_PRAYER "PRAYER" +///what type of prayer santa sees when someone's bad +#define SANTA_NAUGHTY_PRAYER "PRAYER (NAUGHTY)" diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index adb276c64fa2..f2be6fef6dac 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -1,6 +1,16 @@ /// For instances where we don't want a design showing up due to it being for debug/sanity purposes #define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN" +///The object printed from this design won't get the mats used to make it. Default setting for stacks unless specified otherwise +#define DESIGN_DONT_INHERIT_MATS 0 +/** + * Default setting. The object printed from this design gets the mats used to make it. + * This will also be unit tested to ensure that that the mats of the printed object match with another object of the same type spawned in a generic way. + */ +#define DESIGN_INHERIT_MATS 1 +///The object printed from this design gets the mats used to make it but skips the unit test. +#define DESIGN_INHERIT_MATS_SPECIAL 2 + //! Techweb names for new point types. Can be used to define specific point values for specific types of research (science, security, engineering, etc.) #define TECHWEB_POINT_TYPE_GENERIC "General Research" diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm index d2e4f5cf7727..324923e6a5e4 100644 --- a/code/__DEFINES/research/anomalies.dm +++ b/code/__DEFINES/research/anomalies.dm @@ -20,8 +20,13 @@ /// Blacklist of parts which should not appear when bioscrambled, largely because they will make you look totally fucked up GLOBAL_LIST_INIT(bioscrambler_parts_blacklist, typecacheof(list( - /obj/item/bodypart/chest/larva, - /obj/item/bodypart/head/larva, + /obj/item/bodypart/head/psyker, + /obj/item/bodypart/arm/left/skeleton/nonfunctional, + /obj/item/bodypart/arm/right/skeleton/nonfunctional, + /obj/item/bodypart/chest/skeleton/nonfunctional, + /obj/item/bodypart/head/skeleton/nonfunctional, + /obj/item/bodypart/leg/left/skeleton/nonfunctional, + /obj/item/bodypart/leg/right/skeleton/nonfunctional, ))) /// Blacklist of organs which should not appear when bioscrambled. diff --git a/code/__DEFINES/research/research_categories.dm b/code/__DEFINES/research/research_categories.dm index 3f6428eb7317..79a3bf18a352 100644 --- a/code/__DEFINES/research/research_categories.dm +++ b/code/__DEFINES/research/research_categories.dm @@ -8,11 +8,19 @@ #define RND_SUBCATEGORY_WEAPONS_KITS "/Weapon Fabrication Kits" // Wiremod Categories -#define RND_CATEGORY_CIRCUITRY "/Circuitry" #define RND_CATEGORY_CIRCUITRY_CORE "/Core" -#define RND_SUBCATEGORY_CIRCUITRY_COMPONENTS "/Circuit Components" -#define RND_SUBCATEGORY_CIRCUITRY_BCI_COMPONENTS "/Circuit BCI Components" -#define RND_SUBCATEGORY_CIRCUITRY_SHELLS "/Circuit Shells" +#define RND_CATEGORY_CIRCUITRY_SHELLS "/Circuit Shells" +#define RND_CATEGORY_CIRCUITRY_COMPS "/Circuit Components" + #define RND_SUBCATEGORY_CIRCUITRY_ACTION_COMPONENTS "/Action" + #define RND_SUBCATEGORY_CIRCUITRY_BCI_COMPONENTS "/BCI" + #define RND_SUBCATEGORY_CIRCUITRY_ENTITY_COMPONENTS "/Entity" + #define RND_SUBCATEGORY_CIRCUITRY_ID_COMPONENTS "/ID Access" + #define RND_SUBCATEGORY_CIRCUITRY_LIST_COMPONENTS "/List" + #define RND_SUBCATEGORY_CIRCUITRY_MATH_COMPONENTS "/Mathematics" + #define RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS "/Communication" + #define RND_SUBCATEGORY_CIRCUITRY_SENSOR_COMPONENTS "/Sensor" + #define RND_SUBCATEGORY_CIRCUITRY_STRING_COMPONENTS "/String" + #define RND_SUBCATEGORY_CIRCUITRY_UTILITY_COMPONENTS "/Utility" // Tool Categories #define RND_CATEGORY_TOOLS "/Tools" diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 2c76b6f3b91c..60f6cbbd7625 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -399,3 +399,10 @@ DEFINE_BITFIELD(janitor_mode_flags, list( /// Default offsets for riding a cyborg #define DEFAULT_ROBOT_RIDING_OFFSETS list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-6, 3), TEXT_WEST = list(6, 3)) + + +//mulebots +#define MULEBOT_MOOD_ANNOYED "ANNOYED" +#define MULEBOT_MOOD_CHIME "CHIME" +#define MULEBOT_MOOD_DELIGHT "DELIGHT" +#define MULEBOT_MOOD_SIGH "SIGH" diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 553a6635e002..d352a64dcc8e 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -11,6 +11,9 @@ #define LANGUAGE_MUTUAL_BONUS "language mutual bonus" #define SAY_MOD_VERB "say_mod_verb" +#define HEAR_HEARD (1<<0) +#define HEAR_UNDERSTOOD (1<<1) + //Message modes. Each one defines a radio channel, more or less. //if you use ! as a mode key for some ungodly reason, change the first character for ion_num() so get_message_mode() doesn't freak out with state law prompts - shiz. #define MODE_HEADSET "headset" @@ -73,6 +76,8 @@ #define MODE_CUSTOM_SAY_ERASE_INPUT "erase_input" /// Message is being relayed through another object #define MODE_RELAY "relayed" +/// Message has a TTS identifier attached to it +#define MODE_TTS_IDENTIFIER "tts_identifier" /// Override the mob's name #define MODE_SPEAKER_NAME_OVERRIDE "speaker_name_override" diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 0432ebdc2d74..7ab7c2767de7 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -62,6 +62,7 @@ #define STASIS_LEGION_EATEN "stasis_eaten" #define STASIS_SLIME_BZ "stasis_slime_bz" #define STASIS_ELDRITCH_ETHER "stasis_eldritch_ether" +#define STASIS_CRATE_EFFECT "stasis_crate" #define STASIS_NETPOD_EFFECT "stasis_netpod" diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index 3b5cb5d79501..4ffbb978a65c 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -84,8 +84,6 @@ #define ARCADE_FILE "arcade.json" /// File location for boomer meme catchphrases #define BOOMER_FILE "boomer.json" -/// File location for locations on the station -#define LOCATIONS_FILE "locations.json" /// File location for wanted posters messages #define WANTED_FILE "wanted_message.json" /// File location for really dumb suggestions memes diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 00851db6e2ff..1790ff16e21b 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -2,7 +2,7 @@ #define MIDNIGHT_ROLLOVER 864000 /// In-universe, SS13 is set 540 years in the future from the real-world day, hence this number for determining the year-offset for the in-game year. -#define STATION_YEAR_OFFSET 9 // CRIMSON EDIT CHANGE +#define STATION_YEAR_OFFSET -17 // CRIMSON EDIT CHANGE ///Returns the time that has passed since the game started #define STATION_TIME_PASSED(...) (world.time - SSticker.round_start_time) @@ -39,6 +39,13 @@ #define HOTDOG_DAY "National Hot Dog Day" #define ICE_CREAM_DAY "National Ice Cream Day" #define CHERNOBYL_ANNIVERSARY "Chernobyl Disaster Remembrance Day" +#define LIZARD_ATRAKOR_DAY "Festival of Atrakor's Might" +#define MOTH_FLEET_DAY "Fleet Day" +#define BEE_DAY "Bee Day" +#define BEER_DAY "Beer Day" +#define VEGAN_DAY "Vegan Day" +#define TALK_LIKE_A_PIRATE_DAY "Talk-Like-a-Pirate Day" +#define ST_PATRICK_DAY "St. Patrick's Day" /* Days of the week to make it easier to reference them. diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 317b17c2d7e6..488b9535b83b 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -381,6 +381,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SUCCUMB_OVERRIDE "succumb_override" /// Can hear observers #define TRAIT_SIXTHSENSE "sixth_sense" +/// For mobs / minds with the listening_prayers trait, this stops them from hearing prayers +#define TRAIT_DONT_HEAR_PRAYERS "dont_hear_prayers" #define TRAIT_FEARLESS "fearless" /// Ignores darkness for hearing #define TRAIT_HEAR_THROUGH_DARKNESS "hear_through_darkness" @@ -501,6 +503,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CLIFF_WALKER "cliff_walker" /// This means the user is currently holding/wearing a "tactical camouflage" item (like a potted plant). #define TRAIT_TACTICALLY_CAMOUFLAGED "tactically_camouflaged" +/// This means the user is allowed to draw on minimap holotables. +#define TRAIT_MINIMAP_TABLE_DRAW "minimap_table_draw" /// Gets double arcade prizes #define TRAIT_GAMERGOD "gamer-god" #define TRAIT_GIANT "giant" @@ -621,7 +625,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait which allows you to gain bonuses from consuming rocks #define TRAIT_ROCK_METAMORPHIC "rock_metamorphic" -/// `do_teleport` will not allow this atom to teleport +/// `do_teleport` won't allow this atom to teleport, or if applied to a turf, other atoms to teleport on this turf. #define TRAIT_NO_TELEPORT "no-teleport" /// This atom is a secluded location, which is counted as out of bounds. /// Anything that enters this atom's contents should react if it wants to stay in bounds. @@ -898,8 +902,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FOOD_BBQ_GRILLED "food_bbq_grilled" /// This is a silver slime created item #define TRAIT_FOOD_SILVER "food_silver" -/// If this item's been made by a chef instead of being map-spawned or admin-spawned or such -#define TRAIT_FOOD_CHEF_MADE "food_made_by_chef" +/// This object (mainly items) has been made by a player (cooked, crafted etc...) instead of being map-spawned or admin-spawned, printed with a lathe, ordered etc... +#define TRAIT_HANDMADE "food_made_by_chef" /// This atom has a quality_food_ingredient element attached #define TRAIT_QUALITY_FOOD_INGREDIENT "quality_food_ingredient" /// This (edible) atom won't inherit the item of the item it was processed from in the form "a slice of [name]" @@ -908,6 +912,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NEEDS_TWO_HANDS "needstwohands" /// Can't be catched when thrown #define TRAIT_UNCATCHABLE "uncatchable" +///Items with this trait will be ignored when redeeming materials from inserting it in a material container +#define TRAIT_IGNORED_BY_MAT_REDEMPTION "ignored_by_mat_redemption" /// You won't catch duds while fishing with this rod. #define TRAIT_ROD_REMOVE_FISHING_DUD "rod_remove_fishing_dud" /// This rod ignores environmental conditions for fishing (like low light for nocturnal fish) @@ -986,6 +992,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SKIP_BASIC_REACH_CHECK "skip_basic_reach_check" /// Increases chance of this brain getting special traumas, makes them harder to cure #define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost" +/// If this item is offered when something is pulled. +#define TRAIT_OFFERED_WHEN_PULLED "offered_when_pulled" +/// If the item has a special mob/living/give() interaction. +#define TRAIT_BORG_GIVE "give_borg_item" //---- Heretic Traits /// Hides the heretic overlay that outs them as the heretic @@ -1402,6 +1412,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NO_MINDSWAP "no_mindswap" ///trait given to food that can be baked by /datum/component/bakeable #define TRAIT_BAKEABLE "bakeable" +///trait given to food that can be microwaved by /datum/component/microwable +#define TRAIT_MICROWAVABLE "microwavable" +///trait given to food that can be cooked on a grilled by /datum/component/grillable +#define TRAIT_GRILLABLE "grillable" /// Trait given to foam darts that have an insert in them #define TRAIT_DART_HAS_INSERT "dart_has_insert" diff --git a/code/__DEFINES/tts.dm b/code/__DEFINES/tts.dm index fd88016408c7..02b7a8aed425 100644 --- a/code/__DEFINES/tts.dm +++ b/code/__DEFINES/tts.dm @@ -8,3 +8,13 @@ #define TTS_FILTER_RADIO "radio" ///TTS filter to activate a silicon effect on speech. #define TTS_FILTER_SILICON "silicon" +//Hear all TTS over radio. +#define TTS_SOUND_ALL_RADIO "Enabled" +//Hear all TTS over departmental radio channels only. +#define TTS_SOUND_DEPARTMENTAL_RADIO "Departmental Radio Only" +//Hear no TTS over radio. +#define TTS_SOUND_NO_RADIO "Disabled" +//Flag for TTS ghost radio +#define TTS_GHOST_RADIO "GHOST RADIO" +#define TTS_BLIPS_MASCULINE "Masculine" +#define TTS_BLIPS_FEMININE "Feminine" diff --git a/code/__DEFINES/vehicles.dm b/code/__DEFINES/vehicles.dm index 06635c5e55bd..44fb9847dea2 100644 --- a/code/__DEFINES/vehicles.dm +++ b/code/__DEFINES/vehicles.dm @@ -43,8 +43,3 @@ #define CLOWN_CANNON_BUSY 1 #define CLOWN_CANNON_READY 2 -//Vim defines -///cooldown between uses of the sound maker -#define VIM_SOUND_COOLDOWN (1 SECONDS) -///how much vim heals per weld -#define VIM_HEAL_AMOUNT 20 diff --git a/code/__DEFINES/verb.dm b/code/__DEFINES/verb.dm new file mode 100644 index 000000000000..1c470aa5c1ab --- /dev/null +++ b/code/__DEFINES/verb.dm @@ -0,0 +1,119 @@ +/** + * Defines a game verb with an associated /datum/verb_metadata. + * + * Usage: + * GAME_VERB(/client, ooc, "OOC", "Send a message in OOC.", "OOC", msg as text) + * // verb body + */ + +#define _GAME_VERB(owner_type, verb_path_name, verb_name, verb_desc, verb_category, show_in_context_menu, is_hidden, is_instant, verb_args...) \ +/datum/verb_metadata##owner_type/##verb_path_name \ +{ \ + name = ##verb_name; \ + description = ##verb_desc; \ + category = ##verb_category; \ + verb_path = ##owner_type/verb/##verb_path_name; \ + body_path = ##owner_type/proc/__gvb_##verb_path_name; \ +}; \ +##owner_type/verb/##verb_path_name(##verb_args) \ +{ \ + set name = ##verb_name; \ + set desc = ##verb_desc; \ + set hidden = ##is_hidden; \ + set popup_menu = ##show_in_context_menu; \ + set category = ##verb_category; \ + set instant = ##is_instant; \ + __gvb_##verb_path_name(arglist(args)); \ +}; \ +##owner_type/proc/__gvb_##verb_path_name(##verb_args) + +#define GAME_VERB(owner_type, verb_path_name, verb_name, verb_category, verb_args...) \ +_GAME_VERB(owner_type, verb_path_name, verb_name, "", verb_category, TRUE, FALSE, FALSE, ##verb_args) + +#define GAME_VERB_DESC(owner_type, verb_path_name, verb_name, verb_desc, verb_category, verb_args...) \ +_GAME_VERB(owner_type, verb_path_name, verb_name, verb_desc, verb_category, TRUE, FALSE, FALSE, ##verb_args) + +#define GAME_VERB_HIDDEN(owner_type, verb_path_name, verb_name, verb_args...) \ +_GAME_VERB(owner_type, verb_path_name, verb_name, "", null, FALSE, TRUE, FALSE, ##verb_args) + +#define GAME_VERB_HIDDEN_INSTANT(owner_type, verb_path_name, verb_name, verb_args...) \ +_GAME_VERB(owner_type, verb_path_name, verb_name, "", null, FALSE, TRUE, TRUE, ##verb_args) + +#define _GAME_VERB_PROC(owner_type, verb_path_name, verb_name, verb_desc, verb_category, show_in_context_menu, is_hidden, verb_args...) \ +/datum/verb_metadata##owner_type/##verb_path_name \ +{ \ + name = ##verb_name; \ + description = ##verb_desc; \ + category = ##verb_category; \ + verb_path = ##owner_type/proc/##verb_path_name; \ + body_path = ##owner_type/proc/__gvb_##verb_path_name; \ +}; \ +##owner_type/proc/##verb_path_name(##verb_args) \ +{ \ + set name = ##verb_name; \ + set desc = ##verb_desc; \ + set hidden = ##is_hidden; \ + set popup_menu = ##show_in_context_menu; \ + set category = ##verb_category; \ + __gvb_##verb_path_name(arglist(args)); \ +}; \ +##owner_type/proc/__gvb_##verb_path_name(##verb_args) + +#define GAME_VERB_PROC(owner_type, verb_path_name, verb_name, verb_category, verb_args...) \ +_GAME_VERB_PROC(owner_type, verb_path_name, verb_name, "", verb_category, TRUE, FALSE, ##verb_args) + +#define GAME_VERB_PROC_DESC(owner_type, verb_path_name, verb_name, verb_desc, verb_category, verb_args...) \ +_GAME_VERB_PROC(owner_type, verb_path_name, verb_name, verb_desc, verb_category, TRUE, FALSE, ##verb_args) + +#define _GAME_VERB_SRC(owner_type, verb_path_name, src_value, verb_name, verb_desc, verb_category, show_in_context_menu, is_hidden, verb_args...) \ +/datum/verb_metadata##owner_type/##verb_path_name \ +{ \ + name = ##verb_name; \ + description = ##verb_desc; \ + category = ##verb_category; \ + verb_path = ##owner_type/verb/##verb_path_name; \ + body_path = ##owner_type/proc/__gvb_##verb_path_name; \ +}; \ +##owner_type/verb/##verb_path_name(##verb_args) \ +{ \ + set name = ##verb_name; \ + set desc = ##verb_desc; \ + set hidden = ##is_hidden; \ + set popup_menu = ##show_in_context_menu; \ + set category = ##verb_category; \ + set src in src_value; \ + __gvb_##verb_path_name(arglist(args)); \ +}; \ +##owner_type/proc/__gvb_##verb_path_name(##verb_args) + +#define GAME_VERB_SRC(owner_type, verb_path_name, src_value, verb_name, verb_category, verb_args...) \ +_GAME_VERB_SRC(owner_type, verb_path_name, src_value, verb_name, "", verb_category, TRUE, FALSE, ##verb_args) + +#define GAME_VERB_SRC_DESC(owner_type, verb_path_name, src_value, verb_name, verb_desc, verb_category, verb_args...) \ +_GAME_VERB_SRC(owner_type, verb_path_name, src_value, verb_name, verb_desc, verb_category, TRUE, FALSE, ##verb_args) + +#define _GAME_VERB_GLOBAL_PROC(verb_path_name, verb_name, verb_desc, verb_category, is_hidden, verb_args...) \ +/datum/verb_metadata/##verb_path_name \ +{ \ + name = ##verb_name; \ + description = ##verb_desc; \ + category = ##verb_category; \ + verb_path = /proc/##verb_path_name; \ + body_path = /proc/__gvb_##verb_path_name; \ +}; \ +/proc/##verb_path_name(##verb_args) \ +{ \ + set name = ##verb_name; \ + set desc = ##verb_desc; \ + set hidden = ##is_hidden; \ + set category = ##verb_category; \ + __gvb_##verb_path_name(arglist(args)); \ +}; \ +/proc/__gvb_##verb_path_name(##verb_args) + +#define GAME_VERB_GLOBAL_PROC(verb_path_name, verb_name, verb_desc, verb_category, verb_args...) \ +_GAME_VERB_GLOBAL_PROC(verb_path_name, verb_name, verb_desc, verb_category, FALSE, ##verb_args) + +#define INVOKE_GAME_VERB(target, owner_type, verb_path_name, args...) SSverbs.invoke(target, /datum/verb_metadata##owner_type/##verb_path_name, ##args) +#define ASSIGN_GAME_VERB(target, owner_type, verb_path_name) SSverbs.assign_verb(target, /datum/verb_metadata##owner_type/##verb_path_name) +#define UNASSIGN_GAME_VERB(target, owner_type, verb_path_name) SSverbs.unassign_verb(target, /datum/verb_metadata##owner_type/##verb_path_name) diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index f6ae682fc9b4..e934ab169f0a 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -88,6 +88,7 @@ // /atom #define VV_HK_MODIFY_TRANSFORM "atom_transform" +#define VV_HK_DOWNLOAD_SPRITE "download_sprite" #define VV_HK_SPIN_ANIMATION "atom_spin" #define VV_HK_STOP_ALL_ANIMATIONS "stop_animations" #define VV_HK_MODIFY_GREYSCALE "modify_greyscale" @@ -109,6 +110,7 @@ #define VV_HK_DEADCHAT_PLAYS "deadchat_plays" #define VV_HK_ADD_REMOVE_FACTION "add_remove_faction" #define VV_HK_GET_FACTIONS "add_remove_factions" +#define VV_HK_SET_TTS_VOICE "set_tts_voice" // /obj #define VV_HK_OSAY "osay" diff --git a/code/__DEFINES/~darkpack/combat.dm b/code/__DEFINES/~darkpack/combat.dm index 2f6fec55c831..909326cab2b6 100644 --- a/code/__DEFINES/~darkpack/combat.dm +++ b/code/__DEFINES/~darkpack/combat.dm @@ -12,12 +12,12 @@ // Heavy placeholder to represent that lethal is ... twice as bad as bashing (brute basiclly) #define LETHAL_TTRPG_DAMAGE * 20 +#define FORCE_TO_DICE_POOL(force) round(force / (1 TTRPG_DAMAGE)) +#define FORCE_TO_DICE_POOL_UNROUNDED(force) (force / (1 TTRPG_DAMAGE)) +#define LEFTOVER_FORCE_TO_PERCENT(force) ((force % (1 TTRPG_DAMAGE) / (1 TTRPG_DAMAGE)) * 100) + // Unused for now #define BASHING "bashing" #define LETHAL "lethal" // exists in code/__DEFINES/~darkpack/aggravated_damage.dm //#define AGGRAVATED - -// To convert a measure of yards into tiles/range -#define YARDS / 5 -#define YARDS_TO_TILES * 5 diff --git a/code/__DEFINES/~darkpack/dcs/beastmaster_signals.dm b/code/__DEFINES/~darkpack/dcs/beastmaster_signals.dm new file mode 100644 index 000000000000..e1ea5ec968a2 --- /dev/null +++ b/code/__DEFINES/~darkpack/dcs/beastmaster_signals.dm @@ -0,0 +1,2 @@ +/// Signal to wipe any old beastmaster masters. +#define COMSIG_MOB_WIPE_BEASTMASTER "mob_wipe_beastmaster" diff --git a/code/__DEFINES/~darkpack/discipline.dm b/code/__DEFINES/~darkpack/discipline.dm index 10f85f1b3b4b..3b3a6a3fd6f1 100644 --- a/code/__DEFINES/~darkpack/discipline.dm +++ b/code/__DEFINES/~darkpack/discipline.dm @@ -47,3 +47,14 @@ #define POWER_TYPE_DISCIPLINE "discipline" ///Power is a Chi Art of the Kindred of the East game line #define POWER_TYPE_CHI_ART "chi_art" + +// Defines for Discipline keybindings +/// How many keybinds you get for selecting Disciplines, should be the maximum amount of Disciplines players can normally have. +/// NOTE: If you set this to zero with the keybinds enabled, players can only use them for Bloodheal. +#define DISCIPLINE_SELECTION_KEYBINDS_AMOUNT 5 +/// How many keybinds you get for activating Discipline powers, should be the maximum level players can normally have in Disciplines +#define DISCIPLINE_ACTIVATION_KEYBINDS_AMOUNT 5 +/// Category for the keybinds where you select a Discipline and then activate its powers +#define CATEGORY_DISCIPLINES "DISCIPLINES" +/// Category for the keybinds where you activate individual powers +#define CATEGORY_DISCIPLINE_POWERS "DISCIPLINE POWERS" diff --git a/code/__DEFINES/~darkpack/jobs.dm b/code/__DEFINES/~darkpack/jobs.dm index d234471e43d7..74bec4e99341 100644 --- a/code/__DEFINES/~darkpack/jobs.dm +++ b/code/__DEFINES/~darkpack/jobs.dm @@ -12,11 +12,8 @@ //No department #define JOB_CITIZEN "Citizen" -#define JOB_ORDINARY_CITIZEN "Ordinary Citizen" -#define JOB_BARISTA "Barista" -#define JOB_GRAVEYARD_KEEPER "Graveyard Keeper" +#define JOB_ORDINARY_CITIZEN "Unassigned" #define JOB_STREET_JANITOR "Street Janitor" -#define JOB_CLUB_WORKER "Club Worker" #define JOB_TAXI_DRIVER "Taxi Driver" //Camarilla @@ -68,6 +65,9 @@ //Church #define JOB_PRIEST "Priest" +//Strip Club +#define JOB_CLUB_WORKER "Club Worker" + //Giovanni #define JOB_CAPO "Capo" #define JOB_LA_SQUADRA "La Squadra" @@ -79,10 +79,6 @@ #define JOB_SABBAT_PACK "Sabbat Pack" #define JOB_SABBAT_SABBATIST "Sabbatist" -// Axe Gang -#define JOB_AXE_LEADER "Screentender" -#define JOB_AXE_GANG "Axe Gang" - // Supply #define JOB_DEALER "Dealer" #define JOB_SUPPLY_TECH "Supply Technician" @@ -113,75 +109,72 @@ #define JOB_DISPLAY_ORDER_CITIZEN 1 -#define JOB_DISPLAY_ORDER_PRINCE 2 -#define JOB_DISPLAY_ORDER_CLERK 3 -#define JOB_DISPLAY_ORDER_SHERIFF 4 -#define JOB_DISPLAY_ORDER_HARPY 5 -#define JOB_DISPLAY_ORDER_HOUND 6 -#define JOB_DISPLAY_ORDER_TOWERWORK 7 -#define JOB_DISPLAY_ORDER_BANU 8 -#define JOB_DISPLAY_ORDER_LASOMBRA 9 -#define JOB_DISPLAY_ORDER_MALKAVIAN 10 -#define JOB_DISPLAY_ORDER_NOSFERATU 11 -#define JOB_DISPLAY_ORDER_TOREADOR 12 -#define JOB_DISPLAY_ORDER_VENTRUE 13 - - -#define JOB_DISPLAY_ORDER_CLINICS_DIRECTOR 14 -#define JOB_DISPLAY_ORDER_DOCTOR 15 - -#define JOB_DISPLAY_ORDER_GRAVEYARD 16 -#define JOB_DISPLAY_ORDER_STREETJAN 17 -#define JOB_DISPLAY_ORDER_STRIP 18 -#define JOB_DISPLAY_ORDER_TAXI 19 -#define JOB_DISPLAY_ORDER_PRIEST 20 - -#define JOB_DISPLAY_ORDER_SUPPLY 21 -#define JOB_DISPLAY_ORDER_DEALER 22 - -#define JOB_DISPLAY_ORDER_BARON 23 -#define JOB_DISPLAY_ORDER_EMISSARY 24 -#define JOB_DISPLAY_ORDER_SWEEPER 25 -#define JOB_DISPLAY_ORDER_BRUISER 26 -#define JOB_DISPLAY_ORDER_LIAISON 27 -#define JOB_DISPLAY_ORDER_TAPSTER 28 - -#define JOB_DISPLAY_ORDER_REGENT 29 -#define JOB_DISPLAY_ORDER_ARCHIVIST 30 -#define JOB_DISPLAY_ORDER_GARGOYLE 31 - -#define JOB_DISPLAY_ORDER_GIOVANNI 32 - -#define JOB_DISPLAY_ORDER_POLICE_CAPTAIN 33 -#define JOB_DISPLAY_ORDER_POLICE_SERGEANT 34 -#define JOB_DISPLAY_ORDER_POLICE 35 -#define JOB_DISPLAY_ORDER_FBI 36 - -#define JOB_DISPLAY_ORDER_VOIVODE 37 -#define JOB_DISPLAY_ORDER_BOGATYR 38 -#define JOB_DISPLAY_ORDER_ZADRUGA 39 - -#define JOB_DISPLAY_ORDER_SABBATDUCTUS 40 -#define JOB_DISPLAY_ORDER_SABBATPACK 41 -#define JOB_DISPLAY_ORDER_SABBATPRIEST 42 - -#define JOB_DISPLAY_ORDER_COUNCIL 43 -#define JOB_DISPLAY_ORDER_TRUTHCATCHER 44 -#define JOB_DISPLAY_ORDER_WARDER 45 -#define JOB_DISPLAY_ORDER_WYRMFOE 46 -#define JOB_DISPLAY_ORDER_GUARDIAN 47 - -#define JOB_DISPLAY_ORDER_BRANCH_LEAD 48 -#define JOB_DISPLAY_ORDER_EXECUTIVE 49 -#define JOB_DISPLAY_ORDER_AFFAIRS 50 -#define JOB_DISPLAY_ORDER_SECCHIEF 51 -#define JOB_DISPLAY_ORDER_PENTEX_SEC 52 -#define JOB_DISPLAY_ORDER_EMPLOYEE 53 - -#define JOB_DISPLAY_ORDER_ABBE 54 -#define JOB_DISPLAY_ORDER_INQUISITOR 55 -#define JOB_DISPLAY_ORDER_CONDOTTIERI 56 -#define JOB_DISPLAY_ORDER_NOVICE 57 +#define JOB_DISPLAY_ORDER_PRINCE 1 +#define JOB_DISPLAY_ORDER_CLERK 2 +#define JOB_DISPLAY_ORDER_SHERIFF 3 +#define JOB_DISPLAY_ORDER_HARPY 4 +#define JOB_DISPLAY_ORDER_HOUND 5 +#define JOB_DISPLAY_ORDER_TOWERWORK 6 +#define JOB_DISPLAY_ORDER_BANU 7 +#define JOB_DISPLAY_ORDER_LASOMBRA 8 +#define JOB_DISPLAY_ORDER_MALKAVIAN 9 +#define JOB_DISPLAY_ORDER_NOSFERATU 10 +#define JOB_DISPLAY_ORDER_TOREADOR 11 +#define JOB_DISPLAY_ORDER_VENTRUE 12 + +#define JOB_DISPLAY_ORDER_CLINICS_DIRECTOR 1 +#define JOB_DISPLAY_ORDER_DOCTOR 2 + +#define JOB_DISPLAY_ORDER_STREETJAN 1 +#define JOB_DISPLAY_ORDER_STRIP 2 +#define JOB_DISPLAY_ORDER_TAXI 3 +#define JOB_DISPLAY_ORDER_PRIEST 4 + +#define JOB_DISPLAY_ORDER_SUPPLY 1 +#define JOB_DISPLAY_ORDER_DEALER 2 + +#define JOB_DISPLAY_ORDER_BARON 1 +#define JOB_DISPLAY_ORDER_EMISSARY 2 +#define JOB_DISPLAY_ORDER_SWEEPER 3 +#define JOB_DISPLAY_ORDER_BRUISER 4 +#define JOB_DISPLAY_ORDER_LIAISON 5 +#define JOB_DISPLAY_ORDER_TAPSTER 6 + +#define JOB_DISPLAY_ORDER_REGENT 1 +#define JOB_DISPLAY_ORDER_ARCHIVIST 2 +#define JOB_DISPLAY_ORDER_GARGOYLE 3 + +#define JOB_DISPLAY_ORDER_POLICE_CAPTAIN 1 +#define JOB_DISPLAY_ORDER_POLICE_SERGEANT 2 +#define JOB_DISPLAY_ORDER_POLICE 3 +#define JOB_DISPLAY_ORDER_DISPATCHER 4 +#define JOB_DISPLAY_ORDER_FBI 5 + +#define JOB_DISPLAY_ORDER_VOIVODE 1 +#define JOB_DISPLAY_ORDER_BOGATYR 2 +#define JOB_DISPLAY_ORDER_ZADRUGA 3 + +#define JOB_DISPLAY_ORDER_SABBATDUCTUS 1 +#define JOB_DISPLAY_ORDER_SABBATPACK 2 +#define JOB_DISPLAY_ORDER_SABBATPRIEST 3 + +#define JOB_DISPLAY_ORDER_COUNCIL 1 +#define JOB_DISPLAY_ORDER_TRUTHCATCHER 2 +#define JOB_DISPLAY_ORDER_WARDER 3 +#define JOB_DISPLAY_ORDER_WYRMFOE 4 +#define JOB_DISPLAY_ORDER_GUARDIAN 5 + +#define JOB_DISPLAY_ORDER_BRANCH_LEAD 1 +#define JOB_DISPLAY_ORDER_EXECUTIVE 2 +#define JOB_DISPLAY_ORDER_AFFAIRS 3 +#define JOB_DISPLAY_ORDER_SECCHIEF 4 +#define JOB_DISPLAY_ORDER_PENTEX_SEC 5 +#define JOB_DISPLAY_ORDER_EMPLOYEE 6 + +#define JOB_DISPLAY_ORDER_ABBE 1 +#define JOB_DISPLAY_ORDER_INQUISITOR 2 +#define JOB_DISPLAY_ORDER_CONDOTTIERI 3 +#define JOB_DISPLAY_ORDER_NOVICE 4 ////////////////////////////////////////////////// @@ -198,7 +191,7 @@ #define DEPARTMENT_BITFLAG_ANARCH (1<<5) #define DEPARTMENT_ANARCH "Anarch" #define DEPARTMENT_BITFLAG_STRIP_CLUB (1<<6) -#define DEPARTMENT_STRIP_CLUB "Strip_Club" +#define DEPARTMENT_STRIP_CLUB "Strip Club" #define DEPARTMENT_BITFLAG_SUPPLY (1<<7) #define DEPARTMENT_SUPPLY "Warehouse" #define DEPARTMENT_BITFLAG_GIOVANNI (1<<8) @@ -212,13 +205,13 @@ #define DEPARTMENT_BITFLAG_MANOR (1<<12) #define DEPARTMENT_MANOR "Manor" #define DEPARTMENT_BITFLAG_CITY_SERVICES (1<<13) -#define DEPARTMENT_CITY_SERVICES "City_Services" +#define DEPARTMENT_CITY_SERVICES "City Services" #define DEPARTMENT_BITFLAG_PENTEX (1<<14) #define DEPARTMENT_PENTEX "Pentex" #define DEPARTMENT_BITFLAG_GAIA (1<<15) -#define DEPARTMENT_GAIA "Garou_Nation" +#define DEPARTMENT_GAIA "Garou Nation" #define DEPARTMENT_BITFLAG_SOCIETY_OF_LEOPOLD (1<<16) -#define DEPARTMENT_SOCIETY_OF_LEOPOLD "Society_of_Leopold" +#define DEPARTMENT_SOCIETY_OF_LEOPOLD "Society of Leopold" DEFINE_BITFIELD(departments_bitflags, list( "CITIZEN" = DEPARTMENT_BITFLAG_CITIZEN, @@ -261,6 +254,7 @@ DEFINE_BITFIELD(departments_bitflags, list( #define SUPERVISOR_SOCIETY_OF_LEOPOLD "the Society of Leopold, the Inquisition, the local Provincial, and God" // Playtime tracking system, see jobs_exp.dm +// weird one. #define EXP_TYPE_KINDRED "Kindred" #define EXP_TYPE_GAIA "Garou Nation" #define EXP_TYPE_SPIRAL "Pentex" @@ -273,6 +267,7 @@ DEFINE_BITFIELD(departments_bitflags, list( #define EXP_TYPE_POLICE "Police Force" #define EXP_TYPE_NATIONAL_SECURITY "National Security" #define EXP_TYPE_SERVICES "City Services" +// this prob should just say clinic genericly. #define EXP_TYPE_CLINIC "St. John's Clinic" #define EXP_TYPE_GIOVANNI "Giovanni Family" #define EXP_TYPE_MANOR "Tzimisce Manor" diff --git a/code/__DEFINES/~darkpack/keybindings.dm b/code/__DEFINES/~darkpack/keybindings.dm index 95651d835c0c..0ecd6bc51799 100644 --- a/code/__DEFINES/~darkpack/keybindings.dm +++ b/code/__DEFINES/~darkpack/keybindings.dm @@ -15,3 +15,8 @@ // DO_EMOTES #define COMSIG_KB_CLIENT_DO_DOWN "keybinding_client_do_down" #define COMSIG_KB_CLIENT_DO_LONGER_DOWN "keybinding_client_do_longer_down" + +// Disciplines +#define COMSIG_KB_DISCIPLINE_SELECT "keybinding_discipline_select" +#define COMSIG_KB_DISCIPLINE_ACTIVATE "keybinding_discipline_activate" +#define COMSIG_KB_DISCIPLINE_POWER_ACTIVATE "keybinding_discipline_power_activate" diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 1d2d1967acd9..d91f50270980 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -8,12 +8,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai */ // CITY_TRAITS -#define STATION_TRAIT_RED_STAR "station_trait_red_star" -#define STATION_TRAIT_WILD_MASQUERADE "station_trait_wild_masquerade" +#define STATION_TRAIT_BLACKOUT "station_trait_blackout" +#define STATION_TRAIT_COSPLAY_CONVENTION "station_trait_cosplay_convention" #define STATION_TRAIT_INFESTATION "station_trait_infestation" #define STATION_TRAIT_PEST_CONTROL "station_trait_pest_control" +#define STATION_TRAIT_RED_STAR "station_trait_red_star" #define STATION_TRAIT_STRAY_MIGRATION "station_trait_stray_migration" -#define STATION_TRAIT_COSPLAY_CONVENTION "station_trait_cosplay_convention" +#define STATION_TRAIT_WILD_MASQUERADE "station_trait_wild_masquerade" // Mob traits @@ -102,6 +103,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BOND_WITHIN_THE_MOUNTAIN "bond_within_the_mountain" // Is the mob unable to be cuffed? (For Tzimisce zulo form and others) #define TRAIT_NO_CUFF "no_cuff" //Used for uncuffable forms such as Tenebrous and Blood form. +#define TRAIT_SCARRING_RESISTANT "scarring_resistant"// Temporal scars wont save +/// Stepping on glass shards immunity. Currently used for a couple Garou forms but could be used elsewhere. +#define TRAIT_HARDENED_SOLES "hardened_soles" // Allows the user to pass through doors @@ -190,5 +194,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EAT_FOOD "eat_food" #define TRAIT_CALM_HEART "calm_heart" #define TRAIT_ACUTE_HEARING "acute_hearing" +#define TRAIT_DISFIGURED_APPEARANCE "disfigured_appearance" +#define TRAIT_GRAVE_SMELL "grave_smell" +#define TRAIT_GLOWING_EYES "glowing_eyes" +#define TRAIT_PROMETHEAN_CLAY "promethean_clay" // END TRAIT DEFINES diff --git a/code/__HELPERS/_dreamluau.dm b/code/__HELPERS/_dreamluau.dm index ab5e29eb34a7..9436b95c5519 100644 --- a/code/__HELPERS/_dreamluau.dm +++ b/code/__HELPERS/_dreamluau.dm @@ -294,10 +294,10 @@ * Hard deleting an object without clearing userdata corresponding to it leaves the userdata to become associated with * the next DM object to receive the old object's reference ID, which may be undesirable behavior. * - * @param args the objects to disassociate from userdata. + * @param object the object to disassociate from userdata. * * @return null on success */ -#define DREAMLUAU_CLEAR_REF_USERDATA(args...) DREAMLUAU_CALL(clear_ref_userdata)(##args) +#define DREAMLUAU_CLEAR_REF_USERDATA(object) DREAMLUAU_CALL(clear_ref_userdata)((object)) #endif diff --git a/code/__HELPERS/atmospherics.dm b/code/__HELPERS/atmospherics.dm index 6264823b7f2e..d3f1522dbf82 100644 --- a/code/__HELPERS/atmospherics.dm +++ b/code/__HELPERS/atmospherics.dm @@ -41,11 +41,13 @@ ) if(!gasmix) return - for(var/gas_path in gasmix.gases) + var/list/cached_gas_id = GAS_META[META_GAS_ID] + var/list/cached_gas_name = GAS_META[META_GAS_NAME] + for(var/gas_path, amount in gasmix.moles) .["gases"] += list(list( - gasmix.gases[gas_path][GAS_META][META_GAS_ID], - gasmix.gases[gas_path][GAS_META][META_GAS_NAME], - gasmix.gases[gas_path][MOLES], + cached_gas_id[gas_path], + cached_gas_name[gas_path], + amount, )) for(var/datum/gas_reaction/reaction_result as anything in gasmix.reaction_results) .["reactions"] += list(list( @@ -75,13 +77,13 @@ GLOBAL_LIST_EMPTY(gas_handbook) for (var/datum/gas/gas_path as anything in subtypesof(/datum/gas)) var/list/gas_info = list() - var/list/meta_information = GLOB.meta_gas_info[gas_path] - if(!meta_information) + var/list/meta_information = GLOB.meta_gas_info + if(!meta_information[META_GAS_ID]) continue - gas_info["id"] = meta_information[META_GAS_ID] - gas_info["name"] = meta_information[META_GAS_NAME] - gas_info["description"] = meta_information[META_GAS_DESC] - gas_info["specific_heat"] = meta_information[META_GAS_SPECIFIC_HEAT] + gas_info["id"] = meta_information[META_GAS_ID][gas_path] + gas_info["name"] = meta_information[META_GAS_NAME][gas_path] + gas_info["description"] = meta_information[META_GAS_DESC][gas_path] + gas_info["specific_heat"] = meta_information[META_GAS_SPECIFIC_HEAT][gas_path] gas_info["reactions"] = list() momentary_gas_list[gas_path] = gas_info @@ -172,41 +174,9 @@ GLOBAL_LIST_EMPTY(gas_handbook) return null -/** - * A simple helper proc that checks if the contents of a list of gases are within acceptable terms. - * - * Arguments: - * * gases: The list of gases which contents are being checked - * * acceptable_gas_bounds: An associated list of gas types and acceptable boundaries in moles. e.g. /datum/gas/oxygen = list(16, 30) - * * * if the assoc list is null, then it'll be considered a safe gas and won't return FALSE. - * * extraneous_gas_limit: If a gas not in gases is found, this is the limit above which the proc will return FALSE. - * - * Returns TRUE if the list of gases is acceptable, FALSE otherwise. - */ -/proc/check_gases(list/gases, list/acceptable_gas_bounds, extraneous_gas_limit = 0.1) - SHOULD_BE_PURE(TRUE) - - var/list/gases_to_check = acceptable_gas_bounds.Copy() // thank you spaceman - for(var/id in gases) - var/gas_moles = gases[id][MOLES] - if(!(id in gases_to_check)) - if(gas_moles > extraneous_gas_limit) - return FALSE - continue - var/list/boundaries = gases_to_check[id] - if(boundaries && !ISINRANGE(gas_moles, boundaries[1], boundaries[2])) - return FALSE - gases_to_check -= id - ///Check that gases absent from the turf have a lower boundary of zero or none at all, otherwise return FALSE - for(var/id in gases_to_check) - var/list/boundaries = gases_to_check[id] - if(boundaries && boundaries[1] > 0) - return FALSE - return TRUE - /proc/print_gas_mixture(datum/gas_mixture/gas_mixture) var/message = "TEMPERATURE: [gas_mixture.temperature]K, QUANTITY: [gas_mixture.total_moles()] mols, VOLUME: [gas_mixture.volume]L; " - for(var/key in gas_mixture.gases) - var/list/gaslist = gas_mixture.gases[key] - message += "[gaslist[GAS_META][META_GAS_ID]]=[gaslist[MOLES]] mols;" + var/list/cached_gas_id = GAS_META[META_GAS_ID] + for(var/gas_id, amount in gas_mixture.moles) + message += "[cached_gas_id[gas_id]]=[amount] mols;" return message diff --git a/code/__HELPERS/botany.dm b/code/__HELPERS/botany.dm new file mode 100644 index 000000000000..33daa527b85c --- /dev/null +++ b/code/__HELPERS/botany.dm @@ -0,0 +1,55 @@ +/// Returns a list of seed data generated from the given seeds. +/// Filling the "name", "icon" and "icon_state" fields of the data is the caller's responsibility. +/proc/generate_seed_data_from(obj/item/seeds/seeds) + var/list/seed_data = list() + + seed_data["lifespan"] = seeds.lifespan + seed_data["endurance"] = seeds.endurance + seed_data["maturation"] = seeds.maturation + seed_data["production"] = seeds.production + seed_data["yield"] = seeds.yield + seed_data["potency"] = seeds.potency + seed_data["instability"] = seeds.instability + + seed_data["traits"] = list() + for(var/datum/plant_gene/trait/trait in seeds.genes) + seed_data["traits"] += trait.type + + seed_data["reagents"] = list() + for(var/datum/plant_gene/reagent/reagent in seeds.genes) + seed_data["reagents"] += list(list( + "name" = reagent.name, + "rate" = reagent.rate + )) + + var/datum/plant_gene/trait/maxchem/volume_mod_trait = locate(/datum/plant_gene/trait/maxchem) in seeds.genes + seed_data["volume_mod"] = volume_mod_trait ? volume_mod_trait.rate : 1 + + var/datum/plant_gene/trait/modified_volume/volume_unit_trait = locate(/datum/plant_gene/trait/modified_volume) in seeds.genes + seed_data["volume_units"] = volume_unit_trait ? volume_unit_trait.new_capacity : PLANT_REAGENT_VOLUME + + seed_data["mutatelist"] = list() + for(var/obj/item/seeds/mutant as anything in seeds.mutatelist) + seed_data["mutatelist"] += initial(mutant.plantname) + + if(ispath(seeds.product, /obj/item)) + var/obj/item/product = new seeds.product + + seed_data["grind_results"] = list() + for(var/datum/reagent/reagent as anything in product.grind_results()) + seed_data["grind_results"] += initial(reagent.name) + + if(istype(product, /obj/item/food/grown)) + var/obj/item/food/grown/grown_product = product + + var/datum/reagent/distill_reagent = grown_product.distill_reagent + if (ispath(distill_reagent, /datum/reagent)) + seed_data["distill_reagent"] = initial(distill_reagent.name) + + var/datum/reagent/juice_reagent = grown_product.juice_typepath() + if (ispath(juice_reagent, /datum/reagent)) + seed_data["juice_name"] = initial(juice_reagent.name) + + qdel(product) + + return seed_data diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index a7e607304344..958ad9b0d067 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -141,8 +141,8 @@ else return sorttext(b_name, a_name) -/proc/cmp_job_display_asc(datum/job/A, datum/job/B) - return A.display_order - B.display_order +/proc/cmp_job_display_with_departments_asc(datum/job/A, datum/job/B) + return A.display_order_with_department() - B.display_order_with_department() /proc/cmp_department_display_asc(datum/job_department/A, datum/job_department/B) return A.display_order - B.display_order diff --git a/code/__HELPERS/construction.dm b/code/__HELPERS/construction.dm index 557f93efc342..5413b5dcdc4f 100644 --- a/code/__HELPERS/construction.dm +++ b/code/__HELPERS/construction.dm @@ -56,63 +56,3 @@ return null . = new target.type(target.drop_location(), amount, FALSE, target.mats_per_unit) - -/** - * divides a list of materials uniformly among all contents of the target_object recursively - * Used to set materials of printed items with their design cost by taking into consideration their already existing materials - * e.g. if 12 iron is to be divided uniformly among 2 objects A, B who's current iron contents are 3 & 7 - * Then first we normalize those values i.e. find their weights to decide who gets an higher share of iron - * total_sum = 3 + 7 = 10, A = 3/10 = 0.3, B = 7/10 = 0.7 - * Then we finally multiply those weights with the user value of 12 we get - * A = 0.3 * 12 = 3.6, B = 0.7 * 12 = 8.4 i.e. 3.6 + 8.4 = 12!! - * Off course we round the values so we don't have to deal with floating point materials so the actual value - * ends being less but that's not an issue - * Arguments - * - * * [custom_materials][list] - the list of materials to set for the object - * * multiplier - multiplier passed to set_custom_materials - * * [target_object][atom] - the target object who's custom materials we are trying to modify - */ -/proc/split_materials_uniformly(list/custom_materials, multiplier, atom/target_object) - if(!length(target_object.contents)) //most common case where the object is just 1 thing - target_object.set_custom_materials(custom_materials, multiplier) - return - - //Step 1: Get recursive contents of all objects, only filter obj cause that what's material container accepts - var/list/reccursive_contents = target_object.get_all_contents_type(/obj/item) - - //Step 2: find the sum of each material type per object and record their amounts into an 2D list - var/list/material_map_sum = list() - var/list/material_map_amounts = list() - for(var/atom/object as anything in reccursive_contents) - var/list/item_materials = object.custom_materials - for(var/mat in custom_materials) - var/mat_amount = 1 //no materials mean we assign this default amount - if(length(item_materials)) - mat_amount = item_materials[mat] || 1 //if this object doesn't have our material type then assign a default value of 1 - - //record the sum of mats for normalizing - material_map_sum[mat] += mat_amount - //record the material amount for each item into an 2D list - var/list/mat_list_per_item = material_map_amounts[mat] - if(isnull(mat_list_per_item)) - material_map_amounts[mat] = list(mat_amount) - else - mat_list_per_item += mat_amount - - //Step 3: normalize & scale material_map_amounts with material_map_sum - for(var/mat in material_map_amounts) - var/mat_sum = material_map_sum[mat] - var/list/mat_per_item = material_map_amounts[mat] - for(var/i in 1 to mat_per_item.len) - mat_per_item[i] = (mat_per_item[i] / mat_sum) * custom_materials[mat] - - //Step 4 flatten the 2D list and assign the final values to each atom - var/index = 1 - for(var/atom/object as anything in reccursive_contents) - var/list/final_material_list = list() - for(var/mat in material_map_amounts) - var/list/mat_per_item = material_map_amounts[mat] - final_material_list[mat] = mat_per_item[index] - object.set_custom_materials(final_material_list, multiplier) - index += 1 diff --git a/code/__HELPERS/events.dm b/code/__HELPERS/events.dm index ad9370290262..0a1d871681c8 100644 --- a/code/__HELPERS/events.dm +++ b/code/__HELPERS/events.dm @@ -84,4 +84,34 @@ CRASH("Attempted to force event [event_typepath], but the event path could not be found!") addtimer(CALLBACK(our_event, TYPE_PROC_REF(/datum/round_event_control, run_event), FALSE, null, FALSE, cause), duration) +//Request a color in line with the current holiday or station traits of the station (or not if RANDOM/RAINBOW patterns are used. +/proc/request_decoration_colors(atom/thing_to_color, pattern, skip_station_trait = FALSE) + switch(pattern) + if(PATTERN_RANDOM) + return "#[random_short_color()]" + if(PATTERN_RAINBOW) + return get_decoration_color_from_pattern(thing_to_color, PATTERN_DEFAULT, PRIDE_FLAG_COLORS) + + if(!skip_station_trait) + for(var/datum/station_trait/trait in SSstation.station_traits) + var/decal_color = trait.get_decal_color(thing_to_color, pattern || PATTERN_DEFAULT) + if(decal_color) + return decal_color + + for(var/holiday_key in GLOB.holidays) + var/datum/holiday/holiday_real = GLOB.holidays[holiday_key] + if(!holiday_real.holiday_colors) + continue + return holiday_real.get_holiday_colors(thing_to_color, pattern) + +/// Proc to return colors for recoloring atoms based on a pattern and the position of the atom. Primarily used by holidays +/proc/get_decoration_color_from_pattern(atom/thing_to_color, pattern = PATTERN_DEFAULT, list/colors) + if(!length(colors)) + return + switch(pattern) + if(PATTERN_DEFAULT) + return colors[(thing_to_color.y % colors.len) + 1] + if(PATTERN_VERTICAL_STRIPE) + return colors[(thing_to_color.x % colors.len) + 1] + #undef UNLIT_AREA_BRIGHTNESS diff --git a/code/__HELPERS/logging/atmos.dm b/code/__HELPERS/logging/atmos.dm index 644c9e656257..9e2a76f648a7 100644 --- a/code/__HELPERS/logging/atmos.dm +++ b/code/__HELPERS/logging/atmos.dm @@ -2,26 +2,27 @@ /proc/log_atmos(text, datum/gas_mixture/gas_mixture) var/message = "[text]\"[print_gas_mixture(gas_mixture)]\"" //Cache commonly accessed information. - var/list/gases = gas_mixture.gases //List of gas datum paths that are associated with a list of information related to the gases. + var/list/cached_moles = gas_mixture.moles var/heat_capacity = gas_mixture.heat_capacity() var/temperature = gas_mixture.return_temperature() var/thermal_energy = temperature * heat_capacity var/volume = gas_mixture.return_volume() var/pressure = gas_mixture.return_pressure() var/total_moles = gas_mixture.total_moles() + var/list/cached_specific_heat = GAS_META[META_GAS_SPECIFIC_HEAT] + var/list/cached_gas_name = GAS_META[META_GAS_NAME] ///The total value of the gas mixture in credits. var/total_value = 0 var/list/specific_gas_data = list() //Gas specific information assigned to each gas. - for(var/datum/gas/gas_path as anything in gases) - var/list/gas = gases[gas_path] - var/moles = gas[MOLES] + for(var/datum/gas/gas_path as anything in cached_moles) + var/moles = cached_moles[gas_path] var/composition = moles / total_moles - var/energy = temperature * moles * gas[GAS_META][META_GAS_SPECIFIC_HEAT] + var/energy = temperature * moles * cached_specific_heat[gas_path] var/value = initial(gas_path.base_value) * moles total_value += value - specific_gas_data[gas[GAS_META][META_GAS_NAME]] = list( + specific_gas_data[cached_gas_name[gas_path]] = list( "moles" = moles, "composition" = composition, "molar concentration" = moles / volume, diff --git a/code/__HELPERS/logging/debug.dm b/code/__HELPERS/logging/debug.dm index 0d0f9f72ead3..0d86f1872fb1 100644 --- a/code/__HELPERS/logging/debug.dm +++ b/code/__HELPERS/logging/debug.dm @@ -26,8 +26,14 @@ /// Logging for mapping errors /proc/log_mapping(text, skip_world_log) #ifdef UNIT_TESTS - GLOB.unit_test_mapping_logs += text - return + // Only add to fail list if AREACOORD was conveyed, and it's a station or mining z-level. + // This is due to mapping errors don't have coords being impossible to diagnose as a unit test, + // and various ruins frequently intentionally doing non-standard things. + if(GLOB.test_areacoord_regex.Find(text)) + var/z = text2num(GLOB.test_areacoord_regex.group[1]) + if(is_station_level(z) || is_mining_level(z)) + GLOB.unit_test_mapping_logs += text + return #endif #ifdef MAP_TEST message_admins("Mapping: [text]") diff --git a/code/__HELPERS/logging/game.dm b/code/__HELPERS/logging/game.dm index 0affd00228b6..52c1a2254f3c 100644 --- a/code/__HELPERS/logging/game.dm +++ b/code/__HELPERS/logging/game.dm @@ -32,3 +32,7 @@ /proc/log_ghost_poll(text, list/data) logger.Log(LOG_CATEGORY_GAME_GHOST_POLLS, text, data) + +/// Logging for drawing on minimap +/proc/log_minimap_drawing(text, list/data) + logger.Log(LOG_CATEGORY_GAME_MINIMAP_DRAWING, text, data) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index d760b368a1d8..1b62251f6516 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -485,32 +485,6 @@ GLOBAL_LIST_INIT(skin_tone_names, list( var/mob/living/spawned_mob = new chosen(spawn_location) return spawned_mob -/proc/passtable_on(target, source) - var/mob/living/L = target - if (!HAS_TRAIT(L, TRAIT_PASSTABLE) && L.pass_flags & PASSTABLE) - ADD_TRAIT(L, TRAIT_PASSTABLE, INNATE_TRAIT) - ADD_TRAIT(L, TRAIT_PASSTABLE, source) - L.pass_flags |= PASSTABLE - -/proc/passtable_off(target, source) - var/mob/living/L = target - REMOVE_TRAIT(L, TRAIT_PASSTABLE, source) - if(!HAS_TRAIT(L, TRAIT_PASSTABLE)) - L.pass_flags &= ~PASSTABLE - -/proc/passwindow_on(target, source) - var/mob/living/target_mob = target - if (!HAS_TRAIT(target_mob, TRAIT_PASSWINDOW) && target_mob.pass_flags & PASSWINDOW) - ADD_TRAIT(target_mob, TRAIT_PASSWINDOW, INNATE_TRAIT) - ADD_TRAIT(target_mob, TRAIT_PASSWINDOW, source) - target_mob.pass_flags |= PASSWINDOW - -/proc/passwindow_off(target, source) - var/mob/living/target_mob = target - REMOVE_TRAIT(target_mob, TRAIT_PASSWINDOW, source) - if(!HAS_TRAIT(target_mob, TRAIT_PASSWINDOW)) - target_mob.pass_flags &= ~PASSWINDOW - /proc/dance_rotate(atom/movable/AM, datum/callback/callperrotate, set_original_dir=FALSE) set waitfor = FALSE var/originaldir = AM.dir diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index fb825d98199c..9f51fc796525 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -68,9 +68,6 @@ /mob/living/basic/bot/generate_random_mob_name(unique) return generate_random_name(gender, unique, list(/datum/language/machine = 1)) -/mob/living/simple_animal/bot/generate_random_mob_name(unique) - return generate_random_name(gender, unique, list(/datum/language/machine = 1)) - GLOBAL_VAR(command_name) /proc/command_name() if (GLOB.command_name) @@ -116,34 +113,42 @@ GLOBAL_VAR(command_name) return "[CITY_NAME] [CURRENT_STATION_YEAR]" // DARKPACK EDIT CHANGE /* // DARKPACK EDIT REMOVAL - This aint no station var/random = rand(1,5) - var/name = "" var/new_station_name = "" + var/prefix = "" + var/main = "" + //Rare: Pre-Prefix if (prob(10)) - name = pick(GLOB.station_prefixes) - new_station_name = name + " " - name = "" + prefix = pick(GLOB.station_prefixes) if(prob(0.1)) random = 999999999 //ridiculously long name in written numbers // Prefix - var/holiday_name = length(GLOB.holidays) && pick(GLOB.holidays) - if(holiday_name) - var/datum/holiday/holiday = GLOB.holidays[holiday_name] + var/picked_holiday = length(GLOB.holidays) && pick(GLOB.holidays) + if(picked_holiday) + var/datum/holiday/holiday = GLOB.holidays[picked_holiday] if(istype(holiday, /datum/holiday/friday_thirteenth)) random = 13 - name = holiday.getStationPrefix() - //get normal name - if(!name) - name = pick(GLOB.station_names) - if(name) - new_station_name += name + " " + + var/holiday_prefix = holiday.get_station_prefix() + if(holiday_prefix) + prefix = holiday_prefix + + var/holiday_base_name = holiday.get_station_name() + if(holiday_base_name) + main = holiday_base_name + + // Prefix + if(prefix) + new_station_name += "[prefix] " + + // Normal name + new_station_name += "[main || pick(GLOB.station_names)] " // Suffix - name = pick(GLOB.station_suffixes) - new_station_name += name + " " + new_station_name += "[pick(GLOB.station_suffixes)] " // ID Number switch(random) @@ -189,15 +194,6 @@ GLOBAL_VAR(command_name) return name - -//Traitors and traitor silicons will get these. Revs will not. -GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors. -GLOBAL_VAR(syndicate_code_response) //Code response for traitors. - -//Cached regex search - for checking if codewords are used. -GLOBAL_DATUM(syndicate_code_phrase_regex, /regex) -GLOBAL_DATUM(syndicate_code_response_regex, /regex) - /* Should be expanded. How this works: @@ -226,14 +222,16 @@ GLOBAL_DATUM(syndicate_code_response_regex, /regex) 25; 5 ) - var/list/safety = list(1,2,3)//Tells the proc which options to remove later on. - var/nouns = strings(ION_FILE, "ionabstract") - var/objects = strings(ION_FILE, "ionobjects") - var/adjectives = strings(ION_FILE, "ionadjectives") - var/threats = strings(ION_FILE, "ionthreats") - var/foods = strings(ION_FILE, "ionfood") - var/drinks = strings(ION_FILE, "iondrinks") - var/locations = strings(LOCATIONS_FILE, "locations") + var/list/safety = list(1, 2, 3)//Tells the proc which options to remove later on. + var/list/nouns = strings(ION_FILE, "ionabstract") + var/list/objects = strings(ION_FILE, "ionobjects") + var/list/adjectives = strings(ION_FILE, "ionadjectives") + var/list/threats = strings(ION_FILE, "ionthreats") + var/list/foods = strings(ION_FILE, "ionfood") + var/list/drinks = strings(ION_FILE, "iondrinks") + var/list/locations = list() + for(var/area/area_type as anything in list(/area/space) | GLOB.the_station_areas) + locations |= format_text(area_type::name) var/list/names = list() for(var/datum/record/crew/target in GLOB.manifest.general)//Picks from crew manifest. diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index 02a2248cc3b3..214c1477aeaf 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -208,12 +208,27 @@ . -= target break +/** + * Returns a list of mobs who are in hearing range of every radio in the list of radios given + */ /proc/get_hearers_in_radio_ranges(list/obj/item/radio/radios) . = list() // Returns a list of mobs who can hear any of the radios given in @radios for(var/obj/item/radio/radio as anything in radios) . |= get_hearers_in_LOS(radio.canhear_range, radio) +/** + * Returns a list of mobs who can hear any of the radios given in the given radio list, indexed by the radio. + * More expensive than get_hearers_in_radio_ranges() + */ +/proc/get_hearers_in_radio_ranges_track_radios(list/obj/item/radio/radios) + . = list() + // Returns a list of mobs who can hear any of the radios given in @radios, indexed by the radio. More expensive than get_hearers_in_radio_ranges() + for(var/obj/item/radio/radio as anything in radios) + var/list/possible_hearers = get_hearers_in_LOS(radio.canhear_range, radio) + if(length(possible_hearers)) + .[radio] = possible_hearers + /// A filter to be applied to get_hearers_in_x, that removes any non-mob hearers, converting them to their relevant mob if one exists (such as dullahan heads). /// Modifies input list. /proc/mob_only_listeners(list/atom/movable/hearers) diff --git a/code/__HELPERS/tts.dm b/code/__HELPERS/tts.dm index c78eafc26b8e..928b058863fa 100644 --- a/code/__HELPERS/tts.dm +++ b/code/__HELPERS/tts.dm @@ -3,6 +3,11 @@ var/static/regex/bad_chars_regex = regex("\[^a-zA-Z0-9 ,?.!'&-]", "g") return bad_chars_regex.Replace(text, " ") +/proc/tts_gibberish_speech_filter(text) + // Only allow alphanumeric characters and whitespace + var/static/regex/bad_chars_regex = regex("\[^a-zA-Z0-9 ,?.!'&-]", "g") + return bad_chars_regex.Replace(text, "#") + /proc/tts_filter_encode(text, speaker, pitch, blips = FALSE) text = replacetext(text, "%PITCH%", SStts.pitch_enabled ? pitch : 0) text = replacetext(text, "%FEMALE%", !!findtext(speaker, "Woman")) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index ccb1945a9248..fcd5753f6139 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -320,6 +320,15 @@ GLOBAL_LIST_INIT(modulo_angle_to_dir, list(NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH, if(var_source.vars.Find(A)) . += A +/// Converts a screen loc param to a x,y coordinate pixel on the screen. +/proc/params2screenpixel(scr_loc) + var/list/x_and_y = splittext(scr_loc, ",") + var/list/x_dirty = splittext(x_and_y[1], ":") + var/list/y_dirty = splittext(x_and_y[2], ":") + var/x = (text2num(x_dirty[1]) - 1) * ICON_SIZE_X + text2num(x_dirty[2]) + var/y = (text2num(y_dirty[1]) - 1) * ICON_SIZE_Y + text2num(y_dirty[2]) + return list(x, y) + //word of warning: using a matrix like this as a color value will simplify it back to a string after being set /proc/color_hex2color_matrix(string) var/length = length(string) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 2fdc2d43273d..cc6e50191d6f 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -130,12 +130,6 @@ #define DISABLE_DREAMLUAU #endif -// Since 0.2.0, dreamluau depends on breaking changes made to byondapi in 1674. -// Get rid of this when BYOND_MINOR is >= 1674 AND we don't have any alternate tests on <1674. -#if DM_BUILD < 1674 -#define DISABLE_DREAMLUAU -#endif - /// If this is uncommented, force our verb processing into just the 2% of a tick /// We normally reserve for it /// NEVER run this on live, it's for simulating highpop only @@ -187,6 +181,11 @@ #define DO_NOT_DEFER_ASSETS //Test at full capacity, the extra cost doesn't matter #define TIMER_DEBUG + +// Checks if unit tests are being run locally or well, not +#if !defined(CIBUILDING) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM) +#define RUNNING_LOCAL_TESTS +#endif #endif #ifdef TGS diff --git a/code/_globalvars/_regexes.dm b/code/_globalvars/_regexes.dm index 934296fe1bcb..b65a7b5050f5 100644 --- a/code/_globalvars/_regexes.dm +++ b/code/_globalvars/_regexes.dm @@ -21,3 +21,6 @@ GLOBAL_DATUM_INIT(html_tags, /regex, regex(@"<.*?>", "g")) GLOBAL_DATUM_INIT(filename_forbidden_chars, /regex, regex(@{""|[\\\n\t/?%*:|<>]|\.\."}, "g")) GLOBAL_PROTECT(filename_forbidden_chars) // had to use the OR operator for quotes instead of putting them in the character class because it breaks the syntax highlighting otherwise. + +//Find AREACOORD() in log_mapping messages +GLOBAL_DATUM_INIT(test_areacoord_regex, /regex, regex(@"\(-?\d+,-?\d+,(-?\d+)\)")) diff --git a/code/_globalvars/arcade.dm b/code/_globalvars/arcade.dm index 4510867575a7..48b207a2b3f5 100644 --- a/code/_globalvars/arcade.dm +++ b/code/_globalvars/arcade.dm @@ -61,6 +61,10 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/toy/plush/abductor/agent = 2, /obj/item/toy/plush/shark = 2, /obj/item/toy/plush/monkey = 2, + // DARKPACK EDIT ADD START - TOYS - (Plushes.dm addition for mapping) + /obj/item/toy/plush/goatplushie = 5, + /obj/item/toy/plush/argemia = 5, + // DARKPACK EDIT ADD END /obj/item/storage/belt/military/snack/full = 2, /obj/item/toy/brokenradio = 2, /obj/item/toy/braintoy = 2, diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index e43efea0140c..a44731d8213f 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -367,12 +367,6 @@ DEFINE_BITFIELD(mob_flags, list( "MOB_HAS_SCREENTIPS_NAME_OVERRIDE" = MOB_HAS_SCREENTIPS_NAME_OVERRIDE, )) -DEFINE_BITFIELD(mob_respiration_type, list( - "RESPIRATION_OXYGEN" = RESPIRATION_OXYGEN, - "RESPIRATION_N2" = RESPIRATION_N2, - "RESPIRATION_PLASMA" = RESPIRATION_PLASMA, -)) - DEFINE_BITFIELD(mobility_flags, list( "MOVE" = MOBILITY_MOVE, "STAND" = MOBILITY_STAND, @@ -630,12 +624,6 @@ DEFINE_BITFIELD(organ_flags, list( "ORGAN_UNUSABLE" = ORGAN_UNUSABLE, )) -DEFINE_BITFIELD(respiration_type, list( - "RESPIRATION_OXYGEN" = RESPIRATION_OXYGEN, - "RESPIRATION_N2" = RESPIRATION_N2, - "RESPIRATION_PLASMA" = RESPIRATION_PLASMA, -)) - DEFINE_BITFIELD(liked_foodtypes, list( "MEAT" = MEAT, "VEGETABLES" = VEGETABLES, diff --git a/code/_globalvars/layers.dm b/code/_globalvars/layers.dm index 1f16dc2543d4..a22ba26c175a 100644 --- a/code/_globalvars/layers.dm +++ b/code/_globalvars/layers.dm @@ -150,42 +150,46 @@ GLOBAL_LIST_INIT(admin_readable_layers, list( "LIGHTING_ABOVE_ALL" = LIGHTING_ABOVE_ALL, "EMISSIVE_LAYER_UNBLOCKABLE" = EMISSIVE_LAYER_UNBLOCKABLE, // Mob layers - "POWERS_LAYER" = -POWERS_LAYER, // DARKPACK EDIT ADD - POWERS - "MUTATIONS_LAYER" = -MUTATIONS_LAYER, "BODY_BEHIND_LAYER" = -BODY_BEHIND_LAYER, - "BODYPARTS_LOW_LAYER" = -BODYPARTS_LOW_LAYER, "BODYPARTS_LAYER" = -BODYPARTS_LAYER, "BODY_ADJ_LAYER" = -BODY_ADJ_LAYER, "BODY_LAYER" = -BODY_LAYER, "EYES_LAYER" = -EYES_LAYER, - "FRONT_MUTATIONS_LAYER" = -FRONT_MUTATIONS_LAYER, "DAMAGE_LAYER" = -DAMAGE_LAYER, "UNIFORM_LAYER" = -UNIFORM_LAYER, "ID_LAYER" = -ID_LAYER, - "ID_CARD_LAYER" = -ID_CARD_LAYER, - "BODYPARTS_HIGH_LAYER" = -BODYPARTS_HIGH_LAYER, "GLOVES_LAYER" = -GLOVES_LAYER, "SHOES_LAYER" = -SHOES_LAYER, - "LOW_FACEMASK_LAYER" = -LOW_FACEMASK_LAYER, "EARS_LAYER" = -EARS_LAYER, - "LOW_NECK_LAYER" = -LOW_NECK_LAYER, "SUIT_LAYER" = -SUIT_LAYER, "GLASSES_LAYER" = -GLASSES_LAYER, "BELT_LAYER" = -BELT_LAYER, "SUIT_STORE_LAYER" = -SUIT_STORE_LAYER, "NECK_LAYER" = -NECK_LAYER, "BACK_LAYER" = -BACK_LAYER, - "BENEATH_HAIR_LAYER" = -BENEATH_HAIR_LAYER, "HAIR_LAYER" = -HAIR_LAYER, "FACEMASK_LAYER" = -FACEMASK_LAYER, "HEAD_LAYER" = -HEAD_LAYER, - "OUTER_HAIR_LAYER" = -OUTER_HAIR_LAYER, "HANDCUFF_LAYER" = -HANDCUFF_LAYER, "LEGCUFF_LAYER" = -LEGCUFF_LAYER, "HANDS_LAYER" = -HANDS_LAYER, "BODY_FRONT_LAYER" = -BODY_FRONT_LAYER, - "ABOVE_BODY_FRONT_GLASSES_LAYER" = -ABOVE_BODY_FRONT_GLASSES_LAYER, - "ABOVE_BODY_FRONT_HEAD_LAYER" = -ABOVE_BODY_FRONT_HEAD_LAYER, "WOUND_LAYER" = -WOUND_LAYER, + "POWERS_LAYER" = -POWERS_LAYER, // DARKPACK EDIT ADD - POWERS + // Alt. mob layers + "ABOVE_BODY_FRONT_HEAD_LAYER" = -ABOVE_BODY_FRONT_HEAD_LAYER, + "ABOVE_BODY_FRONT_LAYER" = -ABOVE_BODY_FRONT_LAYER, + "ABOVE_SHOES_LAYER" = -ABOVE_SHOES_LAYER, + "BENEATH_HAIR_LAYER" = -BENEATH_HAIR_LAYER, + "BODYPARTS_HIGH_LAYER" = -BODYPARTS_HIGH_LAYER, + "BODYPARTS_LOW_LAYER" = -BODYPARTS_LOW_LAYER, + "FRONT_MUTATIONS_LAYER" = -FRONT_MUTATIONS_LAYER, "HALO_LAYER" = -HALO_LAYER, + "LOW_FACEMASK_LAYER" = -LOW_FACEMASK_LAYER, + "LOW_NECK_LAYER" = -LOW_NECK_LAYER, + "MUTATIONS_LAYER" = -MUTATIONS_LAYER, + "OUTER_HAIR_LAYER" = -OUTER_HAIR_LAYER, + "UNDER_HEAD_LAYER" = -UNDER_HEAD_LAYER, + "UNDER_SUIT_LAYER" = -UNDER_SUIT_LAYER, + "UNDER_UNIFORM_LAYER" = -UNDER_UNIFORM_LAYER, )) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 88b8631cf1f5..856315a8273c 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -17,6 +17,7 @@ GLOBAL_LIST_INIT(trash_loot, list(//junk: useless, very easy to get, or ghetto chemistry items list(//trash /obj/item/trash/can = 1, + /* // DARKPACK EDIT REMOVAL /obj/item/trash/candy = 1, /obj/item/trash/cheesie = 1, /obj/item/trash/chips = 1, @@ -24,6 +25,10 @@ GLOBAL_LIST_INIT(trash_loot, list(//junk: useless, very easy to get, or ghetto c /obj/item/trash/popcorn = 1, /obj/item/trash/raisins = 1, /obj/item/trash/sosjerky = 1, + */ + // DARKPACK ADD CHANGE START + /obj/effect/spawner/random/trash/food_packaging = 7, + // DARKPACK ADD CHANGE END /obj/item/trash/flare = 1, /obj/item/trash/candle = 1, @@ -101,7 +106,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/radio/headset = 1, /obj/item/storage/backpack = 1, /obj/item/storage/belt/fannypack = 1, - /obj/item/storage/wallet/random = 1, + /obj/item/storage/wallet/darkpack = 1, // DARKPACK EDIT CHANGE ) = 1, list(//construction and crafting @@ -147,7 +152,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/extinguisher = 1, /obj/item/grenade/smokebomb = 1, /obj/item/radio/off = 1, - /obj/item/stack/spacecash/c10 = 1, + /obj/item/stack/dollar/rand/hundred = 1, // DARKPACK EDIT CHANGE /obj/item/stack/medical/wrap/sticky_tape = 1, /obj/item/tank/internals/emergency_oxygen = 1, /obj/item/paper/paperslip/fishing_tip = 1, @@ -164,6 +169,8 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items list(//tools + /obj/effect/spawner/random/weapon/small_melee = 10, // DARKPACK EDIT ADD START - LOOT + /obj/effect/spawner/random/weapon/weak_large_melee = 5, // DARKPACK EDIT ADD END /obj/item/grenade/iedcasing/spawned = 1, /obj/item/hatchet = 1, /obj/item/melee/baton/security/cattleprod = 1, @@ -246,6 +253,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/food/canned/peaches/maint = 1, /obj/item/storage/box/donkpockets = 1, /obj/item/storage/box/gum/happiness = 1, + /obj/item/storage/box/ramen_beef = 1, list(//Donk Varieties /obj/item/storage/box/donkpockets/donkpocketberry = 1, /obj/item/storage/box/donkpockets/donkpockethonk = 1, @@ -364,15 +372,20 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items ) = 1, list(//misc + /obj/effect/spawner/random/occult/artifact = 10, // DARKPACK EDIT ADD /obj/item/book/granter/crafting_recipe/dusting/pipegun_prime = 1, /obj/item/book/granter/crafting_recipe/trash_cannon = 1, + /* // DARKPACK EDIT REMOVAL /obj/item/book/granter/crafting_recipe/dusting/laser_musket_prime = 1, /obj/item/book/granter/crafting_recipe/dusting/detached_ratvarian_repeater = 1, /obj/item/book/granter/sign_language = 1, + */ /obj/item/disk/nuclear/fake = 1, /obj/item/disk/surgery/advanced_plastic_surgery = 1, + /* // DARKPACK EDIT REMOVAL /obj/item/skillchip/brainwashing = 1, /obj/item/skillchip/intj = 1, + */ /obj/item/tattoo_kit = 1, /obj/item/folder/ancient_paperwork = 1, ) = 1, diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index a564d55c4203..61b8ff00351b 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(martial_prefix, world.file2list("strings/names/martial_prefix.t GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.txt")) GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt")) GLOBAL_LIST_INIT(mime_names, world.file2list("strings/names/mime.txt")) +GLOBAL_LIST_INIT(mirror_maid_names, world.file2list("strings/names/mirror_maid.txt")) GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt")) GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt")) GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index a13ed9e5c7b7..2db14ace9f2c 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -100,7 +100,6 @@ GLOBAL_LIST_INIT(phobia_mobs, list( /mob/living/basic/drone, /mob/living/silicon/ai, /mob/living/silicon/robot, - /mob/living/simple_animal/bot, )), "security" = typecacheof(list(/mob/living/basic/bot/secbot)), "spiders" = typecacheof(list( @@ -125,7 +124,7 @@ GLOBAL_LIST_INIT(phobia_mobs, list( /mob/living/basic/skeleton, /mob/living/basic/wizard, /mob/living/basic/zombie, - /mob/living/simple_animal/bot/mulebot/paranormal, + /mob/living/basic/bot/mulebot/paranormal, /mob/living/basic/voidwalker, )), // DARKPACK EDIT ADD START - Religious phobia diff --git a/code/_globalvars/religion.dm b/code/_globalvars/religion.dm index 063ff0e86428..c2ea1a69d350 100644 --- a/code/_globalvars/religion.dm +++ b/code/_globalvars/religion.dm @@ -15,6 +15,39 @@ GLOBAL_LIST_EMPTY(chaplain_altars) GLOBAL_VAR(holy_weapon_type) GLOBAL_VAR(holy_armor_type) +GLOBAL_LIST_INIT(prayer_type_to_font_color, list( + DEFAULT_PRAYER = "purple", + CULT_PRAYER = "black", + HERETIC_PRAYER = "green", + CHAPLAIN_PRAYER = "yellow", + SPIRITUAL_PRAYER = "blue", + EVIL_PRAYER = "red", + SANTA_PRAYER = "purple", + SANTA_NAUGHTY_PRAYER = "red", +)) + +GLOBAL_LIST_INIT(prayer_type_to_icon_state, list( + DEFAULT_PRAYER = "bible", + CULT_PRAYER = "tome", + HERETIC_PRAYER = "necronomicon", + CHAPLAIN_PRAYER = "kingyellow", + SPIRITUAL_PRAYER = "holylight", + EVIL_PRAYER = "burning", + SANTA_PRAYER = "bible", //here just in case, we use present boxes for the icon + SANTA_NAUGHTY_PRAYER = "burning", +)) + +GLOBAL_LIST_INIT(prayer_type_to_message_box, list( + DEFAULT_PRAYER = "", + CULT_PRAYER = "red_box", + HERETIC_PRAYER = "green_box", + CHAPLAIN_PRAYER = "blue_box", + SPIRITUAL_PRAYER = "", + EVIL_PRAYER = "red_box", + SANTA_PRAYER = "blue_box", + SANTA_NAUGHTY_PRAYER = "red_box", +)) + /// Sets a new religious sect used by all chaplains int he round /proc/set_new_religious_sect(path, reset_existing = FALSE) if(!ispath(path, /datum/religion_sect)) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index d73c9685ddd4..bee13c2114d2 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -21,10 +21,10 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DRYABLE" = TRAIT_DRYABLE, "TRAIT_ELEVATING_OBJECT" = TRAIT_ELEVATING_OBJECT, "TRAIT_FISHING_SPOT" = TRAIT_FISHING_SPOT, - "TRAIT_FOOD_CHEF_MADE" = TRAIT_FOOD_CHEF_MADE, "TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED, "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, "TRAIT_GOT_DAMPENED" = TRAIT_GOT_DAMPENED, + "TRAIT_HANDMADE" = TRAIT_HANDMADE, "TRAIT_INGREDIENTS_HOLDER" = TRAIT_INGREDIENTS_HOLDER, "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, "TRAIT_LIGHTING_DEBUGGED" = TRAIT_LIGHTING_DEBUGGED, @@ -60,6 +60,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE, "TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED, "TRAIT_IGNORE_DEMOLITION" = TRAIT_IGNORE_DEMOLITION, + "TRAIT_IGNORED_BY_MAT_REDEMPTION" = TRAIT_IGNORED_BY_MAT_REDEMPTION, "TRAIT_IMMERSED" = TRAIT_IMMERSED, "TRAIT_INVERTED_DEMOLITION" = TRAIT_INVERTED_DEMOLITION, "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, @@ -141,12 +142,13 @@ GLOBAL_LIST_INIT(traits_by_type, list( "STATION_TRAIT_UNNATURAL_ATMOSPHERE" = STATION_TRAIT_UNNATURAL_ATMOSPHERE, "STATION_TRAIT_SPIKED_DRINKS" = STATION_TRAIT_SPIKED_DRINKS, "STATION_TRAIT_SPAWN_WEAKPOINTS" = STATION_TRAIT_SPAWN_WEAKPOINTS, - "STATION_TRAIT_RED_STAR" = STATION_TRAIT_RED_STAR, // DARKPACK EDIT ADD START - CITY_TRAITS - "STATION_TRAIT_WILD_MASQUERADE" = STATION_TRAIT_WILD_MASQUERADE, + "STATION_TRAIT_BLACKOUT" = STATION_TRAIT_BLACKOUT, // DARKPACK EDIT ADD START - CITY_TRAITS + "STATION_TRAIT_COSPLAY_CONVENTION" = STATION_TRAIT_COSPLAY_CONVENTION, "STATION_TRAIT_INFESTATION" = STATION_TRAIT_INFESTATION, "STATION_TRAIT_PEST_CONTROL" = STATION_TRAIT_PEST_CONTROL, + "STATION_TRAIT_RED_STAR" = STATION_TRAIT_RED_STAR, "STATION_TRAIT_STRAY_MIGRATION" = STATION_TRAIT_STRAY_MIGRATION, - "STATION_TRAIT_COSPLAY_CONVENTION" = STATION_TRAIT_COSPLAY_CONVENTION, // DARKPACK EDIT ADD END + "STATION_TRAIT_WILD_MASQUERADE" = STATION_TRAIT_WILD_MASQUERADE, // DARKPACK EDIT ADD END ), /datum/deathmatch_lobby = list( "TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS" = TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS, @@ -272,6 +274,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER, "TRAIT_DISPLAY_JOB_IN_BINARY" = TRAIT_DISPLAY_JOB_IN_BINARY, "TRAIT_DISSECTED" = TRAIT_DISSECTED, + "TRAIT_DONT_HEAR_PRAYERS" = TRAIT_DONT_HEAR_PRAYERS, "TRAIT_DONT_WRITE_MEMORY" = TRAIT_DONT_WRITE_MEMORY, "TRAIT_DOUBLE_TAP" = TRAIT_DOUBLE_TAP, "TRAIT_DREAMING" = TRAIT_DREAMING, @@ -659,6 +662,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, "TRAIT_NOGRAV_ALWAYS_DRIFT" = TRAIT_NOGRAV_ALWAYS_DRIFT, "TRAIT_SPEECH_BOOSTER" = TRAIT_SPEECH_BOOSTER, + "TRAIT_MINIMAP_TABLE_DRAW" = TRAIT_MINIMAP_TABLE_DRAW, "TRAIT_MINING_PARRYING" = TRAIT_MINING_PARRYING, "TRAIT_MINING_AOE_IMMUNE" = TRAIT_MINING_AOE_IMMUNE, "TRAIT_IGNORE_FIRE_PROTECTION" = TRAIT_IGNORE_FIRE_PROTECTION, @@ -695,6 +699,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DIFFICULT_FRENZY" = TRAIT_DIFFICULT_FRENZY, // DARKPACK EDIT ADD - FRENZY "TRAIT_DIFFICULT_RAGE" = TRAIT_DIFFICULT_RAGE, // DARKPACK EDIT ADD - FRENZY "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_DULLFANGS" = TRAIT_DULLFANGS, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_EAT_FOOD" = TRAIT_EAT_FOOD, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, //DARKPACK EDIT ADD @@ -708,9 +713,12 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FORCED_EMOTION" = TRAIT_FORCED_EMOTION, // DARKPACK EDIT ADD - Melpominee "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) + "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_GOLD_WEAKNESS" = TRAIT_GOLD_WEAKNESS, // DARKPACK EDIT ADD - WEREWOLF - (corax) + "TRAIT_GRAVE_SMELL" = TRAIT_GRAVE_SMELL, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD + "TRAIT_HARDENED_SOLES" = TRAIT_HARDENED_SOLES, // DARKPACK EDIT ADD "TRAIT_HIDDEN_DIABLERIE" = TRAIT_HIDDEN_DIABLERIE, //DARKPACK EDIT ADD "TRAIT_HIDDEN_WYRMTAINT" = TRAIT_HIDDEN_WYRMTAINT, // DARKPACK EDIT ADD "TRAIT_HOMOSEXUAL" = TRAIT_HOMOSEXUAL, // DARKPACK EDIT ADD @@ -744,11 +752,13 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PERMAFANGS" = TRAIT_PERMAFANGS, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_PIERCED_VEIL" = TRAIT_PIERCED_VEIL, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_PREY_EXCLUSION" = TRAIT_PREY_EXCLUSION, // DARKPACK EDIT ADD - MERITS_FLAWS + "TRAIT_PROMETHEAN_CLAY" = TRAIT_PROMETHEAN_CLAY, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_RAZOR_CLAWS" = TRAIT_RAZOR_CLAWS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD "TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD "TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD "TRAIT_SANGUINE_INCONGRUITY" = TRAIT_SANGUINE_INCONGRUITY, // DARKPACK EDIT ADD - Giovanni Quirk + "TRAIT_SCARRING_RESISTANT" = TRAIT_SCARRING_RESISTANT, // DARKPACK EDIT ADD "TRAIT_SENSITIVE_HUMANITY" = TRAIT_SENSITIVE_HUMANITY, // DARKPACK EDIT ADD "TRAIT_SERPENTIS_SKIN" = TRAIT_SERPENTIS_SKIN, // DARKPACK EDIT ADD - POWERS - (Serpentis) "TRAIT_SILENCED" = TRAIT_SILENCED, // DARKPACK EDIT ADD - POWERS - (Quietus) @@ -807,11 +817,14 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GERM_SENSITIVE" = TRAIT_GERM_SENSITIVE, "TRAIT_GOOD_QUALITY_BAIT" = TRAIT_GOOD_QUALITY_BAIT, "TRAIT_GREAT_QUALITY_BAIT" = TRAIT_GREAT_QUALITY_BAIT, + "TRAIT_GRILLABLE" = TRAIT_GRILLABLE, "TRAIT_HAUNTED" = TRAIT_HAUNTED, + "TRAIT_HERETIC_AURA_HIDDEN" = TRAIT_HERETIC_AURA_HIDDEN, "TRAIT_HONKSPAMMING" = TRAIT_HONKSPAMMING, "TRAIT_INNATELY_FANTASTICAL_ITEM" = TRAIT_INNATELY_FANTASTICAL_ITEM, "TRAIT_INSTANTLY_PROCESSES_BOULDERS" = TRAIT_INSTANTLY_PROCESSES_BOULDERS, "TRAIT_ITEM_OBJECTIVE_BLOCKED" = TRAIT_ITEM_OBJECTIVE_BLOCKED, + "TRAIT_MICROWAVABLE" = TRAIT_MICROWAVABLE, "TRAIT_NEEDS_TWO_HANDS" = TRAIT_NEEDS_TWO_HANDS, "TRAIT_NO_BARCODES" = TRAIT_NO_BARCODES, "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, @@ -821,6 +834,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NODROP" = TRAIT_NODROP, "TRAIT_NO_WORN_ICON" = TRAIT_NO_WORN_ICON, "TRAIT_NULLROD_ITEM" = TRAIT_NULLROD_ITEM, + "TRAIT_OFFERED_WHEN_PULLED" = TRAIT_OFFERED_WHEN_PULLED, "TRAIT_OMNI_BAIT" = TRAIT_OMNI_BAIT, "TRAIT_PLANT_WILDMUTATE" = TRAIT_PLANT_WILDMUTATE, "TRAIT_POISONOUS_BAIT" = TRAIT_POISONOUS_BAIT, @@ -831,7 +845,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_UNCOMPOSTABLE" = TRAIT_UNCOMPOSTABLE, "TRAIT_UNIQUE_AQUARIUM_CONTENT" = TRAIT_UNIQUE_AQUARIUM_CONTENT, "TRAIT_WIELDED" = TRAIT_WIELDED, - "TRAIT_HERETIC_AURA_HIDDEN" = TRAIT_HERETIC_AURA_HIDDEN, ), /obj/item/ammo_casing = list( "TRAIT_DART_HAS_INSERT" = TRAIT_DART_HAS_INSERT, @@ -846,6 +859,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( /obj/item/bodypart/head = list( "TRAIT_DISFIGURED" = TRAIT_DISFIGURED, ), + /obj/item/borg = list( + "TRAIT_BORG_GIVE" = TRAIT_BORG_GIVE, + ), /obj/item/card/id = list( "TRAIT_JOB_FIRST_ID_CARD" = TRAIT_JOB_FIRST_ID_CARD, "TRAIT_MAGNETIC_ID_CARD" = TRAIT_MAGNETIC_ID_CARD, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 753a2e7d3cb3..8803705df590 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -381,6 +381,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_DIFFICULT_FRENZY" = TRAIT_DIFFICULT_FRENZY, // DARKPACK EDIT ADD - FRENZY "TRAIT_DIFFICULT_RAGE" = TRAIT_DIFFICULT_RAGE, // DARKPACK EDIT ADD - FRENZY "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, // DARKPACK EDIT ADD + "TRAIT_DISFIGURED_APPEARANCE" = TRAIT_DISFIGURED_APPEARANCE, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_DULLFANGS" = TRAIT_DULLFANGS, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_EFFICIENT_DIGESTION" = TRAIT_EFFICIENT_DIGESTION, // DARKPACK EDIT ADD "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD @@ -390,7 +391,9 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_FERA_RENOWN" = TRAIT_FERA_RENOWN, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FRENETIC_AURA" = TRAIT_FRENETIC_AURA, // DARKPACK EDIT ADD "TRAIT_GHOST_VISION" = TRAIT_GHOST_VISION, // DARKPACK EDIT ADD - POWERS - (Necromancy) + "TRAIT_GLOWING_EYES" = TRAIT_GLOWING_EYES, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_GOLD_WEAKNESS" = TRAIT_GOLD_WEAKNESS, // DARKPACK EDIT ADD - WEREWOLF - (corax) + "TRAIT_GRAVE_SMELL" = TRAIT_GRAVE_SMELL, // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS "TRAIT_GRIP_OF_THE_DAMNED" = TRAIT_GRIP_OF_THE_DAMNED, // DARKPACK EDIT ADD "TRAIT_GULLET" = TRAIT_GULLET, // DARKPACK EDIT ADD "TRAIT_HIDDEN_DIABLERIE" = TRAIT_HIDDEN_DIABLERIE, //DARKPACK EDIT ADD @@ -421,10 +424,12 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_PASS_THROUGH_WALLS" = TRAIT_PASS_THROUGH_WALLS, // DARKPACK EDIT ADD "TRAIT_PERMAFANGS" = TRAIT_PERMAFANGS, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_PIERCED_VEIL" = TRAIT_PIERCED_VEIL, // DARKPACK EDIT ADD - MERITS_FLAWS + "TRAIT_PROMETHEAN_CLAY" = TRAIT_PROMETHEAN_CLAY, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_RAZOR_CLAWS" = TRAIT_RAZOR_CLAWS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD "TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD "TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD + "TRAIT_SCARRING_RESISTANT" = TRAIT_SCARRING_RESISTANT, // DARKPACK EDIT ADD "TRAIT_SENSITIVE_HUMANITY" = TRAIT_SENSITIVE_HUMANITY, // DARKPACK EDIT ADD "TRAIT_SERPENTIS_SKIN" = TRAIT_SERPENTIS_SKIN, // DARKPACK EDIT ADD - POWERS - (Serpentis) "TRAIT_SILENCED" = TRAIT_SILENCED, // DARKPACK EDIT ADD - POWERS - (Quietus) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 394fe4cd206c..df95a6031c7a 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -52,6 +52,9 @@ if(LAZYACCESS(modifiers, CTRL_CLICK)) CtrlShiftClickOn(A) return + if(LAZYACCESS(modifiers, MIDDLE_CLICK)) + ShiftMiddleClickOn(A) + return ShiftClickOn(A) return if(LAZYACCESS(modifiers, ALT_CLICK)) // alt and alt-gr (rightalt) @@ -269,6 +272,15 @@ togglelock(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +/mob/living/silicon/ai/ShiftMiddleClickOn(atom/A) + if(control_disabled || incapacitated) + return + if(!can_see(A)) + return + if(!point_at(A, TRUE)) + return + log_message("points at [A] using holopad", LOG_EMOTE) + /* AI Turrets */ /obj/machinery/turretid/ai_click_alt(mob/living/silicon/ai/user) //toggles lethal on turrets if(ailock) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 8a7a8bb10d88..cb3eb9c3ca5c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -359,6 +359,13 @@ /mob/proc/RangedAttack(atom/A, modifiers) if(SEND_SIGNAL(src, COMSIG_MOB_ATTACK_RANGED, A, modifiers) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE + A.RangedAttackOn(src, modifiers) + +/** + * Atom's version of RangedAttack, for when you want to do something when a mob clicks on this with more sanity than just Click() + */ +/atom/proc/RangedAttackOn(mob/attacker, list/modifiers) + return null /** * Ranged secondary attack diff --git a/code/_onclick/click_ctrl.dm b/code/_onclick/click_ctrl.dm index e80f8fa05cb9..37c8e3ec1193 100644 --- a/code/_onclick/click_ctrl.dm +++ b/code/_onclick/click_ctrl.dm @@ -34,7 +34,7 @@ SHOULD_NOT_OVERRIDE(TRUE) . = ..() - if(. || world.time < next_move || !can_perform_action(target, NOT_INSIDE_TARGET | SILENT_ADJACENCY | ALLOW_RESTING | FORBID_TELEKINESIS_REACH)) + if(. || !ismovable(target) || world.time < next_move || !can_perform_action(target, NOT_INSIDE_TARGET | SILENT_ADJACENCY | ALLOW_RESTING | FORBID_TELEKINESIS_REACH)) return . = TRUE diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index ee51d5b27cb6..700a723c1a0e 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -6,7 +6,7 @@ // The default UI style is the first one in the list GLOBAL_LIST_INIT(available_ui_styles, list( - "World of Darkness" = 'modular_darkpack/master_files/icons/hud/screen_darkness_new.dmi', // DARKPACK EDIT ADD - (Put at the top because it has almost full coverage now!) + "World-of-Darkness" = 'modular_darkpack/master_files/icons/hud/screen_darkness_new.dmi', // DARKPACK EDIT ADD - (Put at the top because it has almost full coverage now!) "Pentex-Knox" = 'modular_darkpack/master_files/icons/hud/screen_pentexknox.dmi', // DARKPACK EDIT ADD - (Trasen-Knox logo with a Pentex logo) /* // DARKPACK EDIT REMOVAL "Midnight" = 'icons/hud/screen_midnight.dmi', @@ -430,11 +430,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/mob/screenmob = viewmob || mymob inventory_update(screenmob) -/datum/hud/new_player/show_hud(version = 0, mob/viewmob) - . = ..() - if(.) - show_station_trait_buttons() - /datum/hud/proc/inventory_update(mob/viewer) if (isnull(mymob)) return @@ -481,17 +476,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( continue show_to.client?.screen += reuse -//Triggered when F12 is pressed (Unless someone changed something in the DMF) -/mob/verb/button_pressed_F12() - set name = "F12" - set hidden = TRUE - - if(hud_used && client) - hud_used.show_hud() //Shows the next hud preset - to_chat(usr, span_info("Switched HUD mode. Press F12 to toggle.")) - else - to_chat(usr, span_warning("This mob type does not use a HUD.")) - /// Rebuilds our mob's hand slot screen elements /datum/hud/proc/build_hand_slots(update_hud = FALSE) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 222ced87bf0d..6db53b60e5a0 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -83,10 +83,7 @@ continue inv.alpha = (blocked_slots & inv.slot_id) ? 128 : initial(inv.alpha) -/mob/living/carbon/human/verb/toggle_hotkey_verbs() - set category = "OOC" - set name = "Toggle hotkey buttons" - set desc = "This disables or enables the user interface buttons which can be used with hotkeys." +GAME_VERB_DESC(/mob/living/carbon/human, toggle_hotkey_verbs, "Toggle hotkey buttons", "This disables or enables the user interface buttons which can be used with hotkeys.", "OOC") if(hud_used.hotkey_ui_hidden) client.screen += hud_used.screen_groups[HUD_GROUP_HOTKEYS] diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm index ec6104f1670d..a813da5eb7e7 100644 --- a/code/_onclick/hud/new_player.dm +++ b/code/_onclick/hud/new_player.dm @@ -33,6 +33,11 @@ start_button.RegisterSignal(src, COMSIG_HUD_LOBBY_COLLAPSED, TYPE_PROC_REF(/atom/movable/screen/lobby, collapse_button)) start_button.RegisterSignal(src, COMSIG_HUD_LOBBY_EXPANDED, TYPE_PROC_REF(/atom/movable/screen/lobby, expand_button)) +/datum/hud/new_player/show_hud(version = 0, mob/viewmob) + . = ..() + if(.) + show_station_trait_buttons() + /datum/hud/new_player/on_viewdata_update() . = ..() place_station_trait_buttons() @@ -47,7 +52,7 @@ continue if(LAZYACCESS(shown_station_trait_buttons, trait)) continue - var/atom/movable/screen/lobby/button/sign_up/sign_up_button = add_screen_object(/atom/movable/screen/lobby/button/sign_up, HUD_NEW_PLAYER_SIGN_UP) + var/atom/movable/screen/lobby/button/sign_up/sign_up_button = add_screen_object(/atom/movable/screen/lobby/button/sign_up, HUD_NEW_PLAYER_LOBBY_BUTTON(trait.type)) trait.setup_lobby_button(sign_up_button) LAZYSET(shown_station_trait_buttons, trait, sign_up_button) RegisterSignal(trait, COMSIG_QDELETING, PROC_REF(remove_station_trait_button)) diff --git a/code/_onclick/hud/ooze.dm b/code/_onclick/hud/ooze.dm index e796df33b4aa..5d0fa005fe2e 100644 --- a/code/_onclick/hud/ooze.dm +++ b/code/_onclick/hud/ooze.dm @@ -1,5 +1,5 @@ ///Hud type with targeting dol and a nutrition bar -/datum/hud/ooze/initialize_screen_objects() +/datum/hud/living/ooze/initialize_screen_objects() . = ..() add_screen_object(/atom/movable/screen/zone_sel, HUD_MOB_ZONE_SELECTOR, HUD_GROUP_STATIC, ui_style) add_screen_object(/atom/movable/screen/ooze_nutrition_display, HUD_OOZE_NUTRITION_DISPLAY) diff --git a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm index 094371cc9e68..c6635c723f23 100644 --- a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm +++ b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm @@ -316,17 +316,41 @@ plane = AREA_PLANE /atom/movable/screen/plane_master/weather - name = "Weather" - documentation = "Holds the main tiling 32x32 sprites of weather. We mask against walls that are on the edge of weather effects." + name = "Non-Particle Weather" + documentation = "Holds the main tiling 32x32 sprites of weather. We mask against walls that are on the edge of weather effects. Used when the player has particle weather disabled." plane = WEATHER_PLANE start_hidden = TRUE critical = PLANE_CRITICAL_DISPLAY + /// Is this a particle variant? + var/particle_weather = FALSE /atom/movable/screen/plane_master/weather/set_home(datum/plane_master_group/home) . = ..() if(!.) return home.AddComponent(/datum/component/hide_weather_planes, src) + RegisterSignal(home, COMSIG_GROUP_HUD_CHANGED, PROC_REF(hud_changed)) + update_state(home.our_hud?.mymob) + +/atom/movable/screen/plane_master/weather/proc/hud_changed(datum/source, datum/hud/old_hud, datum/hud/new_hud) + SIGNAL_HANDLER + update_state(new_hud?.mymob) + +/atom/movable/screen/plane_master/weather/proc/update_state(mob/mymob) + if(!istype(mymob)) + return + + // If the client wants particle weather, only show the PARTICLE_WEATHER_PLANE, otherwise only show the normal WEATHER_PLANE + if (mymob.canon_client?.prefs?.read_preference(/datum/preference/toggle/particle_weather) == particle_weather) + set_alpha(255) + else + set_alpha(0) + +/atom/movable/screen/plane_master/weather/particle + name = "Particle Weather" + documentation = "Holds the main tiling 32x32 sprites of weather. Used when the player has particle weather enabled." + plane = PARTICLE_WEATHER_PLANE + particle_weather = TRUE /atom/movable/screen/plane_master/weather_mask name = "Weather Mask" @@ -342,7 +366,7 @@ . = ..() if(!.) return - home.AddComponent(/datum/component/hide_weather_planes, src, TRUE) + home.AddComponent(/datum/component/hide_weather_planes, src) /atom/movable/screen/plane_master/massive_obj name = "Massive object" diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index 987b993a5fe2..09040a046218 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -74,7 +74,7 @@ add_relay_to(GET_NEW_PLANE(RENDER_PLANE_EMISSIVE_BLOOM, offset), blend_override = BLEND_MULTIPLY) /atom/movable/screen/plane_master/rendering_plate/particle_weather - name = "Particle Weather" + name = "Particle Weather Holder Plate" documentation = "Plane used to render particle weather, masked by WEATHER_MASK_PLANE. \ Cannot be a single screen object as it needs to be a planemaster in order to be properly masked by the weather mask." plane = RENDER_PLANE_PARTICLE_WEATHER @@ -85,12 +85,6 @@ . = ..() // We can actually do this just fine as we do not render anything onto ourselves but our particles add_filter("weather_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(WEATHER_MASK_RENDER_TARGET, offset))) - SSweather.particle_planemasters += src - // And add all ongoing weather to ourselves - for (var/holder_offset, holder_list in SSweather.particle_holders) - for (var/obj/effect/abstract/weather_holder/holder as anything in holder_list) - if (holder.plane == plane) - vis_contents += holder /atom/movable/screen/plane_master/rendering_plate/particle_weather/Destroy() SSweather.particle_planemasters -= src @@ -100,10 +94,66 @@ . = ..() if(!.) return - home.AddComponent(/datum/component/hide_weather_planes, src, TRUE) + home.AddComponent(/datum/component/hide_weather_planes, src) + RegisterSignal(home, COMSIG_GROUP_HUD_CHANGED, PROC_REF(hud_changed)) + if (home.our_hud) + attach_hud(home.our_hud) + update_state(home.our_hud?.mymob) + +/atom/movable/screen/plane_master/rendering_plate/particle_weather/proc/hud_changed(datum/source, datum/hud/old_hud, datum/hud/new_hud) + SIGNAL_HANDLER + if (old_hud) + UnregisterSignal(old_hud, COMSIG_HUD_Z_CHANGED) + attach_hud(new_hud) + update_state(new_hud?.mymob) + +/atom/movable/screen/plane_master/rendering_plate/particle_weather/proc/attach_hud(datum/hud/new_hud) + RegisterSignal(new_hud, COMSIG_HUD_Z_CHANGED, PROC_REF(z_changed)) + var/mob/eye = new_hud?.mymob?.client?.eye + var/turf/eye_location = get_turf(eye) + z_changed(new_hud, eye_location?.z) + +/// Updates ourselves based on our mob's preferences state +/atom/movable/screen/plane_master/rendering_plate/particle_weather/proc/update_state(mob/mymob) + SSweather.particle_planemasters -= src + vis_contents.Cut() + + if(!istype(mymob) || !mymob.canon_client?.prefs?.read_preference(/datum/preference/toggle/particle_weather)) + return + + SSweather.particle_planemasters += src + + // Lobby HUDs, we don't care about weather during init anyways + if(!SSmapping.initialized) + return + + var/list/stack_levels = SSmapping.get_connected_levels(get_turf(mymob.client?.eye || mymob)) + // And add all ongoing weather to ourselves + for (var/holder_offset, holder_list in SSweather.particle_holders) + for (var/obj/effect/abstract/weather_holder/holder as anything in holder_list) + // Only display particles from the same Z-stack as our mob's + if (holder.plane == plane && length(holder_list[holder] & stack_levels)) + vis_contents += holder + +/atom/movable/screen/plane_master/rendering_plate/particle_weather/proc/z_changed(datum/source, new_z) + SIGNAL_HANDLER + + if(!SSmapping.initialized) + return + + var/list/stack_levels = SSmapping.get_connected_levels(new_z) + for (var/holder_offset, holder_list in SSweather.particle_holders) + for (var/obj/effect/abstract/weather_holder/holder as anything in holder_list) + if (holder.plane != plane) + continue + + if (length(holder_list[holder] & stack_levels)) + vis_contents |= holder + else + vis_contents -= holder /atom/movable/screen/plane_master/rendering_plate/particle_weather/emissive - name = "Emissive Particle Weather" + name = "Emissive Particle Weather Holder Plate" documentation = "Secondary particle weather plane for emissive parts of weather, which is additionally rendered onto the emissive plane after being masked." plane = RENDER_PLANE_EMISSIVE_PARTICLE_WEATHER diff --git a/code/_onclick/hud/screen_objects/alert.dm b/code/_onclick/hud/screen_objects/alert.dm index e9f9de606abb..468912c5fe3f 100644 --- a/code/_onclick/hud/screen_objects/alert.dm +++ b/code/_onclick/hud/screen_objects/alert.dm @@ -86,6 +86,8 @@ alerts -= category if(client && hud_used) hud_used.reorganize_alerts() + for(var/mob/viewer as anything in observers) + viewer.client?.screen -= alert client.screen -= alert qdel(alert) @@ -408,6 +410,8 @@ var/screentip_override_text /// Whether the offered item can be examined by shift-clicking the alert var/examinable = TRUE + /// Whether this item should bypass active hand checks. + var/bypass_active_hand = FALSE /atom/movable/screen/alert/give/Initialize(mapload, datum/hud/hud_owner) . = ..() @@ -486,9 +490,13 @@ var/mob/living/taker = owner var/mob/living/offerer = offer.owner var/obj/item/receiving = offer.offered_item - taker.take(offerer, receiving) + taker.take(offerer, receiving, bypass_active_hand) SEND_SIGNAL(offerer, COMSIG_LIVING_ITEM_GIVEN, taker, receiving) +/// Mostly for borgs to offer items. +/atom/movable/screen/alert/give/borg + bypass_active_hand = TRUE + /atom/movable/screen/alert/give/highfive additional_desc_text = "Click this alert to slap it." screentip_override_text = "High Five" @@ -1163,13 +1171,13 @@ if(!.) return - var/mob/living/carbon/carbon_owner = owner + var/mob/living/carbon/human/human_owner = owner - if(!carbon_owner.can_resist() || !carbon_owner.shoes) + if(!human_owner.can_resist() || !human_owner.shoes) return - carbon_owner.changeNext_move(CLICK_CD_RESIST) - carbon_owner.shoes.handle_tying(carbon_owner) + human_owner.changeNext_move(CLICK_CD_RESIST) + human_owner.shoes.handle_tying(human_owner) /atom/movable/screen/alert/shoes/untied name = "Untied Shoes" diff --git a/code/_onclick/hud/screen_objects/credits.dm b/code/_onclick/hud/screen_objects/credits.dm index 44749e0e4a2e..e36eb8a11a41 100644 --- a/code/_onclick/hud/screen_objects/credits.dm +++ b/code/_onclick/hud/screen_objects/credits.dm @@ -11,7 +11,7 @@ var/icon/credits_icon = new(CREDITS_PATH) LAZYINITLIST(credits) var/list/_credits = credits - add_verb(src, /client/proc/ClearCredits) + ASSIGN_GAME_VERB(src, /client, ClearCredits) var/static/list/credit_order_for_this_round if(isnull(credit_order_for_this_round)) credit_order_for_this_round = list("Thanks for playing!") + (shuffle(icon_states(credits_icon)) - "Thanks for playing!") @@ -21,13 +21,11 @@ _credits += new /atom/movable/screen/credit(null, null, I, src, credits_icon) sleep(CREDIT_SPAWN_SPEED) sleep(CREDIT_ROLL_SPEED - CREDIT_SPAWN_SPEED) - remove_verb(src, /client/proc/ClearCredits) + UNASSIGN_GAME_VERB(src, /client, ClearCredits) qdel(credits_icon) -/client/proc/ClearCredits() - set name = "Hide Credits" - set category = "OOC" - remove_verb(src, /client/proc/ClearCredits) +GAME_VERB_PROC(/client, ClearCredits, "Hide Credits", "OOC") + UNASSIGN_GAME_VERB(src, /client, ClearCredits) QDEL_LIST(credits) credits = null diff --git a/code/_onclick/hud/screen_objects/map_popups.dm b/code/_onclick/hud/screen_objects/map_popups.dm index bf524b6c8d90..05612460a8f0 100644 --- a/code/_onclick/hud/screen_objects/map_popups.dm +++ b/code/_onclick/hud/screen_objects/map_popups.dm @@ -128,7 +128,6 @@ /** * When the popup closes in any way (player or proc call) it calls this. */ -/client/verb/handle_popup_close(window_id as text) - set hidden = TRUE +GAME_VERB_HIDDEN(/client, handle_popup_close, "handle popup close", window_id as text) clear_map("[window_id]_map") SEND_SIGNAL(src, COMSIG_POPUP_CLEARED, window_id) diff --git a/code/_onclick/hud/screen_objects/screen_objects.dm b/code/_onclick/hud/screen_objects/screen_objects.dm index 8888ec7a5295..f83b22f70c61 100644 --- a/code/_onclick/hud/screen_objects/screen_objects.dm +++ b/code/_onclick/hud/screen_objects/screen_objects.dm @@ -94,7 +94,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen) // I hate this place RegisterSignal(hud, COMSIG_QDELETING, PROC_REF(on_hud_delete)) /// Returns the mob this is being displayed to, if any -/atom/movable/screen/proc/get_mob() +/atom/movable/screen/proc/get_mob() as /mob return hud?.mymob /atom/movable/screen/proc/on_hud_delete(datum/source) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 358aa249d23f..f3b2a40fdb8f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -315,8 +315,10 @@ // DARKPACK EDIT ADD START - STORYTELLER_ROLLS/STORYTELLER_STATS // This is pretty evil, but we are gonna convert all the tg force into the +# that melee weapons have listed. // This means we can do stuff like set force of a baseball bat to 2 TTRPG_DAM and it just works. - if(isliving(user) && !HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER)) - var/bonus_dice = round(final_force / (1 TTRPG_DAMAGE)) + if(isliving(user) && !HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER) && (final_force >= 1 TTRPG_DAMAGE)) + var/bonus_dice = FORCE_TO_DICE_POOL(final_force) + if(prob(LEFTOVER_FORCE_TO_PERCENT(final_force))) + bonus_dice++ var/datum/storyteller_roll/damage/damage_roll = new() damage_roll.applicable_stats = list(attacking_item.st_damage_stat) var/damage_roll_result = damage_roll.st_roll(user, src, bonus_dice) @@ -363,7 +365,7 @@ final_force *= attacking_item.get_demolition_modifier(src) // DARKPACK EDIT ADD START - STORYTELLER_ROLLS/STORYTELLER_STATS - if(isliving(user) && !HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER)) + if(isliving(user) && !HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER) && (final_force >= 1 TTRPG_DAMAGE)) var/datum/storyteller_roll/attack/attack_roll = new() attack_roll.applicable_stats = list(attacking_item.st_attack_ability, attacking_item.st_attack_attribute) attack_roll.difficulty = attacking_item.attack_difficulty @@ -373,7 +375,9 @@ if(attack_roll_result == ROLL_SUCCESS) // This is pretty evil, but we are gonna convert all the tg force into the +# that melee weapons have listed. // This means we can do stuff like set force of a baseball bat to 2 TTRPG_DAM and it just works. - var/bonus_dice = round(final_force / (1 TTRPG_DAMAGE)) + var/bonus_dice = FORCE_TO_DICE_POOL(final_force) + if(prob(LEFTOVER_FORCE_TO_PERCENT(final_force))) + bonus_dice++ var/datum/storyteller_roll/damage/damage_roll = new() damage_roll.applicable_stats = list(attacking_item.st_damage_stat) var/damage_roll_result = damage_roll.st_roll(user, src, bonus_dice) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 473b402e742f..d462eb8972c7 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -65,7 +65,7 @@ return if (user.ghost_hud_flags & GHOST_HEALTH) - healthscan(user, src, 1, TRUE) + healthscan(user, src, SCANNER_VERBOSE, SCANPOWER_SUPER) if (user.ghost_hud_flags & GHOST_CHEM) chemscan(user, src) diff --git a/code/_onclick/overmind.dm b/code/_onclick/overmind.dm index a9d8dba6e13f..b81777229c46 100644 --- a/code/_onclick/overmind.dm +++ b/code/_onclick/overmind.dm @@ -1,36 +1,36 @@ // Blob Overmind Controls -/mob/eye/blob/ClickOn(atom/A, params) //Expand blob +/mob/eye/blob/ClickOn(atom/clicked_on, params) //Expand blob var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, MIDDLE_CLICK)) - MiddleClickOn(A, params) + MiddleClickOn(clicked_on, params) return if(LAZYACCESS(modifiers, SHIFT_CLICK)) - ShiftClickOn(A) + ShiftClickOn(clicked_on) return if(LAZYACCESS(modifiers, ALT_CLICK)) - blob_click_alt(A) + blob_click_alt(clicked_on) return if(LAZYACCESS(modifiers, CTRL_CLICK)) - CtrlClickOn(A) + CtrlClickOn(clicked_on) return - var/turf/T = get_turf(A) - if(T) - expand_blob(T) + var/turf/target_turf = get_turf(clicked_on) + if(target_turf) + expand_blob(target_turf) -/mob/eye/blob/MiddleClickOn(atom/A) //Rally spores +/mob/eye/blob/MiddleClickOn(atom/clicked_on) //Rally spores . = ..() - var/turf/T = get_turf(A) - if(T) - rally_spores(T) + var/turf/target_turf = get_turf(clicked_on) + if(target_turf) + rally_spores(target_turf) -/mob/eye/blob/CtrlClickOn(atom/A) //Create a shield - var/turf/T = get_turf(A) - if(T) - create_shield(T) +/mob/eye/blob/CtrlClickOn(atom/clicked_on) //Create a shield + var/turf/target_turf = get_turf(clicked_on) + if(target_turf) + create_shield(target_turf) -/mob/eye/blob/proc/blob_click_alt(atom/A) //Remove a blob - var/turf/T = get_turf(A) - if(T) - remove_blob(T) +/mob/eye/blob/proc/blob_click_alt(atom/clicked_on) //Remove a blob + var/turf/target_turf = get_turf(clicked_on) + if(target_turf) + remove_blob(target_turf) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index cb38d2f9d078..a72df30e5f14 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -435,14 +435,16 @@ /datum/config_entry/flag/disallow_circuit_sounds -/datum/config_entry/flag/tts_no_whisper - /datum/config_entry/string/tts_http_url protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/tts_http_token protection = CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_HIDDEN +/datum/config_entry/string/tts_tram_announcer_override + +/datum/config_entry/string/tts_computer_voice_override + /datum/config_entry/number/tts_max_concurrent_requests default = 4 min_val = 1 diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 114988a0f86c..1b21893807de 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -101,6 +101,9 @@ /// log game events /datum/config_entry/flag/log_game +/// log minimap drawing events +/datum/config_entry/flag/log_minimap_drawing + /// log mech data /datum/config_entry/flag/log_mecha @@ -806,3 +809,6 @@ /datum/config_entry/string/policy_json_path default = "policy.json" + +/datum/config_entry/number_list/ignored_cids + default = list() diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index b75d9e813e3d..730c7386ea9e 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -564,8 +564,7 @@ SUBSYSTEM_DEF(air) if(enemy_tile.current_cycle == -INFINITY) continue // .air instead of .return_air() because we can guarantee that the proc won't do anything - if(potential_diff.air.compare(enemy_tile.air, MOLES)) - //testing("Active turf found. Return value of compare(): [T.air.compare(enemy_tile.air, MOLES)]") + if(potential_diff.air.compare(enemy_tile.air, FALSE)) if(!potential_diff.excited) potential_diff.excited = TRUE SSair.active_turfs += potential_diff @@ -785,7 +784,6 @@ GLOBAL_LIST_EMPTY(colored_images) strings_to_mix["[gas_string]-[gastype]"] = canonical_mix gas_string = preprocess_gas_string(gas_string) - var/list/gases = canonical_mix.gases var/list/gas = params2list(gas_string) if(gas["TEMP"]) canonical_mix.temperature = text2num(gas["TEMP"]) @@ -793,12 +791,12 @@ GLOBAL_LIST_EMPTY(colored_images) gas -= "TEMP" else // if we do not have a temp in the new gas mix lets assume room temp. canonical_mix.temperature = T20C + var/list/cached_moles = canonical_mix.moles for(var/id in gas) var/path = id if(!ispath(path)) path = gas_id2path(path) //a lot of these strings can't have embedded expressions (especially for mappers), so support for IDs needs to stick around - ADD_GAS(path, gases) - gases[path][MOLES] = text2num(gas[id]) + cached_moles[path] = text2num(gas[id]) if(istype(canonical_mix, /datum/gas_mixture/immutable)) return canonical_mix diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm index 79f5e7dbd1a0..9cfc81a3f03d 100644 --- a/code/controllers/subsystem/ambience.dm +++ b/code/controllers/subsystem/ambience.dm @@ -20,13 +20,17 @@ SUBSYSTEM_DEF(ambience) var/client/client_iterator = cached_clients[cached_clients.len] cached_clients.len-- - //Check to see if the client exists and isn't held by a new player - var/mob/client_mob = client_iterator?.mob - if(isnull(client_iterator) || !client_mob || isnewplayer(client_mob)) + //Check to see if the client exists + if(isnull(client_iterator)) ambience_listening_clients -= client_iterator client_old_areas -= client_iterator continue + // skip them this tick if they're on the lobby screen or somehow dont have a mob?? + var/mob/client_mob = client_iterator?.mob + if(!client_mob || isnewplayer(client_mob)) + continue + if(HAS_TRAIT(client_mob, TRAIT_DEAF)) //WHAT? I CAN'T HEAR YOU continue diff --git a/code/controllers/subsystem/dynamic/dynamic_ruleset_midround.dm b/code/controllers/subsystem/dynamic/dynamic_ruleset_midround.dm index 8631eaf46709..f39f5de7a9e0 100644 --- a/code/controllers/subsystem/dynamic/dynamic_ruleset_midround.dm +++ b/code/controllers/subsystem/dynamic/dynamic_ruleset_midround.dm @@ -230,11 +230,8 @@ if(isnull(body)) return candidate.transfer_to(body, force_key_move = TRUE) // yoinks the candidate's client - if(ishuman(body)) - var/mob/living/carbon/human/human_body = body - body.client?.prefs.safe_transfer_prefs_to(body) - human_body.dna.remove_all_mutations() - human_body.dna.update_dna_identity() + if(ishuman(body) && apply_prefs_to_body(body)) + on_prefs_applied(body) /** * Handles making the body for the candidate @@ -262,6 +259,24 @@ role_name_text = readable_poll_role, ) +/** + * Handles prepping the body with the candidate's prefs + * + * Applies prefs to a given body. Usually that's what you want, but sometimes you don't, in which case you can override this proc. + * Returns TRUE if prefs were applied + */ +/datum/dynamic_ruleset/midround/from_ghosts/proc/apply_prefs_to_body(mob/living/carbon/human/body) + body.client?.prefs.safe_transfer_prefs_to(body) + body.dna.remove_all_mutations() + body.dna.update_dna_identity() + return TRUE + +/** + * Handles anything extra you want to happen after applying prefs + */ +/datum/dynamic_ruleset/midround/from_ghosts/proc/on_prefs_applied(mob/living/carbon/human/body) + return + /datum/dynamic_ruleset/midround/from_ghosts/wizard name = "Wizard" config_tag = "Midround Wizard" @@ -512,6 +527,9 @@ max_antag_cap = 1 signup_atom_appearance = /obj/item/light_eater +/datum/dynamic_ruleset/midround/from_ghosts/nightmare/apply_prefs_to_body(mob/living/carbon/human/body) + return FALSE + /datum/dynamic_ruleset/midround/from_ghosts/nightmare/can_be_selected() return ..() && !isnull(find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = TRUE)) @@ -715,23 +733,50 @@ preview_antag_datum = /datum/antagonist/paradox_clone midround_type = LIGHT_MIDROUND pref_flag = ROLE_PARADOX_CLONE - ruleset_flags = RULESET_INVADER + ruleset_flags = RULESET_INVADER|RULESET_ADMIN_CONFIGURABLE weight = 5 min_pop = 10 max_antag_cap = 1 signup_atom_appearance = /obj/effect/bluespace_stream /// Chance of getting another clone for the price of free var/bonus_clone_chance = 20 + /// Weakref to the crewmember we picked to clone, chosen before the ghost poll so it can name them + var/datum/weakref/clone_target_ref /datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/New(list/dynamic_config) . = ..() max_antag_cap += prob(bonus_clone_chance) /datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/can_be_selected() + if(clone_target_ref && isnull(clone_target_ref.resolve())) // our chosen original was deleted while we were polling, bail + return FALSE return ..() && !isnull(find_clone()) && !isnull(find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = FALSE)) +#define RANDOM_CLONE_TARGET "Random" + +/datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/configure_ruleset(mob/admin) + var/list/admin_pool = list("[RULESET_CONFIG_CANCEL]" = TRUE, "[RANDOM_CLONE_TARGET]" = TRUE) + for(var/mob/living/carbon/human/target as anything in find_clone_candidates()) + admin_pool["[target.real_name], the [target.mind.assigned_role.title]"] = target + var/picked = tgui_input_list(admin, "Select a crewmember to clone", "Clone Target", admin_pool) + if(!picked || picked == RULESET_CONFIG_CANCEL) + return RULESET_CONFIG_CANCEL + if(picked != RANDOM_CLONE_TARGET) + clone_target_ref = WEAKREF(admin_pool[picked]) + return null + +#undef RANDOM_CLONE_TARGET + +/datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/collect_candidates() + var/mob/living/carbon/human/original = clone_target_ref?.resolve() || find_clone() + if(isnull(original)) + return list() + clone_target_ref = WEAKREF(original) + candidate_role = "clone of [original.real_name] ([original.mind.assigned_role.title])" + return ..() + /datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/create_execute_args() - return list(find_clone()) + return list(clone_target_ref.resolve()) /datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/create_ruleset_body() return // handled by assign_role() entirely @@ -747,6 +792,13 @@ bad_version.put_in_hands(new /obj/item/storage/toolbox/mechanical()) //so they dont get stuck in maints /datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/proc/find_clone() + var/list/possible_targets = find_clone_candidates() + if(length(possible_targets)) + return pick(possible_targets) + return null + +/// Returns every crewmember currently valid to be cloned +/datum/dynamic_ruleset/midround/from_ghosts/paradox_clone/proc/find_clone_candidates() var/list/possible_targets = list() for(var/mob/living/carbon/human/player in GLOB.player_list) @@ -756,9 +808,7 @@ continue possible_targets += player - if(length(possible_targets)) - return pick(possible_targets) - return null + return possible_targets /datum/dynamic_ruleset/midround/from_ghosts/voidwalker name = "Voidwalker" diff --git a/code/controllers/subsystem/dynamic/dynamic_ruleset_roundstart.dm b/code/controllers/subsystem/dynamic/dynamic_ruleset_roundstart.dm index 2143b6cbb001..3df350732471 100644 --- a/code/controllers/subsystem/dynamic/dynamic_ruleset_roundstart.dm +++ b/code/controllers/subsystem/dynamic/dynamic_ruleset_roundstart.dm @@ -442,6 +442,7 @@ new_head.give_flash = TRUE new_head.give_hud = TRUE new_head.remove_clumsy = TRUE + new_head.roundstart = TRUE candidate.add_antag_datum(new_head, GLOB.revolution_handler.revs) GLOB.revolution_handler.start_revolution() diff --git a/code/controllers/subsystem/greyscale_previews.dm b/code/controllers/subsystem/greyscale_previews.dm index 79bc1fa1fe9b..8c554f3fd25d 100644 --- a/code/controllers/subsystem/greyscale_previews.dm +++ b/code/controllers/subsystem/greyscale_previews.dm @@ -204,12 +204,10 @@ SUBSYSTEM_DEF(greyscale_previews) #endif var/filepath = "icons/map_icons/[filename].dmi" -#ifdef UNIT_TESTS var/old_md5 = rustg_hash_file(RUSTG_HASH_MD5, filepath) -#endif - fcopy(holder, filepath) -#ifdef UNIT_TESTS - var/new_md5 = rustg_hash_file(RUSTG_HASH_MD5, filepath) + var/new_md5 = rustg_hash_file(RUSTG_HASH_MD5, holder) if(old_md5 != new_md5) + fcopy(holder, filepath) +#ifdef UNIT_TESTS stack_trace("Generated map icons were different than what is currently saved. If you see this in a CI run it means you need to run the game once through initialization and commit the resulting files in 'icons/map_icons/'") #endif diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 80c3ab35e9c2..8dd28a795465 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -195,7 +195,7 @@ SUBSYSTEM_DEF(job) new_joinable_departments_by_type[department_type] = department department.add_job(job) - sortTim(new_all_occupations, GLOBAL_PROC_REF(cmp_job_display_asc)) + sortTim(new_all_occupations, GLOBAL_PROC_REF(cmp_job_display_with_departments_asc)) for(var/datum/job/job as anything in new_all_occupations) if(!job.exp_granted_type) continue @@ -204,13 +204,13 @@ SUBSYSTEM_DEF(job) sortTim(new_joinable_departments_by_type, GLOBAL_PROC_REF(cmp_department_display_asc), associative = TRUE) for(var/department_type in new_joinable_departments_by_type) var/datum/job_department/department = new_joinable_departments_by_type[department_type] - sortTim(department.department_jobs, GLOBAL_PROC_REF(cmp_job_display_asc)) + sortTim(department.department_jobs, GLOBAL_PROC_REF(cmp_job_display_with_departments_asc)) new_joinable_departments += department if(department.department_experience_type) new_experience_jobs_map[department.department_experience_type] = department.department_jobs.Copy() all_occupations = new_all_occupations - joinable_occupations = sortTim(new_joinable_occupations, GLOBAL_PROC_REF(cmp_job_display_asc)) + joinable_occupations = sortTim(new_joinable_occupations, GLOBAL_PROC_REF(cmp_job_display_with_departments_asc)) joinable_departments = new_joinable_departments joinable_departments_by_type = new_joinable_departments_by_type experience_jobs_map = new_experience_jobs_map diff --git a/code/controllers/subsystem/map_preview.dm b/code/controllers/subsystem/map_preview.dm new file mode 100644 index 000000000000..ea63e2a66938 --- /dev/null +++ b/code/controllers/subsystem/map_preview.dm @@ -0,0 +1,79 @@ +SUBSYSTEM_DEF(map_previews) + name = "Map Previews" + ss_flags = SS_NO_FIRE + dependencies = list( + /datum/controller/subsystem/machines, + /datum/controller/subsystem/mapping, + ) + +/datum/controller/subsystem/map_previews/Initialize() +#ifndef UNIT_TESTS + if(!CONFIG_GET(flag/generate_assets_in_init)) + return SS_INIT_SUCCESS +#endif + generate_map_previews() + return SS_INIT_SUCCESS + +/datum/controller/subsystem/map_previews/proc/generate_map_previews() + var/list/worklist = list() + var/list/already_generated = list() + var/static/list/preview_blacklist = list( + /obj/machinery/computer, + /obj/machinery/computer/old, + ) + + for(var/obj/typepath as anything in subtypesof(/obj)) + if(!initial(typepath.generate_map_preview)) + continue + if(typepath in preview_blacklist) + continue + worklist += typepath + + var/turf/preview_turf = locate(1, 1, 1) + + var/filepath = "icons/obj/fluff/map_previews.dmi" + var/icon/holder = icon('icons/obj/fluff/map_previews_template.dmi') + + for(var/path in worklist) + var/obj/thingtospawn = new path(preview_turf) + + if(ismachinery(thingtospawn)) + var/obj/machinery/machine = thingtospawn + machine.set_machine_stat(machine.machine_stat & ~NOPOWER) + machine.update_appearance() + + var/key = "[thingtospawn.icon]-[thingtospawn.icon_state]" + for(var/image/overlay as anything in thingtospawn.overlays) + key += "-[overlay.icon_state]" + if(already_generated[key]) + qdel(thingtospawn) + continue + already_generated[key] = TRUE + + var/icon_name = "[path]" + for(var/dir in GLOB.cardinals) + thingtospawn.setDir(dir) + var/icon/rendered_icon = getFlatIcon(thingtospawn) + if(!rendered_icon) + continue + var/icon/preview_frame = icon(rendered_icon, frame = 1) + if(!preview_frame) + continue +#ifdef UNIT_TESTS + if(preview_frame.Width() > ICON_SIZE_X || preview_frame.Height() > ICON_SIZE_Y) + stack_trace("Map preview generation for '[icon_name]' produced an icon larger than 32x32.") + continue +#endif + holder.Insert(preview_frame, icon_name, dir) + qdel(thingtospawn) + + var/tmp_path = "tmp/map_previews.dmi" + fcopy(holder, tmp_path) + + var/old_md5 = fexists(filepath) ? rustg_hash_file(RUSTG_HASH_MD5, filepath) : "" + var/new_md5 = rustg_hash_file(RUSTG_HASH_MD5, tmp_path) + if(old_md5 != new_md5) + fcopy(tmp_path, filepath) +#ifdef UNIT_TESTS + stack_trace("Generated map previews were different than what is currently saved. If you see this in a CI run it means you need to run the game once through initialization and commit the resulting file 'icons/obj/fluff/map_previews.dmi'.") +#endif diff --git a/code/controllers/subsystem/map_vote.dm b/code/controllers/subsystem/map_vote.dm index 4229ee82737b..4ee505e8ff3f 100644 --- a/code/controllers/subsystem/map_vote.dm +++ b/code/controllers/subsystem/map_vote.dm @@ -22,6 +22,9 @@ SUBSYSTEM_DEF(map_vote) /// Stores the last amount of potential players to compare next time we're called var/player_cache = -1 + /// Cached list of votable maps + var/list/votable_map_cache + /// Stores a formatted html string of the tally counts var/tally_printout = span_red("Loading...") @@ -113,24 +116,38 @@ SUBSYSTEM_DEF(map_vote) else filter_threshold = length(GLOB.clients) - if(filter_threshold == player_cache) - return null + // Cached because it's called off ui_data, I really don't think this is worth it but whatever + if(filter_threshold == player_cache && !isnull(votable_map_cache)) + return votable_map_cache.Copy() player_cache = filter_threshold - var/list/valid_maps = list() + var/list/pop_valid_maps = list() // Fill in our default choices with all of the maps in our map config, if they are votable and not blocked. var/list/maps = shuffle(global.config.maplist) for(var/map in maps) var/datum/map_config/possible_config = config.maplist[map] - if(!possible_config.votable || (possible_config.map_name in SSpersistence.blocked_maps)) + if(!possible_config.votable) continue if(possible_config.config_min_users > 0 && filter_threshold < possible_config.config_min_users) continue if(possible_config.config_max_users > 0 && filter_threshold > possible_config.config_max_users) continue - valid_maps += possible_config.map_name + pop_valid_maps += possible_config.map_name - return valid_maps + // Remove stale (played twice in the past KEEP_ROUNDS_MAP + 1 rounds (including this one as the + 1)) maps + var/list/freshened_valid_maps = list() + for(var/map_name in pop_valid_maps) + if(map_name in SSpersistence.blocked_maps) + continue + freshened_valid_maps += map_name + + // We might stale out all valid maps, in that case just ignore the stale system + if(!length(freshened_valid_maps)) + votable_map_cache = pop_valid_maps.Copy() + return pop_valid_maps + + votable_map_cache = freshened_valid_maps.Copy() + return freshened_valid_maps /datum/controller/subsystem/map_vote/proc/filter_cache_to_valid_maps() var/connected_players = length(GLOB.player_list) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 9bacd199d194..9b407e4b25ab 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -144,7 +144,7 @@ SUBSYSTEM_DEF(mapping) if(current_map.wilderness_levels) var/list/FailedZs = list() - LoadGroup(FailedZs, "Wilderness Area", current_map.wilderness_directory, current_map.maps_to_spawn, default_traits = ZTRAITS_WILDS, height_autosetup = FALSE) + LoadGroup(FailedZs, "Wilderness Area", current_map.wilderness_directory, current_map.wilderness_maps_to_spawn, default_traits = current_map.wilderness_z_traits, height_autosetup = FALSE) if(LAZYLEN(FailedZs)) CRASH("Ice wilds failed to load!") @@ -812,10 +812,9 @@ ADMIN_VERB(load_away_mission, R_FUN, "Load Away Mission", "Load a specific away GLOB.starlight_objects += starlight_object(offset) GLOB.starlight_overlays += starlight_overlay(offset) - for(var/datum/gas/gas_type as anything in GLOB.meta_gas_info) - var/list/gas_info = GLOB.meta_gas_info[gas_type] + for(var/datum/gas/gas_type as anything in GLOB.meta_gas_info[META_GAS_ID]) if(initial(gas_type.moles_visible) != null) - gas_info[META_GAS_OVERLAY] += generate_gas_overlays(gen_from, new_offset, gas_type) + GLOB.meta_gas_info[META_GAS_OVERLAY][gas_type] += generate_gas_overlays(gen_from, new_offset, gas_type) /datum/controller/subsystem/mapping/proc/create_plane_offsets(gen_from, new_offset) for(var/plane_offset in gen_from to new_offset) diff --git a/code/controllers/subsystem/minor_mapping.dm b/code/controllers/subsystem/minor_mapping.dm index 5f59bf8d5972..932c7927ef09 100644 --- a/code/controllers/subsystem/minor_mapping.dm +++ b/code/controllers/subsystem/minor_mapping.dm @@ -11,7 +11,8 @@ SUBSYSTEM_DEF(minor_mapping) var/list/vermin_chances = list( /mob/living/basic/mouse = 72, /mob/living/basic/snail = 16, - /mob/living/basic/stoat = 10, + /mob/living/basic/stoat = 7, + /mob/living/basic/stoat/kit = 3, /mob/living/basic/regal_rat/controlled = 2, ) diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm index e83f68d22dbe..ea1e7f90cda0 100644 --- a/code/controllers/subsystem/movement/movement_types.dm +++ b/code/controllers/subsystem/movement/movement_types.dm @@ -461,6 +461,94 @@ if(length(movement_path)) movement_path.Cut(1,2) else + return handle_move_attempt_failure() + + +/datum/move_loop/has_target/jps/proc/handle_move_attempt_failure() + EVLOG_TEXT(moving, EVLOG_CATEGORY_MOVELOOPS, "Path recalculating due to obstruction") + INVOKE_ASYNC(src, PROC_REF(recalculate_path)) + return MOVELOOP_FAILURE + +/datum/move_loop/has_target/jps/frustrations + ///maximum amount of frustrations before we recalculate path + var/maximum_frustrations + ///what is our current frustration? + var/current_frustrations = 0 + ///how long before we're able to increment frustration? + var/frustration_delay + ///have we drawn our initial path? + var/initial_path_drawn = FALSE + ///cooldown between frustration increments + COOLDOWN_DECLARE(frustration_cooldown) + + +/datum/move_manager/proc/frustrations_move(moving, + chasing, + delay, + timeout, + repath_delay, + max_path_length, + minimum_distance, + list/access, + simulated_only, + turf/avoid, + skip_first, + subsystem, + diagonal_handling, + priority, + flags, + datum/extra_info, + initial_path) + return add_to_loop(moving, + subsystem, + /datum/move_loop/has_target/jps/frustrations, + priority, + flags, + extra_info, + delay, + timeout, + chasing, + repath_delay, + max_path_length, + minimum_distance, + access, + simulated_only, + avoid, + skip_first, + diagonal_handling, + initial_path) + +/datum/move_loop/has_target/jps/frustrations/setup(delay, timeout, atom/chasing, maximum_frustrations = 10, frustration_delay = 2 SECONDS) + . = ..() + if(!.) + return + src.maximum_frustrations = maximum_frustrations + src.frustration_delay = frustration_delay + +/datum/move_loop/has_target/jps/frustrations/recalculate_path() + if(initial_path_drawn && current_frustrations < maximum_frustrations) + return + return ..() + +/datum/move_loop/has_target/jps/frustrations/loop_stopped() + . = ..() + +/datum/move_loop/has_target/jps/frustrations/on_finish_pathing(list/path) + . = ..() + if(movement_path) + initial_path_drawn = TRUE + +/datum/move_loop/has_target/jps/frustrations/handle_move_attempt_failure() + if(!initial_path_drawn) + INVOKE_ASYNC(src, PROC_REF(recalculate_path)) + return MOVELOOP_FAILURE + if(!COOLDOWN_FINISHED(src, frustration_cooldown)) + return NONE + COOLDOWN_START(src, frustration_cooldown, frustration_delay) + current_frustrations++ + SEND_SIGNAL(src, COMSIG_MOVELOOP_JPS_FRUSTRATION_INCREMENTED, current_frustrations) + if(current_frustrations >= maximum_frustrations) + current_frustrations = 0 EVLOG_TEXT(moving, EVLOG_CATEGORY_MOVELOOPS, "Path recalculating due to obstruction") INVOKE_ASYNC(src, PROC_REF(recalculate_path)) return MOVELOOP_FAILURE diff --git a/code/controllers/subsystem/persistence/scars.dm b/code/controllers/subsystem/persistence/scars.dm index 5c6a76f4e134..7802d31688e4 100644 --- a/code/controllers/subsystem/persistence/scars.dm +++ b/code/controllers/subsystem/persistence/scars.dm @@ -10,6 +10,11 @@ if(!original_human) continue + // DARKPACK EDIT ADD START + if(HAS_TRAIT(original_human, TRAIT_SCARRING_RESISTANT)) + continue + // DARKPACK EDIT ADD END + if(original_human.stat == DEAD || !original_human.all_scars || original_human != ending_human) original_human.save_persistent_scars(TRUE) else diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index ff95931e7592..022cb067111d 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -33,6 +33,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/darkpack/thaumaturgically_inept, /datum/quirk/darkpack/mage_blood), // DARKPACK EDIT ADD - MERITS_FLAWS list(/datum/quirk/mute, /datum/quirk/darkpack/the_largest_maw), // DARKPACK EDIT ADD - MERITS_FLAWS list(/datum/quirk/mute, /datum/quirk/darkpack/speech_impediment), // DARKPACK EDIT ADD - MERITS_FLAWS + list(/datum/quirk/darkpack/monstrous, /datum/quirk/darkpack/disfigured), // DARKPACK EDIT ADD - MERITS_FLAWS - PHYSICAL FLAWS )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/code/controllers/subsystem/sound_tokens.dm b/code/controllers/subsystem/sound_tokens.dm index dc4bd1600c38..48c2ed31a5c0 100644 --- a/code/controllers/subsystem/sound_tokens.dm +++ b/code/controllers/subsystem/sound_tokens.dm @@ -15,10 +15,7 @@ SUBSYSTEM_DEF(sound_tokens) var/client/client = currentrun[currentrun.len] currentrun.len-- var/mob/owned_mob = client.mob - if(!owned_mob) - continue - for(var/datum/sound_token/token in client.sound_tokens) + for(var/datum/sound_token/token as anything in owned_mob?.sound_tokens) token.update_listener(owned_mob) if(MC_TICK_CHECK) break - diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 88b021a865d0..63774ff8230e 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -115,22 +115,6 @@ SUBSYSTEM_DEF(ticker) else set_lobby_music("[global.config.directory]/title_music/sounds/[pick(music)]") - if(!GLOB.syndicate_code_phrase) - GLOB.syndicate_code_phrase = generate_code_phrase(return_list=TRUE) - - var/codewords = jointext(GLOB.syndicate_code_phrase, "|") - var/regex/codeword_match = new("([codewords])", "ig") - - GLOB.syndicate_code_phrase_regex = codeword_match - - if(!GLOB.syndicate_code_response) - GLOB.syndicate_code_response = generate_code_phrase(return_list=TRUE) - - var/codewords = jointext(GLOB.syndicate_code_response, "|") - var/regex/codeword_match = new("([codewords])", "ig") - - GLOB.syndicate_code_response_regex = codeword_match - start_at = world.time + (CONFIG_GET(number/lobby_countdown) * (1 SECONDS)) // DARKPACK EDIT ADD START - CITY_TIME round_start_time = start_at // May be changed later, but prevents the time from jumping back when the round actually starts @@ -148,9 +132,9 @@ SUBSYSTEM_DEF(ticker) to_chat(world, span_notice("Welcome to [station_name()]!")) for(var/channel_tag in CONFIG_GET(str_list/channel_announce_new_game)) send2chat(new /datum/tgs_message_content("New round starting on [SSmapping.current_map.map_name]!"), channel_tag) + current_state = GAME_STATE_PREGAME SEND_SIGNAL(src, COMSIG_TICKER_ENTER_PREGAME) - fire() if(GAME_STATE_PREGAME) //lobby stats for statpanels diff --git a/code/controllers/subsystem/traitor.dm b/code/controllers/subsystem/traitor.dm index edb0f237f5e3..cd13366bdb9b 100644 --- a/code/controllers/subsystem/traitor.dm +++ b/code/controllers/subsystem/traitor.dm @@ -21,11 +21,24 @@ SUBSYSTEM_DEF(traitor) var/list/datum/uplink_handler/uplink_handlers = list() /// The current scaling per minute of progression. var/current_progression_scaling = 1 MINUTES + /// List of code words for traitors + var/syndicate_code_phrase + /// List of code responses for traitors + var/syndicate_code_response + /// Regex of code words for traitors + var/regex/syndicate_code_phrase_regex + /// Regex of code responses for traitors + var/regex/syndicate_code_response_regex /datum/controller/subsystem/traitor/Initialize() current_progression_scaling = 1 MINUTES * CONFIG_GET(number/traitor_scaling_multiplier) for(var/theft_item in subtypesof(/datum/objective_item/steal)) new theft_item + + syndicate_code_phrase = generate_code_phrase(return_list = TRUE) + syndicate_code_phrase_regex = new("([jointext(syndicate_code_phrase, "|")])", "ig") + syndicate_code_response = generate_code_phrase(return_list = TRUE) + syndicate_code_response_regex = new("([jointext(syndicate_code_response, "|")])", "ig") return SS_INIT_SUCCESS /datum/controller/subsystem/traitor/fire(resumed) diff --git a/code/controllers/subsystem/transport.dm b/code/controllers/subsystem/transport.dm index 928b6a03d58f..f64e32953e28 100644 --- a/code/controllers/subsystem/transport.dm +++ b/code/controllers/subsystem/transport.dm @@ -183,6 +183,8 @@ PROCESSING_SUBSYSTEM_DEF(transport) transport_controller.dispatch_transport() return else + playsound(transport_controller.nav_beacon, 'sound/machines/tram/door_chime.ogg', 45, vary = FALSE, extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE) + stoplag(1.4 SECONDS) transport_controller.set_status_code(DOORS_READY, FALSE) transport_controller.cycle_doors(CYCLE_CLOSED) diff --git a/code/controllers/subsystem/tts.dm b/code/controllers/subsystem/tts.dm index 795c8876b157..d3a268f69952 100644 --- a/code/controllers/subsystem/tts.dm +++ b/code/controllers/subsystem/tts.dm @@ -1,3 +1,6 @@ +#define TTS_REQUEST_REF "ref" +#define TTS_REQUEST_EXPIRE "expiry_time" + SUBSYSTEM_DEF(tts) name = "Text To Speech" wait = 0.05 SECONDS @@ -19,6 +22,15 @@ SUBSYSTEM_DEF(tts) /// HTTP requests that are being processed to see if they've been finished var/list/current_processing_http_messages = list() + /// TTS requests for radio TTS audio playback. Cleared when it's been in here for 30 seconds. list("identifier" = list("ref" = [ref], "expiry_time" = world.time)) + var/list/completed_tts_messages = list() + + /// TTS requests for radios who heard a TTS message. list("identifier" = list("radio" = [ref], "hearers" = list([hearer_ref], ...))) + var/list/list/queued_radio_messages = list() + + /// List of radio TTS messages with compression, used for fixing radio TTS during ionosphere storms to conceal text. + var/list/list/queued_radio_messages_compression = list() + /// A list of available speakers, which are string identifiers of the TTS voices that can be used to generate TTS messages. var/list/available_speakers = list() @@ -37,6 +49,10 @@ SUBSYSTEM_DEF(tts) /// For tts messages which time out, it won't keep tracking the tts message and will just assume that the message took /// 7 seconds (or whatever the value of message_timeout is) to receive back a response. var/average_tts_messages_time = 0 + /// Used as the Tram voice, to keep narration the same across tram devices. + var/tram_voice = null + /// Used as the Computer voice, to keep narration the same across computers. + var/computer_voice = null /datum/controller/subsystem/tts/vv_edit_var(var_name, var_value) // tts being enabled depends on whether it actually exists @@ -73,6 +89,14 @@ SUBSYSTEM_DEF(tts) if(available_speakers.Find(voice)) log_config("Removed speaker [voice] from the TTS voice pool per config.") available_speakers.Remove(voice) + if(CONFIG_GET(string/tts_tram_announcer_override)) + tram_voice = CONFIG_GET(string/tts_tram_announcer_override) + else + tram_voice = pick(available_speakers) + if(CONFIG_GET(string/tts_computer_voice_override)) + computer_voice = CONFIG_GET(string/tts_computer_voice_override) + else + computer_voice = pick(available_speakers) var/datum/http_request/request_pitch = new() var/list/headers_pitch = list() headers_pitch["Authorization"] = CONFIG_GET(string/tts_http_token) @@ -99,32 +123,58 @@ SUBSYSTEM_DEF(tts) return SS_INIT_FAILURE return SS_INIT_SUCCESS -/datum/controller/subsystem/tts/proc/play_tts(target, list/listeners, sound/audio, sound/audio_blips, datum/language/language, range = 7, volume_offset = 0) - var/turf/turf_source = get_turf(target) - if(!turf_source) +/datum/controller/subsystem/tts/proc/play_tts(datum/weakref/target, list/listeners, sound/audio, sound/audio_blips, datum/language/language, range = 7, volume_offset = 0, ignore_observers = FALSE, source_speaker = null, audio_length = 10 SECONDS, audio_length_blips = 10 SECONDS, volume_preference = /datum/preference/numeric/volume/sound_tts_volume, volume_signal = COMSIG_MOB_TTS_VOLUME_PREFERENCE_APPLIED) + var/atom/actual_target = target?.resolve() + var/turf/turf_source + if(actual_target) + turf_source = get_turf(actual_target) + if(!turf_source && actual_target) // if there's a target, we better have a turf return var/channel = SSsounds.random_available_channel() - for(var/atom/movable/hearer in listeners | SSmobs.dead_players_by_zlevel[turf_source.z])//observers always hear through walls - var/mob/listening_mob = hearer.get_listening_mob() - if(isnull(listening_mob)) + var/list/final_listeners = listeners + if(!ignore_observers && actual_target) + final_listeners += SSmobs.dead_players_by_zlevel[turf_source.z] //observers always hear through walls + var/list/blips_hearers = list() + var/list/voice_hearers = list() + for(var/hearer in final_listeners) + if(isnull(hearer)) continue - if(QDELING(listening_mob)) + var/atom/movable/hearer_atom + if(isweakref(hearer)) + var/datum/weakref/weakref = hearer + hearer_atom = weakref?.resolve() + else + hearer_atom = hearer + if(!hearer_atom || QDELING(hearer_atom)) stack_trace("TTS tried to play a sound to a deleted mob.") continue + if(!ismob(hearer_atom)) + continue + var/mob/listening_mob = hearer_atom.get_listening_mob() /// volume modifier for TTS as set by the player in preferences. - var/volume_modifier = listening_mob.client?.prefs.read_preference(/datum/preference/numeric/volume/sound_tts_volume)/100 + var/volume_modifier = listening_mob.client?.prefs.read_preference(volume_preference)/100 var/tts_pref = listening_mob.client?.prefs.read_preference(/datum/preference/choiced/sound_tts) + var/hear_self_pref = listening_mob.client?.prefs.read_preference(/datum/preference/toggle/sound_tts_hear_self_radio) if(volume_modifier == 0 || (tts_pref == TTS_SOUND_OFF)) continue + if(listening_mob == source_speaker && !hear_self_pref) + continue // don't hear your own radio tts if you got it turned off - var/sound_volume = ((hearer == target)? 60 : 85) + volume_offset + var/sound_volume = ((listening_mob == actual_target)? 60 : 85) + volume_offset sound_volume = sound_volume*volume_modifier var/datum/language_holder/holder = listening_mob.get_language_holder() - var/audio_to_use = (tts_pref == TTS_SOUND_BLIPS) ? audio_blips : audio + var/sound/audio_to_use = (tts_pref == TTS_SOUND_BLIPS) ? audio_blips : audio if(!holder.has_language(language)) - continue - if(get_dist(hearer, turf_source) <= range) + if (tts_pref == TTS_SOUND_OFF) + continue + else + audio_to_use = audio_blips + if(actual_target && get_dist(listening_mob, turf_source) <= range) + if(tts_pref == TTS_SOUND_BLIPS || !holder.has_language(language)) + blips_hearers += listening_mob + else + voice_hearers += listening_mob listening_mob.playsound_local( turf_source, vol = sound_volume, @@ -137,6 +187,45 @@ SUBSYSTEM_DEF(tts) distance_multiplier = 1, use_reverb = TRUE ) + else if(!actual_target) + listening_mob.playsound_local( + null, //play it locally + vol = sound_volume, + falloff_exponent = SOUND_FALLOFF_EXPONENT, + channel = channel, + pressure_affected = FALSE, + sound_to_use = audio_to_use, + max_distance = SOUND_RANGE, + falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, + distance_multiplier = 1, + use_reverb = TRUE + ) + if(actual_target) + new /datum/threed_sound( + new_parent = actual_target, + new_sound = audio, + current_listeners = voice_hearers, + can_add_new_listeners = FALSE, + volume = 85 + volume_offset, + sound_range = SOUND_RANGE, + sound_length = audio_length, + channel = channel, + preference_volume = volume_preference, + preference_signal = volume_signal + ) + new /datum/threed_sound( + new_parent = actual_target, + new_sound = audio_blips, + current_listeners = blips_hearers, + can_add_new_listeners = FALSE, + volume = 85 + volume_offset, + sound_range = SOUND_RANGE, + sound_length = audio_length_blips, + channel = channel, + preference_volume = volume_preference, + preference_signal = volume_signal + ) + // Need to wait for all HTTP requests to complete here because of a rustg crash bug that causes crashes when dd restarts whilst HTTP requests are ongoing. /datum/controller/subsystem/tts/Shutdown() @@ -144,7 +233,9 @@ SUBSYSTEM_DEF(tts) for(var/datum/tts_request/data in in_process_http_messages) var/datum/http_request/request = data.request var/datum/http_request/request_blips = data.request_blips - UNTIL(request.is_complete() && request_blips.is_complete()) + var/datum/http_request/request_radio = data.request_radio + var/datum/http_request/request_blips_radio = data.request_blips_radio + UNTIL(request.is_complete() && request_blips.is_complete() && request_radio.is_complete() && request_blips_radio.is_complete()) #define SHIFT_DATA_ARRAY(tts_message_queue, target, data) \ popleft(##data); \ @@ -179,27 +270,47 @@ SUBSYSTEM_DEF(tts) if(!current_request.requests_completed()) continue - var/datum/http_response/response = current_request.get_primary_response() in_process_http_messages -= current_request average_tts_messages_time = MC_AVERAGE(average_tts_messages_time, world.time - current_request.start_time) var/identifier = current_request.identifier + var/datum/http_response/normal_response = current_request.request.into_response() + var/datum/http_response/blips_response = current_request.request_blips.into_response() + var/datum/http_response/radio_response = current_request.request_radio.into_response() + var/datum/http_response/radio_blips_response = current_request.request_blips_radio.into_response() + var/datum/http_response/radio_gibberish_response = current_request.request_radio_gibberish.into_response() if(current_request.requests_errored()) + queued_radio_messages -= identifier + queued_radio_messages_compression -= identifier current_request.timed_out = TRUE - var/datum/http_response/normal_response = current_request.request.into_response() - var/datum/http_response/blips_response = current_request.request_blips.into_response() - log_tts("TTS HTTP request errored | Normal: [normal_response.error] | Blips: [blips_response.error]", list( + log_tts("TTS HTTP request errored | Normal: [normal_response.error] | Blips: [blips_response.error] | Radio: [radio_response.error] | Radio Blips: [radio_blips_response.error] | Radio Gibberish [radio_gibberish_response.error]", list( "normal" = normal_response, - "blips" = blips_response + "blips" = blips_response, + "radio" = radio_response, + "radio_blips" = radio_blips_response, + "radio_gibberish" = radio_gibberish_response )) continue - current_request.audio_length = text2num(response.headers["audio-length"]) * 10 - if(!current_request.audio_length) - current_request.audio_length = 0 + if(length(normal_response.headers) && normal_response.headers.Find("audio-length")) + current_request.audio_length = text2num(normal_response.headers["audio-length"]) * 10 || 0 + if(length(blips_response.headers) && blips_response.headers.Find("audio-length")) + current_request.audio_length_blips = text2num(blips_response.headers["audio-length"]) * 10 || 0 + if(length(radio_response.headers) && radio_response.headers.Find("audio-length")) + current_request.audio_length_radio = text2num(radio_response.headers["audio-length"]) * 10 || 0 + if(length(radio_blips_response.headers) && radio_blips_response.headers.Find("audio-length")) + current_request.audio_length_blips_radio = text2num(radio_blips_response.headers["audio-length"]) * 10 || 0 + if(length(radio_gibberish_response.headers) && radio_gibberish_response.headers.Find("audio-length")) + current_request.audio_length_radio_gibberish = text2num(radio_gibberish_response.headers["audio-length"]) * 10 current_request.audio_file = "tmp/tts/[identifier].ogg" current_request.audio_file_blips = "tmp/tts/[identifier]_blips.ogg" // We aren't as concerned about the audio length for blips as we are with actual speech + current_request.audio_file_radio = "tmp/tts/[identifier]_radio.ogg" + current_request.audio_file_blips_radio = "tmp/tts/[identifier]_blips_radio.ogg" + current_request.audio_file_radio_gibberish = "tmp/tts/[identifier]_radio_gibberish.ogg" // Don't need the request anymore so we can deallocate it current_request.request = null current_request.request_blips = null + current_request.request_radio = null + current_request.request_blips_radio = null + current_request.request_radio_gibberish = null if(MC_TICK_CHECK) return @@ -222,17 +333,17 @@ SUBSYSTEM_DEF(tts) // For example, if a TTS message plays for more than 7 seconds, which is our current timeout limit, // then the next TTS message would be unable to play. - var/timeout_start = current_target.when_to_play - if(!timeout_start) - // In the normal case, we just set timeout to start_time as it means we aren't waiting on - // a TTS message to finish playing - timeout_start = current_target.start_time + // In the normal case, we just set timeout to start_time as it means we aren't waiting on + // a TTS message to finish playing + var/timeout_start = current_target.when_to_play || current_target.start_time var/timeout = timeout_start + message_timeout // Here, we check if the request has timed out or not. // If current_target.timed_out is set to TRUE, it means the request failed in some way // and there is no TTS audio file to play. if(timeout < world.time || current_target.timed_out) + queued_radio_messages -= current_target.identifier + queued_radio_messages_compression -= current_target.identifier SHIFT_DATA_ARRAY(queued_tts_messages, tts_target, data) continue @@ -244,17 +355,35 @@ SUBSYSTEM_DEF(tts) var/sound/audio_file var/sound/audio_file_blips if(current_target.local) - if(current_target.use_blips) + if(current_target.use_blips || current_target.force_blips) audio_file_blips = new(current_target.audio_file_blips) SEND_SOUND(current_target.target, audio_file_blips) else audio_file = new(current_target.audio_file) SEND_SOUND(current_target.target, audio_file) SHIFT_DATA_ARRAY(queued_tts_messages, tts_target, data) + else if(current_target.when_to_play < world.time) audio_file = new(current_target.audio_file) audio_file_blips = new(current_target.audio_file_blips) - play_tts(tts_target, current_target.listeners, audio_file, audio_file_blips, current_target.language, current_target.message_range, current_target.volume_offset) + play_tts( + target = tts_target, + listeners = current_target.listeners, + audio = audio_file, + audio_blips = audio_file_blips, + language = current_target.language, + range = current_target.message_range, + volume_offset = current_target.volume_offset, + ignore_observers = FALSE, + source_speaker = null, + audio_length = current_target.audio_length, + audio_length_blips = current_target.audio_length_blips + ) + completed_tts_messages[current_target.identifier] = list( + TTS_REQUEST_REF = current_target, + TTS_REQUEST_EXPIRE = world.time + 30 SECONDS, + ) + if(length(data) != 1) var/datum/tts_request/next_target = data[2] next_target.when_to_play = world.time + current_target.audio_length @@ -267,10 +396,54 @@ SUBSYSTEM_DEF(tts) queued_tts_messages[tts_target] += arbritrary_delay SHIFT_DATA_ARRAY(queued_tts_messages, tts_target, data) + for(var/identifier, radio_list in queued_radio_messages) + if(MC_TICK_CHECK) + return + if(!completed_tts_messages[identifier]) + continue + + for(var/radio, hearer_list in radio_list) + if(isweakref(radio)) + var/datum/weakref/weakref = radio + var/obj/radio_obj = weakref.resolve() + if(QDELETED(radio_obj)) + queued_radio_messages[identifier] -= radio + continue + + var/datum/tts_request/tts_request = completed_tts_messages[identifier][TTS_REQUEST_REF] + var/sound/audio_file = new( \ + queued_radio_messages_compression[identifier] > COMPRESSION_REPLACE_CHARACTER_THRESHOLD \ + ? tts_request.audio_file_radio_gibberish \ + : tts_request.audio_file_radio \ + ) + var/sound/audio_file_blips = new(tts_request.audio_file_blips_radio) + play_tts( + target = radio == TTS_GHOST_RADIO ? null : radio, + listeners = hearer_list, + audio = audio_file, + audio_blips = audio_file_blips, + language = tts_request.language, + range = INFINITY, + volume_offset = tts_request.volume_offset, + ignore_observers = TRUE, + source_speaker = tts_request.target, + audio_length = tts_request.audio_length_radio, + audio_length_blips = tts_request.audio_length_blips_radio, + volume_preference = /datum/preference/numeric/volume/sound_tts_radio_volume, + volume_signal = COMSIG_MOB_TTS_RADIO_VOLUME_PREFERENCE_APPLIED, + ) + + clear_radio_message(identifier) + + for(var/identifier, request in completed_tts_messages) + if (world.time < completed_tts_messages[identifier][TTS_REQUEST_EXPIRE]) + continue + + clear_radio_message(identifier) #undef TTS_ARBRITRARY_DELAY -/datum/controller/subsystem/tts/proc/queue_tts_message(datum/target, message, datum/language/language, speaker, filter, list/listeners, local = FALSE, message_range = 7, volume_offset = 0, pitch = 0, special_filters = "") +/datum/controller/subsystem/tts/proc/queue_tts_message(datum/target, message, datum/language/language, speaker, filter, list/listeners, local = FALSE, message_range = 7, volume_offset = 0, pitch = 0, special_filters = "", blip_base = "male", blip_number = "1", force_blips = FALSE, identifier = "invalid") if(!tts_enabled) return @@ -285,25 +458,34 @@ SUBSYSTEM_DEF(tts) return var/shell_scrubbed_input = tts_speech_filter(message) - shell_scrubbed_input = copytext(shell_scrubbed_input, 1, 300) - var/identifier = "[sha1(speaker + filter + num2text(pitch) + special_filters + shell_scrubbed_input)].[world.time]" if(!(speaker in available_speakers)) return - + var/list/listener_weakrefs = list() + for(var/listener in listeners) + listener_weakrefs += WEAKREF(listener) var/list/headers = list() headers["Content-Type"] = "application/json" headers["Authorization"] = CONFIG_GET(string/tts_http_token) var/datum/http_request/request = new() var/datum/http_request/request_blips = new() + var/datum/http_request/request_radio = new() + var/datum/http_request/request_blips_radio = new() + var/datum/http_request/request_radio_gibberish = new() var/file_name = "tmp/tts/[identifier].ogg" var/file_name_blips = "tmp/tts/[identifier]_blips.ogg" + var/file_name_radio = "tmp/tts/[identifier]_radio.ogg" + var/file_name_blips_radio = "tmp/tts/[identifier]_blips_radio.ogg" + var/file_name_radio_gibberish = "tmp/tts/[identifier]_radio_gibberish.ogg" request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) - request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch, blips = TRUE)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) - var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, shell_scrubbed_input, target, local, language, message_range, volume_offset, listeners, pitch) - var/list/player_queued_tts_messages = queued_tts_messages[target] + request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch, blips = TRUE)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]&blip_base=[blip_base]&blip_number=[blip_number]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) + request_radio.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-radio?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_radio, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) + request_blips_radio.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips-radio?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch, blips = TRUE)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]&blip_base=[blip_base]&blip_number=[blip_number]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips_radio, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) + request_radio_gibberish.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-radio?voice=[speaker]&identifier=[identifier]&filter=[tts_filter_encode(filter, speaker, pitch)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("raw_text" = shell_scrubbed_input, "gibberish_text" = shell_scrubbed_input)), headers, file_name_radio_gibberish, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) + var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, request_radio, request_blips_radio, request_radio_gibberish, shell_scrubbed_input, target, local, language, message_range, volume_offset, listener_weakrefs, pitch, force_blips) + var/list/player_queued_tts_messages = queued_tts_messages[WEAKREF(target)] if(!player_queued_tts_messages) player_queued_tts_messages = list() - queued_tts_messages[target] = player_queued_tts_messages + queued_tts_messages[WEAKREF(target)] = player_queued_tts_messages player_queued_tts_messages += current_request if(length(in_process_http_messages) < max_concurrent_requests) current_request.start_requests() @@ -311,6 +493,12 @@ SUBSYSTEM_DEF(tts) else queued_http_messages.insert(current_request) +/datum/controller/subsystem/tts/proc/clear_radio_message(identifier) + completed_tts_messages[identifier] -= TTS_REQUEST_REF // don't stick around + completed_tts_messages -= identifier + queued_radio_messages -= identifier + queued_radio_messages_compression -= identifier + /// Helper to get a random TTS voice for a certain gender. Passing no gender just results in a random voice. /datum/controller/subsystem/tts/proc/random_tts_voice(gender = NEUTER) if(!tts_enabled) @@ -340,6 +528,12 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request /// The HTTP request of this message for blips var/datum/http_request/request_blips + /// The HTTP request of this message's radio version + var/datum/http_request/request_radio + /// The HTTP request of this blip message's radio version + var/datum/http_request/request_blips_radio + /// The HTTP request of this message's radio gibberish version + var/datum/http_request/request_radio_gibberish /// The language to limit this TTS message to var/datum/language/language /// The message itself @@ -359,8 +553,18 @@ SUBSYSTEM_DEF(tts) var/sound/audio_file /// The blips audio file of this tts request. var/sound/audio_file_blips + /// The radio audio file of this tts request. + var/sound/audio_file_radio + /// The blips radio audio file of this tts request. + var/sound/audio_file_blips_radio + /// The gibberish radio audio file of this tts request. + var/sound/audio_file_radio_gibberish /// The audio length of this tts request. var/audio_length + var/audio_length_blips + var/audio_length_radio + var/audio_length_blips_radio + var/audio_length_radio_gibberish /// When the audio file should play at the minimum var/when_to_play = 0 /// Whether this request was timed out or not @@ -369,13 +573,18 @@ SUBSYSTEM_DEF(tts) var/use_blips = FALSE /// What's the pitch adjustment? var/pitch = 0 + /// Should we force play blips? Used for the blips preview. + var/force_blips = FALSE -/datum/tts_request/New(identifier, datum/http_request/request, datum/http_request/request_blips, message, target, local, datum/language/language, message_range, volume_offset, list/listeners, pitch) +/datum/tts_request/New(identifier, datum/http_request/request, datum/http_request/request_blips, datum/http_request/request_radio, datum/http_request/request_blips_radio, datum/http_request/request_radio_gibberish, message, target, local, datum/language/language, message_range, volume_offset, list/listeners, pitch, force_blips = FALSE) . = ..() src.identifier = identifier src.request = request src.request_blips = request_blips + src.request_radio = request_radio + src.request_blips_radio = request_blips_radio + src.request_radio_gibberish = request_radio_gibberish src.message = message src.language = language src.target = target @@ -384,6 +593,7 @@ SUBSYSTEM_DEF(tts) src.volume_offset = volume_offset src.listeners = listeners src.pitch = pitch + src.force_blips = force_blips start_time = world.time /datum/tts_request/proc/start_requests() @@ -393,17 +603,20 @@ SUBSYSTEM_DEF(tts) else if(istype(target, /mob)) use_blips = (target.client?.prefs.read_preference(/datum/preference/choiced/sound_tts) == TTS_SOUND_BLIPS) if(local) - if(use_blips) + if(use_blips || force_blips) request_blips.begin_async() else request.begin_async() else request.begin_async() request_blips.begin_async() + request_radio.begin_async() + request_blips_radio.begin_async() + request_radio_gibberish.begin_async() /datum/tts_request/proc/get_primary_request() if(local) - if(use_blips) + if(use_blips || force_blips) return request_blips else return request @@ -412,7 +625,7 @@ SUBSYSTEM_DEF(tts) /datum/tts_request/proc/get_primary_response() if(local) - if(use_blips) + if(use_blips || force_blips) return request_blips.into_response() else return request.into_response() @@ -422,7 +635,7 @@ SUBSYSTEM_DEF(tts) /datum/tts_request/proc/requests_errored() if(local) var/datum/http_response/response - if(use_blips) + if(use_blips || force_blips) response = request_blips.into_response() else response = request.into_response() @@ -430,15 +643,47 @@ SUBSYSTEM_DEF(tts) else var/datum/http_response/response = request.into_response() var/datum/http_response/response_blips = request_blips.into_response() - return response.errored || response_blips.errored + var/datum/http_response/response_radio = request_radio.into_response() + var/datum/http_response/response_blips_radio = request_blips_radio.into_response() + var/datum/http_response/response_radio_gibberish = request_radio_gibberish.into_response() + return response.errored || response_blips.errored || response_radio.errored || response_blips_radio.errored || response_radio_gibberish.errored /datum/tts_request/proc/requests_completed() if(local) - if(use_blips) + if(use_blips || force_blips) return request_blips.is_complete() else return request.is_complete() else - return request.is_complete() && request_blips.is_complete() + return request.is_complete() && request_blips.is_complete() && request_blips_radio.is_complete() && request_radio.is_complete() && request_radio_gibberish.is_complete() + +#undef TTS_REQUEST_REF +#undef TTS_REQUEST_EXPIRE + +/** + * Checks if the passed mob can hear radio TTS + * + * * hearer - The mob to check if they can hear radio TTS + * * radio_frequency - The frequency of the radio TTS message + */ +/proc/can_hear_radio_tts(mob/hearer, radio_frequency) + if(!SStts.tts_enabled) + return FALSE + + if(HAS_TRAIT(hearer, TRAIT_DEAF)) + return FALSE + + var/tts_pref = hearer.client?.prefs.read_preference(/datum/preference/choiced/sound_tts) || TTS_SOUND_OFF + if(tts_pref == TTS_SOUND_OFF) + return FALSE + + var/radio_tts_pref = hearer.client?.prefs.read_preference(/datum/preference/choiced/sound_tts_radio) || TTS_SOUND_NO_RADIO + switch(radio_tts_pref) + if(TTS_SOUND_NO_RADIO) + return FALSE + if(TTS_SOUND_DEPARTMENTAL_RADIO) // don't give them the full common firehose if they turned it off + return radio_frequency != FREQ_COMMON + + return TRUE #undef SHIFT_DATA_ARRAY diff --git a/code/controllers/subsystem/verbs.dm b/code/controllers/subsystem/verbs.dm new file mode 100644 index 000000000000..e557c55454db --- /dev/null +++ b/code/controllers/subsystem/verbs.dm @@ -0,0 +1,38 @@ +SUBSYSTEM_DEF(verbs) + name = "Verbs" + ss_flags = SS_NO_FIRE + init_stage = INITSTAGE_EARLY + var/list/datum/verb_metadata/verbs_by_type = list() + +/datum/controller/subsystem/verbs/Initialize() + if (!length(verbs_by_type)) + initialize_verb_types() + initialized = TRUE + return SS_INIT_SUCCESS + +/datum/controller/subsystem/verbs/proc/initialize_verb_types() + for(var/datum/verb_metadata/verb_type as anything in subtypesof(/datum/verb_metadata)) + verbs_by_type[verb_type] = new verb_type + +/datum/controller/subsystem/verbs/proc/invoke(target, datum/verb_metadata/verb_type, ...) + var/datum/verb_metadata/meta = verbs_by_type[verb_type] + if(isnull(meta)) + CRASH("Attempted to invoke unknown verb '[verb_type]'.") + var/list/invoke_args = args.Copy(3) + call(target, meta.body_path)(arglist(invoke_args)) + +/datum/controller/subsystem/verbs/proc/assign_verb(target, datum/verb_metadata/verb_type) + // When launching via dreamseeker and not dreamdaemon, client is created first before any of the subsystems init + // This can only happen in dev environments so its not a big deal + if (!initialized) + initialize_verb_types() + var/datum/verb_metadata/meta = verbs_by_type[verb_type] + if(isnull(meta)) + CRASH("Attempted to assign unknown verb '[verb_type]'.") + meta.assign_to(target) + +/datum/controller/subsystem/verbs/proc/unassign_verb(target, datum/verb_metadata/verb_type) + var/datum/verb_metadata/meta = verbs_by_type[verb_type] + if(isnull(meta)) + CRASH("Attempted to unassign unknown verb '[verb_type]'.") + meta.unassign_from(target) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index bbc9d168d52e..c39cb99b4415 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -441,9 +441,7 @@ SUBSYSTEM_DEF(vote) voting -= user.client?.ckey /// Mob level verb that allows players to vote on the current vote. -/mob/verb/vote() - set category = "OOC" - set name = "Vote" +GAME_VERB(/mob, vote, "Vote", "OOC") if(!SSvote.initialized) to_chat(usr, span_notice("Voting is not set up yet!")) diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index d50013baceed..496fc6f71fbb 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -12,7 +12,7 @@ SUBSYSTEM_DEF(weather) var/list/eligible_zlevels = list() /// Used by barometers to know when the next storm is coming var/list/next_hit_by_zlevel = list() - /// Alist of all particle holders per Z-stack offset for particle weather to be shown to clients + /// Alist of all particle holders per Z-stack offset for particle weather, each particle holder associated with z-levels it should be displayed on, to be shown to clients var/alist/particle_holders = alist() /// List of all RENDER_PLANE_PARTICLE_WEATHER and RENDER_PLANE_EMISSIVE_PARTICLE_WEATHER planes var/list/particle_planemasters = list() @@ -103,9 +103,19 @@ SUBSYSTEM_DEF(weather) // We add it to vis_contents of planemasters rather than client screen as planemasters already // manage their own visibility based on owner's z level for (var/atom/movable/screen/plane_master/plane_master as anything in particle_planemasters) + var/mob/owner = plane_master.home.our_hud?.mymob + if (!owner) // Vibecheck + continue + // Could be caching these per-mob but its basically just a list lookup wrapper + var/list/stack_levels = SSmapping.get_connected_levels(get_turf(owner.client?.eye || owner)) for (var/obj/effect/abstract/weather_holder/holder as anything in holder_list) - if (holder.plane == plane_master.plane) - plane_master.vis_contents |= holder + if (holder.plane != plane_master.plane) + continue + + if (!length(holder_list[holder] & stack_levels)) + continue + + plane_master.vis_contents |= holder /datum/controller/subsystem/weather/proc/remove_weather_objects(list/old_holders) for (var/offset in 1 to length(old_holders)) diff --git a/code/datums/3d_sounds/_3d_sound.dm b/code/datums/3d_sounds/_3d_sound.dm new file mode 100644 index 000000000000..47424e0367dc --- /dev/null +++ b/code/datums/3d_sounds/_3d_sound.dm @@ -0,0 +1,285 @@ +/// The mob is deaf +#define MUTE_DEAF (1<<0) +/// The mob is out of range of the sound +#define MUTE_RANGE (1<<1) +/// The mob muted their volume preference for this sound +#define MUTE_VOLUME (1<<1) + +/datum/threed_sound + var/atom/parent + var/sound/our_sound + var/sound_path + var/can_add_new_listeners = TRUE + var/list/mob/listeners = list() + var/volume = 50 + var/sound_range + var/x_cutoff + var/z_cutoff + var/our_channel + var/sound_length = 5 SECONDS + var/deletion_timer + var/preference_volume + var/preference_signal + var/falloff_distance + var/falloff_exponent + var/pressure_affected = TRUE + +/datum/threed_sound/New(atom/new_parent, sound/new_sound, list/current_listeners, can_add_new_listeners = FALSE, volume = 50, sound_range = SOUND_RANGE, sound_length = 5 SECONDS, channel, preference_volume, preference_signal, falloff_exponent = SOUND_FALLOFF_EXPONENT, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, pressure_affected = TRUE) + if(!ismovable(new_parent) && !isturf(new_parent)) + stack_trace("[type] created on non-turf or non-movable: [new_parent ? "[new_parent] ([new_parent.type])" : "null"])") + qdel(src) + return + + parent = new_parent + our_sound = new_sound + src.can_add_new_listeners = can_add_new_listeners + src.volume = volume + src.sound_range = sound_range + src.sound_length = sound_length + our_channel = channel + src.preference_volume = preference_volume + src.preference_signal = preference_signal + src.falloff_distance = falloff_distance + src.falloff_exponent = falloff_exponent + src.pressure_affected = pressure_affected + + if(isnull(sound_range)) + src.sound_range = world.view + var/list/worldviewsize = getviewsize(src.sound_range) + x_cutoff = ceil(worldviewsize[1] / 2) + z_cutoff = ceil(worldviewsize[2] / 2) + for(var/listener in current_listeners) + if(!ismob(listener)) + stack_trace("[listener] found in current listeners list and is NOT A MOB!!!!!1! report this on github thx") + current_listeners -= listener + continue + register_listener(listener) + + RegisterSignal(parent, COMSIG_ENTER_AREA, PROC_REF(on_enter_area)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(parent_delete)) + deletion_timer = addtimer(CALLBACK(src, PROC_REF(selfdelete)), sound_length, TIMER_STOPPABLE | TIMER_DELETE_ME) + +/datum/threed_sound/Destroy() + unlisten_all() + deltimer(deletion_timer) + parent = null + our_sound = null + return ..() + +/datum/threed_sound/proc/parent_delete(datum/source) + SIGNAL_HANDLER + selfdelete() + +/** + * Sets the sound's range to a new value. This can be a number or a view size string "XxY". + * Then updates any mobs listening to it. + */ +/datum/threed_sound/proc/set_sound_range(new_range) + if(sound_range == new_range) + return + sound_range = new_range + var/list/worldviewsize = getviewsize(sound_range) + x_cutoff = ceil(worldviewsize[1] / 2) + z_cutoff = ceil(worldviewsize[2] / 2) + update_all() + +/** + * Sets the sound's environment to a new value. + * Then updates any mobs listening to it. + */ +/datum/threed_sound/proc/set_new_environment(new_env) + if(!our_sound || our_sound.environment == new_env) + return + our_sound.environment = new_env + update_all() + +/datum/threed_sound/proc/unlisten_all() + for(var/mob/listening as anything in listeners) + deregister_listener(listening) + our_sound = null + +/datum/threed_sound/proc/update_all() + for(var/mob/listening as anything in listeners) + update_listener(listening) + +/datum/threed_sound/proc/start_music() + for(var/mob/nearby in hearers(sound_range, parent)) + register_listener(nearby) + +/datum/threed_sound/proc/get_active_listeners() + var/list/all_listeners = list() + for(var/mob/listener as anything in listeners) + if(listeners[listener] & SOUND_MUTE) + continue + all_listeners += listener + return all_listeners + +/datum/threed_sound/proc/register_listener(mob/new_listener) + PROTECTED_PROC(TRUE) + + if(!(new_listener in listeners)) + RegisterSignal(new_listener, COMSIG_QDELETING, PROC_REF(listener_deleted)) + + if(isnull(new_listener.client)) + RegisterSignal(new_listener, COMSIG_MOB_LOGIN, PROC_REF(listener_login)) + return + if(preference_signal) + RegisterSignals(new_listener, list(COMSIG_MOVABLE_MOVED, preference_signal), PROC_REF(listener_moved)) + else + RegisterSignal(new_listener, COMSIG_MOVABLE_MOVED, PROC_REF(listener_moved)) + + RegisterSignals(new_listener, list(SIGNAL_ADDTRAIT(TRAIT_DEAF), SIGNAL_REMOVETRAIT(TRAIT_DEAF)), PROC_REF(listener_deaf)) + listeners[new_listener] = NONE + if(preference_volume) + var/pref_volume = new_listener.client?.prefs.read_preference(preference_volume) + if(HAS_TRAIT(new_listener, TRAIT_DEAF) || !pref_volume) + listeners[new_listener] |= SOUND_MUTE + + if(HAS_TRAIT(new_listener, TRAIT_DEAF)) + listeners[new_listener] |= SOUND_MUTE + + update_listener(new_listener) + listeners[new_listener] |= SOUND_UPDATE + +/datum/threed_sound/proc/listener_deleted(mob/source) + SIGNAL_HANDLER + deregister_listener(source) + +/datum/threed_sound/proc/listener_moved(mob/source) + SIGNAL_HANDLER + update_listener(source) + +/datum/threed_sound/proc/listener_login(mob/source) + SIGNAL_HANDLER + deregister_listener(source) + register_listener(source) + +/datum/threed_sound/proc/listener_deaf(mob/source) + SIGNAL_HANDLER + + if(HAS_TRAIT(source, TRAIT_DEAF)) + listeners[source] |= SOUND_MUTE + else if(!unmute_listener(source, MUTE_DEAF)) + return + update_listener(source) + + +/datum/threed_sound/proc/unmute_listener(mob/listener, reason) + reason = ~reason + + if((reason & MUTE_DEAF) && HAS_TRAIT(listener, TRAIT_DEAF)) + return FALSE + if(preference_volume) + var/pref_volume = listener.client?.prefs.read_preference(preference_volume) + if((reason & MUTE_VOLUME) && !pref_volume) + return FALSE + + if(reason & MUTE_RANGE) + var/turf/sound_turf = get_turf(parent) + var/turf/listener_turf = get_turf(listener) + if(isnull(sound_turf) || isnull(listener_turf)) + return FALSE + if(sound_turf.z != listener_turf.z) + return FALSE + if(abs(sound_turf.x - listener_turf.x) > x_cutoff) + return FALSE + if(abs(sound_turf.y - listener_turf.y) > z_cutoff) + return FALSE + + listeners[listener] &= ~SOUND_MUTE + return TRUE + +/datum/threed_sound/proc/deregister_listener(mob/no_longer_listening) + PROTECTED_PROC(TRUE) + + listeners -= no_longer_listening + no_longer_listening.stop_sound_channel(our_channel) + if(preference_signal) + UnregisterSignal(no_longer_listening, list( + COMSIG_MOB_LOGIN, + COMSIG_QDELETING, + COMSIG_MOVABLE_MOVED, + preference_signal, + SIGNAL_ADDTRAIT(TRAIT_DEAF), + SIGNAL_REMOVETRAIT(TRAIT_DEAF), + )) + else + UnregisterSignal(no_longer_listening, list( + COMSIG_MOB_LOGIN, + COMSIG_QDELETING, + COMSIG_MOVABLE_MOVED, + SIGNAL_ADDTRAIT(TRAIT_DEAF), + SIGNAL_REMOVETRAIT(TRAIT_DEAF), + )) + +/datum/threed_sound/proc/update_listener(mob/listener) + PROTECTED_PROC(TRUE) + our_sound.status = listeners[listener] || NONE + var/turf/sound_turf = get_turf(parent) + var/turf/listener_turf = get_turf(listener) + if(isnull(sound_turf) || isnull(listener_turf)) // ?? + our_sound.x = 0 + our_sound.z = 0 + + else if(sound_turf.z != listener_turf.z) + listeners[listener] |= SOUND_MUTE + + else + if(preference_volume) + var/pref_volume = listener.client?.prefs.read_preference(preference_volume) + if(!pref_volume) + listeners[listener] |= SOUND_MUTE + else + unmute_listener(listener, MUTE_VOLUME) + our_sound.volume = volume * (pref_volume/100) + // keep in mind sound XYZ is different to world XYZ. sound +-z = world +-y + var/new_x = sound_turf.x - listener_turf.x + var/new_z = sound_turf.y - listener_turf.y + + if((abs(new_x) > x_cutoff || abs(new_z) > z_cutoff)) + listeners[listener] |= SOUND_MUTE + + else if(listeners[listener] & SOUND_MUTE) + unmute_listener(listener, MUTE_RANGE) + + our_sound.x = new_x + our_sound.z = new_z + var/original_volume = our_sound.volume + var/distance = get_dist_euclidean(sound_turf, listener_turf) + var/dist_ratio = CALCULATE_SOUND_VOLUME_RATIO(original_volume, distance, sound_range, falloff_distance, falloff_exponent) + var/calculated_volume = original_volume - (dist_ratio * (original_volume - 5)) + if(pressure_affected) + //Atmosphere affects sound + var/pressure_factor = 1 + var/datum/gas_mixture/hearer_env = listener_turf.return_air() + var/datum/gas_mixture/source_env = sound_turf.return_air() + + if(hearer_env && source_env) + var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) + if(pressure < ONE_ATMOSPHERE) + pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) + else //space + pressure_factor = 0 + + if(get_dist(sound_turf, listener_turf) <= 1) + pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound + + calculated_volume *= pressure_factor + if(calculated_volume < 5 || get_dist(sound_turf, listener_turf) > sound_range) + our_sound.volume = 0 + else + our_sound.volume = calculated_volume + SEND_SOUND(listener, our_sound) + our_sound.volume = original_volume + +/datum/threed_sound/proc/on_moved(datum/source, ...) + SIGNAL_HANDLER + update_all() + +/datum/threed_sound/proc/on_enter_area(datum/source, area/area_to_register) + SIGNAL_HANDLER + set_new_environment(area_to_register.sound_environment || SOUND_ENVIRONMENT_NONE) + +#undef MUTE_DEAF +#undef MUTE_RANGE diff --git a/code/datums/achievements/_achievement_data.dm b/code/datums/achievements/_achievement_data.dm index 9cfad0016de3..f91ac4242755 100644 --- a/code/datums/achievements/_achievement_data.dm +++ b/code/datums/achievements/_achievement_data.dm @@ -129,9 +129,6 @@ continue .["highscores"] += list(list("name" = score.name, "scores" = score.high_scores)) -/client/verb/checkachievements() - set category = "OOC" - set name = "Check achievements" - set desc = "See all of your achievements!" +GAME_VERB_DESC(/client, checkachievements, "Check achievements", "See all of your achievements!", "OOC") persistent_client.achievements.ui_interact(usr) diff --git a/code/datums/actions/items/flight.dm b/code/datums/actions/items/flight.dm new file mode 100644 index 000000000000..7df839830b5d --- /dev/null +++ b/code/datums/actions/items/flight.dm @@ -0,0 +1,110 @@ +// Action that toggles flight onto the mob. +/datum/action/item_action/toggle_flight + name = "Activate Flight Jets" + desc = "Activates the jet boot's miniturized rocket thrusters, allowing for sustained flight." + button_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "jet_boot_toggle" + /// Managed overlay for the fire produced from flight. + var/mutable_appearance/jet_fire + /// Audio loop for when the jet boot flight is active. + var/datum/looping_sound/burning_jet/burning_audio + +/datum/action/item_action/toggle_flight/New(Target) + . = ..() + jet_fire = mutable_appearance('icons/effects/effects.dmi', "jetfire") + jet_fire.pixel_z = -4 + burning_audio = new(target) + +/datum/action/item_action/toggle_flight/Destroy() + . = ..() + QDEL_NULL(jet_fire) + QDEL_NULL(burning_audio) + +/datum/action/item_action/toggle_flight/Grant(mob/grant_to) + . = ..() + grant_to.AddComponent( \ + /datum/component/jetpack, \ + FALSE, \ + 2 NEWTONS, \ + COMSIG_JETBOOTS_ACTIVE, \ + COMSIG_JETBOOTS_INACTIVE, \ + null, \ + CALLBACK(src, PROC_REF(can_fly)), \ + CALLBACK(src, PROC_REF(can_fly)), \ + /datum/effect_system/trail_follow/smoke, \ + ) + +/datum/action/item_action/toggle_flight/Remove(mob/remove_from) + . = ..() + if(HAS_TRAIT_FROM(remove_from, TRAIT_MOVE_FLOATING, SHOES_TRAIT)) + switch_flight() + +/datum/action/item_action/toggle_flight/do_effect(trigger_flags) + if(!ishuman(owner)) + to_chat(owner, span_warning("Your shoes aren't built with you in mind, unfortunately.")) + return FALSE + if(!target) + return FALSE + switch_flight() + return TRUE + +/// Proc that toggles between flight behavior on the mob being on and off, including the mob's flight, gravity, passtable, and the sounds/visuals. +/datum/action/item_action/toggle_flight/proc/switch_flight() + var/obj/item/clothing/shoes/bhop/rocket/jet/target_shoes = target + var/mob/living/carbon/human/human_owner = owner + + if(!HAS_TRAIT_FROM(human_owner, TRAIT_MOVE_FLOATING, SHOES_TRAIT)) + //functional + human_owner.physiology.stun_mod *= 2 + human_owner.add_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SHOES_TRAIT) + human_owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/shoes) + human_owner.AddElement(/datum/element/forced_gravity, 0) + SEND_SIGNAL(human_owner, COMSIG_JETBOOTS_ACTIVE, human_owner) + ADD_TRAIT(human_owner, TRAIT_PASSTABLE, SHOES_TRAIT) + to_chat(human_owner, span_notice("You click your jet boots together and begin to hover gently above the ground...")) + human_owner.set_resting(FALSE, TRUE) + human_owner.refresh_gravity() + RegisterSignals(human_owner, list(COMSIG_LIVING_STATUS_STUN, COMSIG_LIVING_STATUS_KNOCKDOWN, COMSIG_LIVING_STATUS_PARALYZE), PROC_REF(switch_flight)) + //visuals + burning_audio.start() + human_owner.add_overlay(jet_fire) + target_shoes.flight_active = TRUE + target_shoes.update_appearance(UPDATE_ICON_STATE) + human_owner.update_appearance(UPDATE_OVERLAYS) + return + + //functional + human_owner.physiology.stun_mod *= 0.5 + human_owner.remove_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SHOES_TRAIT) + human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/shoes) + human_owner.RemoveElement(/datum/element/forced_gravity, 0) + SEND_SIGNAL(human_owner, COMSIG_JETBOOTS_INACTIVE, human_owner) + REMOVE_TRAIT(human_owner, TRAIT_PASSTABLE, SHOES_TRAIT) + to_chat(human_owner, span_notice("You're lowered back onto the ground...")) + human_owner.refresh_gravity() + UnregisterSignal(human_owner, list(COMSIG_LIVING_STATUS_STUN, COMSIG_LIVING_STATUS_KNOCKDOWN, COMSIG_LIVING_STATUS_PARALYZE)) + //visuals + burning_audio.stop() + human_owner.cut_overlay(jet_fire) + target_shoes.flight_active = FALSE + target_shoes.update_appearance(UPDATE_ICON_STATE) + human_owner.update_appearance(UPDATE_OVERLAYS) + +/// Largely lifted off of wing's can_fly proc, tailored to the jet boots functionality. +/datum/action/item_action/toggle_flight/proc/can_fly() + var/mob/living/carbon/human/human = owner + if(human.stat || human.body_position == LYING_DOWN || isnull(human.client)) + return FALSE + + var/turf/location = get_turf(human) + if(!location) + return FALSE + if(human.get_item_by_slot(ITEM_SLOT_LEGCUFFED)) + to_chat(human, span_warning("Your legs are bound! Free yourself first!")) + return FALSE + + var/datum/gas_mixture/environment = location.return_air() + if(environment?.return_pressure() < HAZARD_LOW_PRESSURE + 10) + to_chat(human, span_warning("The atmosphere is too thin for you to fly!")) + return FALSE + return TRUE diff --git a/code/datums/actions/items/stealth_box.dm b/code/datums/actions/items/stealth_box.dm index e61c19d26d78..09dcca45cf91 100644 --- a/code/datums/actions/items/stealth_box.dm +++ b/code/datums/actions/items/stealth_box.dm @@ -35,11 +35,11 @@ /datum/action/item_action/agent_box/Grant(mob/grant_to) . = ..() if(owner) - RegisterSignal(owner, COMSIG_HUMAN_SUICIDE_ACT, PROC_REF(suicide_act)) + RegisterSignal(owner, COMSIG_LIVING_SUICIDE_ACT, PROC_REF(suicide_act)) /datum/action/item_action/agent_box/Remove(mob/M) if(owner) - UnregisterSignal(owner, COMSIG_HUMAN_SUICIDE_ACT) + UnregisterSignal(owner, COMSIG_LIVING_SUICIDE_ACT) return ..() /datum/action/item_action/agent_box/proc/suicide_act(datum/source) diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index dc14b7633cd6..520b2ae259a8 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -935,7 +935,6 @@ multiple modular subtrees with behaviors while(index <= length(remove_queue)) var/list/next_to_clear = remove_queue[index] for(var/inner_value in next_to_clear) - var/associated_value = next_to_clear[inner_value] // We are a lists of lists, add the next value to the queue so we can handle references in there // (But we only need to bother checking the list if it's not empty.) if(islist(inner_value) && length(inner_value)) @@ -945,6 +944,13 @@ multiple modular subtrees with behaviors else if(inner_value == source) next_to_clear -= inner_value + //if this is the case stop here. This means the list isn't associative (because an assoc list couldnt have a key for a number!) + if(isnum(inner_value)) + continue + + var/associated_value = next_to_clear[inner_value] + if(!associated_value) //This wasn't an associated list! we lied! its all been a trick. Try again next time. + continue // We are an assoc lists of lists, the list at the next value so we can handle references in there // (But again, we only need to bother checking the list if it's not empty.) if(islist(associated_value) && length(associated_value)) diff --git a/code/datums/ai/movement/ai_movement_jps.dm b/code/datums/ai/movement/ai_movement_jps.dm index 1153833a31ee..a8980d15b851 100644 --- a/code/datums/ai/movement/ai_movement_jps.dm +++ b/code/datums/ai/movement/ai_movement_jps.dm @@ -12,6 +12,16 @@ var/atom/movable/moving = controller.pawn var/delay = controller.movement_delay + var/datum/move_loop/loop = setup_moveloop(controller, current_movement_target, moving, delay) + + RegisterSignal(loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(pre_move)) + RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move)) + RegisterSignal(loop, COMSIG_MOVELOOP_JPS_REPATH, PROC_REF(repath_incoming)) + + return loop + + +/datum/ai_movement/jps/proc/setup_moveloop(datum/ai_controller/controller, atom/current_movement_target, atom/movable/moving, delay) var/datum/move_loop/has_target/jps/loop = GLOB.move_manager.jps_move(moving, current_movement_target, delay, @@ -24,11 +34,6 @@ diagonal_handling = diagonal_flags, extra_info = controller, ) - - RegisterSignal(loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(pre_move)) - RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move)) - RegisterSignal(loop, COMSIG_MOVELOOP_JPS_REPATH, PROC_REF(repath_incoming)) - return loop /datum/ai_movement/jps/proc/repath_incoming(datum/move_loop/has_target/jps/source) @@ -47,9 +52,35 @@ var/datum/move_loop/loop = ..() var/atom/our_pawn = controller.pawn if(isnull(our_pawn)) - return + return null our_pawn.RegisterSignal(loop, COMSIG_MOVELOOP_JPS_FINISHED_PATHING, TYPE_PROC_REF(/mob/living/basic/bot, generate_bot_path)) + return loop /datum/ai_movement/jps/bot/travel_to_beacon maximum_length = AI_BOT_PATH_LENGTH max_pathing_attempts = 10 + + +/datum/ai_movement/jps/bot/mulebot + max_pathing_attempts = 10 + maximum_length = AI_MULEBOT_PATH_LENGTH + +/datum/ai_movement/jps/bot/mulebot/setup_moveloop(datum/ai_controller/controller, atom/current_movement_target, atom/movable/moving, delay) + var/datum/move_loop/has_target/jps/frustrations/loop = GLOB.move_manager.frustrations_move(moving, + current_movement_target, + delay, + repath_delay = 0.5 SECONDS, + simulated_only = !HAS_TRAIT(controller.pawn, TRAIT_SPACEWALK), + max_path_length = maximum_length, + minimum_distance = controller.get_minimum_distance(), + access = controller.get_access(), + subsystem = SSai_movement, + diagonal_handling = diagonal_flags, + extra_info = controller, + ) + return loop + +/datum/ai_movement/jps/bot/mulebot/start_moving_towards(datum/ai_controller/controller, atom/current_movement_target, min_distance) + var/datum/move_loop/loop = ..() + var/atom/our_pawn = controller.pawn + our_pawn.RegisterSignal(loop, COMSIG_MOVELOOP_JPS_FRUSTRATION_INCREMENTED, TYPE_PROC_REF(/mob/living/basic/bot/mulebot, handle_buzzing)) diff --git a/code/datums/ai/telegraph_effects.dm b/code/datums/ai/telegraph_effects.dm index b658c651988a..99a58a641a0a 100644 --- a/code/datums/ai/telegraph_effects.dm +++ b/code/datums/ai/telegraph_effects.dm @@ -34,7 +34,7 @@ /obj/effect/temp_visual/telegraphing/line icon = 'icons/mob/telegraphing/telegraph.dmi' icon_state = "line" - duration = 0.8 SECONDS + duration = 1.2 SECONDS /obj/effect/temp_visual/telegraphing/line/short duration = 0.5 SECONDS diff --git a/code/datums/atmosphere/_atmosphere.dm b/code/datums/atmosphere/_atmosphere.dm index 702a42e7ab07..37bdb954fa13 100644 --- a/code/datums/atmosphere/_atmosphere.dm +++ b/code/datums/atmosphere/_atmosphere.dm @@ -27,11 +27,10 @@ // First let's set up the gasmix and base gases for this template // We make the string from a gasmix in this proc because gases need to calculate their pressure var/datum/gas_mixture/gasmix = new - var/list/gaslist = gasmix.gases gasmix.temperature = rand(minimum_temp, maximum_temp) + var/list/cached_moles = gasmix.moles for(var/i in base_gases) - ADD_GAS(i, gaslist) - gaslist[i][MOLES] = base_gases[i] + cached_moles[i] = base_gases[i] // Now let the random choices begin var/datum/gas/gastype @@ -49,22 +48,21 @@ amount *= pressure_scalar // If we pick a really small target pressure we want roughly the same mix but less of it all amount = CEILING(amount, 0.1) - ASSERT_GAS_IN_LIST(gastype, gaslist) - gaslist[gastype][MOLES] += amount + cached_moles[gastype] += amount // Ensure that minimum_pressure is actually a hard lower limit - target_pressure = clamp(target_pressure, minimum_pressure + (gaslist[gastype][MOLES] * 0.1), maximum_pressure) + target_pressure = clamp(target_pressure, minimum_pressure + (cached_moles[gastype] * 0.1), maximum_pressure) // That last one put us over the limit, remove some of it while(gasmix.return_pressure() > target_pressure) - gaslist[gastype][MOLES] -= gaslist[gastype][MOLES] * 0.1 - gaslist[gastype][MOLES] = FLOOR(gaslist[gastype][MOLES], 0.1) + cached_moles[gastype] -= cached_moles[gastype] * 0.1 + cached_moles[gastype] = FLOOR(cached_moles[gastype], 0.1) gasmix.garbage_collect() // Now finally lets make that string var/list/gas_string_builder = list() - for(var/i in gaslist) - var/list/gas = gaslist[i] - gas_string_builder += "[gas[GAS_META][META_GAS_ID]]=[gas[MOLES]]" + var/list/cached_gas_id = GAS_META[META_GAS_ID] + for(var/gas_id, gas_amount in cached_moles) + gas_string_builder += "[cached_gas_id[gas_id]]=[gas_amount]" gas_string_builder += "TEMP=[gasmix.temperature]" gas_string = gas_string_builder.Join(";") diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 9d5e7b6c35d3..e690536a15c3 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -32,6 +32,8 @@ var/beam_color ///If we use an emissive appearance var/emissive = TRUE + /// If FALSE, redraws snap per update instead of using animate() interpolation. + var/animate = TRUE /// If set will be used instead of origin's pixel_x in offset calculations var/override_origin_pixel_x = null /// If set will be used instead of origin's pixel_y in offset calculations @@ -42,6 +44,34 @@ var/override_target_pixel_y = null ///the layer of our beam var/beam_layer + ///Whether we have a cached last-drawn geometry from a previous Draw(). + var/last_draw_valid = FALSE + ///Last drawn origin tile/pixel coordinates (used as the "from" frame for animated redraws). + var/last_origin_x = 0 + var/last_origin_y = 0 + var/last_origin_px = 0 + var/last_origin_py = 0 + ///Last drawn target tile/pixel coordinates. + var/last_target_x = 0 + var/last_target_y = 0 + var/last_target_px = 0 + var/last_target_py = 0 + ///Animate time queued for the pending redraw. We take the largest (slowest glide) of any movers that triggered the redraw. + var/pending_animate_time = 0 + ///Last animation's "from" (where segments were seeded at draw time) — origin endpoint. + var/anim_from_origin_x = 0 + var/anim_from_origin_y = 0 + var/anim_from_origin_px = 0 + var/anim_from_origin_py = 0 + ///Last animation's "from" — target endpoint. + var/anim_from_target_x = 0 + var/anim_from_target_y = 0 + var/anim_from_target_px = 0 + var/anim_from_target_py = 0 + ///world.time at which the last animation began. Combined with anim_duration to estimate segments' current visual position mid-animation. + var/anim_start_time = 0 + ///Duration of the last animation, in deciseconds (matches the time= passed to animate()). + var/anim_duration = 0 /datum/beam/New( origin, @@ -53,6 +83,7 @@ beam_type = /obj/effect/ebeam, beam_color = null, emissive = TRUE, + animate = TRUE, override_origin_pixel_x = null, override_origin_pixel_y = null, override_target_pixel_x = null, @@ -67,6 +98,7 @@ src.beam_type = beam_type src.beam_color = beam_color src.emissive = emissive + src.animate = animate src.override_origin_pixel_x = override_origin_pixel_x src.override_origin_pixel_y = override_origin_pixel_y src.override_target_pixel_x = override_target_pixel_x @@ -97,11 +129,59 @@ SIGNAL_HANDLER if(QDELING(src)) return - if(!QDELETED(origin) && !QDELETED(target) && get_dist(origin,target)= max_distance || origin.z != target.z) qdel(src) + return + var/queued_time = 0 + if(animate && istype(mover)) + queued_time = ICON_SIZE_ALL / max(mover.glide_size, MIN_GLIDE_SIZE) * world.tick_lag + if(queued_time > pending_animate_time) + pending_animate_time = queued_time + // Synchronous: deferring via INVOKE_ASYNC would start animate() one render frame after the mob's + // BYOND-managed glide, making the beam trail. Draw() doesn't sleep, so calling it here is safe. + Draw() + +/** Returns the last drawn endpoints for reuse by inherit_glide(), or null if undrawn. */ +/datum/beam/proc/get_last_geometry() + if(!last_draw_valid) + return null + return list( + "origin_x" = last_origin_x, + "origin_y" = last_origin_y, + "origin_px" = last_origin_px, + "origin_py" = last_origin_py, + "target_x" = last_target_x, + "target_y" = last_target_y, + "target_px" = last_target_px, + "target_py" = last_target_py, + ) + +/** Seeds the next Draw() from saved geometry so rebuilt beams glide instead of snapping. */ +/datum/beam/proc/inherit_glide(list/geometry, animate_time) + if(!geometry || animate_time <= 0) + return + last_origin_x = geometry["origin_x"] + last_origin_y = geometry["origin_y"] + last_origin_px = geometry["origin_px"] + last_origin_py = geometry["origin_py"] + last_target_x = geometry["target_x"] + last_target_y = geometry["target_y"] + last_target_px = geometry["target_px"] + last_target_py = geometry["target_py"] + // Mirror into the anim "from" frame; with anim_duration 0 the next Draw() treats progress as 1 and + // seeds segments exactly at these endpoints, then animates to the (new) live position. + anim_from_origin_x = last_origin_x + anim_from_origin_y = last_origin_y + anim_from_origin_px = last_origin_px + anim_from_origin_py = last_origin_py + anim_from_target_x = last_target_x + anim_from_target_y = last_target_y + anim_from_target_px = last_target_px + anim_from_target_py = last_target_py + anim_duration = 0 + anim_start_time = world.time + last_draw_valid = TRUE + pending_animate_time = animate_time /datum/beam/Destroy() QDEL_LIST(elements) @@ -115,54 +195,116 @@ /** * Creates the beam effects and places them in a line from the origin to the target. Sets their rotation to make the beams face the target, too. */ -/datum/beam/proc/Draw() +/datum/beam/proc/Draw(atom/movable/mover = null, atom/oldloc = null) if(SEND_SIGNAL(src, COMSIG_BEAM_BEFORE_DRAW) & BEAM_CANCEL_DRAW) return + var/animate_time = pending_animate_time + pending_animate_time = 0 + if(!animate) + animate_time = 0 var/origin_px = (isnull(override_origin_pixel_x) ? origin.pixel_x : override_origin_pixel_x) + origin.pixel_w var/origin_py = (isnull(override_origin_pixel_y) ? origin.pixel_y : override_origin_pixel_y) + origin.pixel_z var/target_px = (isnull(override_target_pixel_x) ? target.pixel_x : override_target_pixel_x) + target.pixel_w var/target_py = (isnull(override_target_pixel_y) ? target.pixel_y : override_target_pixel_y) + target.pixel_z - var/Angle = get_angle_raw(origin.x, origin.y, origin_px, origin_py, target.x , target.y, target_px, target_py) - ///var/Angle = round(get_angle(origin,target)) + + // Seed from where segments visually are *now*, not where the last Draw asked them to end up. + // If the previous animation is still in flight (e.g. consecutive-tick or mid-diagonal moves), + // using the cached destination teleports segments forward then animates back — the diagonal jump. + // Lerp last from→to by elapsed time to get the real current frame. + var/progress = 1 + if(last_draw_valid && anim_duration > 0) + progress = clamp((world.time - anim_start_time) / anim_duration, 0, 1) + var/old_origin_x_f = last_draw_valid ? (anim_from_origin_x + (last_origin_x - anim_from_origin_x) * progress) : origin.x + var/old_origin_y_f = last_draw_valid ? (anim_from_origin_y + (last_origin_y - anim_from_origin_y) * progress) : origin.y + var/old_origin_px_f = last_draw_valid ? (anim_from_origin_px + (last_origin_px - anim_from_origin_px) * progress) : origin_px + var/old_origin_py_f = last_draw_valid ? (anim_from_origin_py + (last_origin_py - anim_from_origin_py) * progress) : origin_py + var/old_target_x_f = last_draw_valid ? (anim_from_target_x + (last_target_x - anim_from_target_x) * progress) : target.x + var/old_target_y_f = last_draw_valid ? (anim_from_target_y + (last_target_y - anim_from_target_y) * progress) : target.y + var/old_target_px_f = last_draw_valid ? (anim_from_target_px + (last_target_px - anim_from_target_px) * progress) : target_px + var/old_target_py_f = last_draw_valid ? (anim_from_target_py + (last_target_py - anim_from_target_py) * progress) : target_py + if(!last_draw_valid) + animate_time = 0 + + // Endpoints in absolute world-pixel coordinates. + var/vector/origin_world = vector(origin.x * ICON_SIZE_X + origin_px, origin.y * ICON_SIZE_Y + origin_py) + var/vector/target_world = vector(target.x * ICON_SIZE_X + target_px, target.y * ICON_SIZE_Y + target_py) + var/vector/old_origin_world = vector(old_origin_x_f * ICON_SIZE_X + old_origin_px_f, old_origin_y_f * ICON_SIZE_Y + old_origin_py_f) + var/vector/old_target_world = vector(old_target_x_f * ICON_SIZE_X + old_target_px_f, old_target_y_f * ICON_SIZE_Y + old_target_py_f) + + var/Angle = get_angle_raw(origin.x, origin.y, origin_px, origin_py, target.x, target.y, target_px, target_py) + var/vector/beam_direction = vector(sin(Angle), cos(Angle)) + // Old angle from the interpolated endpoints. + var/vector/old_beam_delta = old_target_world - old_origin_world + var/OLD_DX_F = old_beam_delta.x + var/OLD_DY_F = old_beam_delta.y + var/old_angle + if(!OLD_DY_F) + old_angle = (OLD_DX_F >= 0) ? 90 : 270 + else + old_angle = arctan(OLD_DX_F / OLD_DY_F) + if(OLD_DY_F < 0) + old_angle += 180 + else if(OLD_DX_F < 0) + old_angle += 360 var/matrix/rot_matrix = matrix() + var/matrix/old_rot_matrix = matrix() var/turf/origin_turf = get_turf(origin) rot_matrix.Turn(Angle) - - //Translation vector for origin and target - var/DX = (32*target.x+target_px)-(32*origin.x+origin_px) - var/DY = (32*target.y+target_py)-(32*origin.y+origin_py) + old_rot_matrix.Turn(old_angle) + var/raw_angle_delta = abs(Angle - old_angle) + if(raw_angle_delta > 180) // Normalize to shortest-path angle across the 0/360 seam. + raw_angle_delta = 360 - raw_angle_delta + // Byond doesn't handle 180 degree rotations well + var/animate_rotation = animate_time && raw_angle_delta < 90 + + var/vector/beam_delta = target_world - origin_world + var/DX = beam_delta.x + var/DY = beam_delta.y var/N = 0 - var/length = round(sqrt((DX)**2+(DY)**2)) //hypotenuse of the triangle formed by target and origin's displacement + var/length = round(beam_delta.size) + var/old_length = round(old_beam_delta.size) + var/vector/old_beam_direction = vector(sin(old_angle), cos(old_angle)) + + var/list/old_elements = elements + var/list/new_elements = list() - for(N in 0 to length-1 step 32)//-1 as we want < not <=, but we want the speed of X in Y to Z and step X + for(N in 0 to length-1 step 32) if(QDELETED(src)) break + // Map each new segment to the same offset on the interpolated old beam. + var/old_pos = clamp(N + 16, 0, old_length) var/obj/effect/ebeam/segment = new beam_type(origin_turf, src) - elements += segment - - //ends are cropped by a transparent box icon of length-N pixel size laid over the visuals obj - if(N+32>length) //went past the target, we draw a box of space to cut away from the beam sprite so the icon actually ends at the center of the target sprite - var/icon/terminal_icon = new(icon, icon_state)//this means we exclude the overshooting object from the visual contents which does mean those visuals don't show up for the final bit of the beam... - terminal_icon.DrawBox(null,1,(length-N),32,32)//in the future if you want to improve this, remove the drawbox and instead use a 513 filter to cut away at the final object's icon + new_elements += segment + + var/icon/terminal_icon = null + if(N+32>length) + terminal_icon = new(icon, icon_state) + var/cut_row = length - N + terminal_icon.DrawBox(null, 1, cut_row, 32, 32) + // Soft alpha falloff so the tip isn't a hard line. + var/fade_height = min(4, cut_row - 1) + if(fade_height > 0) + var/icon/alpha_mask = new(icon, icon_state) + alpha_mask.DrawBox(rgb(255, 255, 255, 255), 1, 1, 32, 32) + var/band_start = cut_row - fade_height + for(var/y in band_start to cut_row - 1) + var/from_tip = (cut_row - 1) - y // 0 at the tip row, fade_height-1 furthest back + var/a = round(255 * (from_tip + 1) / (fade_height + 1), 1) + alpha_mask.DrawBox(rgb(255, 255, 255, a), 1, y, 32, y) + alpha_mask.DrawBox(null, 1, cut_row, 32, 32) + terminal_icon.Blend(alpha_mask, ICON_MULTIPLY) segment.icon = terminal_icon segment.color = beam_color else set_subsegment_appearance(segment) - segment.transform = rot_matrix - - //Calculate pixel offsets (If necessary) - var/Pixel_x - var/Pixel_y - if(DX == 0) - Pixel_x = 0 - else - Pixel_x = round(sin(Angle)+32*sin(Angle)*(N+16)/32) - if(DY == 0) - Pixel_y = 0 + if(animate_rotation) + segment.transform = old_rot_matrix else - Pixel_y = round(cos(Angle)+32*cos(Angle)*(N+16)/32) + segment.transform = rot_matrix + + var/Pixel_x = (DX == 0) ? 0 : round(sin(Angle) + 32 * sin(Angle) * (N + 16) / 32, 1) + var/Pixel_y = (DY == 0) ? 0 : round(cos(Angle) + 32 * cos(Angle) * (N + 16) / 32, 1) - //Position the effect so the beam is one continous line var/final_x = segment.x var/final_y = segment.y if(abs(Pixel_x)>32) @@ -171,11 +313,75 @@ if(abs(Pixel_y)>32) final_y += Pixel_y > 0 ? round(Pixel_y/32) : ceil(Pixel_y/32) Pixel_y %= 32 - segment.forceMove(locate(final_x, final_y, segment.z)) - segment.pixel_x = origin_px + Pixel_x - segment.pixel_y = origin_py + Pixel_y - CHECK_TICK + var/new_pixel_x = origin_px + Pixel_x + var/new_pixel_y = origin_py + Pixel_y + if(animate_time) + // Seed from interpolated old endpoints so consecutive redraws don't snap. + var/vector/old_visual = old_origin_world + old_beam_direction * old_pos + var/new_visual_x = final_x * ICON_SIZE_X + new_pixel_x + var/new_visual_y = final_y * ICON_SIZE_Y + new_pixel_y + segment.pixel_x = new_pixel_x + round(old_visual.x - new_visual_x, 1) + segment.pixel_y = new_pixel_y + round(old_visual.y - new_visual_y, 1) + // Segments past the old beam's end fade in instead of popping. + if(N >= old_length) + segment.alpha = 0 + animate(segment, alpha = 255, time = animate_time, flags = ANIMATION_PARALLEL) + if(animate_rotation) + animate(segment, pixel_x = new_pixel_x, pixel_y = new_pixel_y, transform = rot_matrix, time = animate_time, flags = ANIMATION_PARALLEL) + else + animate(segment, pixel_x = new_pixel_x, pixel_y = new_pixel_y, time = animate_time, flags = ANIMATION_PARALLEL) + else + segment.pixel_x = new_pixel_x + segment.pixel_y = new_pixel_y + if(emissive) + segment.add_overlay(emissive_appearance(terminal_icon ? terminal_icon : icon, terminal_icon ? "" : icon_state, segment, alpha = segment.alpha)) + + elements = new_elements + // Fade out extra segments before deleting them so shrinking the beam does not pop the tail. + var/old_count = length(old_elements) + var/new_count = length(new_elements) + if(animate_time && old_count > new_count && progress >= 1) + for(var/i in 1 to new_count) + qdel(old_elements[i]) + for(var/i in new_count + 1 to old_count) + var/obj/effect/ebeam/dying = old_elements[i] + // Project the dying segment onto the new beam and clamp it to the tip. + var/proj_pos = clamp((i - 1) * ICON_SIZE_ALL + 16, 0, length) + var/vector/proj_world = origin_world + beam_direction * proj_pos + var/dying_world_x = dying.x * ICON_SIZE_X + var/dying_world_y = dying.y * ICON_SIZE_Y + var/target_px_anim = round(proj_world.x - dying_world_x, 1) + var/target_py_anim = round(proj_world.y - dying_world_y, 1) + dying.cut_overlays() // Remove emissive overlay so it doesn't glow while the segment fades out. + if(animate_rotation) + animate(dying, pixel_x = target_px_anim, pixel_y = target_py_anim, transform = rot_matrix, alpha = 0, time = animate_time, flags = ANIMATION_PARALLEL) + else + animate(dying, pixel_x = target_px_anim, pixel_y = target_py_anim, alpha = 0, time = animate_time, flags = ANIMATION_PARALLEL) + QDEL_IN(dying, animate_time) + else + QDEL_LIST(old_elements) + + // Cache this draw's seed and destination so the next Draw() can lerp mid-animation. + anim_from_origin_x = old_origin_x_f + anim_from_origin_y = old_origin_y_f + anim_from_origin_px = old_origin_px_f + anim_from_origin_py = old_origin_py_f + anim_from_target_x = old_target_x_f + anim_from_target_y = old_target_y_f + anim_from_target_px = old_target_px_f + anim_from_target_py = old_target_py_f + last_origin_x = origin.x + last_origin_y = origin.y + last_origin_px = origin_px + last_origin_py = origin_py + last_target_x = target.x + last_target_y = target.y + last_target_px = target_px + last_target_py = target_py + anim_start_time = world.time + anim_duration = animate_time + last_draw_valid = TRUE /datum/beam/proc/set_up_effect(obj/effect/ebeam/beam_effect, effect_icon_state) beam_effect.icon = icon @@ -206,6 +412,7 @@ beam_type = /obj/effect/ebeam, beam_color = null, emissive = TRUE, + animate = TRUE, override_origin_pixel_x = null, override_origin_pixel_y = null, override_target_pixel_x = null, @@ -225,6 +432,7 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT layer = ABOVE_ALL_MOB_LAYER anchored = TRUE + blocks_emissive = EMISSIVE_BLOCK_NONE var/emissive = TRUE var/datum/beam/owner @@ -232,15 +440,6 @@ owner = beam_owner return ..() -/obj/effect/ebeam/update_overlays() - . = ..() - if(!emissive) - return - var/mutable_appearance/emissive_overlay = emissive_appearance(icon, icon_state, src) - emissive_overlay.transform = transform - emissive_overlay.alpha = alpha - . += emissive_overlay - /obj/effect/ebeam/Destroy() owner = null return ..() @@ -313,6 +512,68 @@ SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(owner, COMSIG_BEAM_TURFS_CHANGED, post_change_callbacks) +/// For beams that might be from a held item. +/datum/beam/held + // Is the fishing rod held in left side hand + var/lefthand = FALSE + + // Make these inline with final sprites + var/righthand_s_px = 13 + var/righthand_s_py = 16 + + var/righthand_e_px = 18 + var/righthand_e_py = 16 + + var/righthand_w_px = -20 + var/righthand_w_py = 18 + + var/righthand_n_px = -14 + var/righthand_n_py = 16 + + var/lefthand_s_px = -13 + var/lefthand_s_py = 15 + + var/lefthand_e_px = 24 + var/lefthand_e_py = 18 + + var/lefthand_w_px = -17 + var/lefthand_w_py = 16 + + var/lefthand_n_px = 13 + var/lefthand_n_py = 15 + +/datum/beam/held/Start() + update_offsets(origin.dir) + . = ..() + RegisterSignal(origin, COMSIG_ATOM_DIR_CHANGE, PROC_REF(handle_dir_change)) + +/datum/beam/held/Destroy() + UnregisterSignal(origin, COMSIG_ATOM_DIR_CHANGE) + . = ..() + +/datum/beam/held/proc/handle_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + update_offsets(newdir) + INVOKE_ASYNC(src, TYPE_PROC_REF(/datum/beam, redrawing)) + +/datum/beam/held/proc/update_offsets(user_dir) + switch(user_dir) + if(SOUTH) + override_origin_pixel_x = lefthand ? lefthand_s_px : righthand_s_px + override_origin_pixel_y = lefthand ? lefthand_s_py : righthand_s_py + if(EAST) + override_origin_pixel_x = lefthand ? lefthand_e_px : righthand_e_px + override_origin_pixel_y = lefthand ? lefthand_e_py : righthand_e_py + if(WEST) + override_origin_pixel_x = lefthand ? lefthand_w_px : righthand_w_px + override_origin_pixel_y = lefthand ? lefthand_w_py : righthand_w_py + if(NORTH) + override_origin_pixel_x = lefthand ? lefthand_n_px : righthand_n_px + override_origin_pixel_y = lefthand ? lefthand_n_py : righthand_n_py + + override_origin_pixel_x += origin.pixel_x + override_origin_pixel_y += origin.pixel_y + /** * This is what you use to start a beam. Example: origin.Beam(target, args). **Store the return of this proc if you don't set maxdist or time, you need it to delete the beam.** * @@ -331,18 +592,24 @@ time=INFINITY,maxdistance=INFINITY, beam_type=/obj/effect/ebeam, beam_color = null, emissive = TRUE, + animate = TRUE, override_origin_pixel_x = null, override_origin_pixel_y = null, override_target_pixel_x = null, override_target_pixel_y = null, layer = ABOVE_ALL_MOB_LAYER, icon_state_variants = 0, + glide_seed = null, + glide_time = 0, ) var/datum/beam/newbeam if(icon_state_variants <= 0) - newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type, beam_color, emissive, override_origin_pixel_x, override_origin_pixel_y, override_target_pixel_x, override_target_pixel_y, layer) + newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type, beam_color, emissive, animate, override_origin_pixel_x, override_origin_pixel_y, override_target_pixel_x, override_target_pixel_y, layer) else - newbeam = new /datum/beam/varied(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type, beam_color, emissive, override_origin_pixel_x, override_origin_pixel_y, override_target_pixel_x, override_target_pixel_y, layer, icon_state_variants) + newbeam = new /datum/beam/varied(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type, beam_color, emissive, animate, override_origin_pixel_x, override_origin_pixel_y, override_target_pixel_x, override_target_pixel_y, layer, icon_state_variants) + // Seed the glide before Start()'s first Draw() runs (INVOKE_ASYNC runs it synchronously here since + // Draw() never sleeps), so a rebuilt beam animates from its predecessor instead of snapping. + newbeam.inherit_glide(glide_seed, glide_time) INVOKE_ASYNC(newbeam, TYPE_PROC_REF(/datum/beam/, Start)) return newbeam diff --git a/code/datums/bodypart_overlays/bodypart_overlay.dm b/code/datums/bodypart_overlays/bodypart_overlay.dm index 164c6908cb2e..2125e921d967 100644 --- a/code/datums/bodypart_overlays/bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/bodypart_overlay.dm @@ -1,98 +1,165 @@ ///Bodypart ovarlay datum. These can be added to any limb to give them a proper overlay, that'll even stay if the limb gets removed ///This is the abstract parent, don't use it!! /datum/bodypart_overlay - /// Sometimes we need multiple layers, for like the back, middle and front of the person (EXTERNAL_FRONT, EXTERNAL_ADJACENT, EXTERNAL_BEHIND) - var/layers - /// List of all possible layers. Used for looping through in drawing - var/static/list/all_layers = list(EXTERNAL_FRONT, EXTERNAL_ADJACENT, EXTERNAL_BEHIND) - /// Key of the icon states of all the sprite_datums for easy caching - var/cache_key = "" + /** + * Assoc list [icon state postfix] to [layer of overlay]. + * + * For simple overlays this will be a list of one element, + * but for more complicated overlays, this can be any number of component layers. + * + * Example: + * layers = list("front" = BODY_LAYER_FRONT) // - one layer, with icon state "[iconstate]_front" + * layers = list("adjacent" = BODY_LAYER_ADJACENT, "behind" = BODY_LAYER_BEHIND) // - two layers, one is "[iconstate]_adjacent", the other is "[iconstate]_behind" + * layers = list("layer1" = BODY_LAYER_ADJACENT, "layer2" = BODY_LAYER_BEHIND) // - two layers, with icon states "[iconstate]_layer1" and "[iconstate]_layer2" + * layers = list("" = BODY_LAYER_FRONT) // - one layer, with icon state "[iconstate]" + * + * This is cached, so be careful editing it at runtime (use the helpers!) + */ + VAR_PROTECTED/list/layers /// Whether the overlay blocks emissive light var/blocks_emissive = EMISSIVE_BLOCK_UNIQUE /// Can this overlay be drawn on husked mobs? var/draw_on_husks = HUSK_OVERLAY_NONE - -///Wrapper for getting the proper image, colored and everything -/datum/bodypart_overlay/proc/get_overlay(layer, obj/item/bodypart/limb, is_husked = FALSE) - layer = bitflag_to_layer(layer) - var/image/main_image = get_image(layer, limb) - - if (is_husked && draw_on_husks != HUSK_OVERLAY_NORMAL) - main_image = huskify_image(main_image) - main_image.color = limb.husk_color + /// Determines body area of the overlay for height offsets + var/offset_location = NO_MODIFY + +/datum/bodypart_overlay/New() + . = ..() + set_layers(layers) + +/// Used for adding a layer at runtime +/datum/bodypart_overlay/proc/set_layer(layer_postfix, layer_number) + var/list/existing_layers = layers.Copy() + existing_layers[layer_postfix] = layer_number + layers = string_assoc_list(existing_layers) + +/// Used for adding layers at runtime +/datum/bodypart_overlay/proc/set_layers(list/layer_list) + if(!length(layer_list)) + return + + layers = string_assoc_list(layer_list) + +/// Used for removing layers at runtime +/datum/bodypart_overlay/proc/clear_layer(layer_postfix) + var/list/existing_layers = layers.Copy() + existing_layers -= layer_postfix + if(!length(existing_layers)) + layers = null + return + + layers = string_assoc_list(existing_layers) + +/** + * Returns a list of overlays that this overlay datum draws + * + * * limb: the limb we're drawing onto + * + * Returns a list of images/mutable appearances + */ +/datum/bodypart_overlay/proc/get_all_overlays(obj/item/bodypart/limb) + var/list/overlays = list() + for(var/overlay_postfix, overlay_layer in layers) + overlays += get_overlay(limb, overlay_postfix, -overlay_layer) + return overlays + +/** + * Handles generating an individual overlay or an overlay + an emissive blocker + * + * * limb: the limb we're drawing onto, can be null if we're just drawing a general overlay for the mob and not a specific limb + * * layer_index: the index of the layer we're drawing on, used for generating the image + * * layer_real: the actual layer we're drawing on, used for generating the image + * + * Returns a list of images/mutable appearances, usually just one, but can be two if we need an emissive blocker + */ +/datum/bodypart_overlay/proc/get_overlay(obj/item/bodypart/limb, layer_index, layer_real) + PROTECTED_PROC(TRUE) + var/image/main_image = get_image(limb, layer_index, layer_real) + + if (limb?.is_husked && draw_on_husks != HUSK_OVERLAY_NORMAL) + main_image = huskify_image(main_image, limb) else - color_image(main_image, layer, limb) + color_image(main_image, limb, layer_index) - if(blocks_emissive == EMISSIVE_BLOCK_NONE || !limb) - return main_image + var/list/created_overlays = list(main_image) + if(blocks_emissive != EMISSIVE_BLOCK_NONE && !isnull(limb)) + created_overlays += emissive_blocker(main_image.icon, main_image.icon_state, limb, layer = main_image.layer, alpha = main_image.alpha) - var/list/all_images = list( - main_image, - emissive_blocker(main_image.icon, main_image.icon_state, limb, layer = main_image.layer, alpha = main_image.alpha) - ) - return all_images + return created_overlays -/datum/bodypart_overlay/proc/huskify_image(image/main_image) +/// Helper to make an image look like a husk. +/// Returns the husk-ified image, doesn't modify the original image. +/datum/bodypart_overlay/proc/huskify_image(image/main_image, obj/item/bodypart/limb) + PRIVATE_PROC(TRUE) var/icon/husk_icon = new(main_image.icon) husk_icon.ColorTone(HUSK_COLOR_TONE) main_image.icon = husk_icon + main_image.color = limb.husk_color return main_image -///Generate the image. Needs to be overridden -/datum/bodypart_overlay/proc/get_image(layer, obj/item/bodypart/limb) +/** + * The actual proc where images / mutable appearances are generated for get_overlay + * Must be implemented by subtypes, at its simplest it should just return an image + * + * * limb: the limb we're drawing onto, can be null if we're just drawing a general overlay for the mob and not a specific limb + * * layer_index: the index of the layer we're drawing on. + * Typically some postfix for an icon state ie. "front" or "behind" (Used like "overlay_front" or "overlay_behind" + * * layer_real: the actual layer we're drawing on, used for generating the image. + * Some (negative) number like -10 to -30. (Used like layer = layer_real, you shouldn't need to mess with it.) + * + * Returns an image/mutable appearance to draw on the mob. + */ +/datum/bodypart_overlay/proc/get_image(obj/item/bodypart/limb, layer_index, layer_real) CRASH("Get image needs to be overridden") -///Color the image -/datum/bodypart_overlay/proc/color_image(image/overlay, layer, obj/item/bodypart/limb) +/** + * Used to color the image, if necessary. + * By default it does nothing. + * + * * image: the image generated by get_image() that we want to color + * * limb: the limb we're drawing onto, can be null if we're just drawing a general overlay for the mob and not a specific limb. + * * layer_index: the index of the layer we're drawing on, used for generating the image. + */ +/datum/bodypart_overlay/proc/color_image(image/overlay, obj/item/bodypart/limb, layer_index) return -///Called on being added to a limb +/// Called on being added to a limb. /datum/bodypart_overlay/proc/added_to_limb(obj/item/bodypart/limb) return -///Called on being removed from a limb +/// Called on being removed from a limb. /datum/bodypart_overlay/proc/removed_from_limb(obj/item/bodypart/limb) return -///Use this to change the appearance (and yes you must overwrite hahahahahah) (or don't use this, I just don't want people directly changing the image) +/** + * Used by subtypes to change the appearance of the overlay. + * Typically implemented in tandem with a sprite accessory. + */ /datum/bodypart_overlay/proc/set_appearance() CRASH("Update appearance needs to be overridden") -/**This exists so sprite accessories can still be per-layer without having to include that layer's -* number in their sprite name, which causes issues when those numbers change. -*/ -/datum/bodypart_overlay/proc/mutant_bodyparts_layertext(layer) - switch(layer) - if(-BODY_BEHIND_LAYER) - return "BEHIND" - if(-BODY_ADJ_LAYER) - return "ADJ" - if(-BODY_FRONT_LAYER) - return "FRONT" - -///Converts a bitflag to the right layer. I'd love to make this a static index list, but byond made an attempt on my life when i did -/datum/bodypart_overlay/proc/bitflag_to_layer(layer) - switch(layer) - if(EXTERNAL_BEHIND) - return -BODY_BEHIND_LAYER - if(EXTERNAL_ADJACENT) - return -BODY_ADJ_LAYER - if(EXTERNAL_FRONT) - return -BODY_FRONT_LAYER - -///Check whether we can draw the overlays. You generally don't want lizard snouts to draw over an EVA suit -/datum/bodypart_overlay/proc/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/** + * Checks whether the bodypart overlay can be drawn on the mob/bodypart. + * Used so snouts are hidden by masks and whatnot. + * + * * bodypart_owner: the bodypart we're trying to draw on, will never be null. + * * owner: the mob we're trying to draw on. Likely bodypart_owner.owner, can be null. + * + * Returns TRUE if we can draw + * Returns FALSE if we can't draw + */ +/datum/bodypart_overlay/proc/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) SHOULD_CALL_PARENT(TRUE) - return !is_husked || draw_on_husks - -///Colorizes the limb it's inserted to, if required. -/datum/bodypart_overlay/proc/override_color(obj/item/bodypart/bodypart_owner) - CRASH("External organ color set to override with no override proc.") - -///Generate a unique identifier to cache with. If you change something about the image, but the icon cache stays the same, it'll simply pull the unchanged image out of the cache -/datum/bodypart_overlay/proc/generate_icon_cache(obj/item/bodypart/limb) + return !bodypart_owner.is_husked || draw_on_husks != HUSK_OVERLAY_NONE + +/** + * Used in human rendering to cache generated bodyparts. + * Anything your bodypart overlay can change - such as color, icon state, etc - should be included in this, + * otherwise you'll end up with caching issues where different looking overlays will share the same cache and thus look the same. + * + * * limb: the limb we're drawing onto, can be null if we're just drawing a general overlay for the mob and not a specific limb. + * + * Returns a list of strings/numbers/whatever that represents the unique appearance of the overlay. + */ +/datum/bodypart_overlay/proc/icon_render_key(obj/item/bodypart/limb) return list() - -/// Additionally color or texture the limb -/datum/bodypart_overlay/proc/modify_bodypart_appearance(datum/appearance) - return diff --git a/code/datums/bodypart_overlays/emote_bodypart_overlay.dm b/code/datums/bodypart_overlays/emote_bodypart_overlay.dm index 78cb9752fa3b..6bf07f679ff6 100644 --- a/code/datums/bodypart_overlays/emote_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/emote_bodypart_overlay.dm @@ -1,6 +1,8 @@ ///Variant of bodypart_overlay for displaying emote overlays. See [/datum/emote/living/blush/run_emote] for an example on how to use one of these. /datum/bodypart_overlay/simple/emote icon = 'icons/mob/human/emote_visuals.dmi' + offset_location = UPPER_BODY + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) ///The body zone to attach the overlay to, overlay won't be added if no bodypart can be found with this var/attached_body_zone = BODY_ZONE_CHEST ///The feature key used to figure out what specific bodily feature we offset this to follow @@ -10,7 +12,7 @@ ///The bodypart that the overlay is currently applied to var/datum/weakref/attached_bodypart -/datum/bodypart_overlay/simple/emote/get_image(layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/emote/get_image(obj/item/bodypart/limb, layer_index, layer_real) var/image/image = ..() feature_offset?.apply_offset(image) return image @@ -25,10 +27,8 @@ ///Removes the overlay from the attached bodypart and updates the necessary sprites /datum/bodypart_overlay/simple/emote/Destroy() - var/obj/item/bodypart/referenced_bodypart = attached_bodypart.resolve() - if(!referenced_bodypart) - return ..() - referenced_bodypart.remove_bodypart_overlay(src) + var/obj/item/bodypart/referenced_bodypart = attached_bodypart?.resolve() + referenced_bodypart?.remove_bodypart_overlay(src) return ..() /** @@ -41,29 +41,21 @@ */ /mob/living/carbon/human/proc/give_emote_overlay(datum/bodypart_overlay/simple/emote/overlay_typepath) var/obj/item/bodypart/bodypart = get_bodypart(overlay_typepath::attached_body_zone) - if(!bodypart) - return null - if(locate(overlay_typepath) in bodypart.bodypart_overlays) - return null - var/datum/bodypart_overlay/simple/emote/overlay = new overlay_typepath() - bodypart.add_bodypart_overlay(overlay) - return overlay + return bodypart?.add_bodypart_overlay(overlay_typepath) /datum/bodypart_overlay/simple/emote/tongue icon_state = "tongue" draw_color = COLOR_TONGUE_PINK - layers = EXTERNAL_ADJACENT offset_key = OFFSET_FACE attached_body_zone = BODY_ZONE_HEAD /datum/bodypart_overlay/simple/emote/blush icon_state = "blush" draw_color = COLOR_BLUSH_PINK - layers = EXTERNAL_ADJACENT offset_key = OFFSET_FACE attached_body_zone = BODY_ZONE_HEAD -/datum/bodypart_overlay/simple/emote/blush/color_image(image/overlay, layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/emote/blush/color_image(image/overlay, obj/item/bodypart/limb, layer_index) var/base_color = limb.owner?.get_bloodtype()?.get_damage_color() if(!base_color) return ..() @@ -79,6 +71,5 @@ /datum/bodypart_overlay/simple/emote/cry icon_state = "tears" draw_color = COLOR_DARK_CYAN - layers = EXTERNAL_ADJACENT offset_key = OFFSET_FACE attached_body_zone = BODY_ZONE_HEAD diff --git a/code/datums/bodypart_overlays/markings_bodypart_overlay.dm b/code/datums/bodypart_overlays/markings_bodypart_overlay.dm index efa407c57e36..e7bf438cf15c 100644 --- a/code/datums/bodypart_overlays/markings_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/markings_bodypart_overlay.dm @@ -1,6 +1,7 @@ /// For body markings applied on the species, which need some extra code /datum/bodypart_overlay/simple/body_marking - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + offset_location = ENTIRE_BODY /// Listen to the gendercode, if the limb is bimorphic var/use_gender = FALSE /// Which dna feature key to draw from @@ -29,17 +30,17 @@ use_gender = accessory.gender_specific draw_color = accessory.color_src ? set_color : null -/datum/bodypart_overlay/simple/body_marking/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/body_marking/icon_render_key(obj/item/bodypart/limb) . = ..() . += use_gender . += draw_color -/datum/bodypart_overlay/simple/body_marking/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/simple/body_marking/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && icon_state != SPRITE_ACCESSORY_NONE -/datum/bodypart_overlay/simple/body_marking/get_image(layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/body_marking/get_image(obj/item/bodypart/limb, layer_index, layer_real) var/gender_string = (use_gender && limb.is_dimorphic) ? (limb.gender == MALE ? MALE : FEMALE + "_") : "" //we only got male and female sprites - return mutable_appearance(icon, gender_string + icon_state + "_" + limb.body_zone, layer = layer) + return mutable_appearance(icon, gender_string + icon_state + "_" + limb.body_zone, layer = layer_real) /datum/bodypart_overlay/simple/body_marking/get_accessory(name) return SSaccessories.feature_list[dna_feature_key][name] diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index 40b770d87bf9..611069943079 100644 --- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -40,7 +40,7 @@ set_appearance_from_name(feature_name) imprint_on_next_insertion = FALSE -/datum/bodypart_overlay/mutant/get_overlay(layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/get_overlay(obj/item/bodypart/limb, layer_index, layer_real) inherit_color(limb) // If draw_color is not set yet, go ahead and do that return ..() @@ -73,25 +73,24 @@ return sprite_datum.icon_state ///Used to build the final incon state for the sprite -/datum/bodypart_overlay/mutant/proc/build_icon_state(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/proc/build_icon_state(layer_index, obj/item/bodypart/limb) PROTECTED_PROC(TRUE) var/gender_key = (sprite_datum.gender_specific && limb?.limb_gender) || "m" // Male is default because sprite accessories are so ancient they predate the concept of not hardcoding gender var/base_state = get_base_icon_state() - var/layer_key = mutant_bodyparts_layertext(image_layer) - return "[gender_key]_[feature_key]_[base_state]_[layer_key]" + return "[gender_key]_[feature_key]_[base_state]_[layer_index]" ///Get the image we need to draw on the person. Called from get_overlay() which is called from _bodyparts.dm. Limb can be null -/datum/bodypart_overlay/mutant/get_image(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/get_image(obj/item/bodypart/limb, layer_index, layer_real) if(!sprite_datum) CRASH("Trying to call get_image() on [type] while it didn't have a sprite_datum. This shouldn't happen, report it as soon as possible.") - var/mutable_appearance/appearance = mutable_appearance(sprite_datum.icon, build_icon_state(image_layer, limb), layer = image_layer) + var/mutable_appearance/appearance = mutable_appearance(sprite_datum.icon, build_icon_state(layer_index, limb), layer = layer_real) if(sprite_datum.center) center_image(appearance, sprite_datum.dimension_x, sprite_datum.dimension_y) return appearance -/datum/bodypart_overlay/mutant/color_image(image/overlay, layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/color_image(image/overlay, obj/item/bodypart/limb, layer_index) overlay.color = sprite_datum.color_src ? (dye_color || draw_color) : null /datum/bodypart_overlay/mutant/added_to_limb(obj/item/bodypart/limb) @@ -106,7 +105,7 @@ sprite_datum = fetch_sprite_datum_from_name(accessory_name) ///Generate a unique key based on our sprites. So that if we've aleady drawn these sprites, they can be found in the cache and wont have to be drawn again (blessing and curse, but mostly curse) -/datum/bodypart_overlay/mutant/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/icon_render_key(obj/item/bodypart/limb) . = list() . += "[get_base_icon_state()]" . += "[feature_key]" @@ -120,6 +119,10 @@ return list() return feature_list +/// Used to add special coloring behavior to certain mutant parts. +/datum/bodypart_overlay/mutant/proc/override_color(obj/item/bodypart/bodypart_owner) + CRASH("External organ color set to override with no override proc.") + ///Give the organ its color. Force will override the existing one. /datum/bodypart_overlay/mutant/proc/inherit_color(obj/item/bodypart/bodypart_owner, force) if(isnull(bodypart_owner)) diff --git a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm index fa5222f5adf1..e83fb37a5c97 100644 --- a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm @@ -8,30 +8,32 @@ ///Color we apply to our overlay (none by default) var/draw_color -/datum/bodypart_overlay/simple/get_image(layer, obj/item/bodypart/limb) - return mutable_appearance(icon, icon_state, layer = layer) - -/datum/bodypart_overlay/simple/color_image(image/overlay, layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/get_image(obj/item/bodypart/limb, layer_index, layer_real) + return mutable_appearance(icon, icon_state, layer = layer_real) +/datum/bodypart_overlay/simple/color_image(image/overlay, obj/item/bodypart/limb, layer_index) overlay.color = draw_color -/datum/bodypart_overlay/simple/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/icon_render_key(obj/item/bodypart/limb) . = ..() . += icon_state ///A sixpack drawn on the chest /datum/bodypart_overlay/simple/sixpack icon_state = "sixpack" - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) draw_on_husks = HUSK_OVERLAY_GRAYSCALE + offset_location = ENTIRE_BODY ///bags drawn beneath the eyes /datum/bodypart_overlay/simple/bags icon_state = "bags" draw_color = COLOR_WEBSAFE_DARK_GRAY - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + offset_location = UPPER_BODY ///PENDING eyes drawn on the face /datum/bodypart_overlay/simple/soul_pending_eyes icon_state = "soul_pending_eyes" - layers = EXTERNAL_FRONT + layers = list(EXTERNAL_FRONT = BODY_FRONT_LAYER) + offset_location = UPPER_BODY diff --git a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm index 23b8aa6b780b..e60f663d9a5b 100644 --- a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm @@ -1,5 +1,5 @@ /// Bodypart overlays focused on texturing limbs -/datum/bodypart_overlay/texture +/datum/bodypart_texture /// icon file for the texture var/texture_icon /// icon state for the texture @@ -9,42 +9,42 @@ /// Priority of this texture - all textures with a lower priority will not be rendered var/overlay_priority = 0 -/datum/bodypart_overlay/texture/New() +/datum/bodypart_texture/New() . = ..() cached_texture_icon = icon(texture_icon, texture_icon_state) -/datum/bodypart_overlay/texture/modify_bodypart_appearance(datum/appearance) +/datum/bodypart_texture/proc/modify_bodypart_appearance(image/appearance) appearance.add_filter("bodypart_texture_[texture_icon_state]", 1, layering_filter(icon = cached_texture_icon, blend_mode = BLEND_INSET_OVERLAY)) -/datum/bodypart_overlay/texture/generate_icon_cache(obj/item/bodypart/limb) - . = ..() - . += type +/datum/bodypart_texture/proc/icon_render_key() + return type -/datum/bodypart_overlay/texture/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) - if (!..()) - return FALSE - for (var/datum/bodypart_overlay/texture/other_texture in bodypart_owner.bodypart_overlays) +/datum/bodypart_texture/proc/can_texture_bodypart(obj/item/bodypart/bodypart_owner) + for (var/datum/bodypart_texture/other_texture as anything in bodypart_owner.bodypart_textures) if (other_texture.overlay_priority > overlay_priority) return FALSE return TRUE -/datum/bodypart_overlay/texture/spacey - blocks_emissive = EMISSIVE_BLOCK_NONE +/datum/bodypart_texture/spacey texture_icon_state = "spacey" texture_icon = 'icons/mob/human/textures.dmi' overlay_priority = BODYPART_OVERLAY_VOIDWALKER_CURSE -/datum/bodypart_overlay/texture/carpskin +/datum/bodypart_texture/carpskin texture_icon_state = "carpskin" texture_icon = 'icons/mob/human/textures.dmi' overlay_priority = BODYPART_OVERLAY_CARP_INFUSION -/datum/bodypart_overlay/texture/checkered +/datum/bodypart_texture/checkered texture_icon_state = "checkered" texture_icon = 'icons/mob/human/textures.dmi' overlay_priority = BODYPART_OVERLAY_CSS_SUICIDE -/datum/bodypart_overlay/texture/fishscale +/datum/bodypart_texture/checkered/modify_bodypart_appearance(image/appearance) + . = ..() + appearance.color = COLOR_WHITE + +/datum/bodypart_texture/fishscale texture_icon_state = "fishscale" texture_icon = 'icons/mob/human/textures.dmi' overlay_priority = BODYPART_OVERLAY_FISH_INFUSION diff --git a/code/datums/brain_damage/creepy_trauma.dm b/code/datums/brain_damage/creepy_trauma.dm index 8cc32018531b..8b0e742bf78f 100644 --- a/code/datums/brain_damage/creepy_trauma.dm +++ b/code/datums/brain_damage/creepy_trauma.dm @@ -10,14 +10,20 @@ can_gain = TRUE random_gain = FALSE resilience = TRAUMA_RESILIENCE_LOBOTOMY - var/mob/living/obsession - var/datum/objective/spendtime/attachedobsessedobj - var/datum/antagonist/obsessed/antagonist - var/viewing = FALSE //it's a lot better to store if the owner is watching the obsession than checking it twice between two procs - - var/total_time_creeping = 0 SECONDS //just for round end fun - var/time_spent_away = 0 SECONDS - var/obsession_hug_count = 0 + /// Reference to the actual mob we're obsessed with + VAR_FINAL/mob/living/obsession + /// Reference to our antag datum + VAR_FINAL/datum/antagonist/obsessed/antagonist + /// Tracks if the target is currently in view + VAR_FINAL/viewing = FALSE + /// Tracks the total amount of time spend near the target + VAR_FINAL/total_time_creeping = 0 SECONDS + /// Tracks the current period of time spent away from the target (resetting when near) + VAR_FINAL/time_spent_away = 0 SECONDS + /// Tracks the current period of time spent near the target (resetting when away) + VAR_FINAL/time_spend_creeping = 0 SECONDS + /// If we've seen our obsession be dead + VAR_FINAL/witnessed_death = FALSE /datum/brain_trauma/special/obsessed/on_gain() //setup, linking, etc// @@ -26,66 +32,90 @@ if(!obsession)//we didn't find one lose_text = "" return FALSE + gain_text = span_warning("You hear a sickening, raspy voice in your head. It wants one small task of you...") - owner.mind.add_antag_datum(/datum/antagonist/obsessed) - antagonist = owner.mind.has_antag_datum(/datum/antagonist/obsessed) + antagonist = owner.mind.add_antag_datum(/datum/antagonist/obsessed) antagonist.trauma = src RegisterSignal(obsession, COMSIG_MOB_EYECONTACT, PROC_REF(stare)) + RegisterSignal(obsession, COMSIG_QDELETING, PROC_REF(obession_deleted)) . = ..() //antag stuff// antagonist.forge_objectives(obsession.mind) antagonist.greet() log_game("[key_name(antagonist)] has developed an obsession with [key_name(obsession)].") RegisterSignal(owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug)) + RegisterSignal(owner, COMSIG_MOVABLE_GRABBED_RESISTING, PROC_REF(grab_resisting)) + RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(on_damage_mod)) + RegisterSignal(owner, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, PROC_REF(on_mind_lost)) + RegisterSignal(owner, COMSIG_MOB_MIND_TRANSFERRED_INTO, PROC_REF(on_mind_gain)) owner.apply_status_effect(/datum/status_effect/desensitized, REF(src), DESENSITIZED_THRESHOLD) + owner.apply_status_effect(/datum/status_effect/speech/stutter/obsession, INFINITY) /datum/brain_trauma/special/obsessed/on_life(seconds_per_tick) - if(!obsession || obsession.stat == DEAD) - viewing = FALSE//important, makes sure you no longer stutter when happy if you murdered them while viewing - return - if(get_dist(get_turf(owner), get_turf(obsession)) > 7) - viewing = FALSE //they are further than our view range they are not viewing us - out_of_view() - return//so we're not searching everything in view every tick - if(obsession in view(7, owner)) - viewing = TRUE - else + if(isnull(obsession)) viewing = FALSE - if(viewing) - owner.add_mood_event("creeping", /datum/mood_event/creeping, obsession.name) - total_time_creeping += seconds_per_tick SECONDS - time_spent_away = 0 SECONDS - if(attachedobsessedobj)//if an objective needs to tick down, we can do that since traumas coexist with the antagonist datum - attachedobsessedobj.timer -= seconds_per_tick SECONDS //mob subsystem ticks every 2 seconds(?), remove 20 deciseconds from the timer. sure, that makes sense. - else - out_of_view() - -/datum/brain_trauma/special/obsessed/proc/out_of_view() - time_spent_away += 2 SECONDS - if(time_spent_away > 3 MINUTES) //3 minutes - owner.add_mood_event("creeping", /datum/mood_event/notcreepingsevere, obsession.name) - else - owner.add_mood_event("creeping", /datum/mood_event/notcreeping, obsession.name) + return + + // viewing needs to be updated regardless of the obsession's state + viewing = IN_GIVEN_RANGE(owner, obsession, 7) && (owner in viewers(7, obsession)) + if(!viewing) + if(witnessed_death) + return + + time_spent_away += seconds_per_tick SECONDS + time_spend_creeping = 0 SECONDS + if(time_spent_away > 3 MINUTES) //3 minutes + owner.add_mood_event("creeping", /datum/mood_event/notcreepingsevere, obsession.name) + else + owner.add_mood_event("creeping", /datum/mood_event/notcreeping, obsession.name) + return + + if(obsession.stat == DEAD) + if(!witnessed_death) + witnessed_death = TRUE + owner.add_mood_event("creeping", /datum/mood_event/creeping/dead) + return + + witnessed_death = FALSE + owner.add_mood_event("creeping", /datum/mood_event/creeping, obsession.name) + total_time_creeping += seconds_per_tick SECONDS + time_spend_creeping += seconds_per_tick SECONDS + time_spent_away = 0 SECONDS + for(var/datum/objective/spendtime/objective in antagonist?.objectives) + objective.timer -= seconds_per_tick SECONDS /datum/brain_trauma/special/obsessed/on_lose() - ..() + . = ..() + antagonist?.trauma = null + antagonist = null if (owner.mind.remove_antag_datum(/datum/antagonist/obsessed)) owner.mind.add_antag_datum(/datum/antagonist/former_obsessed) owner.clear_mood_event("creeping") - if(obsession) + if(!isnull(obsession)) log_game("[key_name(owner)] is no longer obsessed with [key_name(obsession)].") - UnregisterSignal(obsession, COMSIG_MOB_EYECONTACT) + UnregisterSignal(obsession, list( + COMSIG_MOB_EYECONTACT, + COMSIG_QDELETING, + )) + obsession = null + + UnregisterSignal(owner, list( + COMSIG_CARBON_HELPED, + COMSIG_MOVABLE_GRABBED_RESISTING, + COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, + COMSIG_MOB_MIND_TRANSFERRED_INTO, + COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, + )) owner.remove_status_effect(/datum/status_effect/desensitized, REF(src)) + owner.remove_status_effect(/datum/status_effect/speech/stutter/obsession) + +/datum/brain_trauma/special/obsessed/proc/obession_deleted(datum/source) + SIGNAL_HANDLER + obsession = null /datum/brain_trauma/special/obsessed/handle_speech(datum/source, list/speech_args) - if(!viewing) - return - if(prob(25)) // 25% chances to be nervous and stutter. - if(prob(50)) // 12.5% chance (previous check taken into account) of doing something suspicious. - addtimer(CALLBACK(src, PROC_REF(on_failed_social_interaction)), rand(1 SECONDS, 3 SECONDS)) - else if(!owner.has_status_effect(/datum/status_effect/speech/stutter)) - to_chat(owner, span_warning("Being near [obsession] makes you nervous and you begin to stutter...")) - owner.set_stutter_if_lower(6 SECONDS) + if(viewing && !witnessed_death && prob(12 * max(1 - (time_spend_creeping / (40 SECONDS)), 0.02) )) + addtimer(CALLBACK(src, PROC_REF(do_something_nervous)), rand(1 SECONDS, 3 SECONDS)) /// Singal proc for [COMSIG_CARBON_HELPED], when our obsessed helps (hugs) our obsession, increases hug count /datum/brain_trauma/special/obsessed/proc/on_hug(datum/source, mob/living/hugged) @@ -94,26 +124,70 @@ if(hugged != obsession) return - obsession_hug_count++ + for(var/datum/objective/hug/objective in antagonist?.objectives) + objective.hugs_needed -= 1 + +/// Signal proc for [COMSIG_MOVABLE_GRABBED_RESISTING] to improve the obsessed's grabs +/datum/brain_trauma/special/obsessed/proc/grab_resisting(datum/source, mob/living/grabbed, list/grab_stats) + SIGNAL_HANDLER -/datum/brain_trauma/special/obsessed/proc/on_failed_social_interaction() - if(QDELETED(owner) || owner.stat >= UNCONSCIOUS) + if(HAS_TRAIT(owner, TRAIT_FEARLESS)) return - switch(rand(1, 100)) - if(1 to 40) - INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), pick("blink", "blink_r")) - owner.set_eye_blur_if_lower(20 SECONDS) - to_chat(owner, span_userdanger("You sweat profusely and have a hard time focusing...")) - if(41 to 80) - INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "pale") - shake_camera(owner, 15, 1) - owner.adjust_stamina_loss(70) - to_chat(owner, span_userdanger("You feel your heart lurching in your chest...")) - if(81 to 100) + + var/list/datum/mind/all_targets = list() + for(var/datum/objective/objective in antagonist?.objectives) + if(isnull(objective.target)) + continue + all_targets |= objective.target + + // We always grab our obsession, or similar targets, with extra strength + if(grabbed == obsession || (grabbed.mind in all_targets)) + grab_stats[GRAB_STAT_EFFECTIVE_STATE] += 1 + grab_stats[GRAB_STAT_FAIL_DAMAGE] += 5 + + // If we're hanging with our obsession for a while, the bonus applies to any mob (though to a lesser extent) + else if(is_defensive()) + grab_stats[GRAB_STAT_EFFECTIVE_STATE] += 1 + grab_stats[GRAB_STAT_ESCAPE_CHANCE] += 10 // 10% EASIER to escape + +/// Signal proc for [COMSIG_MOB_APPLY_DAMAGE_MODIFIERS], take less stamina damage when near our obsession +/datum/brain_trauma/special/obsessed/proc/on_damage_mod(datum/source, list/damage_mods, damage, damage_type, ...) + SIGNAL_HANDLER + + if(HAS_TRAIT(owner, TRAIT_FEARLESS)) + return + + if(damage_type == STAMINA && is_defensive()) + damage_mods += 0.75 + +/// Checks if if we're being defensive over our obsession +/datum/brain_trauma/special/obsessed/proc/is_defensive() + if(time_spend_creeping >= 20 SECONDS) + return TRUE + if(obsession.stat >= UNCONSCIOUS) + return (owner in viewers(7, obsession)) + return FALSE + +/datum/brain_trauma/special/obsessed/proc/do_something_nervous() + if(QDELETED(owner) || owner.stat >= UNCONSCIOUS || HAS_TRAIT(owner, TRAIT_FEARLESS)) + return + + + switch(rand(1, 10)) + if(1 to 4) + owner.adjust_jitter_up_to(10 SECONDS, 20 SECONDS) + owner.adjust_dizzy_up_to(10 SECONDS, 20 SECONDS) + to_chat(owner, span_warning("You feel a bit nervous.")) + if(5 to 8) INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "cough") - owner.adjust_dizzy(20 SECONDS) - owner.adjust_disgust(5) - to_chat(owner, span_userdanger("You gag and swallow a bit of bile...")) + to_chat(owner, span_warning("You clear your throat.")) + if(9) + INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "laugh") + to_chat(owner, span_warning("You chuckle nervously.")) + if(10) + INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "blink") + owner.adjust_eye_blur_up_to(10 SECONDS, 20 SECONDS) + to_chat(owner, span_warning("You forget to blink for a moment.")) // if the creep examines first, then the obsession examines them, have a 50% chance to possibly blow their cover. wearing a mask avoids this risk /datum/brain_trauma/special/obsessed/proc/stare(datum/source, mob/living/examining_mob, triggering_examiner) @@ -125,36 +199,40 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), obsession, span_warning("You catch [examining_mob] staring at you..."), 3)) return COMSIG_BLOCK_EYECONTACT +/datum/brain_trauma/special/obsessed/proc/on_mind_lost(datum/source, mob/new_body, datum/mind/the_mind) + SIGNAL_HANDLER + + INVOKE_ASYNC(antagonist, TYPE_PROC_REF(/datum/antagonist, store_datum)) + +/datum/brain_trauma/special/obsessed/proc/on_mind_gain(datum/source, mob/new_body, datum/mind/the_mind) + SIGNAL_HANDLER + + INVOKE_ASYNC(antagonist, TYPE_PROC_REF(/datum/antagonist, restore_datum), the_mind) + /datum/brain_trauma/special/obsessed/proc/find_obsession() - var/list/viable_minds = list() //The first list, which excludes hijinks - var/list/possible_targets = list() //The second list, which filters out silicons and simplemobs - var/static/list/trait_obsessions = list( + var/list/generic_pool = list() + var/list/special_pool = list() + + var/list/trait_obsessions = list( JOB_MIME = TRAIT_MIME_FAN, JOB_CLOWN = TRAIT_CLOWN_ENJOYER, JOB_CHAPLAIN = TRAIT_SPIRITUAL, - ) // Jobs and their corresponding quirks - var/list/special_pool = list() //The special list, for quirk-based - var/chosen_victim //The obsession target + ) - for(var/mob/player as anything in GLOB.player_list)//prevents crew members falling in love with nuke ops they never met, and other annoying hijinks - if(!player.client || !player.mind || isnewplayer(player) || player.stat == DEAD || isbrain(player) || player == owner) + for(var/datum/mind/crewmember as anything in get_crewmember_minds()) + if(!ishuman(crewmember.current) || crewmember.current.stat == DEAD || crewmember.current == owner || !GET_CLIENT(crewmember.current)) continue - if(!(player.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) - continue - viable_minds += player.mind - for(var/datum/mind/possible_target as anything in viable_minds) - if(possible_target != owner && ishuman(possible_target.current)) - var/job = possible_target.assigned_role.title - if (trait_obsessions[job] != null && HAS_TRAIT(owner, trait_obsessions[job])) - special_pool += possible_target.current - possible_targets += possible_target.current - - //Do we have any special target? + + var/job = crewmember.assigned_role.title + if (trait_obsessions[job] && HAS_MIND_TRAIT(owner, trait_obsessions[job])) + special_pool += crewmember.current + + generic_pool += crewmember.current + if(length(special_pool)) - chosen_victim = pick(special_pool) - return chosen_victim + return pick(special_pool) + + if(length(generic_pool)) + return pick(generic_pool) - //If not, pick any other ordinary target - if(possible_targets.len > 0) - chosen_victim = pick(possible_targets) - return chosen_victim + return null diff --git a/code/datums/browser.dm b/code/datums/browser.dm index d16b2f93cabc..5f6cf9038ac1 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -484,9 +484,7 @@ /// called when a browser popup window is closed after registering with proc/onclose() /// if a valid atom reference is supplied, call the atom's Topic() with "close=1" /// otherwise, just reset the client mob's machine var. -/client/verb/windowclose(atomref as text) - set hidden = TRUE // hide this verb from the user's panel - set name = ".windowclose" // no autocomplete on cmd line +GAME_VERB_HIDDEN(/client, windowclose, ".windowclose", atomref as text) if(atomref == "null") return diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index cf555170b686..dce1ca6791da 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -64,7 +64,7 @@ * * extra_classes - Extra classes to apply to the span that holds the text * * lifespan - The lifespan of the message in deciseconds */ -/datum/chatmessage/New(text, atom/target, mob/owner, datum/language/language, list/extra_classes = list(), lifespan = CHAT_MESSAGE_LIFESPAN) +/datum/chatmessage/New(text, atom/target, mob/owner, datum/language/language, list/extra_classes = list(), lifespan = CHAT_MESSAGE_LIFESPAN, list/message_mods) . = ..() if (!istype(target)) CRASH("Invalid target given for chatmessage") @@ -72,7 +72,7 @@ stack_trace("/datum/chatmessage created with [isnull(owner) ? "null" : "invalid"] mob owner") qdel(src) return - INVOKE_ASYNC(src, PROC_REF(generate_image), text, target, owner, language, extra_classes, lifespan) + INVOKE_ASYNC(src, PROC_REF(generate_image), text, target, owner, language, extra_classes, lifespan, message_mods) /datum/chatmessage/Destroy() if (!QDELING(owned_by)) @@ -109,8 +109,9 @@ * * language - The language this message was spoken in * * extra_classes - Extra classes to apply to the span that holds the text * * lifespan - The lifespan of the message in deciseconds + * * message_mods - All mods from whatever message triggered this (if applicable) */ -/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, datum/language/language, list/extra_classes, lifespan) +/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, datum/language/language, list/extra_classes, lifespan, list/message_mods) /// Cached icons to show what language the user is speaking var/static/list/language_icons @@ -171,12 +172,16 @@ // Append language icon if the language uses one var/datum/language/language_instance = GLOB.language_datum_instances[language] - if (language_instance?.display_icon(owner)) - var/icon/language_icon = LAZYACCESS(language_icons, language) + var/language_icon_type = language_instance?.display_icon_type(owner, message_mods) || DISPLAY_LANGUAGE_ICON_NONE + if(language_icon_type != DISPLAY_LANGUAGE_ICON_NONE) + var/language_icon_key = "[language][language_icon_type == DISPLAY_LANGUAGE_ICON_PARTIAL ? "-partial" : ""]" + var/icon/language_icon = LAZYACCESS(language_icons, language_icon_key) if (isnull(language_icon)) language_icon = icon(language_instance.icon, icon_state = language_instance.icon_state) + if(language_icon_type == DISPLAY_LANGUAGE_ICON_PARTIAL) + language_icon.Blend(icon('icons/ui/chat/language.dmi', "unknown"), ICON_OVERLAY) language_icon.Scale(CHAT_MESSAGE_ICON_SIZE, CHAT_MESSAGE_ICON_SIZE) - LAZYSET(language_icons, language, language_icon) + LAZYSET(language_icons, language_icon_key, language_icon) LAZYADD(prefixes, "\icon[language_icon]") text = "[prefixes?.Join(" ")][text]" @@ -319,30 +324,34 @@ * * raw_message - The text content of the message * * spans - Additional classes to be added to the message */ -/mob/proc/create_chat_message(atom/movable/speaker, datum/language/message_language, raw_message, list/spans, runechat_flags = NONE) +/mob/proc/create_chat_message(atom/movable/speaker, datum/language/message_language, raw_message, list/spans, runechat_flags = NONE, list/message_mods) if(SSlag_switch.measures[DISABLE_RUNECHAT] && !HAS_TRAIT(speaker, TRAIT_BYPASS_MEASURES)) return if(HAS_TRAIT(speaker, TRAIT_RUNECHAT_HIDDEN)) return // Ensure the list we are using, if present, is a copy so we don't modify the list provided to us - spans = spans ? spans.Copy() : list() + var/list/classes = (runechat_flags & EMOTE_MESSAGE) ? list("emote", "italics") : LAZYCOPY(spans) // Check for virtual speakers (aka hearing a message through a radio) - var/atom/movable/originalSpeaker = speaker - if (istype(speaker, /atom/movable/virtualspeaker)) - var/atom/movable/virtualspeaker/v = speaker - speaker = v.source - spans |= "virtual-speaker" + var/atom/movable/original_speaker = speaker + if (!(runechat_flags & EMOTE_MESSAGE) && istype(speaker, /atom/movable/virtualspeaker)) + var/atom/movable/virtualspeaker/virtual_speaker = speaker + speaker = virtual_speaker.source + classes |= "virtual-speaker" // Ignore virtual speaker (most often radio messages) from ourselves - if (originalSpeaker != src && speaker == src) + if (original_speaker != src && speaker == src) return // Display visual above source - if(runechat_flags & EMOTE_MESSAGE) - new /datum/chatmessage(raw_message, speaker, src, message_language, list("emote", "italics")) - else - new /datum/chatmessage(raw_message, speaker, src, message_language, spans) + new /datum/chatmessage( + text = raw_message, + target = speaker, + owner = src, + language = message_language, + extra_classes = classes, + message_mods = message_mods, + ) #undef CHAT_LAYER_MAX_Z #undef CHAT_LAYER_Z_STEP diff --git a/code/datums/components/bakeable.dm b/code/datums/components/bakeable.dm index f43b4fc162b9..4508130c3a4a 100644 --- a/code/datums/components/bakeable.dm +++ b/code/datums/components/bakeable.dm @@ -98,7 +98,7 @@ baked_result.reagents.add_reagent_list(added_reagents) if(who_baked_us) - ADD_TRAIT(baked_result, TRAIT_FOOD_CHEF_MADE, who_baked_us) + ADD_TRAIT(baked_result, TRAIT_HANDMADE, who_baked_us) if(original_object.custom_materials) baked_result.set_custom_materials(original_object.custom_materials, 1) diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index 09c945c2f8d3..daa4bbd164a7 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -56,7 +56,7 @@ if(!(equipped_slot & ITEM_SLOT_ICLOTHING)) return FALSE - return !isnull(wielder.shoes) + return !isnull(wielder.get_item_by_slot(ITEM_SLOT_FEET)) /** * Run to update the icon of the parent @@ -331,7 +331,7 @@ LAZYSET(footprint.species_types, affecting.limb_id, TRUE) /datum/component/bloodysoles/feet/is_under_feet_covered() - return !isnull(wielder.shoes) + return !isnull(wielder.get_item_by_slot(ITEM_SLOT_FEET)) /datum/component/bloodysoles/feet/on_moved(datum/source, OldLoc, Dir, Forced) if(wielder.num_legs >= 2) diff --git a/code/datums/components/callouts.dm b/code/datums/components/callouts.dm index 7c4ff3934b94..feb84e53db55 100644 --- a/code/datums/components/callouts.dm +++ b/code/datums/components/callouts.dm @@ -20,13 +20,14 @@ /// Cooldown for callouts COOLDOWN_DECLARE(callout_cooldown) -/datum/component/callouts/Initialize(item_slot = null, voiceline = FALSE, radio_prefix = null, examine_text = null) +/datum/component/callouts/Initialize(item_slot = null, voiceline = FALSE, radio_prefix = null, examine_text = null, active = TRUE) if (!isitem(parent) && !ismob(parent)) return COMPONENT_INCOMPATIBLE src.item_slot = item_slot src.voiceline = voiceline src.radio_prefix = radio_prefix src.examine_text = examine_text + src.active = active if (ismob(parent)) cur_user = parent @@ -122,27 +123,24 @@ return COOLDOWN_START(src, callout_cooldown, CALLOUT_COOLDOWN) - new /obj/effect/temp_visual/callout(get_turf(user), user, selection, clicked_atom) + var/obj/effect/temp_visual/point/callout/callout = user.point_at(clicked_atom, TRUE, /obj/effect/temp_visual/point/callout) + callout.set_callout(user, selection) SEND_SIGNAL(user, COMSIG_MOB_CREATED_CALLOUT, selection, clicked_atom) if (voiceline) user.say((!isnull(radio_prefix) ? radio_prefix : "") + selection::voiceline, forced = src) -/obj/effect/temp_visual/callout +/obj/effect/temp_visual/point/callout name = "callout" icon = 'icons/effects/callouts.dmi' icon_state = "point" - plane = ABOVE_LIGHTING_PLANE duration = CALLOUT_TIME -/obj/effect/temp_visual/callout/Initialize(mapload, mob/creator, datum/callout_option/callout, atom/target) - . = ..() +/obj/effect/temp_visual/point/callout/proc/set_callout(mob/creator, datum/callout_option/callout) if (isnull(creator)) return icon_state = callout::icon_state color = colorize_string(creator.get_voice(), 2, 0.9) update_appearance() - var/turf/target_loc = get_turf(target) - animate(src, pixel_x = (target_loc.x - loc.x) * ICON_SIZE_X + target.pixel_x, pixel_y = (target_loc.y - loc.y) * ICON_SIZE_Y + target.pixel_y, time = 0.2 SECONDS, easing = SINE_EASING|EASE_OUT) /datum/callout_option var/name = "ERROR" diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index 43b52abb0172..035f6afebb4e 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -97,7 +97,7 @@ return if (!(flags & CALTROP_BYPASS_SHOES)) - if ((digitigrade_fan.wear_suit?.body_parts_covered | digitigrade_fan.w_uniform?.body_parts_covered | digitigrade_fan.shoes?.body_parts_covered) & FEET) + if (((digitigrade_fan.wear_suit?.body_parts_covered | digitigrade_fan.w_uniform?.body_parts_covered | digitigrade_fan.shoes?.body_parts_covered) & FEET) || HAS_TRAIT(digitigrade_fan, TRAIT_HARDENED_SOLES)) // DARKPACK EDIT CHANGE - (Added hardened soles check) return var/damage = rand(min_damage, max_damage) diff --git a/code/datums/components/chuunibyou.dm b/code/datums/components/chuunibyou.dm index 5373b3f79875..0eb07f0d70e0 100644 --- a/code/datums/components/chuunibyou.dm +++ b/code/datums/components/chuunibyou.dm @@ -97,6 +97,7 @@ casting_spell = FALSE if(!COOLDOWN_FINISHED(src, heal_cooldown)) + to_chat(source, span_danger("Your chuuni powers are on cooldown! You fail to heal!")) return COOLDOWN_START(src, heal_cooldown, CHUUNIBYOU_COOLDOWN_TIME) diff --git a/code/datums/components/clothing_dirt.dm b/code/datums/components/clothing_dirt.dm index a02b2cfa0a51..4fc0eb534a9f 100644 --- a/code/datums/components/clothing_dirt.dm +++ b/code/datums/components/clothing_dirt.dm @@ -89,7 +89,7 @@ dirt_overlay.color = dirt_color overlays += dirt_overlay -/datum/component/clothing_dirt/proc/on_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/component/clothing_dirt/proc/on_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands || !dirtiness || !dirt_state || !(source.flags_cover & PEPPERPROOF)) @@ -127,7 +127,8 @@ apply_tint(TRUE) /datum/component/clothing_dirt/proc/is_protected(mob/living/carbon/wearer) - return wearer.head && wearer.head != parent && (wearer.head.flags_cover & PEPPERPROOF) + var/obj/item/head_cover = wearer.get_item_by_slot(ITEM_SLOT_HEAD) + return istype(head_cover) && head_cover != parent && (head_cover.flags_cover & PEPPERPROOF) /datum/component/clothing_dirt/proc/remove_tint(updates = TRUE) if(!tint_applied) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/_crafting.dm similarity index 100% rename from code/datums/components/crafting/crafting.dm rename to code/datums/components/crafting/_crafting.dm diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm index dd21976be474..608906197f49 100644 --- a/code/datums/components/crafting/chemistry.dm +++ b/code/datums/components/crafting/chemistry.dm @@ -117,7 +117,7 @@ /obj/item/stack/sheet/glass = 1, ) category = CAT_CHEMISTRY - + crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED | CRAFT_SKIP_MATERIALS_PARITY /datum/crafting_recipe/chem_separator name = "chemical separator" diff --git a/code/datums/components/crafting/containers.dm b/code/datums/components/crafting/containers.dm index 28e103eb6321..420c3000bb62 100644 --- a/code/datums/components/crafting/containers.dm +++ b/code/datums/components/crafting/containers.dm @@ -27,7 +27,6 @@ /obj/item/stack/sheet/mineral/bamboo = 20 ) result = /obj/item/storage/basket - crafting_flags = CRAFT_SKIP_MATERIALS_PARITY category = CAT_CONTAINERS crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED | CRAFT_SKIP_MATERIALS_PARITY steps = list( diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 21e50694f138..b605def68f39 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -16,7 +16,7 @@ desc = "A prototype modular receiver and trigger assembly for a firearm." icon = 'icons/obj/weapons/improvised.dmi' icon_state = "receiver" - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) /* // DARKPACK EDIT REMOVAL /obj/item/weaponcrafting/receiver/create_slapcraft_component() @@ -30,7 +30,7 @@ /obj/item/weaponcrafting/stock name = "rifle stock" desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood." - custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8) + custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) resistance_flags = FLAMMABLE icon = 'icons/obj/weapons/improvised.dmi' icon_state = "riflestock" diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm index 8208710ff9fc..828b2868b599 100644 --- a/code/datums/components/crafting/melee_weapon.dm +++ b/code/datums/components/crafting/melee_weapon.dm @@ -284,4 +284,79 @@ ) time = 5 SECONDS category = CAT_WEAPON_MELEE + +// Crusher trophies +/datum/crafting_recipe/crusher_trophy + abstract_type = /datum/crafting_recipe/crusher_trophy + tool_paths = list(/obj/item/kinetic_crusher) + time = 5 SECONDS + category = CAT_WEAPON_MELEE + +/datum/crafting_recipe/crusher_trophy/watcher_wing + name = "Watcher Wing Trophy" + result = /obj/item/crusher_trophy/watcher_wing + reqs = list( + /obj/item/stack/sheet/sinew = 7, + /obj/item/stack/ore/diamond = 10, + /obj/item/stack/sheet/bone = 5, + ) + +/datum/crafting_recipe/crusher_trophy/icewing_watcher_wing + name = "Icewing Watcher Wing Trophy" + result = /obj/item/crusher_trophy/ice_wing + reqs = list( + /obj/item/stack/sheet/sinew/icewing = 3, + /obj/item/stack/ore/diamond = 6, + /obj/item/stack/sheet/bone = 3, + ) + +/datum/crafting_recipe/crusher_trophy/magmawing_watcher_wing + name = "Magmawing Watcher Wing Trophy" + result = /obj/item/crusher_trophy/magma_wing + reqs = list( + /obj/item/stack/sheet/sinew/magmawing = 3, + /obj/item/stack/ore/diamond = 6, + /obj/item/stack/sheet/bone = 3, + ) + +/datum/crafting_recipe/crusher_trophy/goliath_tentacle + name = "Goliath Tentacle Trophy" + result = /obj/item/crusher_trophy/goliath_tentacle + reqs = list( + /obj/item/stack/sheet/animalhide/goliath_hide = 3, + /obj/item/stack/sheet/bone = 8, + ) + +/datum/crafting_recipe/crusher_trophy/legion_skull + name = "Legion Skull Trophy" + result = /obj/item/crusher_trophy/legion_skull + reqs = list( + /obj/item/organ/monster_core/regenerative_core/legion = 3, // Good sink for expired cores + /obj/item/stack/sheet/bone = 5, + ) + +/datum/crafting_recipe/crusher_trophy/lobster_claw + name = "Lobster Claw Trophy" + result = /obj/item/crusher_trophy/lobster_claw + reqs = list( + /obj/item/organ/monster_core/rush_gland = 3, + /obj/item/stack/sheet/bone = 5, + /obj/item/food/meat/slab/rawcrab = 3, + ) + +/datum/crafting_recipe/crusher_trophy/brimdemon_fang + name = "Brimdemon Fang Trophy" + result = /obj/item/crusher_trophy/brimdemon_fang + reqs = list( + /obj/item/organ/monster_core/brimdust_sac = 3, + /datum/reagent/brimdust = 45, + ) + +/datum/crafting_recipe/crusher_trophy/bileworm_spewlet + name = "Bileworm Spewlet Trophy" + result = /obj/item/crusher_trophy/bileworm_spewlet + reqs = list( + /obj/item/stack/sheet/animalhide/bileworm = 3, + /obj/item/stack/ore/gold = 12, + ) */ diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm index 5c7f87aebf10..5d1e0d6a3370 100644 --- a/code/datums/components/crafting/robot.dm +++ b/code/datums/components/crafting/robot.dm @@ -120,7 +120,7 @@ /datum/crafting_recipe/vim name = "Vim" - result = /obj/vehicle/sealed/car/vim + result = /obj/vehicle/sealed/mecha/vim reqs = list( /obj/item/clothing/head/helmet/space/eva = 1, /obj/item/bodypart/leg/left/robot = 1, diff --git a/code/datums/components/crafting/structures.dm b/code/datums/components/crafting/structures.dm index a6cc8b868b47..edc24eefaa94 100644 --- a/code/datums/components/crafting/structures.dm +++ b/code/datums/components/crafting/structures.dm @@ -171,3 +171,18 @@ /datum/material/glass = SHEET_MATERIAL_AMOUNT, ) crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ON_SOLID_GROUND + +/datum/crafting_recipe/tripwire_post + name = "Tripwire Post" + result = /obj/structure/tripwire/post + reqs = list( + /obj/item/stack/rods = 3, + /obj/item/stack/sheet/iron = 5, + ) + tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER) + time = 5 SECONDS + category = CAT_STRUCTURE + removed_mats = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + ) + crafting_flags = CRAFT_ON_SOLID_GROUND diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm index 8e74e63331b4..4570db3057d4 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/tailoring.dm @@ -48,7 +48,7 @@ name = "Durathread Geomancer Robe" result = /obj/item/clothing/suit/wizrobe/durathread/earth reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1, - /obj/item/food/grown/cahnroot = 1, + /obj/item/food/grown/carrotlike/cahnroot = 1, /obj/item/food/grown/potato = 3) time = 2 SECONDS category = CAT_CLOTHING @@ -256,21 +256,21 @@ /datum/crafting_recipe/prisonsuit name = "Prisoner Uniform (Suit)" result = /obj/item/clothing/under/rank/prisoner - reqs = list(/obj/item/stack/sheet/cloth = 3, /obj/item/stack/license_plates = 1) + reqs = list(/obj/item/stack/sheet/cloth = 3, /obj/item/stack/license_plates/filled = 1) time = 2 SECONDS category = CAT_CLOTHING /datum/crafting_recipe/prisonskirt name = "Prisoner Uniform (Skirt)" result = /obj/item/clothing/under/rank/prisoner/skirt - reqs = list(/obj/item/stack/sheet/cloth = 3, /obj/item/stack/license_plates = 1) + reqs = list(/obj/item/stack/sheet/cloth = 3, /obj/item/stack/license_plates/filled = 1) time = 2 SECONDS category = CAT_CLOTHING /datum/crafting_recipe/prisonshoes name = "Orange Prison Shoes" result = /obj/item/clothing/shoes/sneakers/orange - reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/license_plates = 1) + reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/license_plates/filled = 1) time = 1 SECONDS category = CAT_CLOTHING @@ -363,9 +363,19 @@ time = 2 SECONDS reqs = list( /obj/item/stack/sheet/bone = 1, - /obj/item/stack/sheet/sinew = 1, + /obj/item/stack/sheet/sinew/icewing = 3, + /obj/item/stack/ore/diamond = 2, + ) + category = CAT_CLOTHING + +/datum/crafting_recipe/magmawing + name = "Magmawing Wreath" + result = /obj/item/clothing/neck/wreath/magmawing + time = 2 SECONDS + reqs = list( + /obj/item/stack/sheet/bone = 1, + /obj/item/stack/sheet/sinew/magmawing = 3, /obj/item/stack/ore/diamond = 2, - /obj/item/crusher_trophy/watcher_wing/ice_wing = 1, ) category = CAT_CLOTHING */ diff --git a/code/datums/components/crafting/weapon_ammo.dm b/code/datums/components/crafting/weapon_ammo.dm index 8d58e7a7df55..3336374a55f2 100644 --- a/code/datums/components/crafting/weapon_ammo.dm +++ b/code/datums/components/crafting/weapon_ammo.dm @@ -26,8 +26,9 @@ name = "jagged iron rod" result = /obj/item/ammo_casing/rebar/syndie reqs = list( - /obj/item/stack/rods = 1, + /obj/item/stack/sheet/plasteel = 1, ) + result_amount = 2 tool_behaviors = list(TOOL_WIRECUTTER) time = 0.1 SECONDS category = CAT_WEAPON_AMMO @@ -115,6 +116,7 @@ ) category = CAT_WEAPON_AMMO crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + unit_test_spawn_extras = list(/obj/item/stack/sheet/iron = 5) //the sheet type is abstract /datum/crafting_recipe/arrow name = "Arrow" diff --git a/code/datums/components/digitigrade_linb.dm b/code/datums/components/digitigrade_limb.dm similarity index 100% rename from code/datums/components/digitigrade_linb.dm rename to code/datums/components/digitigrade_limb.dm diff --git a/code/datums/components/face_decal.dm b/code/datums/components/face_decal.dm index ef60856f613e..a9c15f0f8ead 100644 --- a/code/datums/components/face_decal.dm +++ b/code/datums/components/face_decal.dm @@ -39,7 +39,7 @@ qdel(src) return bodypart_overlay = new() - bodypart_overlay.layers = layers + bodypart_overlay.set_layers(layers) if(carbon_parent.bodyshape & BODYSHAPE_SNOUTED) //stupid, but external organ bodytypes are not stored on the limb bodypart_overlay.icon_state = "[icon_state]_lizard" else if(my_head.bodyshape & BODYSHAPE_MONKEY) diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 93b68d78eae3..e69eb9170366 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -24,6 +24,8 @@ Behavior that's still missing from this component that original food items had t var/food_flags = NONE ///Bitfield of the types of this food var/foodtypes = NONE + ///The main food complexity (read: quality) when handmade. It dictates the strength of the effect that this edible gives when eaten. + var/handmade_complexity = FOOD_COMPLEXITY_0 ///Amount of seconds it takes to eat this food var/eat_time = 3 SECONDS ///Defines how much it lowers someones satiety (Need to eat, essentialy) @@ -59,6 +61,7 @@ Behavior that's still missing from this component that original food items had t datum/callback/on_consume, datum/callback/check_liked, reagent_purity = 0.5, + handmade_complexity = FOOD_COMPLEXITY_0 ) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE @@ -72,6 +75,7 @@ Behavior that's still missing from this component that original food items had t src.foodtypes = foodtypes src.eat_time = eat_time src.eatverbs = string_list(eatverbs) + src.handmade_complexity = handmade_complexity /datum/component/edible/RegisterWithParent() RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(examine)) @@ -136,6 +140,7 @@ Behavior that's still missing from this component that original food items had t datum/callback/on_consume, datum/callback/check_liked, reagent_purity = 0.5, + handmade_complexity, ) . = ..() @@ -269,7 +274,7 @@ Behavior that's still missing from this component that original food items had t examine_list += span_green("It is made of finest ingredients prolonging the effect!") var/datum/mind/mind = user.mind - if(mind && HAS_TRAIT_FROM(owner, TRAIT_FOOD_CHEF_MADE, REF(mind))) + if(mind && HAS_TRAIT_FROM(owner, TRAIT_HANDMADE, REF(mind))) examine_list += span_green("[owner] was made by you!") if(!(food_flags & FOOD_IN_CONTAINER)) @@ -642,15 +647,14 @@ Behavior that's still missing from this component that original food items had t var/quality_label = GLOB.food_quality_description[food_quality] to_chat(gourmand, span_notice("That's \an [quality_label] meal.")) -/// Get the complexity of the crafted food +/// Get the complexity of the crafted food. Some ingredients may influence this value. /datum/component/edible/proc/get_recipe_complexity() - var/list/extra_complexity = list(0) - SEND_SIGNAL(parent, COMSIG_FOOD_GET_EXTRA_COMPLEXITY, extra_complexity) - var/complexity_to_add = extra_complexity[1] - if(!HAS_TRAIT(parent, TRAIT_FOOD_CHEF_MADE) || !istype(parent, /obj/item/food)) - return complexity_to_add // It is factory made. Soulless. - var/obj/item/food/food = parent - return food.crafting_complexity + complexity_to_add + var/complexity = FOOD_COMPLEXITY_0 + if(HAS_TRAIT(parent, TRAIT_HANDMADE)) + complexity += handmade_complexity + var/list/complexity_holder = list(complexity) + SEND_SIGNAL(parent, COMSIG_FOOD_GET_EXTRA_COMPLEXITY, complexity_holder) + return complexity_holder[1] /// Get food quality adjusted according to eater's preferences /datum/component/edible/proc/get_perceived_food_quality(mob/living/eater) diff --git a/code/datums/components/ghostrole_on_revive.dm b/code/datums/components/ghostrole_on_revive.dm index ef64f42fb74c..83541bcafdc7 100644 --- a/code/datums/components/ghostrole_on_revive.dm +++ b/code/datums/components/ghostrole_on_revive.dm @@ -77,10 +77,7 @@ // we might have some lingering blinking eyes var/obj/item/bodypart/head/head = source.get_bodypart(BODY_ZONE_HEAD) - if(head) - var/soul_eyes = locate(/datum/bodypart_overlay/simple/soul_pending_eyes) in head.bodypart_overlays - if(soul_eyes) - head.remove_bodypart_overlay(soul_eyes) + head?.remove_bodypart_overlay(/datum/bodypart_overlay/simple/soul_pending_eyes) prepare_brain(removed_brain) diff --git a/code/datums/components/glass_passer.dm b/code/datums/components/glass_passer.dm index 0a52e5e685fc..3eba56c25f51 100644 --- a/code/datums/components/glass_passer.dm +++ b/code/datums/components/glass_passer.dm @@ -14,7 +14,7 @@ /datum/component/glass_passer/RegisterWithParent() if(!pass_time) - passwindow_on(parent, type) + ADD_TRAIT(parent, TRAIT_PASSWINDOW, type) else RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(bumped)) @@ -27,7 +27,7 @@ /datum/component/glass_passer/UnregisterFromParent() if(parent) - passwindow_off(parent, type) + REMOVE_TRAIT(parent, TRAIT_PASSWINDOW, type) /datum/component/glass_passer/proc/on_cross_over(mob/passer, atom/crosser) SIGNAL_HANDLER @@ -72,6 +72,6 @@ /datum/component/glass_passer/proc/phase_through_glass(mob/living/owner, atom/bumpee) if(!do_after(owner, pass_time, bumpee)) return - passwindow_on(owner, type) + ADD_TRAIT(owner, TRAIT_PASSWINDOW, type) try_move_adjacent(owner, get_dir(owner, bumpee)) - passwindow_off(owner, type) + REMOVE_TRAIT(owner, TRAIT_PASSWINDOW, type) diff --git a/code/datums/components/grillable.dm b/code/datums/components/grillable.dm index 5b31a0fdec0c..71e873cc0b53 100644 --- a/code/datums/components/grillable.dm +++ b/code/datums/components/grillable.dm @@ -6,8 +6,6 @@ var/atom/cook_result ///Amount of time required to cook the food var/required_cook_time = 2 MINUTES - ///Is this a positive grill result? - var/positive_result = TRUE ///Time spent cooking so far var/current_cook_time = 0 ///Do we use the large steam sprite? @@ -30,7 +28,8 @@ src.cook_result = cook_result src.required_cook_time = required_cook_time - src.positive_result = positive_result + if(positive_result) + ADD_TRAIT(parent, TRAIT_GRILLABLE, REF(src)) src.use_large_steam_sprite = use_large_steam_sprite src.added_reagents = added_reagents @@ -76,7 +75,9 @@ if(required_cook_time) src.required_cook_time = required_cook_time if(positive_result) - src.positive_result = positive_result + ADD_TRAIT(parent, TRAIT_GRILLABLE, REF(src)) + else + REMOVE_TRAIT(parent, TRAIT_GRILLABLE, REF(src)) if(use_large_steam_sprite) src.use_large_steam_sprite = use_large_steam_sprite @@ -155,7 +156,7 @@ LAZYADD(grilled_food.intrinsic_food_materials, original_food.intrinsic_food_materials) grilled_result.set_custom_materials(original_object.custom_materials) - if(IS_EDIBLE(grilled_result) && positive_result) + if(IS_EDIBLE(grilled_result) && HAS_TRAIT(parent, TRAIT_GRILLABLE)) BLACKBOX_LOG_FOOD_MADE(grilled_result.type) //make space and tranfer reagents if it has any, also let any bad result handle removing or converting the transferred reagents on its own terms if(grilled_result.reagents && original_object.reagents) @@ -167,9 +168,9 @@ SEND_SIGNAL(parent, COMSIG_ITEM_GRILLED, grilled_result) SEND_SIGNAL(grilled_result, COMSIG_ITEM_GRILLED_RESULT, parent) if(who_placed_us) - ADD_TRAIT(grilled_result, TRAIT_FOOD_CHEF_MADE, who_placed_us) + ADD_TRAIT(grilled_result, TRAIT_HANDMADE, who_placed_us) - grill_source.visible_message("[parent] turns into \a [grilled_result]!") + grill_source.visible_message("[parent] turns into \a [grilled_result]!") grilled_result.pixel_x = original_object.pixel_x grilled_result.pixel_y = original_object.pixel_y qdel(parent) @@ -179,14 +180,14 @@ SIGNAL_HANDLER if(!current_cook_time) //Not grilled yet - if(positive_result) + if(HAS_TRAIT(parent, TRAIT_GRILLABLE)) if(initial(cook_result.name) == PLURAL) examine_list += span_notice("[parent] can be [span_bold("grilled")] into some [initial(cook_result.name)].") else examine_list += span_notice("[parent] can be [span_bold("grilled")] into \a [initial(cook_result.name)].") return - if(positive_result) + if(HAS_TRAIT(parent, TRAIT_GRILLABLE)) if(current_cook_time <= required_cook_time * 0.75) examine_list += span_notice("[parent] probably needs to be cooked a bit longer!") else if(current_cook_time <= required_cook_time) diff --git a/code/datums/components/hat_stabilizer.dm b/code/datums/components/hat_stabilizer.dm index 909eba12a2f6..bae4cea2fc4a 100644 --- a/code/datums/components/hat_stabilizer.dm +++ b/code/datums/components/hat_stabilizer.dm @@ -104,13 +104,13 @@ else base_examine += span_notice("There's nothing placed on [parent]. Yet.") -/datum/component/hat_stabilizer/proc/get_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) +/datum/component/hat_stabilizer/proc/get_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if(isinhands) return if(!attached_hat) return - var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi', bodyshape = bodyshape) worn_overlay.appearance_flags |= RESET_COLOR // loose hats are slightly angled if(loose_hat) @@ -121,13 +121,13 @@ worn_overlay.pixel_z = pixel_z_offset + attached_hat.worn_y_offset overlays += worn_overlay -/datum/component/hat_stabilizer/proc/get_separate_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/component/hat_stabilizer/proc/get_separate_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands) return if(!attached_hat) return - var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi', bodyshape = bodyshape) for (var/mutable_appearance/overlay in worn_overlay.overlays) overlay.layer = -ABOVE_BODY_FRONT_HEAD_LAYER + 0.1 // loose hats are slightly angled diff --git a/code/datums/components/hide_weather_planes.dm b/code/datums/components/hide_weather_planes.dm index 7a7cb3655b8f..9c3270f5ac77 100644 --- a/code/datums/components/hide_weather_planes.dm +++ b/code/datums/components/hide_weather_planes.dm @@ -8,20 +8,17 @@ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS var/list/datum/weather/active_weather = list() var/list/atom/movable/screen/plane_master/plane_masters = list() - /// Do we care about all weather or only particle weather? - var/particle_only = FALSE -/datum/component/hide_weather_planes/Initialize(atom/movable/screen/plane_master/care_about, particle_only = FALSE) +/datum/component/hide_weather_planes/Initialize(atom/movable/screen/plane_master/care_about) if(!istype(parent, /datum/plane_master_group)) return COMPONENT_INCOMPATIBLE - src.particle_only = particle_only var/datum/plane_master_group/home = parent plane_masters += care_about RegisterSignal(care_about, COMSIG_QDELETING, PROC_REF(plane_master_deleted)) var/list/starting_signals = list() var/list/ending_signals = list() - for(var/datum/weather/weather_type as anything in valid_subtypesof(particle_only ? /datum/weather/particle : /datum/weather)) + for(var/datum/weather/weather_type as anything in valid_subtypesof(/datum/weather)) starting_signals += COMSIG_WEATHER_TELEGRAPH(weather_type) ending_signals += COMSIG_WEATHER_END(weather_type) @@ -106,8 +103,6 @@ var/list/connected_levels = SSmapping.get_connected_levels(new_z) for(var/datum/weather/active as anything in SSweather.processing) - if(particle_only && !istype(active, /datum/weather/particle)) - continue if(length(connected_levels & active.impacted_z_levels)) active_weather += WEAKREF(active) diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 5415b2576ad6..c6619fd1a5bc 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -188,7 +188,7 @@ return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL -/datum/component/irradiated/proc/on_healthscan(datum/source, list/render_list, advanced, mob/user, mode, tochat) +/datum/component/irradiated/proc/on_healthscan(datum/source, list/render_list, scanpower, mob/user, mode, tochat) SIGNAL_HANDLER render_list += "" diff --git a/code/datums/components/listen_and_repeat.dm b/code/datums/components/listen_and_repeat.dm index 0ebeda27b3f6..64449e19d191 100644 --- a/code/datums/components/listen_and_repeat.dm +++ b/code/datums/components/listen_and_repeat.dm @@ -8,6 +8,10 @@ #define MESSAGE_VOICE "voice" /// the tone it should be said in #define MESSAGE_PITCH "pitch" +/// the blip base it should be said in +#define MESSAGE_BLIP_BASE "blip_base" +/// the blip base it should be said in +#define MESSAGE_BLIP_NUMBER "blip_number" /// Simple element that will deterministically set a value based on stuff that the source has heard and will then compel the source to repeat it. /// Requires a valid AI Blackboard. @@ -24,6 +28,8 @@ var/static/list/invalid_voice = list( MESSAGE_VOICE = "invalid", MESSAGE_PITCH = 0, + MESSAGE_BLIP_BASE = "male", + MESSAGE_BLIP_NUMBER = 1, ) /datum/component/listen_and_repeat/Initialize(list/desired_phrases, blackboard_key) @@ -68,6 +74,8 @@ var/atom/movable/movable_speaker = speaker speaker_sound[MESSAGE_VOICE] = movable_speaker.voice || "invalid" speaker_sound[MESSAGE_PITCH] = (movable_speaker.pitch && SStts.pitch_enabled ? movable_speaker.pitch : 0) + speaker_sound[MESSAGE_BLIP_BASE] = movable_speaker.blip_base || "male" + speaker_sound[MESSAGE_BLIP_NUMBER] = movable_speaker.blip_number || 1 if(over_radio && prob(RADIO_IGNORE_CHANCE)) return @@ -94,6 +102,9 @@ if(islist(speech_buffer[selected_phrase])) to_return[MESSAGE_VOICE] = speech_buffer[selected_phrase][MESSAGE_VOICE] to_return[MESSAGE_PITCH] = speech_buffer[selected_phrase][MESSAGE_PITCH] + to_return[MESSAGE_BLIP_BASE] = speech_buffer[selected_phrase][MESSAGE_BLIP_BASE] + to_return[MESSAGE_BLIP_NUMBER] = speech_buffer[selected_phrase][MESSAGE_BLIP_NUMBER] + controller.override_blackboard_key(blackboard_key, to_return) @@ -112,3 +123,5 @@ #undef MESSAGE_VOICE #undef MESSAGE_PITCH #undef MESSAGE_LINE +#undef MESSAGE_BLIP_BASE +#undef MESSAGE_BLIP_NUMBER diff --git a/code/datums/components/listen_prayers.dm b/code/datums/components/listen_prayers.dm new file mode 100644 index 000000000000..9680b973189e --- /dev/null +++ b/code/datums/components/listen_prayers.dm @@ -0,0 +1,92 @@ +/** + * A component that allows the attached mind to listen prayers from other mobs. + * Unlike admins, they cannot smite the person for it, also the prayers are anonymous unless the person says who he's in the message. + */ +/datum/component/listen_prayers + ///A callback called before the prayer is heard. May alter the message or prevent it from being heard if it returns FALSE + var/datum/callback/pre_prayer_callback + ///This will be affixed to the "deities" that have heard this message. + var/deity_name + ///The action that the owner can use to ignore the prayers + var/datum/action/innate/listen_prayers/toggle + ///The description we give to the instance of the listen_prayers toggle. + var/toggle_desc = "Allows you to listen to prayers" + +/datum/component/listen_prayers/Initialize(datum/callback/pre_prayer_callback, deity_name, toggle_desc) + if(!istype(parent, /datum/mind)) + return COMPONENT_INCOMPATIBLE + + if(pre_prayer_callback) + src.pre_prayer_callback = pre_prayer_callback + if(deity_name) + src.deity_name = deity_name + if(toggle_desc) + src.toggle_desc = toggle_desc + +/datum/component/listen_prayers/Destroy() + pre_prayer_callback = null + return ..() + +/datum/component/listen_prayers/RegisterWithParent() + RegisterSignal(SSdcs, COMSIG_GLOB_SEND_PRAYER, PROC_REF(on_sent_prayer)) + var/datum/mind/mind = parent + toggle = new(mind) + if(toggle_desc) + toggle.desc = toggle_desc + if(mind.current) + toggle.Grant(mind.current) + +/datum/component/listen_prayers/UnregisterFromParent() + UnregisterSignal(SSdcs, COMSIG_GLOB_SEND_PRAYER) + QDEL_NULL(toggle) + +/datum/component/listen_prayers/proc/on_sent_prayer(source, mob/praying, message, prayer_type, symbol, list/deities_that_listened) + SIGNAL_HANDLER + var/datum/mind/mind = parent + if(!mind.current || mind.current.stat >= UNCONSCIOUS || !mind.current.client) //You can't hear prayers if unconscious or disconnected + return + if(!isliving(praying) || praying.stat == DEAD) + return FALSE //I don't see any reason in hell to why dead people should be allowed into this. This isn't a knockoff TRAIT_SIXTHSENSE. + if(praying == mind.current) //Ignore prayers coming from ourselves. + return + if(mind.current.client in GLOB.admins) //This is redundant if we're adminning + return + if(HAS_MIND_TRAIT(mind.current, TRAIT_DONT_HEAR_PRAYERS)) + return + var/list/arguments = args.Copy(2) + if(pre_prayer_callback && !pre_prayer_callback.Invoke(arguments)) + return + prayer_type = arguments[ARG_PRAYER_TYPE] + symbol = arguments[ARG_PRAYER_SYMBOL] + message = "[icon2html(arguments[ARG_PRAYER_SYMBOL], mind.current.client)][prayer_type]: [span_notice(arguments[ARG_PRAYER_MSG])]" + to_chat(mind.current, custom_boxed_message(GLOB.prayer_type_to_message_box[prayer_type], message)) + SEND_SOUND(mind.current, sound('sound/effects/pray.ogg')) + if(deity_name) + deities_that_listened += deity_name + +///An action to stop hearing prayers on command. Doesn't do a whole lot without the associated component +/datum/action/innate/listen_prayers + name = "Listen Prayers" + button_icon = 'icons/hud/actions.dmi' + button_icon_state = "pray" + desc = "Allows you to eavesdrop on prayers from the world around you." + active = TRUE + +/datum/action/innate/listen_prayers/Destroy() + REMOVE_TRAIT(owner, TRAIT_DONT_HEAR_PRAYERS, ACTION_TRAIT) + return ..() + +/datum/action/innate/listen_prayers/is_action_active(atom/movable/screen/movable/action_button/current_button) + return !HAS_TRAIT_FROM(owner, TRAIT_DONT_HEAR_PRAYERS, ACTION_TRAIT) + +/datum/action/innate/listen_prayers/Activate() + active = TRUE + REMOVE_TRAIT(owner, TRAIT_DONT_HEAR_PRAYERS, ACTION_TRAIT) + to_chat(owner, span_green("You are ready to listen to prayers once again.")) + build_all_button_icons(UPDATE_BUTTON_BACKGROUND) + +/datum/action/innate/listen_prayers/Deactivate() + active = FALSE + ADD_TRAIT(owner, TRAIT_DONT_HEAR_PRAYERS, ACTION_TRAIT) + to_chat(owner, span_green("You stop listening to prayers.")) + build_all_button_icons(UPDATE_BUTTON_BACKGROUND) diff --git a/code/datums/components/lockable_storage.dm b/code/datums/components/lockable_storage.dm index 51a0e48be6cd..a31888789b19 100644 --- a/code/datums/components/lockable_storage.dm +++ b/code/datums/components/lockable_storage.dm @@ -226,11 +226,14 @@ . = ..() if(action != "keypad") return TRUE + + var/atom/source = parent + playsound(source, SFX_TERMINAL_TYPE, 50, FALSE) + var/digit = params["digit"] switch(digit) //locking it back up if("C") - var/atom/source = parent numeric_input = "" //you can't lock it if it's already locked or lacks a lock code. if(source.atom_storage.locked || isnull(lock_code)) @@ -249,7 +252,6 @@ //unlocking the current code. if(numeric_input != lock_code) return TRUE - var/atom/source = parent source.atom_storage.set_locked(STORAGE_NOT_LOCKED) numeric_input = "" return TRUE diff --git a/code/datums/components/offered_when_pulled.dm b/code/datums/components/offered_when_pulled.dm new file mode 100644 index 000000000000..78ee7e975845 --- /dev/null +++ b/code/datums/components/offered_when_pulled.dm @@ -0,0 +1,24 @@ +/**For items automatically offered to a player when they pull a borg.*/ + +/datum/component/borg_item_offered_when_pulled + var/mob/living/silicon/robot + +/datum/component/borg_item_offered_when_pulled/Initialize(mob/living/silicon/robot/borg) + . = ..() + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + if(!istype(borg)) + stack_trace("Component assigned to [parent], but was not assigned a ref for type /mob/living/silicon/robot to attach COMSIG_LIVING_GET_PULLED") + return COMPONENT_INCOMPATIBLE + RegisterSignal(borg, COMSIG_LIVING_GET_PULLED, PROC_REF(on_pulled)) + ADD_TRAIT(parent, TRAIT_OFFERED_WHEN_PULLED, TRAIT_OFFERED_WHEN_PULLED) + robot = borg + +/datum/component/borg_item_offered_when_pulled/Destroy(datum/source, ...) + UnregisterSignal(robot, COMSIG_LIVING_GET_PULLED) + robot = null + return ..() + +/datum/component/borg_item_offered_when_pulled/proc/on_pulled(mob/living/holder, mob/living/puller) + SIGNAL_HANDLER + holder.give(puller, parent) diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm index 60d8b025546d..14b8a37afcc2 100644 --- a/code/datums/components/omen.dm +++ b/code/datums/components/omen.dm @@ -16,22 +16,28 @@ var/luck_mod = 1 /// Base damage from negative events. Cursed take 25% of this damage. var/damage_mod = 1 - -/datum/component/omen/Initialize(obj/vessel, incidents_left, luck_mod, damage_mod) + /// If TRUE being blessed by the chaplain can remove the omen + var/bless_fixable = TRUE + /// Callback invoked on death + var/datum/callback/on_death + /// List of light fixtures nearby - we track their state to see if they break or toggle + VAR_FINAL/list/tracked_lights = list() + +/datum/component/omen/Initialize(obj/vessel, incidents_left = INFINITY, luck_mod = 1, damage_mod = 1, bless_fixable = TRUE, datum/callback/on_death) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE if(istype(vessel)) src.vessel = vessel RegisterSignal(vessel, COMSIG_QDELETING, PROC_REF(vessel_qdeleting)) - if(!isnull(incidents_left)) - src.incidents_left = incidents_left - if(!isnull(luck_mod)) - src.luck_mod = luck_mod - if(!isnull(damage_mod)) - src.damage_mod = damage_mod - ADD_TRAIT(parent, TRAIT_CURSED, SMITE_TRAIT) + src.incidents_left = incidents_left + src.luck_mod = luck_mod + src.damage_mod = damage_mod + src.bless_fixable = bless_fixable + src.on_death = on_death + + ADD_TRAIT(parent, TRAIT_CURSED, REF(src)) /** * This is a omen eat omen world! The stronger omen survives. @@ -52,7 +58,8 @@ /datum/component/omen/Destroy(force) var/mob/living/person = parent - REMOVE_TRAIT(person, TRAIT_CURSED, SMITE_TRAIT) + REMOVE_TRAIT(person, TRAIT_CURSED, REF(src)) + REMOVE_TRAIT(person, TRAIT_NO_MIRROR_REFLECTION, REF(src)) to_chat(person, span_nicegreen("You feel a horrible omen lifted off your shoulders!")) if(vessel) @@ -61,6 +68,9 @@ vessel.burn() vessel = null + for(var/obj/machinery/light/to_untrack as anything in tracked_lights) + untrack_light(to_untrack) + return ..() /datum/component/omen/RegisterWithParent() @@ -68,161 +78,251 @@ RegisterSignal(parent, COMSIG_ON_CARBON_SLIP, PROC_REF(check_slip)) RegisterSignal(parent, COMSIG_LIVING_BLESSED, PROC_REF(check_bless)) RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(check_death)) + RegisterSignal(parent, COMSIG_MOVABLE_BLOCKING_AIRLOCK, PROC_REF(check_airlock_crush)) + RegisterSignal(parent, COMSIG_MOB_VENDING_PURCHASE, PROC_REF(check_vending)) + RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(on_life)) /datum/component/omen/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ON_CARBON_SLIP, COMSIG_MOVABLE_MOVED, COMSIG_LIVING_BLESSED, COMSIG_LIVING_DEATH)) + UnregisterSignal(parent, list( + COMSIG_ON_CARBON_SLIP, + COMSIG_MOVABLE_MOVED, + COMSIG_LIVING_BLESSED, + COMSIG_LIVING_DEATH, + COMSIG_MOVABLE_BLOCKING_AIRLOCK, + COMSIG_MOB_VENDING_PURCHASE, + COMSIG_LIVING_LIFE, + )) /datum/component/omen/proc/consume_omen() + if(incidents_left == INFINITY) + return + incidents_left-- if(incidents_left < 1) qdel(src) -/** - * check_accident() is called each step we take - * - * While we're walking around, roll to see if there's any environmental hazards on one of the adjacent tiles we can trigger. - * We do the prob() at the beginning to A. add some tension for /when/ it will strike, and B. (more importantly) ameliorate the fact that we're checking up to 5 turfs's contents each time - */ -/datum/component/omen/proc/check_accident(atom/movable/our_guy) +/// Roll an accident happening, factoring in a few things, based on some base change. +/datum/component/omen/proc/roll_for_accident(base_chance = 4) + var/chance = base_chance * luck_mod + for(var/mob/viewer in viewers(parent)) + if(!viewer.client?.is_afk()) + chance *= 2 + break + + return prob(chance) + +/// When we obstruct an airlock, there's a chance it will crush us instead of stopping like it should +/datum/component/omen/proc/check_airlock_crush(mob/living/source, obj/machinery/door/airlock/darth_airlock, forced, force_crush) SIGNAL_HANDLER - if(!isliving(our_guy)) + if(force_crush || !roll_for_accident(25)) + return NONE + + consume_omen() + to_chat(parent, span_warning("As you stand in [darth_airlock], it doesn't stop closing like it should...")) + return AIRLOCK_BLOCK_FORCE_CRUSH + +/// When we vend an item from a vending machine, there's a chance the machine will tip +/datum/component/omen/proc/check_vending(mob/living/source, obj/machinery/vending/darth_vendor, obj/item/vended_item) + SIGNAL_HANDLER + + if(!source.Adjacent(darth_vendor) || !roll_for_accident(10)) + return NONE + + consume_omen() + to_chat(source, span_warning("As you grab [vended_item] from the slot, [darth_vendor] wobbles ominously...")) + INVOKE_ASYNC(darth_vendor, TYPE_PROC_REF(/obj/machinery/vending, tilt), source) + return VENDING_NO_PICKUP + +/// On life tick, run a few generic checks for accidents, and track nearby lights +/datum/component/omen/proc/on_life(mob/living/source) + SIGNAL_HANDLER + + if(source.stat == DEAD || HAS_TRAIT(source, TRAIT_STASIS)) return - var/mob/living/living_guy = our_guy + if(roll_for_accident(0.001)) + spontaneous_combustion(source) + return - if(prob(0.001) && (living_guy.stat != DEAD)) // You hit the lottery! Kinda. - living_guy.visible_message(span_danger("[living_guy] suddenly bursts into flames!"), span_danger("You suddenly burst into flames!")) - INVOKE_ASYNC(living_guy, TYPE_PROC_REF(/mob, emote), "scream") - living_guy.adjust_fire_stacks(20) - living_guy.ignite_mob(silent = TRUE) - consume_omen() + if(HAS_TRAIT(source, TRAIT_SHOCKIMMUNE)) + for(var/obj/machinery/light/to_untrack as anything in tracked_lights) + untrack_light(to_untrack) return - var/effective_luck = luck_mod + var/list/light_list = list() + for(var/obj/machinery/light/evil_light in view(2, source)) + if(evil_light.status == LIGHT_OK) + light_list += evil_light + for(var/obj/machinery/light/to_track as anything in light_list - tracked_lights) + track_light(to_track) + for(var/obj/machinery/light/to_untrack as anything in tracked_lights - light_list) + untrack_light(to_untrack) + +/// Start tracking a light, because it's near us and could be a threat +/datum/component/omen/proc/track_light(obj/machinery/light/evil_light) + tracked_lights += evil_light + RegisterSignal(evil_light, COMSIG_LIGHT_FIXTURE_BROKEN, PROC_REF(check_break_zap)) + RegisterSignal(evil_light, COMSIG_LIGHT_FIXTURE_TOGGLED, PROC_REF(check_toggle_zap)) + RegisterSignal(evil_light, COMSIG_QDELETING, PROC_REF(untrack_light)) + +/// Stop tracking a light, either because it broke or we moved away from it +/datum/component/omen/proc/untrack_light(obj/machinery/light/evil_light) + SIGNAL_HANDLER - // If there's nobody to witness the misfortune, make it less likely. - // This way, we allow for people to be able to get into hilarious situations without making the game nigh unplayable most of the time. + tracked_lights -= evil_light + UnregisterSignal(evil_light, list(COMSIG_LIGHT_FIXTURE_BROKEN, COMSIG_LIGHT_FIXTURE_TOGGLED, COMSIG_QDELETING)) - var/has_watchers = FALSE - for(var/mob/viewer in viewers(our_guy, null)) - if(viewer.client && !viewer.client.is_afk()) - has_watchers = TRUE - break +/// When a light we track breaks, there's a chance of zapping us +/datum/component/omen/proc/check_break_zap(obj/machinery/light/evil_light, was_ok) + SIGNAL_HANDLER - if(!has_watchers) - effective_luck *= 0.5 + if(was_ok && !HAS_TRAIT(parent, TRAIT_SHOCKIMMUNE) && roll_for_accident(25)) + evil_light.visible_message(span_boldwarning("A bolt of electricity jumps from [evil_light] to [parent] as it breaks!")) + light_zap(evil_light) + consume_omen() + // always untrack because it's broken now + untrack_light(evil_light) + +/// When a light we track is toggled on or off, there's a chance of zapping us +/datum/component/omen/proc/check_toggle_zap(obj/machinery/light/evil_light, new_status) + SIGNAL_HANDLER - if(!prob(8 * effective_luck)) + if(HAS_TRAIT(parent, TRAIT_SHOCKIMMUNE) || !roll_for_accident(10)) return - var/turf/open/our_guy_pos = living_guy.loc - if(!isopenturf(our_guy_pos)) + evil_light.visible_message(span_boldwarning("A bolt of electricity jumps from [evil_light] to [parent] as it turns [new_status ? "on" : "off"]!")) + light_zap(evil_light) + consume_omen() + // we're about to break it, so untrack to avoid a double zap + untrack_light(evil_light) + // and then actually break the thing + evil_light.break_light_tube() + +/// Zap the target with electricity from a light fixture +/datum/component/omen/proc/light_zap(obj/machinery/light/evil_light) + PRIVATE_PROC(TRUE) + + var/mob/living/target = parent + evil_light.Beam(target, icon_state = "lightning[rand(1, 12)]", time = 0.5 SECONDS) + target.electrocute_act(35 * damage_mod, evil_light, flags = SHOCK_NOGLOVES) + INVOKE_ASYNC(target, TYPE_PROC_REF(/mob, emote), "scream") + consume_omen() + +/// Randomly burst into flames +/datum/component/omen/proc/spontaneous_combustion() + var/mob/living/target = parent + target.adjust_fire_stacks(20) + if(!target.ignite_mob(silent = TRUE)) + return FALSE + + target.visible_message( + span_danger("[target] suddenly bursts into flames!"), + span_userdanger("You suddenly burst into flames!"), + ) + INVOKE_ASYNC(target, TYPE_PROC_REF(/mob, emote), "scream") + consume_omen() + return TRUE + +/// Every time we move we need to check a few things for potential incidents +/datum/component/omen/proc/check_accident(mob/living/source) + SIGNAL_HANDLER + + if(mirror_interaction()) return - for(var/obj/machinery/door/airlock/darth_airlock in our_guy_pos) - if(darth_airlock.locked || !darth_airlock.hasPower()) - continue - to_chat(living_guy, span_warning("A malevolent force launches your body to the floor...")) - living_guy.Paralyze(1 SECONDS, ignore_canstun = TRUE) - INVOKE_ASYNC(src, PROC_REF(slam_airlock), darth_airlock) + if(fall_down()) return - for(var/turf/the_turf as anything in get_adjacent_open_turfs(living_guy)) - if(istype(the_turf, /turf/open/floor/glass/reinforced/tram)) // don't fall off the tram bridge, we want to hit you instead - return - if(living_guy.can_z_move(DOWN, the_turf, z_move_flags = ZMOVE_FALL_FLAGS)) - to_chat(living_guy, span_warning("A malevolent force guides you towards the edge...")) - living_guy.throw_at(the_turf, 1, 10, force = MOVE_FORCE_EXTREMELY_STRONG) - consume_omen() - return - - for(var/obj/machinery/vending/darth_vendor in the_turf) - if(!darth_vendor.tiltable || darth_vendor.tilted) - continue - to_chat(living_guy, span_warning("A malevolent force tugs at the [darth_vendor]...")) - INVOKE_ASYNC(darth_vendor, TYPE_PROC_REF(/obj/machinery/vending, tilt), living_guy) - consume_omen() - return - - for(var/obj/machinery/light/evil_light in the_turf) - if((evil_light.status == LIGHT_BURNED || evil_light.status == LIGHT_BROKEN) || (HAS_TRAIT(living_guy, TRAIT_SHOCKIMMUNE))) // we can't do anything :( // Why in the world is there no get_siemens_coeff proc??? - to_chat(living_guy, span_warning("[evil_light] sparks weakly for a second.")) - do_sparks(2, FALSE, evil_light) // hey maybe it'll ignite them - return - - to_chat(living_guy, span_warning("[evil_light] glows ominously...")) // ominously - evil_light.visible_message(span_boldwarning("[evil_light] suddenly flares brightly and sparks!")) - evil_light.break_light_tube(skip_sound_and_sparks = FALSE) - do_sparks(number = 4, cardinal_only = FALSE, source = evil_light) - evil_light.Beam(living_guy, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) - living_guy.electrocute_act(35 * (damage_mod * 0.5), evil_light, flags = SHOCK_NOGLOVES) - INVOKE_ASYNC(living_guy, TYPE_PROC_REF(/mob, emote), "scream") - consume_omen() - - for(var/obj/structure/mirror/evil_mirror in the_turf) - to_chat(living_guy, span_warning("You pass by the mirror and glance at it...")) - if(evil_mirror.broken) - to_chat(living_guy, span_notice("You feel lucky, somehow.")) - return - switch(rand(1, 5)) - if(1) - to_chat(living_guy, span_warning("The mirror explodes into a million pieces! Wait, does that mean you're even more unlucky?")) - evil_mirror.take_damage(evil_mirror.max_integrity, BRUTE, MELEE, FALSE) - if(prob(50 * effective_luck)) // sometimes - luck_mod += 0.25 - damage_mod += 0.25 - if(2 to 3) - to_chat(living_guy, span_big(span_hypnophrase("Oh god, you can't see your reflection!!"))) - if(HAS_TRAIT(living_guy, TRAIT_NO_MIRROR_REFLECTION)) // not so living i suppose - to_chat(living_guy, span_green("Well, obviously.")) - return - INVOKE_ASYNC(living_guy, TYPE_PROC_REF(/mob, emote), "scream") - - if(4 to 5) - if(HAS_TRAIT(living_guy, TRAIT_NO_MIRROR_REFLECTION)) - to_chat(living_guy, span_warning("You don't see anything of notice. Huh.")) - return - to_chat(living_guy, span_userdanger("You see your reflection, but it is grinning malevolently and staring directly at you!")) - INVOKE_ASYNC(living_guy, TYPE_PROC_REF(/mob, emote), "scream") - - living_guy.set_jitter_if_lower(25 SECONDS) - if(prob(7 * effective_luck)) - to_chat(living_guy, span_warning("You are completely shocked by this turn of events!")) - to_chat(living_guy, span_userdanger("You clutch at your heart!")) - var/mob/living/carbon/carbon_guy = living_guy - if(istype(carbon_guy)) - carbon_guy.set_heartattack(status = TRUE) - - consume_omen() - -/datum/component/omen/proc/slam_airlock(obj/machinery/door/airlock/darth_airlock) - . = darth_airlock.close(force_crush = TRUE) - if(.) +/// Attempts to throw us down a nearby open space +/datum/component/omen/proc/fall_down() + var/mob/living/our_guy = parent + var/turf/open/mob_turf = get_turf(our_guy) + if(isgroundlessturf(mob_turf) || istype(mob_turf, /turf/open/floor/glass/reinforced/tram)) // snowflake check is to increase likelihood of being hit with the tram + return FALSE + + for(var/turf/adjacent_turf as anything in get_adjacent_open_turfs(mob_turf)) + if(!our_guy.can_z_move(DOWN, adjacent_turf, z_move_flags = ZMOVE_FALL_FLAGS)) + continue + if(!roll_for_accident(4)) + return FALSE + + var/obj/structure/railing/rail = locate() in mob_turf + to_chat(our_guy, span_warning("As you step on [mob_turf], you lose footing and fall[rail ? " over the railing and" : ""] off the edge!")) + our_guy.throw_at(adjacent_turf, 1, 10, force = MOVE_FORCE_EXTREMELY_STRONG) consume_omen() + return TRUE + + return FALSE + +/// Gaze into a mirror and see if something bad happens +/datum/component/omen/proc/mirror_interaction() + var/mob/living/our_guy = parent + var/obj/structure/mirror/evil_mirror = locate() in get_turf(our_guy) + if(isnull(evil_mirror) || !roll_for_accident(10)) + REMOVE_TRAIT(our_guy, TRAIT_NO_MIRROR_REFLECTION, REF(src)) + return FALSE + + to_chat(our_guy, span_warning("You pass by the mirror and glance at it...")) + if(evil_mirror.broken) + to_chat(our_guy, span_notice("...You feel lucky, somehow.")) + return TRUE + + switch(rand(1, 5)) + if(1) + to_chat(our_guy, span_warning("...The mirror explodes into a million pieces! Wait, does that mean you're even more unlucky?")) + evil_mirror.take_damage(evil_mirror.max_integrity, BRUTE, MELEE, FALSE) + if(roll_for_accident(20)) + luck_mod += 0.25 + damage_mod += 0.25 + + if(2 to 3) + if(HAS_TRAIT(our_guy, TRAIT_NO_MIRROR_REFLECTION)) // not so living i suppose + to_chat(our_guy, span_green("...Oh god, you can't see your reflection - wait, that's normal.")) + return TRUE + to_chat(our_guy, span_big(span_hypnophrase("...Oh god, you can't see your reflection!!"))) + INVOKE_ASYNC(our_guy, TYPE_PROC_REF(/mob, emote), "scream") + ADD_TRAIT(our_guy, TRAIT_NO_MIRROR_REFLECTION, REF(src)) + + if(4 to 5) + if(HAS_TRAIT(our_guy, TRAIT_NO_MIRROR_REFLECTION)) + to_chat(our_guy, span_warning("...but you don't see anything of notice.")) + return TRUE + to_chat(our_guy, span_userdanger("You see your reflection, but it is grinning malevolently and staring directly at you!")) + INVOKE_ASYNC(our_guy, TYPE_PROC_REF(/mob, emote), "scream") + + our_guy.set_jitter_if_lower(25 SECONDS) + if(roll_for_accident(2)) + to_chat(our_guy, span_warning("You are completely shocked by this turn of events!")) + to_chat(our_guy, span_userdanger("You clutch at your heart!")) + if(iscarbon(our_guy)) + var/mob/living/carbon/carbon_guy = our_guy + carbon_guy.set_heartattack(status = TRUE) + + consume_omen() + return TRUE /// If we get knocked down, see if we have a really bad slip and bash our head hard /datum/component/omen/proc/check_slip(mob/living/our_guy, amount) SIGNAL_HANDLER - if(prob(30)) // AAAA - INVOKE_ASYNC(our_guy, TYPE_PROC_REF(/mob, emote), "scream") - to_chat(our_guy, span_warning("What a horrible night... To have a curse!")) - - if(prob(30 * luck_mod) && our_guy.get_bodypart(BODY_ZONE_HEAD)) /// Bonk! - playsound(our_guy, 'sound/effects/tableheadsmash.ogg', 90, TRUE) - our_guy.visible_message(span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), span_userdanger("You hit your head really badly falling down!")) - our_guy.apply_damage(75 * damage_mod, BRUTE, BODY_ZONE_HEAD, attacking_item = "slipping") - our_guy.apply_damage(100 * damage_mod, BRAIN) - consume_omen() + if(!our_guy.get_bodypart(BODY_ZONE_HEAD) || !roll_for_accident(15)) // Bonk! + return - return + playsound(our_guy, 'sound/effects/tableheadsmash.ogg', 90, TRUE) + our_guy.visible_message( + span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), + span_userdanger("You hit your head really badly falling down!"), + ) + our_guy.apply_damage(75 * damage_mod, BRUTE, BODY_ZONE_HEAD, attacking_item = "slipping") + our_guy.apply_damage(100 * damage_mod, BRAIN) + consume_omen() /// Hijack the mood system to see if we get the blessing mood event to cancel the omen /datum/component/omen/proc/check_bless(mob/living/our_guy, mob/living/priest, obj/item/book/bible/bible, bless_result) SIGNAL_HANDLER - if(incidents_left == INFINITY || bless_result != BLESSING_SUCCESS) + if(incidents_left == INFINITY || bless_result != BLESSING_SUCCESS || !bless_fixable) return playsound(our_guy, 'sound/effects/pray_chaplain.ogg', 40, TRUE) @@ -233,6 +333,7 @@ /datum/component/omen/proc/check_death(mob/living/our_guy) SIGNAL_HANDLER + on_death?.Invoke(src) if(incidents_left == INFINITY) return @@ -252,53 +353,6 @@ UnregisterSignal(vessel, COMSIG_QDELETING) vessel = null -/** - * The smite omen. Permanent. - */ -/datum/component/omen/smite - -/datum/component/omen/smite/check_death(mob/living/our_guy) - if(incidents_left == INFINITY) - return ..() - - death_explode(our_guy) - our_guy.gib(DROP_ALL_REMAINS) - -/** - * The quirk omen. Permanent. - * Has only a 50% chance of bad things happening, and takes only 25% of normal damage. - */ -/datum/component/omen/quirk - incidents_left = INFINITY - luck_mod = 0.3 // 30% chance of bad things happening - damage_mod = 0.25 // 25% of normal damage - -/datum/component/omen/quirk/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(check_accident)) - RegisterSignal(parent, COMSIG_ON_CARBON_SLIP, PROC_REF(check_slip)) - RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(check_death)) - -/datum/component/omen/quirk/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ON_CARBON_SLIP, COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH)) - -/datum/component/omen/quirk/check_death(mob/living/our_guy) - if(!iscarbon(our_guy)) - our_guy.gib(DROP_ALL_REMAINS) - return - - // Don't explode if buckled to a stasis bed - if(our_guy.buckled) - var/obj/machinery/stasis/stasis_bed = our_guy.buckled - if(istype(stasis_bed)) - return - - death_explode(our_guy) - var/mob/living/carbon/player = our_guy - player.spread_bodyparts() - player.spawn_gibs() - - return - /** * The bible omen. * While it lasts, parent gets a cursed aura filter. diff --git a/code/datums/components/proficient_miner.dm b/code/datums/components/proficient_miner.dm index cd9d02b1bd57..b37153b38412 100644 --- a/code/datums/components/proficient_miner.dm +++ b/code/datums/components/proficient_miner.dm @@ -41,7 +41,12 @@ INVOKE_ASYNC(src, PROC_REF(slow_mine), user, target) return + var/mob/living/driver = null + if (pass_driver && length(user.buckled_mobs)) + driver = user.buckled_mobs[1] + last_bumpmine_tick = world.time + SEND_SIGNAL(parent, COMSIG_PROFICIENT_MINER_MINED, mineral_wall, driver || user) mineral_wall.gets_drilled(source) /datum/component/proficient_miner/proc/slow_mine(mob/living/user, turf/closed/mineral/mineral_wall) @@ -65,4 +70,5 @@ playsound(user, pick(mine_sounds), 50) if(istype(mineral_wall)) + SEND_SIGNAL(parent, COMSIG_PROFICIENT_MINER_MINED, mineral_wall, driver || user) mineral_wall.gets_drilled(driver || user) diff --git a/code/datums/components/profound_fisher.dm b/code/datums/components/profound_fisher.dm index 3c2ddbef1a85..8f4665ad9830 100644 --- a/code/datums/components/profound_fisher.dm +++ b/code/datums/components/profound_fisher.dm @@ -141,6 +141,7 @@ /obj/item/fishing_rod/mob_fisher line = /obj/item/fishing_line/reinforced bait = /obj/item/food/bait/doughball/synthetic/unconsumable + custom_materials = null resistance_flags = INDESTRUCTIBLE reel_overlay = null show_in_wiki = FALSE //abstract fishing rod diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index b75fcac9aacc..7579ac2a117a 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -119,24 +119,35 @@ return COMPONENT_DRIVER_BLOCK_MOVE var/mob/living/living_parent = parent step(living_parent, direction) - var/modified_move_delay = uses_native_speed ? living_parent.cached_multiplicative_slowdown : vehicle_move_delay - if(HAS_TRAIT(user, TRAIT_ROUGHRIDER)) // YEEHAW! - switch(HAS_TRAIT(user, TRAIT_PRIMITIVE) ? SANITY_LEVEL_GREAT : user.mob_mood?.sanity_level) - if(SANITY_LEVEL_GREAT) - modified_move_delay *= 0.8 - if(SANITY_LEVEL_NEUTRAL) - modified_move_delay *= 0.9 - if(SANITY_LEVEL_DISTURBED) - modified_move_delay *= 1 - if(SANITY_LEVEL_CRAZY) - modified_move_delay *= 1.1 - if(SANITY_LEVEL_INSANE) - modified_move_delay *= 1.2 + var/modified_move_delay = get_move_delay(living_parent, user, direction) if(NSCOMPONENT(direction) && EWCOMPONENT(direction)) modified_move_delay = FLOOR(modified_move_delay * sqrt(2), world.tick_lag) COOLDOWN_START(src, vehicle_move_cooldown, modified_move_delay) return ..() +/// Calculates and returns movement delay for a certain direction +/datum/component/riding/creature/proc/get_move_delay(mob/living/living_parent, mob/living/user, direction) + var/modified_move_delay = uses_native_speed ? living_parent.cached_multiplicative_slowdown : vehicle_move_delay + if(HAS_TRAIT(user, TRAIT_ROUGHRIDER)) // YEEHAW! + modified_move_delay *= get_roughrider_mult(user) + return modified_move_delay + +/datum/component/riding/creature/proc/get_roughrider_mult(mob/living/user) + if (HAS_TRAIT(user, TRAIT_PRIMITIVE)) + return 0.8 + switch(user.mob_mood?.sanity_level) + if(SANITY_LEVEL_GREAT) + return 0.8 + if(SANITY_LEVEL_NEUTRAL) + return 0.9 + if(SANITY_LEVEL_DISTURBED) + return 1 + if(SANITY_LEVEL_CRAZY) + return 1.1 + if(SANITY_LEVEL_INSANE) + return 1.2 + return 1 + /// Yeets the rider off, used for animals and cyborgs, redefined for humans who shove their piggyback rider off /datum/component/riding/creature/proc/force_dismount(mob/living/rider, throw_range = 8, throw_speed = 3, gentle = FALSE) var/atom/movable/movable_parent = parent @@ -506,19 +517,53 @@ keytype = /obj/item/key/lasso uses_native_speed = TRUE rider_traits = list(TRAIT_NO_FLOATING_ANIM, TRAIT_TENTACLE_IMMUNE) + /// Flat speed boost to ourselves + var/flat_speed_mod = -9.5 + /// Last direction we've moved in + var/last_move_dir = null + /// Current speed boost + var/speed_boost = 0 + /// Speed boost per time equivalent tile of movement in the same direction + /// Not directly per tile as we move faster and thus would accelerate faster + var/rush_speed_boost = -0.3 + /// Maximum speed boost we can have + var/maximum_boost = -3 + /// Have we spawned an afterimage last move? + var/spawned_last_move = FALSE /datum/component/riding/creature/goliath/deathmatch keytype = null -/datum/component/riding/creature/goliath/Initialize(mob/living/riding_mob, force, ride_check_flags) +/datum/component/riding/creature/goliath/driver_move(atom/movable/movable_parent, mob/living/user, direction) + if (speed_boost != maximum_boost) + return ..() + // At maximum acceleration, start spawning afterimages + var/turf/old_loc = movable_parent.loc . = ..() - var/mob/living/basic/mining/goliath/goliath = parent - goliath.add_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) - -/datum/component/riding/creature/goliath/Destroy(force) - var/mob/living/basic/mining/goliath/goliath = parent - goliath.remove_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) - return ..() + if (. & COMPONENT_DRIVER_BLOCK_MOVE) + return + if (!spawned_last_move && istype(old_loc)) + new /obj/effect/temp_visual/decoy/fading(old_loc, movable_parent, 150) + spawned_last_move = !spawned_last_move + +/datum/component/riding/creature/goliath/get_move_delay(mob/living/living_parent, mob/living/user, direction) + var/move_delay = living_parent.cached_multiplicative_slowdown + flat_speed_mod + // We give grace of 2 ticks of stopped movement, or 0.1 seconds, in case of SSinput not being able to process all inputs in a single tick + if (last_move_dir != direction || vehicle_move_cooldown + 0.1 SECONDS < world.time) + last_move_dir = direction + // If we're "drifting" only halve our speed instead + if (last_move_dir & direction) + speed_boost /= 2 + else + speed_boost = 0 + + var/modified_move_delay = move_delay + max(maximum_boost, speed_boost) + speed_boost += rush_speed_boost * (modified_move_delay / move_delay) + + // Apply roughrider boost last + if(HAS_TRAIT(user, TRAIT_ROUGHRIDER)) + modified_move_delay *= get_roughrider_mult(user) + return modified_move_delay /datum/component/riding/creature/goliath/get_rider_offsets_and_layers(pass_index, mob/offsetter) return list( @@ -586,12 +631,18 @@ . = ..() var/mob/living/basic/mining/goldgrub/goldgrub = parent goldgrub.add_movespeed_modifier(/datum/movespeed_modifier/goldgrub_mount) + RegisterSignal(goldgrub, COMSIG_PROFICIENT_MINER_MINED, PROC_REF(on_mined)) /datum/component/riding/creature/goldgrub/Destroy(force) var/mob/living/basic/mining/goldgrub/goldgrub = parent goldgrub.remove_movespeed_modifier(/datum/movespeed_modifier/goldgrub_mount) return ..() +/datum/component/riding/creature/goldgrub/proc/on_mined(datum/source, turf/closed/wall/mineral/rock, mob/living/user) + SIGNAL_HANDLER + // Reset movement cooldown once you've dug a tile + COOLDOWN_RESET(src, vehicle_move_cooldown) + /datum/component/riding/creature/goldgrub/get_rider_offsets_and_layers(pass_index, mob/offsetter) return list( TEXT_NORTH = list(0, 3), diff --git a/code/datums/components/splat.dm b/code/datums/components/splat.dm index 0ae407166abf..6d500b949125 100644 --- a/code/datums/components/splat.dm +++ b/code/datums/components/splat.dm @@ -16,7 +16,7 @@ /datum/component/splat/Initialize( icon_state = "creampie", - layer = EXTERNAL_FRONT, + layer = list(EXTERNAL_FRONT = BODY_FRONT_LAYER), memory_type = /datum/memory/witnessed_creampie, smudge_type = /obj/effect/decal/cleanable/food/pie_smudge, moodlet_type = /datum/mood_event/creampie, diff --git a/code/datums/components/style/style_meter.dm b/code/datums/components/style/style_meter.dm index 535242b8b611..83a27218cd82 100644 --- a/code/datums/components/style/style_meter.dm +++ b/code/datums/components/style/style_meter.dm @@ -45,14 +45,14 @@ RegisterSignal(interacting_with, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(redirect_multitool)) balloon_alert(user, "style meter attached") playsound(src, 'sound/machines/click.ogg', 30, TRUE) - if(!iscarbon(interacting_with.loc)) + if(!ishuman(interacting_with.loc)) return . - var/mob/living/carbon/carbon_wearer = interacting_with.loc - if(carbon_wearer.glasses != interacting_with) + var/mob/living/carbon/human/human_wearer = interacting_with.loc + if(human_wearer.glasses != interacting_with) return . - start_meter(carbon_wearer) + start_meter(human_wearer) return . /obj/item/style_meter/Moved(atom/old_loc, Dir, momentum_change) @@ -126,10 +126,10 @@ QDEL_NULL(style_meter) /// Create the style meter component, attach it to our wearer, register other things onto the component. -/obj/item/style_meter/proc/start_meter(mob/living/carbon/carbon_wearer) - style_meter = carbon_wearer.AddComponent(/datum/component/style, multitooled, stored_permanent_multiplier) +/obj/item/style_meter/proc/start_meter(mob/living/carbon/human/human_wearer) + style_meter = human_wearer.AddComponent(/datum/component/style, multitooled, stored_permanent_multiplier) RegisterSignal(SSdcs, COMSIG_GLOB_MOB_DEATH, PROC_REF(on_death)) - RegisterSignal(carbon_wearer, COMSIG_LIVING_ON_VENT_WIN, PROC_REF(on_vent_win)) + RegisterSignal(human_wearer, COMSIG_LIVING_ON_VENT_WIN, PROC_REF(on_vent_win)) /// On a successful vent tap, adjust permanent multiplier, scaling with vent value. /obj/item/style_meter/proc/on_vent_win(datum/source, obj/structure/ore_vent/vent) diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm index a251fd0e38af..ffec2e6026d4 100644 --- a/code/datums/components/toggle_attached_clothing.dm +++ b/code/datums/components/toggle_attached_clothing.dm @@ -106,7 +106,7 @@ return COMPONENT_ITEM_ACTION_SLOT_INVALID /// Apply an overlay while the item is not deployed -/datum/component/toggle_attached_clothing/proc/on_checked_overlays(obj/item/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) +/datum/component/toggle_attached_clothing/proc/on_checked_overlays(obj/item/source, list/overlays, mutable_appearance/standing, isinhands, icon_file, bodyshape) SIGNAL_HANDLER if (isinhands || currently_deployed) return diff --git a/code/datums/components/toggle_suit.dm b/code/datums/components/toggle_suit.dm index 1f6afe053e08..89f891cc7d63 100644 --- a/code/datums/components/toggle_suit.dm +++ b/code/datums/components/toggle_suit.dm @@ -5,8 +5,8 @@ /datum/component/toggle_icon /// Whether the icon is toggled var/toggled = FALSE - /// The base icon state we do operations on. - var/base_icon_state + /// The inferred base icon state we do operations on, in case the atom doesn't have one set or if it becomes null or something. + var/inferred_base_icon_state /// The noun of what was "toggled" displayed to the user. EX: "Toggled the item's [buttons]" var/toggle_noun @@ -18,7 +18,7 @@ atom_parent.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 src.toggle_noun = toggle_noun - src.base_icon_state = atom_parent.base_icon_state || atom_parent.post_init_icon_state || atom_parent.icon_state + src.inferred_base_icon_state = atom_parent.post_init_icon_state || atom_parent.icon_state /datum/component/toggle_icon/RegisterWithParent() RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_click_alt)) @@ -88,10 +88,12 @@ source.balloon_alert(user, "toggled [toggle_noun]") toggled = !toggled + + var/icon_state_to_use = source.base_icon_state || inferred_base_icon_state if(toggled) - source.icon_state = "[base_icon_state]_t" + source.icon_state = "[icon_state_to_use]_t" else - source.icon_state = base_icon_state + source.icon_state = icon_state_to_use if(isitem(source)) var/obj/item/item_source = source diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm index 6c51d0d102d7..2ba8a9fd7852 100644 --- a/code/datums/components/transforming.dm +++ b/code/datums/components/transforming.dm @@ -284,7 +284,7 @@ if(!isnull(throwforce_on)) source.throwforce = throwforce_off if(!isnull(throw_speed_on)) - source.throw_speed = throwforce_off + source.throw_speed = throw_speed_off if(LAZYLEN(attack_verb_continuous_on)) source.attack_verb_continuous = attack_verb_continuous_off diff --git a/code/datums/components/trapdoor.dm b/code/datums/components/trapdoor.dm index 7407e467bf0a..639b1c943217 100644 --- a/code/datums/components/trapdoor.dm +++ b/code/datums/components/trapdoor.dm @@ -331,6 +331,7 @@ name = "trapdoor controller" desc = "A sinister-looking controller for a trapdoor." icon_state = "trapdoor" + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) ///if the trapdoor isn't linked it will try to link on pulse, this shouldn't be spammable COOLDOWN_DECLARE(search_cooldown) ///trapdoor link cooldown time here! @@ -464,6 +465,7 @@ ///subtype with internals already included. If you're giving a department a roundstart trapdoor, this is what you want /obj/item/trapdoor_remote/preloaded + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1) /obj/item/trapdoor_remote/preloaded/Initialize(mapload) . = ..() @@ -475,7 +477,7 @@ desc = "A kit containing all the parts needed to build a trapdoor. Can only be used on open space." icon = 'icons/obj/weapons/improvised.dmi' icon_state = "kitsuitcase" - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.2) var/in_use = FALSE /obj/item/trapdoor_kit/Initialize(mapload) diff --git a/code/datums/components/walking_aid.dm b/code/datums/components/walking_aid.dm new file mode 100644 index 000000000000..7a869661f2d5 --- /dev/null +++ b/code/datums/components/walking_aid.dm @@ -0,0 +1,161 @@ +/** + * Walking Aid Component + * + * Add this to an item to allow it to act as a cane (or crutch) while held. + * Items with this component will help mobs avoid limping from broken + * leg bones, and lessen the slowdown caused by missing legs. + * + * Used by canes, crutches, and pole-like items such as spears and staffs. + */ +/datum/component/walking_aid + dupe_mode = COMPONENT_DUPE_UNIQUE + /// Causes a mob to waddle (wiggle) while walking when holding this object + var/waddling = FALSE + /// If set, the parent item must have this trait for the support to function + var/required_trait + /// Weakref to the mob currently being supported + var/datum/weakref/current_user_ref + /// The amount of slowdown to reduce for a limbless leg + var/limbless_slowdown_modifier = 0.6 // reduces slowdown by 40% + +/datum/component/walking_aid/Initialize(limbless_slowdown_modifier = 0.6, required_trait = null, waddling = FALSE) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + src.waddling = waddling + src.required_trait = required_trait + src.limbless_slowdown_modifier = limbless_slowdown_modifier + +/datum/component/walking_aid/Destroy(force) + remove_support() + return ..() + +/datum/component/walking_aid/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(parent, COMSIG_ATOM_EXAMINE_TAGS, PROC_REF(get_examine_tags)) + RegisterSignal(parent, SIGNAL_ADDTRAIT(TRAIT_WIELDED), PROC_REF(update_legs)) + RegisterSignal(parent, SIGNAL_REMOVETRAIT(TRAIT_WIELDED), PROC_REF(update_legs)) + RegisterSignal(parent, SIGNAL_ADDTRAIT(required_trait), PROC_REF(update_legs)) + RegisterSignal(parent, SIGNAL_REMOVETRAIT(required_trait), PROC_REF(update_legs)) + +/datum/component/walking_aid/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_ITEM_EQUIPPED, + COMSIG_ITEM_DROPPED, + COMSIG_ATOM_EXAMINE_TAGS, + SIGNAL_ADDTRAIT(TRAIT_WIELDED), + SIGNAL_REMOVETRAIT(TRAIT_WIELDED), + SIGNAL_ADDTRAIT(required_trait), + SIGNAL_REMOVETRAIT(required_trait), + )) + remove_support() + +/datum/component/walking_aid/proc/on_equip(datum/source, mob/equipper, slot) + SIGNAL_HANDLER + + remove_support() + if(!(slot & ITEM_SLOT_HANDS)) + return + if(!isliving(equipper)) + return + + apply_support(equipper) + +/datum/component/walking_aid/proc/on_drop(datum/source, mob/user) + SIGNAL_HANDLER + remove_support() + +/datum/component/walking_aid/proc/get_examine_tags(atom/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + examine_list["walking-aid"] = "It can help lessen the slowdown caused from a missing or injured leg, when held on the same side as the injury." + +// Updates our leg status when wielded/unwielded a two handed walking aid like a spear +/datum/component/walking_aid/proc/update_legs(atom/source) + SIGNAL_HANDLER + + var/mob/living/user = current_user_ref?.resolve() + user?.update_usable_leg_status() + +/datum/component/walking_aid/proc/apply_support(mob/living/user) + if(current_user_ref) + remove_support() + + current_user_ref = WEAKREF(user) + RegisterSignal(user, COMSIG_CARBON_LIMPING, PROC_REF(handle_limping)) + RegisterSignal(user, COMSIG_LIVING_LIMBLESS_SLOWDOWN, PROC_REF(handle_slowdown)) + user.update_usable_leg_status() + + if(waddling) + user.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling) + +/datum/component/walking_aid/proc/remove_support() + var/mob/living/user = current_user_ref?.resolve() + current_user_ref = null + if(isnull(user)) + return + UnregisterSignal(user, list(COMSIG_CARBON_LIMPING, COMSIG_LIVING_LIMBLESS_SLOWDOWN)) + user.update_usable_leg_status() + + if(waddling) + REMOVE_TRAIT(user, TRAIT_WADDLING, REF(src)) + +/datum/component/walking_aid/proc/is_active() + // if both hands are holding it, then it is not being used for support + if(HAS_TRAIT(parent, TRAIT_WIELDED)) + return FALSE + + if(isnull(required_trait)) + return TRUE + + return HAS_TRAIT(parent, required_trait) + +/datum/component/walking_aid/proc/handle_limping(mob/living/user, obj/item/bodypart/limping_leg) + SIGNAL_HANDLER + + if(!is_active()) + return NONE + if(isnull(limping_leg)) + return NONE + + var/supported_zone = get_supported_leg_zone(user) + if(isnull(supported_zone)) + return NONE + if(limping_leg.body_zone != supported_zone) + return NONE + + return COMPONENT_CANCEL_LIMP + +/datum/component/walking_aid/proc/handle_slowdown(mob/living/user, limbless_slowdown, list/slowdown_mods) + SIGNAL_HANDLER + + if(!is_active()) + return + if(!iscarbon(user)) + return + var/mob/living/carbon/carbon_user = user + var/leg_amount = carbon_user.usable_legs + if(leg_amount >= carbon_user.default_num_legs) + return + if(!leg_amount) // someday support dual-wielding crutches but for now they are destined to waddle + return + + var/supported_zone = get_supported_leg_zone(user) + if(isnull(supported_zone)) + return + if(carbon_user.get_bodypart(supported_zone)) // make sure their leg is actually missing + return + + slowdown_mods += limbless_slowdown_modifier + +/datum/component/walking_aid/proc/get_supported_leg_zone(mob/living/user) + var/held_hand_zone = user.get_hand_zone_of_item(parent) + + switch(held_hand_zone) + if(BODY_ZONE_R_ARM) + return BODY_ZONE_R_LEG + if(BODY_ZONE_L_ARM) + return BODY_ZONE_L_LEG + else + return null diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 0b46fe66554b..5ed606ebeaad 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -161,16 +161,9 @@ //END: ECS SHIT #ifndef DISABLE_DREAMLUAU - var/list/to_remove = list() - if(ismovable(src)) - var/atom/movable/src_movable = src - to_remove += list(src_movable.vis_contents, src_movable.vis_locs) if(!(datum_flags & DF_STATIC_OBJECT)) - if(isatom(src)) - var/atom/src_atom = src - to_remove += list(src_atom.contents, src_atom.filters, src_atom.underlays, src_atom.overlays) - to_remove += list(vars, src) // vars ceases existing when src does, so we need to clear any lua refs to it that exist. - DREAMLUAU_CLEAR_REF_USERDATA(arglist(to_remove)) + DREAMLUAU_CLEAR_REF_USERDATA(vars) // vars ceases existing when src does, so we need to clear any lua refs to it that exist. + DREAMLUAU_CLEAR_REF_USERDATA(src) #endif return QDEL_HINT_QUEUE diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 36569c119bba..3ad9f989b0ae 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -501,3 +501,15 @@ /datum/disease/advance/proc/make_visible() visibility_flags &= ~HIDDEN_SCANNER affected_mob.med_hud_set_status() + +/datum/disease/advance/proc/generate_cure_text(cure_count) + var/remedies = list() + for(var/datum/symptom/each_symptom as anything in symptoms) + if(length(remedies) >= cure_count) + break + if(!each_symptom.symptom_cure) + continue + var/datum/reagent/each_cure = each_symptom.symptom_cure + if(!each_symptom.neutered && !(each_cure::name in remedies)) + remedies += each_cure::name + return english_list(remedies, nothing_text = "Nothing") diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 29fd91542e88..149d631cff61 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -513,8 +513,6 @@ /datum/symptom/heal/plasma/CanHeal(datum/disease/advance/our_disease) var/mob/living/carbon/carbon_host = our_disease.affected_mob var/datum/gas_mixture/environment - var/list/gases - . = 0 // Check internals @@ -525,16 +523,14 @@ if(internals_tank) var/datum/gas_mixture/tank_contents = internals_tank.return_air() if(tank_contents && round(tank_contents.return_pressure())) // make sure the tank is not empty or 0 pressure - if(tank_contents.gases[/datum/gas/plasma]) + if(tank_contents.moles[/datum/gas/plasma]) // higher tank distribution pressure leads to more healing, but once you get to about 15kpa you reach the max . += power * min(MAX_HEAL_COEFFICIENT_INTERNALS, internals_tank.distribute_pressure * HEALING_PER_BREATH_PRESSURE) else // Check environment if(carbon_host.loc) environment = carbon_host.loc.return_air() - if(environment) - gases = environment.gases - if(gases[/datum/gas/plasma]) - . += power * min(MAX_HEAL_COEFFICIENT_INTERNALS, gases[/datum/gas/plasma][MOLES] * HEALING_PER_MOL) + if(environment && environment.moles[/datum/gas/plasma]) + . += power * min(MAX_HEAL_COEFFICIENT_INTERNALS, environment.moles[/datum/gas/plasma] * HEALING_PER_MOL) // Check for reagents in bloodstream if(carbon_host.reagents.has_reagent(/datum/reagent/toxin/plasma, needs_metabolizing = TRUE)) @@ -610,3 +606,31 @@ /datum/symptom/heal/radiation/can_generate_randomly() return ..() && !HAS_TRAIT(SSstation, STATION_TRAIT_RADIOACTIVE_NEBULA) // Because people can never really suffer enough + +/datum/symptom/heal/aggressive_healing + name = "Aggressive Healing" + desc = "The virus heals damaged tissues in a way that appears threatening to the immune system." + severity = 1 + stealth = -4 + resistance = 1 + stage_speed = 0 + transmittable = -1 + level = 4 + base_message_chance = 0 + symptom_delay_min = 1 + symptom_delay_max = 1 + symptom_cure = null + power = 2 + + threshold_descs = list( + "Severity > 1" = "For each point of severity, the healing provided by the virus increases.", + ) + ///Increases the healing effect (if active) of the virus by this amount for each severity level above 1 + var/severity_heal_bonus = 0.25 + +/datum/symptom/heal/aggressive_healing/CanHeal(datum/disease/advance/our_disease) + return power + our_disease.totalSeverity() * severity_heal_bonus + +/datum/symptom/heal/aggressive_healing/Heal(mob/living/carbon/carbon_host, datum/disease/advance/our_disease, actual_power) + carbon_host.heal_overall_damage(actual_power, actual_power, required_bodytype = healable_bodytypes) + return TRUE diff --git a/code/datums/dna/dna.dm b/code/datums/dna/dna.dm index 87e99b754ab2..6f8c868a2c8e 100644 --- a/code/datums/dna/dna.dm +++ b/code/datums/dna/dna.dm @@ -413,10 +413,9 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]") /mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, replace_missing = TRUE) - ..() + . = ..() if(icon_update) update_body(is_creating = TRUE) - update_mutations_overlay()// no lizard with human hulk overlay please. /mob/proc/has_dna() return @@ -467,7 +466,6 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) if(mrace || newfeatures || unique_identity) update_body(is_creating = TRUE) - update_mutations_overlay() if(LAZYLEN(mutations) && force_transfer_mutations && can_mutate()) for(var/datum/mutation/mutation as anything in mutations) @@ -505,7 +503,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) if(icon_update) update_body(is_creating = mutcolor_update) if(mutations_overlay_update) - update_mutations_overlay() + update_appearance(UPDATE_OVERLAYS) /mob/proc/domutcheck() return @@ -517,7 +515,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) for(var/mutation in dna.mutation_index) dna.check_block(mutation) - update_mutations_overlay() + update_appearance(UPDATE_OVERLAYS) /datum/dna/proc/check_block(mutation_path) var/datum/mutation/mutation = get_mutation(mutation_path) diff --git a/code/datums/elements/atmos_requirements.dm b/code/datums/elements/atmos_requirements.dm index 0b4b6e17443f..39f06dbd6be1 100644 --- a/code/datums/elements/atmos_requirements.dm +++ b/code/datums/elements/atmos_requirements.dm @@ -49,7 +49,7 @@ if(!isopenturf(target.loc)) return TRUE - var/can_breathe_vacuum = HAS_TRAIT(target, TRAIT_NO_BREATHLESS_DAMAGE) + var/can_breathe_vacuum = HAS_TRAIT(target, TRAIT_NO_BREATHLESS_DAMAGE) || HAS_TRAIT(target, TRAIT_NOBREATH) var/min_oxy = can_breathe_vacuum ? 0 : atmos_requirements["min_oxy"] var/min_plasma = can_breathe_vacuum ? 0 : atmos_requirements["min_plas"] @@ -77,14 +77,14 @@ return TRUE /datum/element/atmos_requirements/proc/get_atmos_req_list(turf/open/open_turf) - var/open_turf_gases = open_turf.air.gases + var/open_turf_moles = open_turf.air.moles open_turf.air.assert_gases(/datum/gas/oxygen, /datum/gas/pluoxium, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/plasma) var/list/return_gases = list() - return_gases["plas"] = open_turf_gases[/datum/gas/plasma][MOLES] - return_gases["oxy"] = open_turf_gases[/datum/gas/oxygen][MOLES] + (open_turf_gases[/datum/gas/pluoxium][MOLES] * PLUOXIUM_PROPORTION) - return_gases["n2"] = open_turf_gases[/datum/gas/nitrogen][MOLES] - return_gases["co2"] = open_turf_gases[/datum/gas/carbon_dioxide][MOLES] + return_gases["plas"] = open_turf_moles[/datum/gas/plasma] + return_gases["oxy"] = open_turf_moles[/datum/gas/oxygen] + (open_turf_moles[/datum/gas/pluoxium] * PLUOXIUM_PROPORTION) + return_gases["n2"] = open_turf_moles[/datum/gas/nitrogen] + return_gases["co2"] = open_turf_moles[/datum/gas/carbon_dioxide] open_turf.air.garbage_collect() diff --git a/code/datums/elements/body_temp_sensitive.dm b/code/datums/elements/body_temp_sensitive.dm index ce74f9c9f7fd..139a321e84cc 100644 --- a/code/datums/elements/body_temp_sensitive.dm +++ b/code/datums/elements/body_temp_sensitive.dm @@ -49,27 +49,27 @@ var/mob/living/living_mob = target var/gave_alert = FALSE - if(living_mob.bodytemperature < min_body_temp) + if(living_mob.bodytemperature < min_body_temp && cold_damage > 0 && !HAS_TRAIT(living_mob, TRAIT_RESISTCOLD)) living_mob.adjust_fire_loss(cold_damage * seconds_per_tick, forced = TRUE) if(!living_mob.has_status_effect(/datum/status_effect/inebriated)) switch(cold_damage) - if(1 to 5) - living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/cold, 1) - if(5 to 10) - living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/cold, 2) if(10 to INFINITY) living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/cold, 3) + if(5 to 10) + living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/cold, 2) + if(-INFINITY to 5) + living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/cold, 1) gave_alert = TRUE - else if(living_mob.bodytemperature > max_body_temp) + else if(living_mob.bodytemperature > max_body_temp && heat_damage > 0 && !HAS_TRAIT(living_mob, TRAIT_RESISTHEAT)) living_mob.adjust_fire_loss(heat_damage * seconds_per_tick, forced = TRUE) switch(heat_damage) - if(1 to 5) - living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, 1) - if(5 to 10) - living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, 2) if(10 to INFINITY) living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, 3) + if(5 to 10) + living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, 2) + if(-INFINITY to 5) + living_mob.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, 1) gave_alert = TRUE if(!gave_alert) diff --git a/code/datums/elements/can_be_held.dm b/code/datums/elements/can_be_held.dm new file mode 100644 index 000000000000..884b4afbd3f8 --- /dev/null +++ b/code/datums/elements/can_be_held.dm @@ -0,0 +1,49 @@ +/datum/element/can_be_held + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + +/datum/element/can_be_held/Attach(datum/source) + . = ..() + + if(!isliving(source)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(source, COMSIG_MOUSEDROP_ONTO, PROC_REF(on_mousedrop_onto)) + RegisterSignal(source, COMSIG_MOB_STRIP_MENU_OPEN, PROC_REF(on_strip_menu_open)) + RegisterSignal(source, COMSIG_STORAGE_DUMP_PRE_TRANSFER, PROC_REF(on_attempt_storage_dump)) + +/datum/element/can_be_held/Detach(datum/source) + UnregisterSignal(source, list(COMSIG_MOUSEDROP_ONTO, COMSIG_MOB_STRIP_MENU_OPEN, COMSIG_STORAGE_DUMP_PRE_TRANSFER)) + return ..() + +/// Used to determine the "intent" of the action that the user mob is trying to employ on the target. +/datum/element/can_be_held/proc/trying_to_hold_mob(mob/living/user, mob/living/target) + return isliving(user) && user.grab_state == GRAB_AGGRESSIVE && user.pulling == target + +/// Handles the mob being dropped onto the user mob. +/datum/element/can_be_held/proc/on_mousedrop_onto(datum/source, atom/over, mob/user) + SIGNAL_HANDLER + if(!trying_to_hold_mob(user, source)) + return + + INVOKE_ASYNC(source, TYPE_PROC_REF(/mob/living, mob_try_pickup), user) + return COMPONENT_CANCEL_MOUSEDROP_ONTO + +/// Blocks strip menu opening if we can reasonably assert that the mob is trying to be picked up +/datum/element/can_be_held/proc/on_strip_menu_open(datum/source, atom/over, mob/user) + SIGNAL_HANDLER + if(!trying_to_hold_mob(user, source)) + return + + return COMPONENT_BLOCK_STRIP_MENU_OPEN + +/// Blocks storage dumping if we can reasonably assert that the mob is trying to be picked up +/datum/element/can_be_held/proc/on_attempt_storage_dump(datum/source, atom/over, mob/user) + SIGNAL_HANDLER + if(!trying_to_hold_mob(user, source)) + return + + return CANCEL_STORAGE_DUMP + + + diff --git a/code/datums/elements/climb_walkable.dm b/code/datums/elements/climb_walkable.dm index 111025f44ef9..42bab5af7b51 100644 --- a/code/datums/elements/climb_walkable.dm +++ b/code/datums/elements/climb_walkable.dm @@ -34,6 +34,8 @@ /obj/structure/proc/on_climb_enter(datum/source, atom/movable/arrived) SIGNAL_HANDLER + if(arrived == src) //You can't climb onto yourself + return if(arrived.density) ADD_TRAIT(arrived, TRAIT_ON_CLIMBABLE, ELEMENT_TRAIT(/datum/element/climb_walkable)) diff --git a/code/datums/elements/cult_halo.dm b/code/datums/elements/cult_halo.dm deleted file mode 100644 index 684144ca0ab0..000000000000 --- a/code/datums/elements/cult_halo.dm +++ /dev/null @@ -1,53 +0,0 @@ -/** - * # Cult halo element - * - * Applies and removes the cult halo - */ -/datum/element/cult_halo - -/datum/element/cult_halo/Attach(datum/target, initial_delay = 20 SECONDS) - . = ..() - if (!isliving(target)) - return ELEMENT_INCOMPATIBLE - - // Register signals for mob transformation to prevent premature halo removal - RegisterSignals(target, list(COMSIG_CHANGELING_TRANSFORM, COMSIG_MONKEY_HUMANIZE, COMSIG_HUMAN_MONKEYIZE), PROC_REF(set_halo)) - addtimer(CALLBACK(src, PROC_REF(set_halo), target), initial_delay) - -/** - * Halo setter proc - * - * Adds the cult halo overlays, and adds the halo trait to the mob. - */ -/datum/element/cult_halo/proc/set_halo(mob/living/target) - SIGNAL_HANDLER - - if(!IS_CULTIST(target)) - target.RemoveElement(/datum/element/cult_halo) - return - - ADD_TRAIT(target, TRAIT_CULT_HALO, CULT_TRAIT) - var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/mob/effects/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) - if (ishuman(target)) - var/mob/living/carbon/human/human_parent = target - new /obj/effect/temp_visual/cult/sparks(get_turf(human_parent), human_parent.dir) - human_parent.overlays_standing[HALO_LAYER] = new_halo_overlay - human_parent.apply_overlay(HALO_LAYER) - else - target.add_overlay(new_halo_overlay) - -/** - * Detach proc - * - * Removes the halo overlays, and trait from the mob - */ -/datum/element/cult_halo/Detach(mob/living/target, ...) - REMOVE_TRAIT(target, TRAIT_CULT_HALO, CULT_TRAIT) - if (ishuman(target)) - var/mob/living/carbon/human/human_parent = target - human_parent.remove_overlay(HALO_LAYER) - human_parent.update_body() - else - target.cut_overlay(HALO_LAYER) - UnregisterSignal(target, list(COMSIG_CHANGELING_TRANSFORM, COMSIG_HUMAN_MONKEYIZE, COMSIG_MONKEY_HUMANIZE)) - return ..() diff --git a/code/datums/elements/dryable.dm b/code/datums/elements/dryable.dm index 8a0f9964a7d7..e435de19e63a 100644 --- a/code/datums/elements/dryable.dm +++ b/code/datums/elements/dryable.dm @@ -11,7 +11,7 @@ return ELEMENT_INCOMPATIBLE src.dry_result = dry_result - RegisterSignal(target, COMSIG_ITEM_DRIED, PROC_REF(finish_drying)) + RegisterSignal(target, COMSIG_ITEM_FINISH_DRYING, PROC_REF(finish_drying)) ADD_TRAIT(target, TRAIT_DRYABLE, ELEMENT_TRAIT(type)) var/atom/atom_target = target @@ -28,7 +28,7 @@ /datum/element/dryable/Detach(datum/target) . = ..() - UnregisterSignal(target, COMSIG_FOOD_CONSUMED) + UnregisterSignal(target, COMSIG_ITEM_FINISH_DRYING) REMOVE_TRAIT(target, TRAIT_DRYABLE, ELEMENT_TRAIT(type)) /datum/element/dryable/proc/finish_drying(atom/source, datum/weakref/drying_user) @@ -40,7 +40,7 @@ if(dry_result == dried_atom.type)//if the dried type is the same as our currrent state, don't bother creating a whole new item, just re-color it. var/atom/movable/resulting_atom = dried_atom resulting_atom.add_atom_colour(dried_color, FIXED_COLOUR_PRIORITY) - apply_dried_status(resulting_atom, drying_user) + apply_dried_status(resulting_atom, drying_user, source) return else if(isstack(source)) //Check if its a sheet var/obj/item/stack/itemstack = dried_atom @@ -56,11 +56,14 @@ resulting_atom.reagents.clear_reagents() source_food.reagents.trans_to(resulting_atom, source_food.reagents.total_volume) resulting_atom.set_custom_materials(source.custom_materials) - apply_dried_status(resulting_atom, drying_user) + apply_dried_status(resulting_atom, drying_user, source) + qdel(source) -/datum/element/dryable/proc/apply_dried_status(atom/target, datum/weakref/drying_user) +/datum/element/dryable/proc/apply_dried_status(atom/target, datum/weakref/drying_user, atom/source) ADD_TRAIT(target, TRAIT_DRIED, ELEMENT_TRAIT(type)) var/datum/mind/user_mind = drying_user?.resolve() if(drying_user && istype(target, /obj/item/food)) - ADD_TRAIT(target, TRAIT_FOOD_CHEF_MADE, REF(user_mind)) + ADD_TRAIT(target, TRAIT_HANDMADE, REF(user_mind)) + + SEND_SIGNAL(source, COMSIG_ITEM_DRIED, target, drying_user) diff --git a/code/datums/elements/food/microwavable.dm b/code/datums/elements/food/microwavable.dm index a9f5388cba1c..b8b877fd40e6 100644 --- a/code/datums/elements/food/microwavable.dm +++ b/code/datums/elements/food/microwavable.dm @@ -6,8 +6,6 @@ var/atom/result_typepath /// Reagents that should be added to the result var/list/added_reagents - /// Whether this is a bad recipe or not. It affects some checks. - var/bad_recipe /datum/element/microwavable/Attach(obj/item/target, microwave_type, list/reagents, bad_recipe = FALSE) . = ..() @@ -18,13 +16,12 @@ result_typepath = microwave_type added_reagents = reagents - src.bad_recipe = bad_recipe - - RegisterSignal(target, COMSIG_ITEM_MICROWAVE_ACT, PROC_REF(on_microwaved)) - if(!bad_recipe) + ADD_TRAIT(target, TRAIT_MICROWAVABLE, REF(src)) RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(target, COMSIG_ITEM_MICROWAVE_ACT, PROC_REF(on_microwaved)) + if(!PERFORM_ALL_TESTS(focus_only/check_materials_when_processed) || bad_recipe || !target.custom_materials || isstack(target)) return @@ -57,7 +54,7 @@ var/efficiency = istype(used_microwave) ? used_microwave.efficiency : 1 - if(IS_EDIBLE(result) && !bad_recipe) + if(IS_EDIBLE(result) && HAS_TRAIT(source, TRAIT_MICROWAVABLE)) BLACKBOX_LOG_FOOD_MADE(result.type) if(istype(source, /obj/item/food) && istype(result, /obj/item/food)) @@ -66,7 +63,7 @@ LAZYADD(microwaved_food.intrinsic_food_materials, original_food.intrinsic_food_materials) if(microwaver && microwaver.mind) - ADD_TRAIT(result, TRAIT_FOOD_CHEF_MADE, REF(microwaver.mind)) + ADD_TRAIT(result, TRAIT_HANDMADE, REF(microwaver.mind)) //make space and tranfer reagents if it has any, also let any bad result handle removing or converting the transferred reagents on its own terms if(result.reagents && source.reagents) @@ -75,15 +72,15 @@ if(added_reagents) // Add any new reagents that should be added result.reagents.add_reagent_list(added_reagents) - SEND_SIGNAL(result, COMSIG_ITEM_MICROWAVE_COOKED, source, efficiency) - SEND_SIGNAL(source, COMSIG_ITEM_MICROWAVE_COOKED_FROM, result, efficiency) - - qdel(source) + SEND_SIGNAL(source, COMSIG_ITEM_MICROWAVE_COOKED, result, efficiency) + SEND_SIGNAL(result, COMSIG_ITEM_MICROWAVE_COOKED_RESULT, source, efficiency) var/recipe_result = COMPONENT_MICROWAVE_SUCCESS - if(bad_recipe) + if(!HAS_TRAIT(source, TRAIT_MICROWAVABLE)) recipe_result |= COMPONENT_MICROWAVE_BAD_RECIPE + qdel(source) + if(randomize_pixel_offset && isitem(result)) var/obj/item/result_item = result if(!(result_item.item_flags & NO_PIXEL_RANDOM_DROP)) diff --git a/code/datums/elements/immerse.dm b/code/datums/elements/immerse.dm index b23623d51b0d..f0fcd06a6d5c 100644 --- a/code/datums/elements/immerse.dm +++ b/code/datums/elements/immerse.dm @@ -245,8 +245,17 @@ GLOBAL_LIST_INIT(immerse_ignored_movable, typecacheof(list( // This determines if the overlay should cover the entire surface of the object or not var/layer_to_check = IS_TOPDOWN_PLANE(movable.plane) ? TOPDOWN_WATER_LEVEL_LAYER : WATER_LEVEL_LAYER var/is_below_water = (movable.layer < layer_to_check) ? "underwater-" : "" + var/x_offset = 0 + var/y_offset = 0 + var/movable_width = movable.get_cached_width() + if (ishuman(movable)) + var/mob/living/carbon/human/as_human = movable + if (as_human.cached_body_min_x_offset && movable_width > ICON_SIZE_X) + x_offset = as_human.cached_body_min_x_offset + if (as_human.cached_body_min_y_offset && movable.get_cached_height() > ICON_SIZE_Y) + y_offset = as_human.cached_body_min_y_offset // Tall mobs still only get covered to their feet, unless they're offset down - var/mutable_appearance/immerse_mask = generate_immerse_mask(movable.get_cached_width(), max(ICON_SIZE_Y - movable.pixel_z, ICON_SIZE_Y), is_below_water) + var/mutable_appearance/immerse_mask = generate_immerse_mask(movable_width, max(ICON_SIZE_Y - movable.pixel_z - y_offset, ICON_SIZE_Y), is_below_water) if (!immerse_mask) return var/atom/movable/immerse_mask/effect_relay = generated_visual_overlays[movable] @@ -256,6 +265,8 @@ GLOBAL_LIST_INIT(immerse_ignored_movable, typecacheof(list( generated_visual_overlays[movable] = effect_relay var/mutable_appearance/mask_copy = new(immerse_mask) effect_relay.appearance = mask_copy + effect_relay.pixel_w += x_offset + effect_relay.pixel_z += y_offset effect_relay.render_target = "*immerse_[REF(movable)]" SEND_SIGNAL(movable, COMSIG_MOVABLE_EDIT_UNIQUE_IMMERSE_OVERLAY, effect_relay) // Should always render above any other filters that could be adding visuals diff --git a/code/datums/elements/muffles_speech.dm b/code/datums/elements/muffles_speech.dm index 0512d62e33f2..c233b7226151 100644 --- a/code/datums/elements/muffles_speech.dm +++ b/code/datums/elements/muffles_speech.dm @@ -17,10 +17,11 @@ if(source.slot_flags & slot) RegisterSignal(user, COMSIG_MOB_SAY, PROC_REF(muzzle_talk)) RegisterSignal(user, COMSIG_MOB_PRE_EMOTED, PROC_REF(emote_override)) + RegisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST, PROC_REF(try_spellcast)) /datum/element/muffles_speech/proc/dropped(obj/item/source, mob/user) SIGNAL_HANDLER - UnregisterSignal(user, list(COMSIG_MOB_PRE_EMOTED, COMSIG_MOB_SAY)) + UnregisterSignal(user, list(COMSIG_MOB_PRE_EMOTED, COMSIG_MOB_SAY, COMSIG_MOB_BEFORE_SPELL_CAST)) /datum/element/muffles_speech/proc/emote_override(mob/living/source, key, params, type_override, intentional, datum/emote/emote) SIGNAL_HANDLER @@ -48,3 +49,19 @@ words[ind] = yell_suffix ? uppertext(new_word) : new_word spoken_message = "[jointext(words, " ")][yell_suffix]" speech_args[SPEECH_MESSAGE] = spoken_message + +/datum/element/muffles_speech/proc/try_spellcast(mob/living/source, datum/action/cooldown/spell/spell, ...) + SIGNAL_HANDLER + + if(spell.invocation_type != INVOCATION_WHISPER && spell.invocation_type != INVOCATION_SHOUT) + return NONE + + INVOKE_ASYNC(src, PROC_REF(fail_spellcast), source, spell) + return SPELL_CANCEL_CAST + +/datum/element/muffles_speech/proc/fail_spellcast(mob/living/source, datum/action/cooldown/spell/spell) + spell.invocation(source) + to_chat(source, span_warning("Your mouth covering is making it difficult to say the correct words to cast [spell]...")) + if(source.click_intercept == spell) + spell.unset_click_ability(source, refund_cooldown = TRUE) + spell.StartCooldown(2 SECONDS) diff --git a/code/datums/elements/organ_set_bonus.dm b/code/datums/elements/organ_set_bonus.dm index 49cd58ddf935..ef2691e87fab 100644 --- a/code/datums/elements/organ_set_bonus.dm +++ b/code/datums/elements/organ_set_bonus.dm @@ -61,9 +61,9 @@ var/bonus_biotype /// If the biotype was added - used to check if we should remove the biotype or not, on organ set loss. var/biotype_added = FALSE - /// Limb overlay to apply upon activation - var/limb_overlay - /// Color priority for limb overlay + /// Limb texture to apply upon activation + var/limb_texture + /// Color priority for limb limb_texture var/color_overlay_priority /datum/status_effect/organ_set_bonus/proc/set_organs(new_value, obj/item/organ/organ) @@ -97,22 +97,21 @@ if(bonus_activate_text) to_chat(owner, bonus_activate_text) - // Add limb overlay - if(!iscarbon(owner) || !limb_overlay) + // Add limb texture + if(!limb_texture) return TRUE - var/mob/living/carbon/carbon_owner = owner - RegisterSignal(carbon_owner, COMSIG_CARBON_ATTACH_LIMB, PROC_REF(texture_limb)) - RegisterSignal(carbon_owner, COMSIG_CARBON_REMOVE_LIMB, PROC_REF(untexture_limb)) + RegisterSignal(owner, COMSIG_CARBON_ATTACH_LIMB, PROC_REF(texture_limb)) + RegisterSignal(owner, COMSIG_CARBON_REMOVE_LIMB, PROC_REF(untexture_limb)) - for(var/obj/item/bodypart/limb as anything in carbon_owner.get_bodyparts()) + for(var/obj/item/bodypart/limb as anything in owner.get_bodyparts()) if (!(limb.bodytype & BODYTYPE_ORGANIC)) continue - limb.add_bodypart_overlay(new limb_overlay(), update = FALSE) + limb.add_bodypart_texture(limb_texture, update = FALSE) if (color_overlay_priority) limb.add_color_override(COLOR_WHITE, color_overlay_priority) - carbon_owner.update_body() + owner.update_body() return TRUE /datum/status_effect/organ_set_bonus/proc/disable_bonus(obj/item/organ/removed_organ) @@ -130,24 +129,20 @@ to_chat(owner, bonus_deactivate_text) // Remove limb overlay - if(!iscarbon(owner) || !limb_overlay) + if(!limb_texture) return - var/mob/living/carbon/carbon_owner = owner - UnregisterSignal(carbon_owner, list(COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB)) + UnregisterSignal(owner, list(COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB)) - if(QDELETED(carbon_owner)) + if(QDELETED(owner)) return - for(var/obj/item/bodypart/limb as anything in carbon_owner.get_bodyparts()) - var/overlay = locate(limb_overlay) in limb.bodypart_overlays - if(!overlay) - continue - limb.remove_bodypart_overlay(overlay, update = FALSE) + for(var/obj/item/bodypart/limb as anything in owner.get_bodyparts()) + limb.remove_bodypart_texture(limb_texture, update = FALSE) if (color_overlay_priority) limb.remove_color_override(color_overlay_priority) - carbon_owner.update_body() + owner.update_body() /datum/status_effect/organ_set_bonus/proc/texture_limb(atom/source, obj/item/bodypart/limb) SIGNAL_HANDLER @@ -156,16 +151,13 @@ return // Not updating because enable/disable_bonus(obj/item/organ/removed_organ) call it down the line, and calls coming from comsigs update the owner's body themselves - limb.add_bodypart_overlay(new limb_overlay(), update = FALSE) + limb.add_bodypart_texture(limb_texture, update = FALSE) if(color_overlay_priority) limb.add_color_override(COLOR_WHITE, color_overlay_priority) /datum/status_effect/organ_set_bonus/proc/untexture_limb(atom/source, obj/item/bodypart/limb) SIGNAL_HANDLER - var/overlay = locate(limb_overlay) in limb.bodypart_overlays - if(!overlay) - return - limb.remove_bodypart_overlay(overlay, update = FALSE) + limb.remove_bodypart_texture(limb_texture, update = FALSE) if(color_overlay_priority) limb.remove_color_override(color_overlay_priority) diff --git a/code/datums/elements/pressure_sensitive.dm b/code/datums/elements/pressure_sensitive.dm new file mode 100644 index 000000000000..744a5cddab5e --- /dev/null +++ b/code/datums/elements/pressure_sensitive.dm @@ -0,0 +1,85 @@ +/// When attached to a living mob, causes it to take damage over time when pressure is too low or too high as defined by the element's arguments. +/datum/element/pressure_sensitive + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + argument_hash_end_idx = 5 + + /// The pressure (in kilopascals) below which low_pressure_damage is taken. + var/min_pressure = WARNING_LOW_PRESSURE + /// The pressure (in kilopascals) above which high_pressure_damage is taken. + var/max_pressure = HAZARD_HIGH_PRESSURE + /// The damage taken when pressure is below min_pressure. 0 or below disables low pressure damage. + var/low_pressure_damage = 1 + /// The damage taken when pressure is above max_pressure. 0 or below disables high pressure damage. + var/high_pressure_damage = 1 + +/datum/element/pressure_sensitive/Attach(datum/target, min_pressure, max_pressure, low_pressure_damage, high_pressure_damage, mapload = FALSE) + . = ..() + if (!isliving(target)) + return ELEMENT_INCOMPATIBLE + + if (isnum(min_pressure)) + src.min_pressure = min_pressure + if (isnum(max_pressure)) + src.max_pressure = max_pressure + if (isnum(low_pressure_damage)) + src.low_pressure_damage = low_pressure_damage + if (isnum(high_pressure_damage)) + src.high_pressure_damage = high_pressure_damage + + RegisterSignal(target, COMSIG_LIVING_LIFE, PROC_REF(on_life)) + + if(mapload && PERFORM_ALL_TESTS(focus_only/atmos_and_temp_requirements)) + check_safe_environment(target) + +/datum/element/pressure_sensitive/Detach(datum/target) + if(target) + UnregisterSignal(target, COMSIG_LIVING_LIFE) + return ..() + +/datum/element/pressure_sensitive/proc/on_life(mob/living/target, seconds_per_tick) + SIGNAL_HANDLER + + if (HAS_TRAIT(target, TRAIT_STASIS)) + return + + var/gave_alert = FALSE + var/datum/gas_mixture/environment = target.loc.return_air() + var/pressure = target.calculate_affecting_pressure(environment.return_pressure()) + + if(pressure < min_pressure && low_pressure_damage > 0 && !HAS_TRAIT(target, TRAIT_RESISTLOWPRESSURE)) + target.adjust_brute_loss(low_pressure_damage * seconds_per_tick) + + switch(low_pressure_damage) + if(5 to INFINITY) + target.throw_alert(ALERT_PRESSURE, /atom/movable/screen/alert/lowpressure, 2) + if(-INFINITY to 5) + target.throw_alert(ALERT_PRESSURE, /atom/movable/screen/alert/lowpressure, 1) + + gave_alert = TRUE + + else if(pressure > max_pressure && high_pressure_damage > 0 && !HAS_TRAIT(target, TRAIT_RESISTHIGHPRESSURE)) + target.adjust_brute_loss(high_pressure_damage * seconds_per_tick) + + switch(high_pressure_damage) + if(5 to INFINITY) + target.throw_alert(ALERT_PRESSURE, /atom/movable/screen/alert/highpressure, 2) + if(-INFINITY to 5) + target.throw_alert(ALERT_PRESSURE, /atom/movable/screen/alert/highpressure, 1) + + gave_alert = TRUE + + if(!gave_alert) + target.clear_alert(ALERT_PRESSURE) + +/// Ensures that the given mob is in a safe environment. +/datum/element/pressure_sensitive/proc/check_safe_environment(mob/living/target) + if(target.stat == DEAD || isnull(target.loc)) + return + + var/atom/loc = target.loc + var/datum/gas_mixture/environment = loc.return_air() + var/pressure = target.calculate_affecting_pressure(environment.return_pressure()) + + if(!ISINRANGE(pressure, min_pressure, max_pressure)) + stack_trace("[target] loaded on in a loc with unsafe pressure at \[[loc.x], [loc.y], [loc.z]\] (area : [get_area(loc)]): [pressure]kPa. Acceptable Range: [min_pressure]kPa - [max_pressure]kPa,") diff --git a/code/datums/elements/quality_food_ingredient.dm b/code/datums/elements/quality_food_ingredient.dm index e9bfec246c52..3fc5f30f7b36 100644 --- a/code/datums/elements/quality_food_ingredient.dm +++ b/code/datums/elements/quality_food_ingredient.dm @@ -16,8 +16,9 @@ RegisterSignal(target, COMSIG_ATOM_USED_IN_CRAFT, PROC_REF(used_in_craft)) RegisterSignal(target, COMSIG_ITEM_BAKED, PROC_REF(item_baked)) - RegisterSignal(target, COMSIG_ITEM_MICROWAVE_COOKED_FROM, PROC_REF(microwaved_from)) + RegisterSignal(target, COMSIG_ITEM_MICROWAVE_COOKED, PROC_REF(microwaved_from)) RegisterSignal(target, COMSIG_ITEM_GRILLED, PROC_REF(item_grilled)) + RegisterSignal(target, COMSIG_ITEM_DRIED, PROC_REF(item_dried)) RegisterSignals(target, list(COMSIG_ITEM_BARBEQUE_GRILLED, COMSIG_ITEM_FRIED), PROC_REF(simply_cooked)) RegisterSignal(target, COMSIG_ITEM_USED_AS_INGREDIENT, PROC_REF(used_as_ingredient)) @@ -25,11 +26,12 @@ UnregisterSignal(source, list( COMSIG_ATOM_USED_IN_CRAFT, COMSIG_ITEM_BAKED, - COMSIG_ITEM_MICROWAVE_COOKED_FROM, + COMSIG_ITEM_MICROWAVE_COOKED, COMSIG_ITEM_GRILLED, COMSIG_ITEM_BARBEQUE_GRILLED, COMSIG_ITEM_FRIED, COMSIG_ITEM_USED_AS_INGREDIENT, + COMSIG_ITEM_DRIED, COMSIG_FOOD_GET_EXTRA_COMPLEXITY, )) REMOVE_TRAIT(source, TRAIT_QUALITY_FOOD_INGREDIENT, REF(src)) @@ -51,6 +53,10 @@ SIGNAL_HANDLER add_quality(grill_result) +/datum/element/quality_food_ingredient/proc/item_dried(datum/source, atom/result) + SIGNAL_HANDLER + add_quality(result) + /datum/element/quality_food_ingredient/proc/simply_cooked(datum/source) SIGNAL_HANDLER //The target of the food quality and the source are the same, there's no need to re-add the whole element. @@ -66,6 +72,6 @@ RegisterSignal(target, COMSIG_FOOD_GET_EXTRA_COMPLEXITY, PROC_REF(add_complexity), TRUE) ADD_TRAIT(target, TRAIT_QUALITY_FOOD_INGREDIENT, REF(src)) -/datum/element/quality_food_ingredient/proc/add_complexity(datum/source, list/extra_complexity) +/datum/element/quality_food_ingredient/proc/add_complexity(datum/source, list/complexity) SIGNAL_HANDLER - extra_complexity[1] += complexity_increase + complexity[1] += complexity_increase diff --git a/code/datums/elements/skittish.dm b/code/datums/elements/skittish.dm index 7f642377370f..da1b76ecfb54 100644 --- a/code/datums/elements/skittish.dm +++ b/code/datums/elements/skittish.dm @@ -59,3 +59,5 @@ closet_turf.visible_message(span_warning("[scooby] dives into [closet]!")) // If you run into a locker, you don't want to run out immediately scooby.Immobilize(0.5 SECONDS) + + return COMPONENT_INTERCEPT_BUMPED diff --git a/code/datums/elements/strippable.dm b/code/datums/elements/strippable.dm index 47e38079c725..e189ee58650a 100644 --- a/code/datums/elements/strippable.dm +++ b/code/datums/elements/strippable.dm @@ -36,6 +36,9 @@ /datum/element/strippable/proc/mouse_drop_onto(datum/source, atom/over, mob/user) SIGNAL_HANDLER + if(SEND_SIGNAL(source, COMSIG_MOB_STRIP_MENU_OPEN, over, user) & COMPONENT_BLOCK_STRIP_MENU_OPEN) + return + if (user == source) return if (over != user) @@ -57,12 +60,6 @@ if (!isnull(should_strip_proc_path) && !call(source, should_strip_proc_path)(user)) return - // Snowflake for mob scooping - if (isliving(source)) - var/mob/living/mob = source - if (mob.can_be_held && (user.grab_state == GRAB_AGGRESSIVE) && (user.pulling == source)) - return - var/datum/strip_menu/strip_menu = LAZYACCESS(strip_menus, source) if (isnull(strip_menu)) diff --git a/code/datums/elements/table_smash.dm b/code/datums/elements/table_smash.dm index 8650b2d88e28..d0f518543405 100644 --- a/code/datums/elements/table_smash.dm +++ b/code/datums/elements/table_smash.dm @@ -143,13 +143,13 @@ return var/passtable_key = REF(user) - passtable_on(pushed_mob, passtable_key) + ADD_TRAIT(pushed_mob, TRAIT_PASSTABLE, passtable_key) for (var/obj/obj in user.loc.contents) if (!obj.CanAllowThrough(pushed_mob)) return pushed_mob.Move(table.loc) - passtable_off(pushed_mob, passtable_key) + REMOVE_TRAIT(pushed_mob, TRAIT_PASSTABLE, passtable_key) if (pushed_mob.loc != table.loc) //Something prevented the tabling return diff --git a/code/datums/elements/uses_girder_wall_recipes.dm b/code/datums/elements/uses_girder_wall_recipes.dm index b313f78200e9..38593f89f54d 100644 --- a/code/datums/elements/uses_girder_wall_recipes.dm +++ b/code/datums/elements/uses_girder_wall_recipes.dm @@ -82,6 +82,8 @@ structure.add_fingerprint(user) stack.add_fingerprint(user) + // Save refernce to the materials for the case when we place last tile in the stack + var/list/saved_mats_per_unit = stack.mats_per_unit if (!stack.use_tool(structure, user, recipe.make_delay, recipe.stack_amount, extra_checks = CALLBACK(src, PROC_REF(check_recipe), structure, user, recipe))) return @@ -103,7 +105,7 @@ qdel(structure) if (is_material_recipe) - wall.set_custom_materials(stack.mats_per_unit, recipe.stack_amount) + wall.set_custom_materials(saved_mats_per_unit, recipe.stack_amount) /// Checks if the user can do the wall recipe. /datum/element/uses_girder_wall_recipes/proc/check_recipe(obj/structure/structure, mob/living/user, datum/girder_wall_recipe/recipe) diff --git a/code/datums/elements/waddling.dm b/code/datums/elements/waddling.dm index d89504dbcfec..2831e729cd75 100644 --- a/code/datums/elements/waddling.dm +++ b/code/datums/elements/waddling.dm @@ -18,7 +18,7 @@ return if(isliving(moved)) var/mob/living/living_moved = moved - if (living_moved.incapacitated || (living_moved.body_position == LYING_DOWN && !HAS_TRAIT(living_moved, TRAIT_FLOPPING))) + if (living_moved.buckled || living_moved.incapacitated || (living_moved.body_position == LYING_DOWN && !HAS_TRAIT(living_moved, TRAIT_FLOPPING))) return waddling_animation(moved) diff --git a/code/datums/elements/weapon_description.dm b/code/datums/elements/weapon_description.dm index 23acb72960c0..e4bb091e1050 100644 --- a/code/datums/elements/weapon_description.dm +++ b/code/datums/elements/weapon_description.dm @@ -77,6 +77,10 @@ readout += "It's sharp and could cause bleeding wounds." if (source.get_sharpness() & SHARP_POINTY) readout += "It's pointy and could cause piercing wounds." + // DARKPACK EDIT ADD START - STORYTELLER_STATS + readout += "It has an attack difficulty of [span_warning("[source.attack_difficulty]")] and uses [source.st_attack_ability::name]+[source.st_attack_attribute::name] to attack." + readout += "It has a dice bonus of [span_warning("[FORCE_TO_DICE_POOL_UNROUNDED(source.force)]")] and uses [source.st_damage_stat::name] for damage." + // DARKPACK EDIT ADD END // Make sure not to divide by 0 on accident if(source.force > 0) readout += "It takes about [span_warning("[HITS_TO_CRIT(source.force)] melee hit\s")] to take down an enemy." diff --git a/code/datums/elements/window_smash.dm b/code/datums/elements/window_smash.dm index 32896d096bf6..30f615fcf967 100644 --- a/code/datums/elements/window_smash.dm +++ b/code/datums/elements/window_smash.dm @@ -11,7 +11,7 @@ return ELEMENT_INCOMPATIBLE var/mob/living/living_target = target RegisterSignal(living_target, COMSIG_MOVABLE_MOVED, PROC_REF(flying_window_smash)) - passwindow_on(target, TRAM_PASSENGER_TRAIT) + ADD_TRAIT(target, TRAIT_PASSWINDOW, TRAM_PASSENGER_TRAIT) addtimer(CALLBACK(src, PROC_REF(Detach), living_target), duration) /// Smash any windows that the mob is flying through @@ -29,5 +29,5 @@ /datum/element/window_smashing/Detach(datum/source) UnregisterSignal(source, COMSIG_MOVABLE_MOVED) - passwindow_off(source, TRAM_PASSENGER_TRAIT) + REMOVE_TRAIT(source, TRAIT_PASSWINDOW, TRAM_PASSENGER_TRAIT) return ..() diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index aa1947ce0439..a1130ea0fe62 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -62,12 +62,18 @@ var/cooldown = 0.8 SECONDS /// Does this message have a message that can be modified by the user? var/can_message_change = FALSE - /// How long is the shared emote cooldown triggered by this emote? - var/general_emote_audio_cooldown = 2 SECONDS - /// How long is the specific emote cooldown triggered by this emote? - var/specific_emote_audio_cooldown = 5 SECONDS + /// How long is the shared emote cooldown triggered by this emote when used intentionally? + var/manual_general_emote_audio_cooldown = 2 SECONDS + /// How long is the specific emote cooldown triggered by this emote when used intentionally? + var/manual_specific_emote_audio_cooldown = 5 SECONDS + /// How long is the shared emote cooldown triggered by this emote when forced? + var/forced_general_emote_audio_cooldown = 2 SECONDS + /// How long is the specific emote cooldown triggered by this emote when forced? + var/forced_specific_emote_audio_cooldown = 2 SECONDS /// Does this emote's sound ignore walls? var/sound_wall_ignore = FALSE + ///Does this emote use sound tokens? this means it also ignores walls. + var/use_sound_tokens = FALSE /datum/emote/New() switch(mob_type_allowed_typecache) @@ -113,15 +119,27 @@ user.log_message(msg, LOG_EMOTE) var/tmp_sound = get_sound(user) - if(tmp_sound && should_play_sound(user, intentional) && TIMER_COOLDOWN_FINISHED(user, "general_emote_audio_cooldown") && TIMER_COOLDOWN_FINISHED(user, type)) - TIMER_COOLDOWN_START(user, type, specific_emote_audio_cooldown) - TIMER_COOLDOWN_START(user, "general_emote_audio_cooldown", general_emote_audio_cooldown) + if(tmp_sound && should_play_sound(user, intentional)) + if(intentional) + if(!TIMER_COOLDOWN_FINISHED(user, MANUAL_GENERAL_EMOTE_AUDIO_COOLDOWN) || !TIMER_COOLDOWN_FINISHED(user, MANUAL_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type)) || !TIMER_COOLDOWN_FINISHED(user, FORCED_GENERAL_EMOTE_AUDIO_COOLDOWN) || !TIMER_COOLDOWN_FINISHED(user, FORCED_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type))) + return FALSE + else + if(!TIMER_COOLDOWN_FINISHED(user, FORCED_GENERAL_EMOTE_AUDIO_COOLDOWN) || !TIMER_COOLDOWN_FINISHED(user, FORCED_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type))) + return FALSE + TIMER_COOLDOWN_START(user, MANUAL_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type), manual_specific_emote_audio_cooldown) + TIMER_COOLDOWN_START(user, MANUAL_GENERAL_EMOTE_AUDIO_COOLDOWN, manual_general_emote_audio_cooldown) + TIMER_COOLDOWN_START(user, FORCED_SPECIFIC_EMOTE_AUDIO_COOLDOWN(type), forced_specific_emote_audio_cooldown) + TIMER_COOLDOWN_START(user, FORCED_GENERAL_EMOTE_AUDIO_COOLDOWN, forced_general_emote_audio_cooldown) + var/frequency = null if (affected_by_pitch && SStts.tts_enabled && SStts.pitch_enabled) frequency = rand(MIN_EMOTE_PITCH, MAX_EMOTE_PITCH) * (1 + sqrt(abs(user.pitch)) * sign(user.pitch) * EMOTE_TTS_PITCH_MULTIPLIER) else if(vary) frequency = rand(MIN_EMOTE_PITCH, MAX_EMOTE_PITCH) - playsound(source = user,soundin = tmp_sound,vol = 50, vary = FALSE, extrarange = get_range(user), ignore_walls = sound_wall_ignore, frequency = frequency) // DARKPACK EDIT CHANGE - (Added extrarange getter) + if(use_sound_tokens && sound_wall_ignore) + playsoundtoken(source = user, soundin = tmp_sound, range = SOUND_RANGE, volume = 50) + else + playsound(source = user,soundin = tmp_sound,vol = 50, vary = FALSE, extrarange = get_range(user), ignore_walls = sound_wall_ignore, frequency = frequency) // DARKPACK EDIT CHANGE - (Added extrarange getter) var/is_important = running_emote_type & EMOTE_IMPORTANT diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm index c6dcbc200df2..10cc197140a6 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm @@ -702,7 +702,7 @@ /datum/greyscale_config/digitigrade name = "Digitigrade Clothes" - icon_file = 'icons/mob/clothing/digi_template_equpiment.dmi' + icon_file = 'icons/mob/clothing/digi_template_equipment.dmi' json_config = 'code/datums/greyscale/json_configs/digitigrade.json' /datum/greyscale_config/digitigrade_underwear diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 20ad08a77b63..6a668e87e5e1 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -71,10 +71,7 @@ var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11)) . += "#[tm.number][details]
" -/client/verb/showrevinfo() - set category = "OOC" - set name = "Show Server Revision" - set desc = "Check the current server code revision" +GAME_VERB_DESC(/client, showrevinfo, "Show Server Revision", "Check the current server code revision", "OOC") var/list/msg = list() // Round ID diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index e8cef1fd5ff9..b234481babc3 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -37,7 +37,7 @@ if(isliving(teleatom)) var/mob/living/MM = teleatom to_chat(MM, span_warning("The clashing pulls of bluespace interfere with your teleport!")) - + // if effects are not specified and not explicitly disabled, sparks if((!effectin || !effectout) && !no_effects) var/datum/effect_system/basic/spark_spread/sparks = new(teleatom, 5, TRUE) @@ -56,16 +56,22 @@ // perform the teleport var/turf/curturf = get_turf(teleatom) - var/turf/destturf = get_teleport_turf(get_turf(destination), precision) - - if(!destturf || !curturf || destturf.is_transition_turf()) + if(!curturf) return FALSE - if(!forced) - if(!check_teleport_valid(teleatom, destturf, channel, original_destination = destination)) - if(ismob(teleatom)) - teleatom.balloon_alert(teleatom, "something holds you back!") - return FALSE + //The final destination chosen after a few checks + var/turf/destturf + //The turf of the original destination from the args + var/turf/og_destination = get_turf(destination) + if(precision) + destturf = get_valid_teleport_turf(curturf, og_destination, precision, skip_restrictions = forced) + else if(!og_destination.is_transition_turf()) + destturf = og_destination + + if(!destturf || (!forced && !check_teleport_valid(teleatom, destturf, channel, original_destination = destination))) + if(ismob(teleatom)) + teleatom.balloon_alert(teleatom, "something holds you back!") + return FALSE if(SEND_SIGNAL(teleatom, COMSIG_MOVABLE_TELEPORTING, destination, channel)) return FALSE @@ -181,13 +187,12 @@ if(!floor_gas_mixture) return - var/list/floor_gases = floor_gas_mixture.gases var/static/list/gases_to_check = list( /datum/gas/oxygen = list(/obj/item/organ/lungs::safe_oxygen_min, 100), /datum/gas/nitrogen, /datum/gas/carbon_dioxide = list(0, /obj/item/organ/lungs::safe_co2_max) ) - if(!check_gases(floor_gases, gases_to_check)) + if(!floor_gas_mixture.check_gases(gases_to_check)) return FALSE // Aim for goldilocks temperatures and pressure @@ -216,22 +221,29 @@ // DING! You have passed the gauntlet, and are "probably" safe. return TRUE -/proc/get_teleport_turfs(turf/center, precision = 0) - if(!precision) - return list(center) - var/list/posturfs = list() - for(var/turf/T as anything in RANGE_TURFS(precision,center)) - if(T.is_transition_turf()) - continue // Avoid picking these. - var/area/A = T.loc - if(!(A.area_flags & NOTELEPORT)) - posturfs.Add(T) - return posturfs - -/proc/get_teleport_turf(turf/center, precision = 0) - var/list/turfs = get_teleport_turfs(center, precision) +///Check for turfs within range of the center turf and perform simple checks to see which is a valid teleportation target. If so, add it to a list to pick the final destination from at the end. +/proc/get_valid_teleport_turf(turf/origin, turf/center, range = 0, skip_restrictions = FALSE) + var/list/turfs = list() + var/area/origin_area = origin.loc + for(var/turf/turf as anything in RANGE_TURFS(range, center)) + if(turf.is_transition_turf()) + continue // Avoid picking these at all cost + if(skip_restrictions) + turfs.Add(turf) + continue + + if(HAS_TRAIT(turf, TRAIT_NO_TELEPORT)) + continue + var/area/area = turf.loc + if(area.area_flags & NOTELEPORT) + continue + if(((origin_area.area_flags & LOCAL_TELEPORT) || (area.area_flags & LOCAL_TELEPORT)) && origin_area != area) + continue + turfs.Add(turf) + if (length(turfs)) return pick(turfs) + return null /// Validates that the teleport being attempted is valid or not /proc/check_teleport_valid(atom/teleported_atom, atom/destination, channel, atom/original_destination = null) @@ -245,7 +257,7 @@ var/area/destination_area = get_area(destination) var/turf/destination_turf = get_turf(destination) - if(HAS_TRAIT(teleported_atom, TRAIT_NO_TELEPORT)) + if(HAS_TRAIT(teleported_atom, TRAIT_NO_TELEPORT) || HAS_TRAIT(destination_turf, TRAIT_NO_TELEPORT)) return FALSE // prevent unprecise teleports from landing you outside of the destination's reserved area diff --git a/code/datums/job_configs/_job_configs.dm b/code/datums/job_configs/_job_configs.dm index b3a32cd8a2b8..7797a672193f 100644 --- a/code/datums/job_configs/_job_configs.dm +++ b/code/datums/job_configs/_job_configs.dm @@ -37,6 +37,10 @@ /// By default returns TRUE, meaning that by default every job will have the config entry created by the datum /// An example of what this could be used for is: A value that only appears if the job is a head of staff /datum/job_config_type/proc/validate_entry(datum/job/occupation) + // DARKPACK EDIT ADD START + if(isnull(get_current_value(occupation))) + return FALSE + // DARKPACK EDIT ADD END return TRUE /// This is the proc that we actually invoke to set the config-based values for each job. Is also intended to handle all in-depth logic checks pertient to the job datum itself. diff --git a/code/datums/job_configs/human_authority.dm b/code/datums/job_configs/human_authority.dm index 68b6c64f95cf..f813901cc557 100644 --- a/code/datums/job_configs/human_authority.dm +++ b/code/datums/job_configs/human_authority.dm @@ -1,3 +1,4 @@ +/* // DARKPACK EDIT REMOVAL /// Whether if the job should whitelist humans, whitelist nonhumans, or neither /datum/job_config_type/human_authority name = JOB_CONFIG_HUMAN_AUTHORITY @@ -14,4 +15,4 @@ /datum/job_config_type/human_authority/validate_entry(datum/job/occupation) return occupation.job_flags & JOB_HEAD_OF_STAFF - +*/ diff --git a/code/datums/keybinding/client.dm b/code/datums/keybinding/client.dm index f20d38397bd6..e07cc2541230 100644 --- a/code/datums/keybinding/client.dm +++ b/code/datums/keybinding/client.dm @@ -76,7 +76,13 @@ . = ..() if(.) return - user.mob.button_pressed_F12() + + if(user.mob.hud_used) + user.mob.hud_used.show_hud() //Shows the next hud preset + to_chat(user, span_info("Switched HUD mode. Press F12 to toggle.")) + else + to_chat(user, span_warning("This mob type does not use a HUD.")) + return TRUE /datum/keybinding/client/close_every_ui diff --git a/code/datums/keybinding/living.dm b/code/datums/keybinding/living.dm index ee3285dda40f..39f746e149cf 100644 --- a/code/datums/keybinding/living.dm +++ b/code/datums/keybinding/living.dm @@ -215,6 +215,11 @@ return FALSE if(!user.mob) return FALSE + var/obj/item/object = user.mob.get_active_held_item() + if(isnull(object)) + return FALSE + if(HAS_TRAIT(object, TRAIT_BORG_GIVE)) + return TRUE if(!HAS_TRAIT(user.mob, TRAIT_CAN_HOLD_ITEMS)) return FALSE return TRUE @@ -224,7 +229,10 @@ if(.) return var/mob/living/living_user = user.mob - if(!HAS_TRAIT(living_user, TRAIT_CAN_HOLD_ITEMS)) + var/obj/item/held_item = living_user.get_active_held_item() + if(isnull(held_item)) + return + if(!HAS_TRAIT(living_user, TRAIT_CAN_HOLD_ITEMS) && !HAS_TRAIT(held_item, TRAIT_BORG_GIVE)) return living_user.give() diff --git a/code/datums/lazy_template.dm b/code/datums/lazy_template.dm index d527d46b6d65..41d837993c4e 100644 --- a/code/datums/lazy_template.dm +++ b/code/datums/lazy_template.dm @@ -81,6 +81,17 @@ var/turf/bottom_left = reservation.bottom_left_turfs[z_idx] var/turf/top_right = reservation.top_right_turfs[z_idx] + // Make our turfs dead to atmos + // Cache for sonic speed + var/list/to_rebuild = SSair.adjacent_rebuild + for(var/turf/contained_turf as anything in block(bottom_left, top_right)) + SSair.remove_from_active(contained_turf) + to_rebuild -= contained_turf + for(var/turf/sub_turf as anything in contained_turf.atmos_adjacent_turfs) + sub_turf.atmos_adjacent_turfs?.Remove(contained_turf) + contained_turf.atmos_adjacent_turfs?.Cut() + CHECK_TICK + load_map( file(load_path), bottom_left.x, @@ -104,6 +115,10 @@ loaded_atom_movables |= thing SSatoms.InitializeAtoms(loaded_areas + loaded_atom_movables + loaded_turfs) + for(var/turf/turf as anything in loaded_turfs) + CALCULATE_ADJACENT_TURFS(turf, NORMAL_TURF) + CHECK_TICK + SSlighting.setup_static_lighting_if_needed(loaded_turfs) SSmachines.setup_template_powernets(loaded_cables) SSair.setup_template_machinery(loaded_atmospherics) diff --git a/code/datums/looping_sounds/burning.dm b/code/datums/looping_sounds/burning.dm index 8673a9ab1dec..15fd7563fde3 100644 --- a/code/datums/looping_sounds/burning.dm +++ b/code/datums/looping_sounds/burning.dm @@ -8,3 +8,12 @@ vary = TRUE extra_range = MEDIUM_RANGE_SOUND_EXTRARANGE use_sound_tokens = TRUE + +// soundloop used for jet boots flight. +/datum/looping_sound/burning_jet + start_sound = 'sound/items/jet_ignite.ogg' + start_length = 1.2 SECONDS + mid_sounds = 'sound/items/jet_active.ogg' + mid_length = 2.4 SECONDS + end_sound = 'sound/items/jet_off.ogg' + volume = 15 diff --git a/code/datums/looping_sounds/tram.dm b/code/datums/looping_sounds/tram.dm new file mode 100644 index 000000000000..6c8b2c0862cb --- /dev/null +++ b/code/datums/looping_sounds/tram.dm @@ -0,0 +1,7 @@ +/datum/looping_sound/tram + start_sound = 'sound/machines/tram/tram_start.ogg' + start_length = 2.219 SECONDS + mid_sounds = 'sound/machines/tram/tram_loop.ogg' + mid_length = 2.219 SECONDS + use_sound_tokens = TRUE + extra_range = 10 diff --git a/code/datums/looping_sounds/weather.dm b/code/datums/looping_sounds/weather.dm index 818675e763b5..1dd3df668b31 100644 --- a/code/datums/looping_sounds/weather.dm +++ b/code/datums/looping_sounds/weather.dm @@ -51,6 +51,9 @@ mid_length = 166.9 SECONDS // exact length of the music in ticks volume = 100 extra_range = 30 + pressure_affected = FALSE + reserve_random_channel = TRUE + use_sound_tokens = TRUE /datum/looping_sound/snowstorm mid_sounds = list( diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index f6e6685deeb6..4490390e4317 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -34,8 +34,10 @@ var/wilderness_levels = 0 /// Directory to the wilderness area we can spawn in var/wilderness_directory + /// Z-Level traits our wilderness maps will get, ice box traits by default + var/list/wilderness_z_traits = ZTRAITS_ICY_WILDS /// Index of map names (inside wilderness_directory) with the amount to spawn. ("ice_planes" = 1) for one ice spawn - var/list/maps_to_spawn = list() + var/list/wilderness_maps_to_spawn = list() ///The type of mining Z-level that should be loaded. var/minetype = MINETYPE_LAVALAND @@ -60,8 +62,12 @@ /// Boolean - if TRUE, players spawn with grappling hooks in their bags var/give_players_hooks = FALSE +#if defined(UNIT_TESTS) || defined(SPACEMAN_DMM) /// List of unit tests that are skipped when running this map var/list/skipped_tests + /// If TRUE, only unit tests with UNIT_TEST_DEBUG_MAP_ONLY will run on this map + var/is_unit_test_map = FALSE +#endif /// Boolean that tells SSmapping to load all away missions in the codebase. var/load_all_away_missions = FALSE @@ -259,8 +265,12 @@ // Just pick and take based on weight for(var/i in 1 to wilderness_levels) - maps_to_spawn += pick_weight_take(wilderness) - shuffle(maps_to_spawn) + wilderness_maps_to_spawn += pick_weight_take(wilderness) + shuffle_inplace(wilderness_maps_to_spawn) + + var/list/wilderness_level_traits = json["wilderness_level_traits"] + if (islist(wilderness_level_traits)) + wilderness_z_traits = wilderness_level_traits // DARKPACK EDIT ADD START - NPC if ("max_npcs" in json) @@ -280,6 +290,9 @@ stack_trace("Invalid path in mapping config for ignored unit tests: \[[path_as_text]\]") continue LAZYADD(skipped_tests, path_real) + + if ("is_unit_test_map" in json) + is_unit_test_map = json["is_unit_test_map"] #endif defaulted = FALSE diff --git a/code/datums/mapgen/Cavegens/IcemoonCaves.dm b/code/datums/mapgen/Cavegens/IcemoonCaves.dm index 45f429c0fe80..0025d1a65829 100644 --- a/code/datums/mapgen/Cavegens/IcemoonCaves.dm +++ b/code/datums/mapgen/Cavegens/IcemoonCaves.dm @@ -2,7 +2,7 @@ weighted_open_turf_types = list(/turf/open/misc/asteroid/snow/icemoon = 19, /turf/open/misc/ice/icemoon = 1) weighted_closed_turf_types = list( /turf/closed/mineral/random/snow = 100, - /turf/closed/mineral/gibtonite/ice/icemoon = 4, + /turf/closed/mineral/gibtonite/ice/icemoon = 2, ) weighted_mob_spawn_list = list( @@ -82,7 +82,7 @@ /datum/map_generator/cave_generator/icemoon/surface/noruins //use this for when you don't want ruins to spawn in a certain area /datum/map_generator/cave_generator/icemoon/deep - weighted_closed_turf_types = list(/turf/closed/mineral/random/snow = 1) + weighted_closed_turf_types = list(/turf/closed/mineral/random/snow/underground = 1) weighted_mob_spawn_list = list( SPAWN_MEGAFAUNA = 1, /mob/living/basic/mining/ice_demon = 100, diff --git a/code/datums/mapgen/biomes/_biome.dm b/code/datums/mapgen/biomes/_biome.dm index dc2a17563b37..cb972b5e40ef 100644 --- a/code/datums/mapgen/biomes/_biome.dm +++ b/code/datums/mapgen/biomes/_biome.dm @@ -165,12 +165,16 @@ var/picked_mob = pick(fauna_types) var/is_megafauna = FALSE + var/is_tendril = FALSE + if (picked_mob == SPAWN_MEGAFAUNA) picked_mob = pick_weight(megafauna_types) is_megafauna = TRUE + else + is_tendril = ispath(picked_mob, /mob/living/basic/mining/tendril) var/can_spawn = TRUE - if(ispath(picked_mob, /mob/living/basic/mining/tendril)) + if(is_tendril) for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_TENDRIL]) if (get_dist(spawn_turf, target_turf) <= tendril_exclusion_radius) can_spawn = FALSE @@ -200,13 +204,17 @@ if (!can_spawn) continue - if (ispath(picked_mob, /mob/living/basic/mining/tendril)) + if (is_tendril) spawn_data[CAVE_SPAWN_TENDRIL] += target_turf else if (is_megafauna) spawn_data[CAVE_SPAWN_MEGAFAUNA] += target_turf spawn_data[CAVE_SPAWN_MOB] += target_turf - new picked_mob(target_turf) + var/mob/living/created = new picked_mob(target_turf) + + if (!is_tendril && !is_megafauna) + var/obj/effect/mining_mob_respawner/respawner = new(target_turf) + respawner.setup(fauna_types, created) // There can be only one Bubblegum, so don't waste spawns on it if(ispath(picked_mob, /mob/living/simple_animal/hostile/megafauna/bubblegum)) diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 53dbaae321db..acab041be5d4 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -119,6 +119,17 @@ return grab_act(source, grabbing) +/// Signal proc for [COMSIG_MOVABLE_GRABBED_RESISTING] to modify grab stats +/datum/martial_art/proc/grabbed_resisting(mob/living/source, mob/living/grabbed, list/grab_stats) + SIGNAL_HANDLER + + if(!can_use(source)) + return + + grab_stats[GRAB_STAT_EFFECTIVE_STATE] += grab_state_modifier + grab_stats[GRAB_STAT_FAIL_DAMAGE] += grab_damage_modifier + grab_stats[GRAB_STAT_ESCAPE_CHANCE] += grab_escape_chance_modifier + /** * Called when help-intenting on someone * @@ -384,6 +395,7 @@ active = TRUE RegisterSignal(new_holder, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(unarmed_strike)) RegisterSignal(new_holder, COMSIG_LIVING_GRAB, PROC_REF(attempt_grab)) + RegisterSignal(new_holder, COMSIG_MOVABLE_GRABBED_RESISTING, PROC_REF(grabbed_resisting)) RegisterSignals(new_holder, list(COMSIG_LIVING_TABLE_SLAMMING, COMSIG_LIVING_TABLE_LIMB_SLAMMING), PROC_REF(smash_table)) if(display_combos) RegisterSignal(new_holder, COMSIG_MOB_HUD_CREATED, PROC_REF(on_hud_created)) @@ -396,7 +408,14 @@ /datum/martial_art/proc/deactivate_style(mob/living/remove_from) SHOULD_CALL_PARENT(TRUE) active = FALSE - UnregisterSignal(remove_from, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_LIVING_GRAB, COMSIG_LIVING_TABLE_SLAMMING, COMSIG_LIVING_TABLE_LIMB_SLAMMING)) + UnregisterSignal(remove_from, list( + COMSIG_LIVING_UNARMED_ATTACK, + COMSIG_LIVING_GRAB, + COMSIG_LIVING_TABLE_SLAMMING, + COMSIG_LIVING_TABLE_LIMB_SLAMMING, + COMSIG_MOVABLE_GRABBED_RESISTING, + COMSIG_MOB_HUD_CREATED, + )) remove_from.hud_used?.remove_screen_object(HUD_MOB_COMBO) ///Gives the owner of the martial art the combo HUD. diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 1578ff32152c..0a677aaa38c9 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -72,7 +72,7 @@ attacker.apply_damage(rand(5, 10), attacker.get_attack_type(), BODY_ZONE_HEAD) if(iscarbon(defender)) var/mob/living/carbon/carbon_defender = defender - if(!istype(carbon_defender.head, /obj/item/clothing/head/helmet/) && !istype(carbon_defender.head, /obj/item/clothing/head/utility/hardhat)) + if(!istype(carbon_defender.get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/helmet) && !istype(carbon_defender.get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/utility/hardhat)) carbon_defender.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5) attacker.Stun(rand(1 SECONDS, 4.5 SECONDS)) defender.Stun(rand(0.5 SECONDS, 3 SECONDS)) diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index 961f27b21047..35dc80dab951 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -5,16 +5,6 @@ The original authors are: cogwerks, pistoleer, spyguy, angriestibm, marquesas, a If you make a derivative work from this code, you must include this notification header alongside it. */ -/mob/living/proc/wrestling_help() - set name = "Recall Teachings" - set desc = "Remember how to wrestle." - set category = "Wrestling" - - to_chat(usr, "You flex your muscles and have a revelation...") - to_chat(usr, "[span_notice("Clinch")]: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") - to_chat(usr, "[span_notice("Suplex")]: Shove someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") - to_chat(usr, "[span_notice("Advanced grab")]: Grab. Passively causes stamina damage when grabbing someone.") - /datum/martial_art/wrestling name = "Wrestling" id = MARTIALART_WRESTLING diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 56c8a4807ba9..94b36ecbff0b 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -91,7 +91,7 @@ MATERIAL_ELECTRICAL = 9, MATERIAL_THERMAL = 4, MATERIAL_CHEMICAL = 4, - MATERIAL_VAMPIRES_BANE = 5, + MATERIAL_VAMPIRES_BANE = 8, ) sheet_type = /obj/item/stack/sheet/mineral/silver ore_type = /obj/item/stack/ore/silver diff --git a/code/datums/material/material_container.dm b/code/datums/materials/material_container/material_container.dm similarity index 98% rename from code/datums/material/material_container.dm rename to code/datums/materials/material_container/material_container.dm index 927765b0a818..8fc6f9f5e961 100644 --- a/code/datums/material/material_container.dm +++ b/code/datums/materials/material_container/material_container.dm @@ -222,6 +222,9 @@ var/material_amount = OPTIMAL_COST(get_item_material_amount(target) * multiplier) if(!material_amount) return MATERIAL_INSERT_ITEM_NO_MATS + if(HAS_TRAIT(weapon, TRAIT_IGNORED_BY_MAT_REDEMPTION)) + qdel(weapon) + return MATERIAL_INSERT_ITEM_NO_MATS var/obj/item/stack/item_stack if(isstack(weapon) && !has_space(material_amount)) //not enough space split and feed as many sheets possible item_stack = weapon @@ -293,10 +296,10 @@ //e.g. projectiles inside bullets are not objects if(!istype(target_item)) continue - //can't allow abstract, hologram items - if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1)) + //can't allow abstract, hologram items, or if they item is designed to be ignored by the mat container without throwing warnings and stuff (unlike NO_MAT_REDEMPTION flag). + if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1) || HAS_TRAIT(target_item, TRAIT_IGNORED_BY_MAT_REDEMPTION)) continue - //user defined conditions + //user defined conditions for the object the material container datum is attached to if(SEND_SIGNAL(src, COMSIG_MATCONTAINER_PRE_USER_INSERT, target_item, user) & MATCONTAINER_BLOCK_INSERT) continue //item is either indestructible, not allowed for redemption or not in the allowed types @@ -684,7 +687,8 @@ */ /datum/material_container/proc/retrieve_stack(stack_amt, datum/material/material, atom/target = null, atom/context = parent, alist/user_data) //do we support sheets of this material - if(!material.sheet_type) + var/type_to_retrieve = material.sheet_type || material.ore_type + if(!type_to_retrieve) return 0 //Add greyscale sheet handling here later if(!can_hold_material(material)) return 0 @@ -703,7 +707,6 @@ //eject sheets based on available amount after each iteration var/count = 0 while(stack_amt > 0) - var/type_to_retrieve = material.sheet_type || material.ore_type //don't merge yet. we need to do stuff with it first var/obj/item/stack/new_stack = new type_to_retrieve(target, min(stack_amt, MAX_STACK_SIZE), FALSE) if(istype(new_stack, /obj/item/stack/sheet)) diff --git a/code/datums/material/remote_materials.dm b/code/datums/materials/material_container/remote_materials.dm similarity index 100% rename from code/datums/material/remote_materials.dm rename to code/datums/materials/material_container/remote_materials.dm diff --git a/code/datums/materials/meat.dm b/code/datums/materials/meat.dm index 00c26c98797c..0e9d1e6d0910 100644 --- a/code/datums/materials/meat.dm +++ b/code/datums/materials/meat.dm @@ -72,7 +72,8 @@ initial_reagents = list(/datum/reagent/consumable/nutriment/protein = protein_count, /datum/reagent/consumable/nutriment/fat = fat_count), \ foodtypes = RAW | MEAT, \ eat_time = 3 SECONDS, \ - tastes = list("meat" = 1)) + tastes = list("meat" = 1),\ + handmade_complexity = /obj/item/food/meat/steak::crafting_complexity) source.AddComponent( /datum/component/bloody_spreader,\ diff --git a/code/datums/materials/pizza.dm b/code/datums/materials/pizza.dm index df77ba1d1e47..50e821fe8bbe 100644 --- a/code/datums/materials/pizza.dm +++ b/code/datums/materials/pizza.dm @@ -52,7 +52,8 @@ initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/nutriment/fat/oil = oil_count), \ foodtypes = GRAIN | DAIRY | VEGETABLES, \ eat_time = 3 SECONDS, \ - tastes = /obj/item/food/pizza/margherita::tastes) + tastes = /obj/item/food/pizza/margherita::tastes,\ + handmade_complexity = /obj/item/food/pizzaslice/margherita::crafting_complexity) /datum/material/pizza/on_removed(atom/source, mat_amount, multiplier, from_slot) . = ..() diff --git a/code/datums/materials/properties/optional.dm b/code/datums/materials/properties/optional.dm index 38d5287d3cfb..4b5d1aef83b6 100644 --- a/code/datums/materials/properties/optional.dm +++ b/code/datums/materials/properties/optional.dm @@ -120,7 +120,7 @@ if (isliving(target)) target.adjust_fire_stacks(source.get_property(id)) -/// Deals additional burn damage to vampires, property value determines damage +/// Deals additional burn damage to vampires, property value times material volume determines damage /datum/material_property/vampires_bane name = "Vampires' Bane" id = MATERIAL_VAMPIRES_BANE @@ -129,7 +129,7 @@ return "vampires' bane" /datum/material_property/vampires_bane/get_tooltip(value) - return "Deals [value] additional burn damage to vampires on contact" + return "Deals [value * 0.5] to [value * 2] additional burn damage to vampires on contact (based on material volume)" /datum/material_property/vampires_bane/attach_to(datum/material/material) . = ..() @@ -145,11 +145,20 @@ /datum/material_property/vampires_bane/proc/on_contact(datum/material/source, atom/object, mob/living/target, mob/living/user, def_zone, skin_contact) SIGNAL_HANDLER - if (!isvampire(target) || (!skin_contact && !source.get_property(MATERIAL_PENETRATING))) + if (!isvampire(target)) + return + + var/burn_damage = source.get_property(id) * clamp((object.custom_materials[source] / (2 * SHEET_MATERIAL_AMOUNT)), 0.5, 2) + var/armor_block = 0 + if(!skin_contact && !source.get_property(MATERIAL_PENETRATING)) + armor_block = target.run_armor_check(def_zone, WOUND, armour_penetration = astype(object, /obj/item)?.armour_penetration || 0, silent = TRUE, weak_against_armour = TRUE) + + if(armor_block > 50) return to_chat(target, span_userdanger("Contact with [object] sears your undead flesh!")) - target.apply_damage(source.get_property(id), BURN, def_zone, wound_bonus = 10, wound_clothing = FALSE) + playsound(target, SFX_SIZZLE, 33, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + target.apply_damage(burn_damage, BURN, def_zone, armor_block, wound_bonus = 10, attacking_item = object, attack_direction = get_dir(user, target), wound_clothing = FALSE) /// Teleports targets who come into active contact with the material around, property value determines teleport radius and damage taken per teleport /datum/material_property/teleporting diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm index 6422ee8c3d19..d277c3cffada 100644 --- a/code/datums/mind/antag.dm +++ b/code/datums/mind/antag.dm @@ -30,16 +30,20 @@ /datum/mind/proc/remove_antag_datum(datum_type) if(!datum_type) return - var/datum/antagonist/A = has_antag_datum(datum_type) - if(A) - A.on_removal() - current?.log_message("has lost antag datum [A.name]([A.type]).", LOG_GAME) - return TRUE + var/datum/antagonist/antag = has_antag_datum(datum_type) + if(isnull(antag)) + return + + antag.on_removal() + qdel(antag) + current?.log_message("has lost antag datum [antag] ([antag.type]).", LOG_GAME) + return TRUE /datum/mind/proc/remove_all_antag_datums() //For the Lazy amongst us. - for(var/a in antag_datums) - var/datum/antagonist/A = a - A.on_removal() + for(var/datum/antagonist/antag as anything in antag_datums) + antag.on_removal() + qdel(antag) + current?.log_message("has lost all antag datums.", LOG_GAME) /datum/mind/proc/has_antag_datum(datum_type, check_subtypes = TRUE) diff --git a/code/datums/mood_events/_mood_event.dm b/code/datums/mood_events/_mood_event.dm index 165753648671..31b76fae6553 100644 --- a/code/datums/mood_events/_mood_event.dm +++ b/code/datums/mood_events/_mood_event.dm @@ -97,6 +97,9 @@ mood_change *= 0.75 add_effects(arglist(mood_args)) + if(who.mind?.holy_role && GLOB.deity) + var/static/regex/god_regex = regex(@"\bgods?\b", "ig") + description = god_regex.Replace(description, "[GLOB.deity]$2") mood_change = floor(mood_change) diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 7364493f853d..e72a6446bfe1 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -230,6 +230,10 @@ timeout = 3 SECONDS hidden = TRUE +/datum/mood_event/creeping/dead + mood_change = 8 + timeout = 0 + /datum/mood_event/revolution description = "VIVA LA REVOLUTION!" mood_change = 3 @@ -303,6 +307,10 @@ timeout = 3 MINUTES event_flags = MOOD_EVENT_SPIRITUAL +/datum/mood_event/sacrifice_good/add_effects(...) + if(owner.mind?.holy_role && GLOB.deity) + description = "[GLOB.deity] is pleased with this offering!" + /datum/mood_event/artok description = "It's nice to see people are making art around here." mood_change = 2 diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 7f88a696b5ba..8398413d07a5 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -30,12 +30,16 @@ var/text_gain_indication = "" /// Message given to the user upon losing this mutation var/text_lose_indication = "" - /// Visual indicators upon the character of the owner of this mutation - var/static/list/visual_indicators = list() /// The path of action we grant to our user on mutation gain var/datum/action/cooldown/power_path + /// Optional: Icon for overlay the mutation gives the mod + var/mutation_icon = 'icons/mob/effects/genetics.dmi' + /// Optional: Icon state for the overlay the mutation gives the mob + var/mutation_icon_state = "" /// Which mutation layer to use var/layer_used = MUTATIONS_LAYER + /// Where the mutation overlay is located + var/offset_location = UPPER_BODY /// To restrict mutation to only certain species var/list/species_allowed /// Minimum health required to acquire the mutation @@ -115,7 +119,7 @@ /datum/mutation/proc/on_acquiring(mob/living/carbon/human/acquirer) if(!acquirer || !istype(acquirer) || acquirer.stat == DEAD || (src in acquirer.dna.mutations)) return FALSE - if(species_allowed && !species_allowed.Find(acquirer.dna.species.id)) + if(LAZYLEN(species_allowed) && !LAZYFIND(species_allowed, acquirer.dna.species.id)) return FALSE if(health_req && acquirer.health < health_req) return FALSE @@ -132,14 +136,11 @@ SEND_SIGNAL(src, COMSIG_MUTATION_GAINED, acquirer) if(text_gain_indication) to_chat(owner, text_gain_indication) - if(visual_indicators.len) - var/list/mut_overlay = list(get_visual_indicator()) - if(owner.overlays_standing[layer_used]) - mut_overlay = owner.overlays_standing[layer_used] - mut_overlay |= get_visual_indicator() - owner.remove_overlay(layer_used) - owner.overlays_standing[layer_used] = mut_overlay - owner.apply_overlay(layer_used) + if(LAZYLEN(species_allowed)) + RegisterSignal(owner, COMSIG_SPECIES_GAIN, PROC_REF(on_species_change)) + if(mutation_icon && mutation_icon_state) + RegisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlay)) + owner.update_appearance(UPDATE_OVERLAYS) grant_power() //we do checks here so nothing about hulk getting magic if(mutation_traits) owner.add_traits(mutation_traits, GENETIC_MUTATION) @@ -156,41 +157,27 @@ return TRUE . = FALSE SEND_SIGNAL(src, COMSIG_MUTATION_LOST, owner) + UnregisterSignal(owner, list(COMSIG_SPECIES_GAIN, COMSIG_ATOM_UPDATE_OVERLAYS)) + if(mutation_icon && mutation_icon_state) + owner.update_appearance(UPDATE_OVERLAYS) if(text_lose_indication && owner.stat != DEAD) to_chat(owner, text_lose_indication) - if(visual_indicators.len) - var/list/mut_overlay = list() - if(owner.overlays_standing[layer_used]) - mut_overlay = owner.overlays_standing[layer_used] - owner.remove_overlay(layer_used) - mut_overlay.Remove(get_visual_indicator()) - owner.overlays_standing[layer_used] = mut_overlay - owner.apply_overlay(layer_used) - if(mutation_traits) owner.remove_traits(mutation_traits, GENETIC_MUTATION) -/mob/living/carbon/proc/update_mutations_overlay() - return +/datum/mutation/proc/on_species_change(datum/source, datum/species/new_species) + SIGNAL_HANDLER -/mob/living/carbon/human/update_mutations_overlay() - for(var/datum/mutation/mutation as anything in dna.mutations) - if(mutation.species_allowed && !mutation.species_allowed.Find(dna.species.id)) - dna.remove_mutation(mutation, mutation.sources) //shouldn't have that mutation at all - continue - if(mutation.visual_indicators.len == 0) - continue - var/list/mut_overlay = list() - if(overlays_standing[mutation.layer_used]) - mut_overlay = overlays_standing[mutation.layer_used] - var/mutable_appearance/indicator_to_add = mutation.get_visual_indicator() - if(!mut_overlay.Find(indicator_to_add)) //either we lack the visual indicator or we have the wrong one - remove_overlay(mutation.layer_used) - for(var/mutable_appearance/indicator_to_remove in mutation.visual_indicators[mutation.type]) - mut_overlay.Remove(indicator_to_remove) - mut_overlay |= indicator_to_add - overlays_standing[mutation.layer_used] = mut_overlay - apply_overlay(mutation.layer_used) + if(!LAZYFIND(species_allowed, new_species.id)) + dna.remove_mutation(src, src.sources) // shouldn't have this mutation at all + +/datum/mutation/proc/on_update_overlay(datum/source, list/overlay_list) + SIGNAL_HANDLER + + var/mutable_appearance/mutation_appearance = mutable_appearance(mutation_icon, mutation_icon_state, -layer_used) + owner.apply_height(mutation_appearance, offset_location) + + overlay_list += mutation_appearance /** * Called after on_aquiring, or when a chromosome is applied. diff --git a/code/datums/mutations/adaptation.dm b/code/datums/mutations/adaptation.dm index 4228a59376cb..2abdd7fa192e 100644 --- a/code/datums/mutations/adaptation.dm +++ b/code/datums/mutations/adaptation.dm @@ -8,17 +8,11 @@ locked = TRUE // fake parent conflicts = list(/datum/mutation/adaptation) mutation_traits = list(TRAIT_WADDLING) - /// Icon used for the adaptation overlay - var/adapt_icon = "meow" + offset_location = ENTIRE_BODY /datum/mutation/adaptation/New(datum/mutation/copymut) - ..() + . = ..() conflicts = typesof(/datum/mutation/adaptation) - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', adapt_icon, -MUTATIONS_LAYER)) - -/datum/mutation/adaptation/get_visual_indicator() - return visual_indicators[type][1] /datum/mutation/adaptation/cold name = "Cold Adaptation" @@ -26,7 +20,7 @@ text_gain_indication = span_notice("Your body feels refreshingly cold.") instability = POSITIVE_INSTABILITY_MODERATE mutation_traits = list(TRAIT_RESISTCOLD, TRAIT_NO_SLIP_ICE) - adapt_icon = "cold" + mutation_icon_state = "cold" locked = FALSE /datum/mutation/adaptation/heat @@ -35,7 +29,7 @@ text_gain_indication = span_notice("Your body feels invigoratingly warm.") instability = POSITIVE_INSTABILITY_MODERATE mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_ASHSTORM_IMMUNE) - adapt_icon = "fire" + mutation_icon_state = "fire" locked = FALSE /datum/mutation/adaptation/thermal @@ -45,7 +39,7 @@ text_gain_indication = span_notice("Your body feels pleasantly room temperature.") instability = POSITIVE_INSTABILITY_MAJOR mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD) - adapt_icon = "thermal" + mutation_icon_state = "thermal" locked = TRUE // recipe /datum/mutation/adaptation/pressure @@ -53,6 +47,6 @@ desc = "A strange mutation that renders the host immune to damage from both low and high pressure environments. Does not protect from temperature, including the cold of space." text_gain_indication = span_notice("Your body feels impressively pressurized.") instability = POSITIVE_INSTABILITY_MODERATE - adapt_icon = "pressure" + mutation_icon_state = "pressure" mutation_traits = list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE) locked = FALSE diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index f38a03f933ab..ce494bb37534 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -6,6 +6,8 @@ text_lose_indication = span_notice("Your antenna shrinks back down.") instability = POSITIVE_INSTABILITY_MINOR difficulty = 8 + mutation_icon_state = "antenna" + layer_used = FRONT_MUTATIONS_LAYER var/datum/weakref/radio_weakref /obj/item/implant/radio/antenna @@ -33,14 +35,6 @@ if(linked_radio) QDEL_NULL(linked_radio) -/datum/mutation/antenna/New(datum/mutation/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))//-MUTATIONS_LAYER+1 - -/datum/mutation/antenna/get_visual_indicator() - return visual_indicators[type][1] - /datum/mutation/mindreader name = "Mind Reader" desc = "The affected person can look into the recent memories of others." @@ -51,6 +45,8 @@ instability = POSITIVE_INSTABILITY_MINOR difficulty = 8 locked = TRUE + mutation_icon_state = "antenna" + layer_used = FRONT_MUTATIONS_LAYER /datum/action/cooldown/spell/pointed/mindread name = "Mindread" @@ -174,11 +170,3 @@ log_info += "Current thought: \"[read_text]\"" log_combat(examiner, examined, "mind read (triggered on examine)", null, "info: [english_list(log_info, and_text = ", ")]") - -/datum/mutation/mindreader/New(datum/mutation/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1)) - -/datum/mutation/mindreader/get_visual_indicator() - return visual_indicators[type][1] diff --git a/code/datums/mutations/farsight.dm b/code/datums/mutations/farsight.dm index d246264bd127..b95801a480a2 100644 --- a/code/datums/mutations/farsight.dm +++ b/code/datums/mutations/farsight.dm @@ -57,6 +57,9 @@ cooldown_time *= 0.5 build_all_button_icons(UPDATE_BUTTON_STATUS) +/datum/action/cooldown/spell/farsight/get_caster_from_target(atom/target) + return target // This ability only effect's the caster's client, no reason to try and fail to effect the closet or mech we're inside. + /datum/action/cooldown/spell/farsight/is_action_active(atom/movable/screen/movable/action_button/current_button) return active diff --git a/code/datums/mutations/olfaction.dm b/code/datums/mutations/olfaction.dm index c9b6043872b0..fda296fe0e13 100644 --- a/code/datums/mutations/olfaction.dm +++ b/code/datums/mutations/olfaction.dm @@ -50,9 +50,8 @@ . = ..() // Can we sniff? is there miasma in the air? var/datum/gas_mixture/air = cast_on.loc.return_air() - var/list/cached_gases = air.gases - if(cached_gases[/datum/gas/miasma]) + if(air.moles[/datum/gas/miasma]) cast_on.adjust_disgust(sensitivity * 45) to_chat(cast_on, span_warning("With your overly sensitive nose, \ you get a whiff of stench and feel sick! Try moving to a cleaner area!")) diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index d31b3393fce5..f784e7ce39c3 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -6,17 +6,11 @@ instability = NEGATIVE_STABILITY_MAJOR difficulty = 8 power_coeff = 1 + mutation_icon_state = "radiation" + offset_location = ENTIRE_BODY /// Weakref to our radiation emitter component var/datum/weakref/radioactivity_source_ref -/datum/mutation/radioactive/New(datum/mutation/copymut) - . = ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "radiation", -MUTATIONS_LAYER)) - -/datum/mutation/radioactive/get_visual_indicator() - return visual_indicators[type][1] - /datum/mutation/radioactive/on_acquiring(mob/living/carbon/human/acquirer) . = ..() if(!.) diff --git a/code/datums/mutations/reach.dm b/code/datums/mutations/reach.dm index 24f2d5d37e85..2c93ec8e92c8 100644 --- a/code/datums/mutations/reach.dm +++ b/code/datums/mutations/reach.dm @@ -7,14 +7,10 @@ text_gain_indication = span_notice("You feel smarter!") limb_req = BODY_ZONE_HEAD instability = POSITIVE_INSTABILITY_MAJOR + mutation_icon_state = "telekinesishead" ///Typecache of atoms that TK shouldn't interact with var/static/list/blacklisted_atoms = typecacheof(list(/atom/movable/screen)) -/datum/mutation/telekinesis/New(datum/mutation/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)) - /datum/mutation/telekinesis/on_acquiring(mob/living/carbon/human/homan) . = ..() if(!.) @@ -27,9 +23,6 @@ return UnregisterSignal(homan, COMSIG_MOB_ATTACK_RANGED) -/datum/mutation/telekinesis/get_visual_indicator() - return visual_indicators[type][1] - ///Triggers on COMSIG_MOB_ATTACK_RANGED. Usually handles stuff like picking up items at range. /datum/mutation/telekinesis/proc/on_ranged_attack(mob/source, atom/target) SIGNAL_HANDLER diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index 24449177a51d..26f85ed0d2ca 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -141,11 +141,7 @@ text_gain_indication = span_notice("You feel pressure building up behind your eyes.") layer_used = FRONT_MUTATIONS_LAYER limb_req = BODY_ZONE_HEAD - -/datum/mutation/laser_eyes/New(datum/mutation/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "lasereyes", -FRONT_MUTATIONS_LAYER)) + mutation_icon_state = "lasereyes" /datum/mutation/laser_eyes/on_acquiring(mob/living/carbon/human/H) . = ..() @@ -159,9 +155,6 @@ return UnregisterSignal(H, COMSIG_MOB_ATTACK_RANGED) -/datum/mutation/laser_eyes/get_visual_indicator() - return visual_indicators[type][1] - ///Triggers on COMSIG_MOB_ATTACK_RANGED. Does the projectile shooting. /datum/mutation/laser_eyes/proc/on_ranged_attack(mob/living/carbon/human/source, atom/target, modifiers) SIGNAL_HANDLER diff --git a/code/datums/proximity_monitor/fields/heretic_arena.dm b/code/datums/proximity_monitor/fields/heretic_arena.dm index 432a9dfbd7bb..3f81dd0c58ee 100644 --- a/code/datums/proximity_monitor/fields/heretic_arena.dm +++ b/code/datums/proximity_monitor/fields/heretic_arena.dm @@ -156,6 +156,11 @@ GLOBAL_LIST_EMPTY(heretic_arenas) owner.cut_overlay(crown_overlay) crown_overlay = mutable_appearance('icons/mob/effects/crown.dmi', "arena_victor", -HALO_LAYER) crown_overlay.pixel_z = 24 + if(ishuman(owner)) + var/mob/living/carbon/human/human_parent = owner + human_parent.apply_height(crown_overlay, UPPER_BODY) + var/obj/item/bodypart/head/human_head = human_parent.get_bodypart(BODY_ZONE_HEAD) + human_head?.worn_head_offset?.apply_offset(crown_overlay) owner.add_overlay(crown_overlay) owner.remove_traits(list(TRAIT_ELDRITCH_ARENA_PARTICIPANT, TRAIT_NO_TELEPORT), TRAIT_STATUS_EFFECT(id)) @@ -203,6 +208,11 @@ GLOBAL_LIST_EMPTY(heretic_arenas) owner.add_traits(list(TRAIT_ELDRITCH_ARENA_PARTICIPANT, TRAIT_NO_TELEPORT), TRAIT_STATUS_EFFECT(id)) crown_overlay = mutable_appearance('icons/mob/effects/crown.dmi', "arena_fighter", -HALO_LAYER) crown_overlay.pixel_z = 24 + if(ishuman(owner)) + var/mob/living/carbon/human/human_parent = owner + human_parent.apply_height(crown_overlay, UPPER_BODY) + var/obj/item/bodypart/head/human_head = human_parent.get_bodypart(BODY_ZONE_HEAD) + human_head?.worn_head_offset?.apply_offset(crown_overlay) owner.add_overlay(crown_overlay) return TRUE diff --git a/code/datums/proximity_monitor/proximity_monitor.dm b/code/datums/proximity_monitor/proximity_monitor.dm index ec77ce2145a1..f5e63733765f 100644 --- a/code/datums/proximity_monitor/proximity_monitor.dm +++ b/code/datums/proximity_monitor/proximity_monitor.dm @@ -74,9 +74,10 @@ //Update the ignore_if_not_on_turf AddComponent(/datum/component/connect_range, host, loc_connections, current_range, ignore_if_not_on_turf) -/datum/proximity_monitor/proc/on_uncrossed() +/datum/proximity_monitor/proc/on_uncrossed(atom/source, atom/movable/gone, direction) //Used by the advanced subtype for effect fields. SIGNAL_HANDLER - return //Used by the advanced subtype for effect fields. + if(source != host) + hasprox_receiver?.OnProximityExit(gone) /datum/proximity_monitor/proc/on_entered(atom/source, atom/movable/arrived, turf/old_loc) SIGNAL_HANDLER diff --git a/code/datums/quirks/negative_quirks/blood_deficiency.dm b/code/datums/quirks/negative_quirks/blood_deficiency.dm index 21ba3434d7c2..699b9ff139d8 100644 --- a/code/datums/quirks/negative_quirks/blood_deficiency.dm +++ b/code/datums/quirks/negative_quirks/blood_deficiency.dm @@ -9,7 +9,7 @@ hardcore_value = 8 mail_goodies = list(/obj/item/reagent_containers/blood/o_minus) // universal blood type that is safe for all /// Minimum amount of blood the paint is set to - var/min_blood = BLOOD_VOLUME_SAFE - 25 // just barely survivable without treatment + var/min_blood = BLOOD_VOLUME_SAFE + 1 // just barely survivable without treatment /datum/quirk/blooddeficiency/add(client/client_source) RegisterSignal(quirk_holder, COMSIG_HUMAN_ON_HANDLE_BLOOD, PROC_REF(lose_blood)) diff --git a/code/datums/quirks/negative_quirks/brain_problems.dm b/code/datums/quirks/negative_quirks/brain_problems.dm index d9257a33c6b4..bd75265eff56 100644 --- a/code/datums/quirks/negative_quirks/brain_problems.dm +++ b/code/datums/quirks/negative_quirks/brain_problems.dm @@ -15,10 +15,14 @@ quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES mail_goodies = list(/obj/item/storage/pill_bottle/mannitol/braintumor) no_process_traits = list(TRAIT_TUMOR_SUPPRESSED) + /// Speed at which our brain will get damaged, per second + var/degradation_speed = 0.2 + /// Type of item we get in our pocket to help with the quirk after joining + var/obj/item/medicine_to_get = /obj/item/storage/pill_bottle/mannitol/braintumor /datum/quirk/item_quirk/brainproblems/add_unique(client/client_source) give_item_to_holder( - /obj/item/storage/pill_bottle/mannitol/braintumor, + medicine_to_get, list( LOCATION_LPOCKET, LOCATION_RPOCKET, @@ -35,4 +39,4 @@ return ..() /datum/quirk/item_quirk/brainproblems/process(seconds_per_tick) - quirk_holder.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.2 * seconds_per_tick) + quirk_holder.adjust_organ_loss(ORGAN_SLOT_BRAIN, degradation_speed * seconds_per_tick) diff --git a/code/datums/quirks/negative_quirks/csl.dm b/code/datums/quirks/negative_quirks/csl.dm index 68a8f58be68b..752a7d2dc312 100644 --- a/code/datums/quirks/negative_quirks/csl.dm +++ b/code/datums/quirks/negative_quirks/csl.dm @@ -10,13 +10,14 @@ lose_text = span_notice("Common starts to click for you.") medical_record_text = "Patient is CSL." /// What language typepath is our primary language? - var/native_language + VAR_PRIVATE/native_language /datum/quirk/csl/add(client/client_source) - if(iscarbon(quirk_holder)) - quirk_holder.remove_language(/datum/language/common, UNDERSTOOD_LANGUAGE, LANGUAGE_SPECIES) - else - quirk_holder.remove_language(/datum/language/common, UNDERSTOOD_LANGUAGE, LANGUAGE_ATOM) + quirk_holder.remove_language(/datum/language/common, UNDERSTOOD_LANGUAGE, LANGUAGE_SPECIES) + quirk_holder.remove_language(/datum/language/common, UNDERSTOOD_LANGUAGE, LANGUAGE_ATOM) + if(length(quirk_holder.get_understood_languages()) < 1) + quirk_holder.grant_language(/datum/language/uncommon, SPOKEN_LANGUAGE|UNDERSTOOD_LANGUAGE, LANGUAGE_QUIRK) + quirk_holder.grant_partial_language(/datum/language/common, text2num(client_source?.prefs?.read_preference(/datum/preference/choiced/csl_strength)) || 90, type) RegisterSignal(quirk_holder, COMSIG_SPECIES_GAIN, PROC_REF(reremove_common)) RegisterSignal(quirk_holder, COMSIG_MOB_SAY, PROC_REF(translate_parts)) @@ -30,6 +31,7 @@ return quirk_holder.remove_partial_language(/datum/language/common, type) + quirk_holder.remove_language(/datum/language/uncommon, SPOKEN_LANGUAGE|UNDERSTOOD_LANGUAGE, LANGUAGE_QUIRK) var/mob/living/carbon/carbon_quirk_holder = quirk_holder if(istype(carbon_quirk_holder) && carbon_quirk_holder.dna.species) // only give back common if they're a species that should speak it @@ -78,10 +80,9 @@ if(say_args[SPEECH_FORCED] || isnull(native_language) || quirk_holder.mob_mood?.sanity > 75) return - // init this list if nothing else has - LAZYINITLIST(say_args[SPEECH_MODS][LANGUAGE_MUTUAL_BONUS]) // force speak language, add mutual bonuses so everyone else can understand say_args[SPEECH_LANGUAGE] = native_language + say_args[SPEECH_MODS][LANGUAGE_MUTUAL_BONUS] ||= list() say_args[SPEECH_MODS][LANGUAGE_MUTUAL_BONUS][native_language] = max(round(8 * sqrt(quirk_holder.mob_mood?.sanity), 5), say_args[SPEECH_MODS][LANGUAGE_MUTUAL_BONUS][native_language]) /datum/quirk_constant_data/csl diff --git a/code/datums/quirks/negative_quirks/cursed.dm b/code/datums/quirks/negative_quirks/cursed.dm index f58d31be28e4..6063d15dccb9 100644 --- a/code/datums/quirks/negative_quirks/cursed.dm +++ b/code/datums/quirks/negative_quirks/cursed.dm @@ -10,4 +10,25 @@ hardcore_value = 8 /datum/quirk/cursed/add(client/client_source) - quirk_holder.AddComponent(/datum/component/omen/quirk) + quirk_holder.AddComponent( \ + /datum/component/omen, \ + incidents_left = INFINITY, \ + luck_mod = 0.3, \ + damage_mod = 0.25, \ + bless_fixable = FALSE, \ + on_death = CALLBACK(src, PROC_REF(on_death)), \ + ) + +/datum/quirk/cursed/proc/on_death(datum/component/omen/omen) + var/mob/living/carbon/cursed = omen.parent + if(!iscarbon(cursed)) + cursed.gib(DROP_ALL_REMAINS) + return + + // Don't explode if buckled to a stasis bed + if(istype(cursed.buckled, /obj/machinery/stasis)) + return + + omen.death_explode(cursed) + cursed.spread_bodyparts() + cursed.spawn_gibs() diff --git a/code/datums/quirks/positive_quirks/spacer.dm b/code/datums/quirks/positive_quirks/spacer.dm index 7c07aaffd6f8..a26e949c2991 100644 --- a/code/datums/quirks/positive_quirks/spacer.dm +++ b/code/datums/quirks/positive_quirks/spacer.dm @@ -37,6 +37,8 @@ /datum/quirk/spacer_born/add(client/client_source) if(isdummy(quirk_holder)) + var/mob/living/carbon/human/dummy_quirker = quirk_holder + dummy_quirker.set_mob_height(modded_height) return // Using Z moved because we don't urgently need to check on every single turf movement for planetary status. diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm index 0bf5985a4a84..bbdea8b4026e 100644 --- a/code/datums/records/manifest.dm +++ b/code/datums/records/manifest.dm @@ -232,7 +232,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) if(open_slots < 1) continue open += open_slots - positions[department.department_name] = list("exceptions" = exceptions, "open" = open) + positions[department.department_name] = list("exceptions" = exceptions, "open" = open, "color" = department.ui_color) return list( "manifest" = get_manifest(), diff --git a/code/datums/shuttles/arrival.dm b/code/datums/shuttles/arrival.dm index 38cb67fa1d79..b020295b5fb2 100644 --- a/code/datums/shuttles/arrival.dm +++ b/code/datums/shuttles/arrival.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/arrival port_id = "arrival" + prefix = "_maps/shuttles/arrival/" who_can_purchase = null /datum/map_template/shuttle/arrival/box diff --git a/code/datums/shuttles/aux_base.dm b/code/datums/shuttles/aux_base.dm index c377e278b906..1f6600456bd1 100644 --- a/code/datums/shuttles/aux_base.dm +++ b/code/datums/shuttles/aux_base.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/aux_base port_id = "aux_base" + prefix = "_maps/shuttles/aux_base/" who_can_purchase = null /datum/map_template/shuttle/aux_base/default diff --git a/code/datums/shuttles/cargo.dm b/code/datums/shuttles/cargo.dm index b3fadeaaa75b..ba0e1bfd223f 100644 --- a/code/datums/shuttles/cargo.dm +++ b/code/datums/shuttles/cargo.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/cargo port_id = "cargo" + prefix = "_maps/shuttles/cargo/" name = "Base Shuttle Template (Cargo)" who_can_purchase = null diff --git a/code/datums/shuttles/emergency.dm b/code/datums/shuttles/emergency.dm index 6197afc9a3f8..aeb896e54dea 100644 --- a/code/datums/shuttles/emergency.dm +++ b/code/datums/shuttles/emergency.dm @@ -3,6 +3,7 @@ /datum/map_template/shuttle/emergency port_id = "emergency" name = "Base Shuttle Template (Emergency)" + prefix = "_maps/shuttles/emergency/" ///assoc list of shuttle events to add to this shuttle on spawn (typepath = weight) var/list/events ///pick all events instead of random diff --git a/code/datums/shuttles/escape_pod.dm b/code/datums/shuttles/escape_pod.dm index 0b2f35dd9dd4..250e08415409 100644 --- a/code/datums/shuttles/escape_pod.dm +++ b/code/datums/shuttles/escape_pod.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/escape_pod port_id = "escape_pod" + prefix = "_maps/shuttles/escape_pod/" who_can_purchase = null /datum/map_template/shuttle/escape_pod/default diff --git a/code/datums/shuttles/ferry.dm b/code/datums/shuttles/ferry.dm index f9c5841abf32..aa874f1b19be 100644 --- a/code/datums/shuttles/ferry.dm +++ b/code/datums/shuttles/ferry.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/ferry port_id = "ferry" + prefix = "_maps/shuttles/ferry/" name = "Base Shuttle Template (Ferry)" /datum/map_template/shuttle/ferry/base diff --git a/code/datums/shuttles/hunter.dm b/code/datums/shuttles/hunter.dm index ade978c937e0..140388398ea2 100644 --- a/code/datums/shuttles/hunter.dm +++ b/code/datums/shuttles/hunter.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/hunter port_id = "hunter" + prefix = "_maps/shuttles/hunter/" who_can_purchase = null /datum/map_template/shuttle/hunter/space_cop diff --git a/code/datums/shuttles/infiltrator.dm b/code/datums/shuttles/infiltrator.dm index 414dcb5129fe..a892736048b5 100644 --- a/code/datums/shuttles/infiltrator.dm +++ b/code/datums/shuttles/infiltrator.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/infiltrator port_id = "infiltrator" + prefix = "_maps/shuttles/infiltrator/" who_can_purchase = null /datum/map_template/shuttle/infiltrator/basic diff --git a/code/datums/shuttles/labour.dm b/code/datums/shuttles/labour.dm new file mode 100644 index 000000000000..e8bbdecaeba2 --- /dev/null +++ b/code/datums/shuttles/labour.dm @@ -0,0 +1,24 @@ +/datum/map_template/shuttle/labour + port_id = "labour" + prefix = "_maps/shuttles/labour/" + who_can_purchase = null + +/datum/map_template/shuttle/labour/box + suffix = "box" + name = "labour shuttle (Box)" + +/datum/map_template/shuttle/labour/generic + suffix = "generic" + name = "labour shuttle (Generic)" + +/datum/map_template/shuttle/labour/delta + suffix = "delta" + name = "labour shuttle (Delta)" + +/datum/map_template/shuttle/labour/kilo + suffix = "kilo" + name = "labour shuttle (Kilo)" + +/datum/map_template/shuttle/labour/nebula + suffix = "nebula" + name = "labour shuttle (Nebula)" diff --git a/code/datums/shuttles/mining.dm b/code/datums/shuttles/mining.dm index 21747a488e32..276797b5f524 100644 --- a/code/datums/shuttles/mining.dm +++ b/code/datums/shuttles/mining.dm @@ -1,31 +1,7 @@ -// LABOUR SHUTTLES -/datum/map_template/shuttle/labour - port_id = "labour" - who_can_purchase = null - -/datum/map_template/shuttle/labour/box - suffix = "box" - name = "labour shuttle (Box)" - -/datum/map_template/shuttle/labour/generic - suffix = "generic" - name = "labour shuttle (Generic)" - -/datum/map_template/shuttle/labour/delta - suffix = "delta" - name = "labour shuttle (Delta)" - -/datum/map_template/shuttle/labour/kilo - suffix = "kilo" - name = "labour shuttle (Kilo)" - -/datum/map_template/shuttle/labour/nebula - suffix = "nebula" - name = "labour shuttle (Nebula)" - // MINING SHUTTLES /datum/map_template/shuttle/mining port_id = "mining" + prefix = "_maps/shuttles/mining/" who_can_purchase = null /datum/map_template/shuttle/mining/box @@ -55,6 +31,7 @@ // MINING COMMON SHUTTLES /datum/map_template/shuttle/mining_common port_id = "mining_common" + prefix = "_maps/shuttles/mining/" who_can_purchase = null /datum/map_template/shuttle/mining_common/meta diff --git a/code/datums/shuttles/pirate.dm b/code/datums/shuttles/pirate.dm index 99f866d23fc6..62c6e97f37a6 100644 --- a/code/datums/shuttles/pirate.dm +++ b/code/datums/shuttles/pirate.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/pirate port_id = "pirate" + prefix = "_maps/shuttles/pirate/" who_can_purchase = null /datum/map_template/shuttle/pirate/default diff --git a/code/datums/shuttles/ruin.dm b/code/datums/shuttles/ruin.dm index 511e2d6ecdc8..1163909458db 100644 --- a/code/datums/shuttles/ruin.dm +++ b/code/datums/shuttles/ruin.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/ruin port_id = "ruin" + prefix = "_maps/shuttles/ruin/" who_can_purchase = null /datum/map_template/shuttle/ruin/cyborg_mothership diff --git a/code/datums/shuttles/starfury.dm b/code/datums/shuttles/starfury.dm index 510033d64369..85bf00b97c91 100644 --- a/code/datums/shuttles/starfury.dm +++ b/code/datums/shuttles/starfury.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/starfury port_id = "starfury" + prefix = "_maps/shuttles/starfury/" who_can_purchase = null /datum/map_template/shuttle/starfury/fighter_one diff --git a/code/datums/shuttles/whiteship.dm b/code/datums/shuttles/whiteship.dm index b8dbcfd4bd76..86743a25afc8 100644 --- a/code/datums/shuttles/whiteship.dm +++ b/code/datums/shuttles/whiteship.dm @@ -1,5 +1,6 @@ /datum/map_template/shuttle/whiteship port_id = "whiteship" + prefix = "_maps/shuttles/whiteship/" /datum/map_template/shuttle/whiteship/box suffix = "box" diff --git a/code/datums/sound_token.dm b/code/datums/sound_token.dm index 93fdfb8213bb..036d45f7fbeb 100644 --- a/code/datums/sound_token.dm +++ b/code/datums/sound_token.dm @@ -6,7 +6,8 @@ var/atom/source /// k:v list of mob : sound status var/list/listeners = list() - + ///k:v list of mobs : bool. Used to quickly check whether a mob is allowed to hear this noise. This is null by default which means ANY MOB can hear this. + var/list/allowed_listeners /// Sound maximum range var/range /// Sound volume @@ -29,10 +30,14 @@ var/start_time /// Duration of the current sound file in deciseconds. Used to wrap offset for looping sounds. var/sound_duration + /// Duration of the current sound file in deciseconds. Used to wrap offset for looping sounds. + var/sound_duration_override /// Cell tracker managing spatial grid cells within range of the source. The wizards say this is the fastest. var/datum/cell_tracker/cell_tracker + ///Should we destroy the datum when the sound is done? + var/delete_on_end = FALSE -/datum/sound_token/New(atom/_source, _sound, _range = 10, _volume = 50, _falloff_exponent = SOUND_FALLOFF_EXPONENT, _falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE) +/datum/sound_token/New(atom/_source, _sound, _range = 10, _volume = 50, _falloff_exponent = SOUND_FALLOFF_EXPONENT, _falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, _allowed_listeners, _sound_duration_override, _delete_on_end) source = _source RegisterSignal(source, COMSIG_QDELETING, PROC_REF(source_deleted)) RegisterSignal(source, COMSIG_MOVABLE_MOVED, PROC_REF(source_moved)) @@ -42,6 +47,13 @@ volume = _volume falloff_exponent = _falloff_exponent falloff_distance = _falloff_distance + sound_duration_override = _sound_duration_override + if(_delete_on_end) + delete_on_end = _delete_on_end + + if(_allowed_listeners) + for(var/allowed_mob in _allowed_listeners) + allowed_listeners[allowed_mob] = TRUE update_sound(_sound) @@ -53,6 +65,7 @@ RegisterSignal(SSdcs, COMSIG_GLOB_PLAYER_LOGIN, PROC_REF(player_login)) RegisterSignal(SSdcs, COMSIG_GLOB_PLAYER_LOGOUT, PROC_REF(player_logout)) + /datum/sound_token/Destroy(force, ...) for(var/listener in listeners) remove_listener(listener) @@ -67,29 +80,37 @@ if(!sound_channel) sound_channel = SSsounds.reserve_sound_channel_for_datum(src) sound.channel = sound_channel - sound_duration = SSsounds.get_sound_length(_sound) + sound_duration = sound_duration_override || SSsounds.get_sound_length(_sound) start_time = REALTIMEOFDAY if(start_playing) force_update_all_listeners(FALSE) + if(delete_on_end) + addtimer(CALLBACK(src, PROC_REF(on_sound_ended)), sound_duration, TIMER_UNIQUE | TIMER_OVERRIDE) + /// Updates the data of a listener, or adds them if they are not present. /datum/sound_token/proc/add_or_update_listener(mob/listener_mob) if(isnull(listeners[listener_mob])) - add_listener(listener_mob) + if(!add_listener(listener_mob)) + return FALSE else update_listener(listener_mob) -/// Adds a listener to the sound. +/// Adds a listener to the sound. returns TRUE if we already were added, or for some reason couldnt be added. /datum/sound_token/proc/add_listener(mob/listener_mob) if(!isnull(listeners[listener_mob])) - return FALSE + return TRUE if(!listener_mob.client || isnewplayer(listener_mob)) - return + return FALSE + + if(allowed_listeners && !allowed_listeners[listener_mob]) + return FALSE listeners[listener_mob] = NONE - listener_mob.client.sound_tokens += src - RegisterSignal(listener_mob, COMSIG_QDELETING, PROC_REF(listener_deleted)) + LAZYOR(listener_mob.sound_tokens, src) + if(source != listener_mob) //this is possible...yea... :/ + RegisterSignal(listener_mob, COMSIG_QDELETING, PROC_REF(listener_deleted)) RegisterSignals(listener_mob, list(SIGNAL_ADDTRAIT(TRAIT_DEAF), SIGNAL_REMOVETRAIT(TRAIT_DEAF)), PROC_REF(listener_deafness_update)) update_listener(listener_mob, FALSE) return TRUE @@ -98,9 +119,7 @@ /datum/sound_token/proc/remove_listener(mob/listener_mob) listeners -= listener_mob - - if(listener_mob.client) - listener_mob.client.sound_tokens -= src + LAZYREMOVE(listener_mob.sound_tokens, src) UnregisterSignal(listener_mob, list(COMSIG_QDELETING, SIGNAL_ADDTRAIT(TRAIT_DEAF),SIGNAL_REMOVETRAIT(TRAIT_DEAF))) SEND_SOUND(listener_mob, null_sound) @@ -139,7 +158,7 @@ /datum/sound_token/proc/send_listener_sound(mob/listener_mob, update_sound) PRIVATE_PROC(TRUE) - sound.status = SOUND_STREAM|sound_status|listeners[listener_mob] + sound.status = sound_status|listeners[listener_mob] if(update_sound) sound.status |= SOUND_UPDATE else @@ -282,3 +301,7 @@ if(!still_in_range) remove_listener(listener_mob) + +///The sound should have ended on all clients. Time to destroy the sound token. +/datum/sound_token/proc/on_sound_ended() + qdel(src) diff --git a/code/datums/sprite_accessories.dm b/code/datums/sprite_accessories.dm deleted file mode 100644 index b89da65d5ebf..000000000000 --- a/code/datums/sprite_accessories.dm +++ /dev/null @@ -1,2702 +0,0 @@ -/* - * Hello and welcome to sprite_accessories: For sprite accessories, such as hair, - * facial hair, and possibly tattoos and stuff somewhere along the line. This file is - * intended to be friendly for people with little to no actual coding experience. - * The process of adding in new hairstyles has been made pain-free and easy to do. - * Enjoy! - Doohl - * - * - * Notice: This all gets automatically compiled in a list in dna.dm, so you do not - * have to define any UI values for sprite accessories manually for hair and facial - * hair. Just add in new hair types and the game will naturally adapt. - * - * !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles, - * to the point where you may completely corrupt a server's savefiles. Please refrain - * from doing this unless you absolutely know what you are doing, and have defined a - * conversion in savefile.dm - */ - -/datum/sprite_accessory - /// The icon file the accessory is located in. - var/icon - /// The icon_state of the accessory. - var/icon_state - /// The preview name of the accessory. - var/name - /// Determines if the accessory will be skipped or included in random hair generations. - var/gender = NEUTER - /// Something that can be worn by either gender, but looks different on each. - var/gender_specific = FALSE - /// Determines if the accessory will be skipped by color preferences. - var/use_static - /** - * Currently only used by mutantparts so don't worry about hair and stuff. - * This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. - */ - var/color_src = MUTANT_COLOR - /// Is this part locked from roundstart selection? Used for parts that apply effects. - var/locked = FALSE - /// Should we center the sprite? - var/center = FALSE - /// The width of the sprite in pixels. Used to center it if necessary. - var/dimension_x = 32 - /// The height of the sprite in pixels. Used to center it if necessary. - var/dimension_y = 32 - /// Should this sprite block emissives? - var/em_block = FALSE - /// Determines if this is considered "sane" for the purpose of [/proc/randomize_human_normie] - /// Basically this is to blacklist the extremely wacky stuff from being picked in random human generation. - var/natural_spawn = TRUE - -/datum/sprite_accessory/blank - name = SPRITE_ACCESSORY_NONE - icon_state = SPRITE_ACCESSORY_NONE - -//////////////// -// Hair Masks // -//////////////// - -/datum/hair_mask - var/icon/icon = 'icons/mob/human/hair_masks.dmi' - var/icon_state = "" - /// Strict coverage zones will always have the hair mask applied to them, even if a piece of hair at that location would normally resist being masked. - /// If a piece of headware only covers the top of the head, it should only strictly cover the top zone. But a mostly-enclosed helmet might strictly cover almost all zones. - var/strict_coverage_zones = NONE - -/datum/hair_mask/standard_hat_middle - icon_state = "hide_above_45deg" - strict_coverage_zones = HAIR_APPENDAGE_TOP - -/datum/hair_mask/standard_hat_low - icon_state = "hide_above_45deg_low" - strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR - -/datum/hair_mask/winterhood - icon_state = "hide_winterhood" - strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR - -/datum/hair_mask/hoodie - icon_state = "hide_hoodie" - strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR - -////////////////////// -// Hair Definitions // -////////////////////// -// Cache of each hairstyle's icon after being blended with the given masks -// "joined mask types" is each mask's type as a string joined by commas (for no masks, it is the empty string) -// /datum/sprite_accessory/hair path -> list(joined mask types -> icon) -GLOBAL_LIST_EMPTY(blended_hair_icons_cache) - -/datum/sprite_accessory/hair - icon = 'icons/mob/human/human_face.dmi' // default icon for all hairs - var/y_offset = 0 // Y offset to apply so we can have hair that reaches above the player sprite's visual bounding box - - // Some hair will have "appendages", such as pony tails, that stick out from certain parts of the head. These can be layered above or below headwear and resist being masked away by hair masks. - // Lists should be icon_state strings associated with the HAIR_APPENDAGE defines specifying the part of the head they stick out from. - // hair_appendages_inner contains icon_states that go in the normal hair layer, hair_appendages_outer contains icon_states that go above the layer for headwear. - // hair_appendages_inner will be masked normally if their HAIR_APPENDAGE zone is strictly masked by a piece of clothing (a fully enclosed helmet with a transparent visor will strictly mask all zones, a small hat will only strictly mask the top, etc.). - // hair_appendages_outer will never be masked at all and will just not be shown if their zone has strict masking. These should generally not have visible sprites for every dir. - var/list/hair_appendages_inner = null - var/list/hair_appendages_outer = null - -/// Retrieve the base hair icon with all hair appendeges blended in, with hair masks applied, from the cache, or generate it if it doesn't exist -/datum/sprite_accessory/hair/proc/getCachedIcon(list/hair_masks) - var/icon/cachedIcon - var/joinedMasks = LAZYLEN(hair_masks) ? jointext(hair_masks, ",") : "" - var/list/masks_to_icons = GLOB.blended_hair_icons_cache[type] - if(!masks_to_icons) - GLOB.blended_hair_icons_cache[type] = list() - else - cachedIcon = masks_to_icons[joinedMasks] - - if(!cachedIcon) - if(LAZYLEN(hair_masks)) - if(LAZYLEN(hair_appendages_inner)) - // Check if there are any hair appendages in a zone that is not strictly masked - var/found_mask_dodger = FALSE - for(var/datum/hair_mask/mask as anything in hair_masks) - for(var/appendage in hair_appendages_inner) - var/zone = hair_appendages_inner[appendage] - if(!(zone & mask.strict_coverage_zones)) - found_mask_dodger = TRUE - - if(found_mask_dodger) - // We have to process each icon individually - cachedIcon = icon(icon, icon_state) - // mask the base icon - for(var/datum/hair_mask/mask as anything in hair_masks) - var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) - mask_icon.Shift(SOUTH, y_offset) - cachedIcon.Blend(mask_icon, ICON_ADD) - - // mask the appendages if required and add them to the base icon - for(var/appendage_icon_state in hair_appendages_inner) - var/icon/appendage_icon = icon(icon, appendage_icon_state) - var/zone = hair_appendages_inner[appendage_icon_state] - for(var/datum/hair_mask/mask as anything in hair_masks) - if(zone & mask.strict_coverage_zones) - var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) - mask_icon.Shift(SOUTH, y_offset) - appendage_icon.Blend(mask_icon, ICON_ADD) - cachedIcon.Blend(appendage_icon, ICON_OVERLAY) - else - // No mask dodgers, so we can just mask the full (hopefully cached) icon - cachedIcon = icon(getCachedIcon()) - for(var/datum/hair_mask/mask as anything in hair_masks) - var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) - mask_icon.Shift(SOUTH, y_offset) - cachedIcon.Blend(mask_icon, ICON_ADD) - else - // No hair appendages, so just apply all hair masks to the base icon - cachedIcon = icon(icon, icon_state) - for(var/datum/hair_mask/mask as anything in hair_masks) - var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) - mask_icon.Shift(SOUTH, y_offset) - cachedIcon.Blend(mask_icon, ICON_ADD) - else - // no hair masks - cachedIcon = icon(icon, icon_state) - if(LAZYLEN(hair_appendages_inner)) - for(var/appendage_icon_state in hair_appendages_inner) - var/icon/appendage_icon = icon(icon, appendage_icon_state) - cachedIcon.Blend(appendage_icon, ICON_OVERLAY) - // set cache - GLOB.blended_hair_icons_cache[type][joinedMasks] = cachedIcon - return cachedIcon - - -// please make sure they're sorted alphabetically and, where needed, categorized -// try to capitalize the names please~ -// try to spell -// you do not need to define _s or _l sub-states, game automatically does this for you - -/datum/sprite_accessory/hair/afro - name = "Afro" - icon_state = "hair_afro" - -/datum/sprite_accessory/hair/afro2 - name = "Afro 2" - icon_state = "hair_afro2" - -/datum/sprite_accessory/hair/afro_large - name = "Afro (Large)" - icon_state = "hair_bigafro" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/afro_huge - name = "Afro (Huge)" - icon_state = "hair_hugeafro" - y_offset = 6 - natural_spawn = FALSE - -/datum/sprite_accessory/hair/allthefuzz - name = "All The Fuzz" - icon_state = "hair_allthefuzz" - -/datum/sprite_accessory/hair/antenna - name = "Ahoge" - icon_state = "hair_antenna" - hair_appendages_inner = list("hair_antenna_a1" = HAIR_APPENDAGE_TOP) - -/datum/sprite_accessory/hair/bald - name = "Bald" - icon_state = null - -/datum/sprite_accessory/hair/balding - name = "Balding Hair" - icon_state = "hair_e" - -/datum/sprite_accessory/hair/bedhead - name = "Bedhead" - icon_state = "hair_bedhead" - -/datum/sprite_accessory/hair/bedhead2 - name = "Bedhead 2" - icon_state = "hair_bedheadv2" - -/datum/sprite_accessory/hair/bedhead3 - name = "Bedhead 3" - icon_state = "hair_bedheadv3" - -/datum/sprite_accessory/hair/bedheadv4 - name = "Bedhead 4x" - icon_state = "hair_bedheadv4" - -/datum/sprite_accessory/hair/bedheadlong - name = "Long Bedhead" - icon_state = "hair_long_bedhead" - -/datum/sprite_accessory/hair/bedheadfloorlength - name = "Floorlength Bedhead" - icon_state = "hair_floorlength_bedhead" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/badlycut - name = "Shorter Long Bedhead" - icon_state = "hair_verybadlycut" - -/datum/sprite_accessory/hair/beehive - name = "Beehive" - icon_state = "hair_beehive" - -/datum/sprite_accessory/hair/beehive2 - name = "Beehive 2" - icon_state = "hair_beehivev2" - -/datum/sprite_accessory/hair/bob - name = "Bob Hair" - icon_state = "hair_bob" - -/datum/sprite_accessory/hair/bob2 - name = "Bob Hair 2" - icon_state = "hair_bob2" - -/datum/sprite_accessory/hair/bob3 - name = "Bob Hair 3" - icon_state = "hair_bobcut" - -/datum/sprite_accessory/hair/bob4 - name = "Bob Hair 4" - icon_state = "hair_bob4" - -/datum/sprite_accessory/hair/bobcurl - name = "Bobcurl" - icon_state = "hair_bobcurl" - -/datum/sprite_accessory/hair/boddicker - name = "Boddicker" - icon_state = "hair_boddicker" - -/datum/sprite_accessory/hair/bowlcut - name = "Bowlcut" - icon_state = "hair_bowlcut" - -/datum/sprite_accessory/hair/bowlcut2 - name = "Bowlcut 2" - icon_state = "hair_bowlcut2" - -/datum/sprite_accessory/hair/braid - name = "Braid (Floorlength)" - icon_state = "hair_braid" - hair_appendages_inner = list("hair_braid_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_braid_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/braided - name = "Braided" - icon_state = "hair_braided" - -/datum/sprite_accessory/hair/front_braid - name = "Braided Front" - icon_state = "hair_braidfront" - hair_appendages_inner = list("hair_braidfront_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_braidfront_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/not_floorlength_braid - name = "Braid (High)" - icon_state = "hair_braid2" - hair_appendages_inner = list("hair_braid2_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_braid2_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/lowbraid - name = "Braid (Low)" - icon_state = "hair_hbraid" - -/datum/sprite_accessory/hair/shortbraid - name = "Braid (Short)" - icon_state = "hair_shortbraid" - hair_appendages_inner = list("hair_shortbraid_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_shortbraid_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/braidtail - name = "Braided Tail" - icon_state = "hair_braidtail" - hair_appendages_inner = list("hair_braidtail_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_braidtail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/bun - name = "Bun Head" - icon_state = "hair_bun" - -/datum/sprite_accessory/hair/bun2 - name = "Bun Head 2" - icon_state = "hair_bunhead2" - hair_appendages_inner = list("hair_bunhead2_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_bunhead2_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/bun3 - name = "Bun Head 3" - icon_state = "hair_bun3" - -/datum/sprite_accessory/hair/largebun - name = "Bun (Large)" - icon_state = "hair_largebun" - -/datum/sprite_accessory/hair/manbun - name = "Bun (Manbun)" - icon_state = "hair_manbun" - hair_appendages_inner = list("hair_manbun_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_manbun_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/tightbun - name = "Bun (Tight)" - icon_state = "hair_tightbun" - -/datum/sprite_accessory/hair/business - name = "Business Hair" - icon_state = "hair_business" - -/datum/sprite_accessory/hair/business2 - name = "Business Hair 2" - icon_state = "hair_business2" - -/datum/sprite_accessory/hair/business3 - name = "Business Hair 3" - icon_state = "hair_business3" - -/datum/sprite_accessory/hair/business4 - name = "Business Hair 4" - icon_state = "hair_business4" - -/datum/sprite_accessory/hair/buzz - name = "Buzzcut" - icon_state = "hair_buzzcut" - -/datum/sprite_accessory/hair/chinbob - name = "Chin-Length Bob Cut" - icon_state = "hair_chinbob" - -/datum/sprite_accessory/hair/comet - name = "Comet" - icon_state = "hair_comet" - -/datum/sprite_accessory/hair/cia - name = "CIA" - icon_state = "hair_cia" - -/datum/sprite_accessory/hair/coffeehouse - name = "Coffee House" - icon_state = "hair_coffeehouse" - -/datum/sprite_accessory/hair/combover - name = "Combover" - icon_state = "hair_combover" - -/datum/sprite_accessory/hair/cornrows1 - name = "Cornrows" - icon_state = "hair_cornrows" - -/datum/sprite_accessory/hair/cornrows2 - name = "Cornrows 2" - icon_state = "hair_cornrows2" - -/datum/sprite_accessory/hair/cornrowbun - name = "Cornrow Bun" - icon_state = "hair_cornrowbun" - -/datum/sprite_accessory/hair/cornrowbraid - name = "Cornrow Braid" - icon_state = "hair_cornrowbraid" - -/datum/sprite_accessory/hair/cornrowdualtail - name = "Cornrow Tail" - icon_state = "hair_cornrowtail" - hair_appendages_inner = list("hair_cornrowtail_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_cornrowtail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/crew - name = "Crewcut" - icon_state = "hair_crewcut" - -/datum/sprite_accessory/hair/curls - name = "Curls" - icon_state = "hair_curls" - -/datum/sprite_accessory/hair/cut - name = "Cut Hair" - icon_state = "hair_c" - -/datum/sprite_accessory/hair/dandpompadour - name = "Dandy Pompadour" - icon_state = "hair_dandypompadour" - -/datum/sprite_accessory/hair/devillock - name = "Devil Lock" - icon_state = "hair_devilock" - -/datum/sprite_accessory/hair/doublebun - name = "Double Bun" - icon_state = "hair_doublebun" - hair_appendages_inner = list("hair_doublebun_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_doublebun_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/dreadlocks - name = "Dreadlocks" - icon_state = "hair_dreads" - -/datum/sprite_accessory/hair/drillhair - name = "Drillruru" - icon_state = "hair_drillruru" - hair_appendages_inner = list("hair_drillruru_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_drillruru_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/drillhairextended - name = "Drill Hair (Extended)" - icon_state = "hair_drillhairextended" - hair_appendages_inner = list("hair_drillhairextended_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_drillhairextended_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/emo - name = "Emo" - icon_state = "hair_emo" - -/datum/sprite_accessory/hair/emofrine - name = "Emo Fringe" - icon_state = "hair_emofringe" - -/datum/sprite_accessory/hair/nofade - name = "Fade (None)" - icon_state = "hair_nofade" - -/datum/sprite_accessory/hair/highfade - name = "Fade (High)" - icon_state = "hair_highfade" - -/datum/sprite_accessory/hair/medfade - name = "Fade (Medium)" - icon_state = "hair_medfade" - -/datum/sprite_accessory/hair/lowfade - name = "Fade (Low)" - icon_state = "hair_lowfade" - -/datum/sprite_accessory/hair/baldfade - name = "Fade (Bald)" - icon_state = "hair_baldfade" - -/datum/sprite_accessory/hair/feather - name = "Feather" - icon_state = "hair_feather" - -/datum/sprite_accessory/hair/father - name = "Father" - icon_state = "hair_father" - -/datum/sprite_accessory/hair/sargeant - name = "Flat Top" - icon_state = "hair_sargeant" - -/datum/sprite_accessory/hair/flair - name = "Flair" - icon_state = "hair_flair" - -/datum/sprite_accessory/hair/bigflattop - name = "Flat Top (Big)" - icon_state = "hair_bigflattop" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/flow_hair - name = "Flow Hair" - icon_state = "hair_f" - -/datum/sprite_accessory/hair/gelled - name = "Gelled Back" - icon_state = "hair_gelled" - -/datum/sprite_accessory/hair/gentle - name = "Gentle" - icon_state = "hair_gentle" - -/datum/sprite_accessory/hair/halfbang - name = "Half-banged Hair" - icon_state = "hair_halfbang" - -/datum/sprite_accessory/hair/halfbang2 - name = "Half-banged Hair 2" - icon_state = "hair_halfbang2" - -/datum/sprite_accessory/hair/halfshaved - name = "Half-shaved" - icon_state = "hair_halfshaved" - -/datum/sprite_accessory/hair/hedgehog - name = "Hedgehog Hair" - icon_state = "hair_hedgehog" - -/datum/sprite_accessory/hair/himecut - name = "Hime Cut" - icon_state = "hair_himecut" - -/datum/sprite_accessory/hair/himecut2 - name = "Hime Cut 2" - icon_state = "hair_himecut2" - -/datum/sprite_accessory/hair/shorthime - name = "Hime Cut (Short)" - icon_state = "hair_shorthime" - -/datum/sprite_accessory/hair/himeup - name = "Hime Updo" - icon_state = "hair_himeup" - -/datum/sprite_accessory/hair/hitop - name = "Hitop" - icon_state = "hair_hitop" - -/datum/sprite_accessory/hair/jade - name = "Jade" - icon_state = "hair_jade" - -/datum/sprite_accessory/hair/jensen - name = "Jensen Hair" - icon_state = "hair_jensen" - -/datum/sprite_accessory/hair/joestar - name = "Joestar" - icon_state = "hair_joestar" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/keanu - name = "Keanu Hair" - icon_state = "hair_keanu" - -/datum/sprite_accessory/hair/kusangi - name = "Kusanagi Hair" - icon_state = "hair_kusanagi" - -/datum/sprite_accessory/hair/long - name = "Long Hair 1" - icon_state = "hair_long" - hair_appendages_inner = list("hair_long_a1" = HAIR_APPENDAGE_HANGING_REAR) - -/datum/sprite_accessory/hair/long2 - name = "Long Hair 2" - icon_state = "hair_long2" - hair_appendages_inner = list("hair_long2_a1" = HAIR_APPENDAGE_HANGING_REAR) - -/datum/sprite_accessory/hair/long3 - name = "Long Hair 3" - icon_state = "hair_long3" - hair_appendages_inner = list("hair_long3_a1" = HAIR_APPENDAGE_HANGING_REAR) - -/datum/sprite_accessory/hair/long_over_eye - name = "Long Over Eye" - icon_state = "hair_longovereye" - -/datum/sprite_accessory/hair/longbangs - name = "Long Bangs" - icon_state = "hair_lbangs" - -/datum/sprite_accessory/hair/longemo - name = "Long Emo" - icon_state = "hair_longemo" - -/datum/sprite_accessory/hair/longfringe - name = "Long Fringe" - icon_state = "hair_longfringe" - -/datum/sprite_accessory/hair/sidepartlongalt - name = "Long Side Part" - icon_state = "hair_longsidepart" - hair_appendages_inner = list("hair_longsidepart_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_longsidepart_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/megaeyebrows - name = "Mega Eyebrows" - icon_state = "hair_megaeyebrows" - -/datum/sprite_accessory/hair/messy - name = "Messy" - icon_state = "hair_messy" - -/datum/sprite_accessory/hair/modern - name = "Modern" - icon_state = "hair_modern" - -/datum/sprite_accessory/hair/mohawk - name = "Mohawk" - icon_state = "hair_d" - natural_spawn = FALSE // sorry little one - -/datum/sprite_accessory/hair/nitori - name = "Nitori" - icon_state = "hair_nitori" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/reversemohawk - name = "Mohawk (Reverse)" - icon_state = "hair_reversemohawk" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/shavedmohawk - name = "Mohawk (Shaved)" - icon_state = "hair_shavedmohawk" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/unshavenmohawk - name = "Mohawk (Unshaven)" - icon_state = "hair_unshaven_mohawk" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/mulder - name = "Mulder" - icon_state = "hair_mulder" - -/datum/sprite_accessory/hair/odango - name = "Odango" - icon_state = "hair_odango" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/ombre - name = "Ombre" - icon_state = "hair_ombre" - -/datum/sprite_accessory/hair/oneshoulder - name = "One Shoulder" - icon_state = "hair_oneshoulder" - -/datum/sprite_accessory/hair/over_eye - name = "Over Eye" - icon_state = "hair_shortovereye" - -/datum/sprite_accessory/hair/hair_overeyetwo - name = "Over Eye 2" - icon_state = "hair_overeyetwo" - -/datum/sprite_accessory/hair/oxton - name = "Oxton" - icon_state = "hair_oxton" - -/datum/sprite_accessory/hair/parted - name = "Parted" - icon_state = "hair_parted" - -/datum/sprite_accessory/hair/partedside - name = "Parted (Side)" - icon_state = "hair_part" - -/datum/sprite_accessory/hair/kagami - name = "Pigtails" - icon_state = "hair_kagami" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/pigtail - name = "Pigtails 2" - icon_state = "hair_pigtails" - natural_spawn = FALSE - -/datum/sprite_accessory/hair/pigtail2 - name = "Pigtails 3" - icon_state = "hair_pigtails2" - natural_spawn = FALSE - hair_appendages_inner = list("hair_pigtails2_a1" = HAIR_APPENDAGE_LEFT, "hair_pigtails2_a2" = HAIR_APPENDAGE_RIGHT) - -/datum/sprite_accessory/hair/pixie - name = "Pixie Cut" - icon_state = "hair_pixie" - -/datum/sprite_accessory/hair/pompadour - name = "Pompadour" - icon_state = "hair_pompadour" - -/datum/sprite_accessory/hair/bigpompadour - name = "Pompadour (Big)" - icon_state = "hair_bigpompadour" - -/datum/sprite_accessory/hair/ponytail1 - name = "Ponytail" - icon_state = "hair_ponytail" - -/datum/sprite_accessory/hair/ponytail2 - name = "Ponytail 2" - icon_state = "hair_ponytail2" - -/datum/sprite_accessory/hair/ponytail3 - name = "Ponytail 3" - icon_state = "hair_ponytail3" - -/datum/sprite_accessory/hair/ponytail4 - name = "Ponytail 4" - icon_state = "hair_ponytail4" - hair_appendages_inner = list("hair_ponytail4_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_ponytail4_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/ponytail5 - name = "Ponytail 5" - icon_state = "hair_ponytail5" - hair_appendages_inner = list("hair_ponytail5_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_ponytail5_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/ponytail6 - name = "Ponytail 6" - icon_state = "hair_ponytail6" - hair_appendages_inner = list("hair_ponytail6_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_ponytail6_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/ponytail7 - name = "Ponytail 7" - icon_state = "hair_ponytail7" - hair_appendages_inner = list("hair_ponytail7_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_ponytail7_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/highponytail - name = "Ponytail (High)" - icon_state = "hair_highponytail" - hair_appendages_inner = list("hair_highponytail_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_highponytail_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/stail - name = "Ponytail (Short)" - icon_state = "hair_stail" - hair_appendages_inner = list("hair_stail_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_stail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/longponytail - name = "Ponytail (Long)" - icon_state = "hair_longstraightponytail" - hair_appendages_inner = list("hair_longstraightponytail_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_longstraightponytail_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/countryponytail - name = "Ponytail (Country)" - icon_state = "hair_country" - hair_appendages_inner = list("hair_country_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_country_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/fringetail - name = "Ponytail (Fringe)" - icon_state = "hair_fringetail" - -/datum/sprite_accessory/hair/sidetail - name = "Ponytail (Side)" - icon_state = "hair_sidetail" - -/datum/sprite_accessory/hair/sidetail2 - name = "Ponytail (Side) 2" - icon_state = "hair_sidetail2" - -/datum/sprite_accessory/hair/sidetail3 - name = "Ponytail (Side) 3" - icon_state = "hair_sidetail3" - hair_appendages_inner = list("hair_sidetail3_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_sidetail3_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/sidetail4 - name = "Ponytail (Side) 4" - icon_state = "hair_sidetail4" - hair_appendages_inner = list("hair_sidetail4_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_sidetail4_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/spikyponytail - name = "Ponytail (Spiky)" - icon_state = "hair_spikyponytail" - hair_appendages_inner = list("hair_spikyponytail_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_spikyponytail_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/poofy - name = "Poofy" - icon_state = "hair_poofy" - -/datum/sprite_accessory/hair/quiff - name = "Quiff" - icon_state = "hair_quiff" - -/datum/sprite_accessory/hair/ronin - name = "Ronin" - icon_state = "hair_ronin" - -/datum/sprite_accessory/hair/shaved - name = "Shaved" - icon_state = "hair_shaved" - -/datum/sprite_accessory/hair/shavedpart - name = "Shaved Part" - icon_state = "hair_shavedpart" - -/datum/sprite_accessory/hair/shortbangs - name = "Short Bangs" - icon_state = "hair_shortbangs" - -/datum/sprite_accessory/hair/shortbangs2 - name = "Short Bangs 2" - icon_state = "hair_shortbangs2" - -/datum/sprite_accessory/hair/short - name = "Short Hair" - icon_state = "hair_a" - -/datum/sprite_accessory/hair/shorthair2 - name = "Short Hair 2" - icon_state = "hair_shorthair2" - -/datum/sprite_accessory/hair/shorthair3 - name = "Short Hair 3" - icon_state = "hair_shorthair3" - -/datum/sprite_accessory/hair/shorthair4 - name = "Short Hair 4" - icon_state = "hair_d" - -/datum/sprite_accessory/hair/shorthair5 - name = "Short Hair 5" - icon_state = "hair_e" - -/datum/sprite_accessory/hair/shorthair6 - name = "Short Hair 6" - icon_state = "hair_f" - -/datum/sprite_accessory/hair/shorthair7 - name = "Short Hair 7" - icon_state = "hair_shorthairg" - -/datum/sprite_accessory/hair/shorthaireighties - name = "Short Hair 80s" - icon_state = "hair_80s" - -/datum/sprite_accessory/hair/rosa - name = "Short Hair Rosa" - icon_state = "hair_rosa" - -/datum/sprite_accessory/hair/shoulderlength - name = "Shoulder-length Hair" - icon_state = "hair_b" - -/datum/sprite_accessory/hair/sidecut - name = "Sidecut" - icon_state = "hair_sidecut" - -/datum/sprite_accessory/hair/skinhead - name = "Skinhead" - icon_state = "hair_skinhead" - -/datum/sprite_accessory/hair/protagonist - name = "Slightly Long Hair" - icon_state = "hair_protagonist" - -/datum/sprite_accessory/hair/spiky - name = "Spiky" - icon_state = "hair_spikey" - -/datum/sprite_accessory/hair/spiky2 - name = "Spiky 2" - icon_state = "hair_spiky" - -/datum/sprite_accessory/hair/spiky3 - name = "Spiky 3" - icon_state = "hair_spiky2" - -/datum/sprite_accessory/hair/swept - name = "Swept Back Hair" - icon_state = "hair_swept" - -/datum/sprite_accessory/hair/swept2 - name = "Swept Back Hair 2" - icon_state = "hair_swept2" - -/datum/sprite_accessory/hair/thinning - name = "Thinning" - icon_state = "hair_thinning" - -/datum/sprite_accessory/hair/thinningfront - name = "Thinning (Front)" - icon_state = "hair_thinningfront" - -/datum/sprite_accessory/hair/thinningrear - name = "Thinning (Rear)" - icon_state = "hair_thinningrear" - -/datum/sprite_accessory/hair/topknot - name = "Topknot" - icon_state = "hair_topknot" - -/datum/sprite_accessory/hair/tressshoulder - name = "Tress Shoulder" - icon_state = "hair_tressshoulder" - hair_appendages_inner = list("hair_tressshoulder_a1" = HAIR_APPENDAGE_HANGING_FRONT) - hair_appendages_outer = list("hair_tressshoulder_a1o" = HAIR_APPENDAGE_HANGING_FRONT) - -/datum/sprite_accessory/hair/trimmed - name = "Trimmed" - icon_state = "hair_trimmed" - -/datum/sprite_accessory/hair/trimflat - name = "Trim Flat" - icon_state = "hair_trimflat" - -/datum/sprite_accessory/hair/twintails - name = "Twintails" - icon_state = "hair_twintail" - -/datum/sprite_accessory/hair/undercut - name = "Undercut" - icon_state = "hair_undercut" - -/datum/sprite_accessory/hair/undercutleft - name = "Undercut Left" - icon_state = "hair_undercutleft" - -/datum/sprite_accessory/hair/undercutright - name = "Undercut Right" - icon_state = "hair_undercutright" - -/datum/sprite_accessory/hair/unkept - name = "Unkept" - icon_state = "hair_unkept" - -/datum/sprite_accessory/hair/updo - name = "Updo" - icon_state = "hair_updo" - hair_appendages_inner = list("hair_updo_a1" = HAIR_APPENDAGE_TOP) - -/datum/sprite_accessory/hair/longer - name = "Very Long Hair" - icon_state = "hair_vlong" - -/datum/sprite_accessory/hair/longest - name = "Very Long Hair 2" - icon_state = "hair_longest" - -/datum/sprite_accessory/hair/longest2 - name = "Very Long Over Eye" - icon_state = "hair_longest2" - -/datum/sprite_accessory/hair/veryshortovereye - name = "Very Short Over Eye" - icon_state = "hair_veryshortovereyealternate" - -/datum/sprite_accessory/hair/longestalt - name = "Very Long with Fringe" - icon_state = "hair_vlongfringe" - -/datum/sprite_accessory/hair/volaju - name = "Volaju" - icon_state = "hair_volaju" - -/datum/sprite_accessory/hair/wisp - name = "Wisp" - icon_state = "hair_wisp" - hair_appendages_inner = list("hair_wisp_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_wisp_a1o" = HAIR_APPENDAGE_REAR) - -/datum/sprite_accessory/hair/ziegler - name = "Ziegler" - icon_state = "hair_ziegler" - hair_appendages_inner = list("hair_ziegler_a1" = HAIR_APPENDAGE_REAR) - hair_appendages_outer = list("hair_ziegler_a1o" = HAIR_APPENDAGE_REAR) - -/* -///////////////////////////////////// -/ =---------------------------= / -/ == Gradient Hair Definitions == / -/ =---------------------------= / -///////////////////////////////////// -*/ - -/datum/sprite_accessory/gradient - icon = 'icons/mob/human/species/hair_gradients.dmi' - ///whether this gradient applies to hair and/or beards. Some gradients do not work well on beards. - var/gradient_category = GRADIENT_APPLIES_TO_HAIR|GRADIENT_APPLIES_TO_FACIAL_HAIR - -/datum/sprite_accessory/gradient/none - name = SPRITE_ACCESSORY_NONE - icon_state = SPRITE_ACCESSORY_NONE - -/datum/sprite_accessory/gradient/full - name = "Full" - icon_state = "full" - -/datum/sprite_accessory/gradient/fadeup - name = "Fade Up" - icon_state = "fadeup" - -/datum/sprite_accessory/gradient/fadedown - name = "Fade Down" - icon_state = "fadedown" - -/datum/sprite_accessory/gradient/vertical_split - name = "Vertical Split" - icon_state = "vsplit" - -/datum/sprite_accessory/gradient/horizontal_split - name = "Horizontal Split" - icon_state = "bottomflat" - -/datum/sprite_accessory/gradient/reflected - name = "Reflected" - icon_state = "reflected_high" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/reflected/beard - icon_state = "reflected_high_beard" - gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR - -/datum/sprite_accessory/gradient/reflected_inverse - name = "Reflected Inverse" - icon_state = "reflected_inverse_high" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/reflected_inverse/beard - icon_state = "reflected_inverse_high_beard" - gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR - -/datum/sprite_accessory/gradient/wavy - name = "Wavy" - icon_state = "wavy" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/long_fade_up - name = "Long Fade Up" - icon_state = "long_fade_up" - -/datum/sprite_accessory/gradient/long_fade_down - name = "Long Fade Down" - icon_state = "long_fade_down" - -/datum/sprite_accessory/gradient/short_fade_up - name = "Short Fade Up" - icon_state = "short_fade_up" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/short_fade_up/beard - icon_state = "short_fade_down" - gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR - -/datum/sprite_accessory/gradient/short_fade_down - name = "Short Fade Down" - icon_state = "short_fade_down_beard" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/short_fade_down/beard - icon_state = "short_fade_down_beard" - gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR - -/datum/sprite_accessory/gradient/wavy_spike - name = "Spiked Wavy" - icon_state = "wavy_spiked" - gradient_category = GRADIENT_APPLIES_TO_HAIR - -/datum/sprite_accessory/gradient/striped - name = "striped" - icon_state = "striped" - -/datum/sprite_accessory/gradient/striped_vertical - name = "Striped Vertical" - icon_state = "striped_vertical" - -///////////////////////////// -// Facial Hair Definitions // -///////////////////////////// - -/datum/sprite_accessory/facial_hair - icon = 'icons/mob/human/human_face.dmi' - gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P) - em_block = TRUE - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/facial_hair/abe - name = "Beard (Abraham Lincoln)" - icon_state = "facial_abe" - -/datum/sprite_accessory/facial_hair/brokenman - name = "Beard (Broken Man)" - icon_state = "facial_brokenman" - natural_spawn = FALSE - -/datum/sprite_accessory/facial_hair/chinstrap - name = "Beard (Chinstrap)" - icon_state = "facial_chin" - -/datum/sprite_accessory/facial_hair/dwarf - name = "Beard (Dwarf)" - icon_state = "facial_dwarf" - -/datum/sprite_accessory/facial_hair/fullbeard - name = "Beard (Full)" - icon_state = "facial_fullbeard" - -/datum/sprite_accessory/facial_hair/croppedfullbeard - name = "Beard (Cropped Fullbeard)" - icon_state = "facial_croppedfullbeard" - -/datum/sprite_accessory/facial_hair/gt - name = "Beard (Goatee)" - icon_state = "facial_gt" - -/datum/sprite_accessory/facial_hair/hip - name = "Beard (Hipster)" - icon_state = "facial_hip" - -/datum/sprite_accessory/facial_hair/jensen - name = "Beard (Jensen)" - icon_state = "facial_jensen" - -/datum/sprite_accessory/facial_hair/neckbeard - name = "Beard (Neckbeard)" - icon_state = "facial_neckbeard" - -/datum/sprite_accessory/facial_hair/vlongbeard - name = "Beard (Very Long)" - icon_state = "facial_wise" - -/datum/sprite_accessory/facial_hair/muttonmus - name = "Beard (Muttonmus)" - icon_state = "facial_muttonmus" - -/datum/sprite_accessory/facial_hair/martialartist - name = "Beard (Martial Artist)" - icon_state = "facial_martialartist" - natural_spawn = FALSE - -/datum/sprite_accessory/facial_hair/chinlessbeard - name = "Beard (Chinless Beard)" - icon_state = "facial_chinlessbeard" - -/datum/sprite_accessory/facial_hair/moonshiner - name = "Beard (Moonshiner)" - icon_state = "facial_moonshiner" - -/datum/sprite_accessory/facial_hair/longbeard - name = "Beard (Long)" - icon_state = "facial_longbeard" - -/datum/sprite_accessory/facial_hair/volaju - name = "Beard (Volaju)" - icon_state = "facial_volaju" - -/datum/sprite_accessory/facial_hair/threeoclock - name = "Beard (Three o Clock Shadow)" - icon_state = "facial_3oclock" - -/datum/sprite_accessory/facial_hair/fiveoclock - name = "Beard (Five o Clock Shadow)" - icon_state = "facial_fiveoclock" - -/datum/sprite_accessory/facial_hair/fiveoclockm - name = "Beard (Five o Clock Moustache)" - icon_state = "facial_5oclockmoustache" - -/datum/sprite_accessory/facial_hair/sevenoclock - name = "Beard (Seven o Clock Shadow)" - icon_state = "facial_7oclock" - -/datum/sprite_accessory/facial_hair/sevenoclockm - name = "Beard (Seven o Clock Moustache)" - icon_state = "facial_7oclockmoustache" - -/datum/sprite_accessory/facial_hair/moustache - name = "Moustache" - icon_state = "facial_moustache" - -/datum/sprite_accessory/facial_hair/pencilstache - name = "Moustache (Pencilstache)" - icon_state = "facial_pencilstache" - -/datum/sprite_accessory/facial_hair/smallstache - name = "Moustache (Smallstache)" - icon_state = "facial_smallstache" - -/datum/sprite_accessory/facial_hair/walrus - name = "Moustache (Walrus)" - icon_state = "facial_walrus" - -/datum/sprite_accessory/facial_hair/fu - name = "Moustache (Fu Manchu)" - icon_state = "facial_fumanchu" - -/datum/sprite_accessory/facial_hair/hogan - name = "Moustache (Hulk Hogan)" - icon_state = "facial_hogan" //-Neek - -/datum/sprite_accessory/facial_hair/selleck - name = "Moustache (Selleck)" - icon_state = "facial_selleck" - -/datum/sprite_accessory/facial_hair/chaplin - name = "Moustache (Square)" - icon_state = "facial_chaplin" - -/datum/sprite_accessory/facial_hair/vandyke - name = "Moustache (Van Dyke)" - icon_state = "facial_vandyke" - -/datum/sprite_accessory/facial_hair/watson - name = "Moustache (Watson)" - icon_state = "facial_watson" - -/datum/sprite_accessory/facial_hair/handlebar - name = "Moustache (Handlebar)" - icon_state = "facial_handlebar" - -/datum/sprite_accessory/facial_hair/handlebar2 - name = "Moustache (Handlebar 2)" - icon_state = "facial_handlebar2" - -/datum/sprite_accessory/facial_hair/elvis - name = "Sideburns (Elvis)" - icon_state = "facial_elvis" - -/datum/sprite_accessory/facial_hair/mutton - name = "Sideburns (Mutton Chops)" - icon_state = "facial_mutton" - -/datum/sprite_accessory/facial_hair/sideburn - name = "Sideburns" - icon_state = "facial_sideburn" - -/datum/sprite_accessory/facial_hair/shaved - name = "Shaved" - icon_state = SPRITE_ACCESSORY_NONE - gender = NEUTER - -/datum/sprite_accessory/clothing - abstract_type = /datum/sprite_accessory/clothing - /// Allows you to specify a greyscale config - var/greyscale_config - /// Icon state in the digitigrade template file to use if the wearer is digitigrade. - /// If null, no special digitigrade handling is done. - var/digi_icon_state - /// Color pallete for static colored underwear, like hearts. - /// Used so greyscale copies can have the same palette. - var/greyscale_colors = "#FFFFFF#FFFFFF#FFFFFF" - /// The layer this sprite accessory should render on - var/layer = BODY_LAYER - /// What kind of gender shaping this sprite accessory should use (in case your sprite gets a weird missing pixel in the center) - var/female_sprite_flags = FEMALE_UNIFORM_FULL - -/// Override to return a different icon state given a bodytype or physique -/datum/sprite_accessory/clothing/proc/get_icon_state(physique, bodyshape) - return icon_state - -/** - * Generate an appearance from this clothing datum - * - * * color - if this is NOT a statically colored clothing article and NOT gags, uses this color. - * * physique - physique of the wearer (male or female) - * * bodyshape - bodyshape of the wearer (humanoid, digitigrade, etc) - */ -/datum/sprite_accessory/clothing/proc/make_appearance(color = COLOR_WHITE, physique = MALE, bodyshape = BODYSHAPE_HUMANOID) - var/static/list/cached_icons = list() - var/use_female = physique == FEMALE && female_sprite_flags - var/use_digi = digi_icon_state && (bodyshape & BODYSHAPE_DIGITIGRADE) - var/female_sprite_flags_to_use = female_sprite_flags - var/icon_state_to_use = get_icon_state(physique, bodyshape) - if(use_digi && female_sprite_flags_to_use) - female_sprite_flags_to_use = FEMALE_UNIFORM_TOP_ONLY // No bottom gender shaping for the digi legs - - var/key = "[icon_state_to_use]-[greyscale_config || "ng"]-[use_female]-[use_digi]-[greyscale_colors]" - var/mutable_appearance/result - if(cached_icons[key]) // it's already cached - result = mutable_appearance(icon(cached_icons[key])) - - else if(greyscale_config || use_female || use_digi) // icon ops ahead - var/icon/created = icon(greyscale_config ? SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors) : icon, icon_state_to_use) - if(use_female) - created = wear_female_version(icon_state_to_use, icon, female_sprite_flags_to_use) - if(use_digi) - var/icon/replacement = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade_underwear, greyscale_colors), digi_icon_state) - created = replace_icon_legs(created, replacement) - - cached_icons[key] = fcopy_rsc(created) - result = mutable_appearance(created) - - else // no caching necessary - result = mutable_appearance(icon, icon_state) - - result.layer = -layer - result.color = use_static ? null : color - - return result - - -/////////////////////////// -// Underwear Definitions // -/////////////////////////// - -/datum/sprite_accessory/clothing/underwear - icon = 'icons/mob/clothing/underwear.dmi' - use_static = FALSE - em_block = TRUE - abstract_type = /datum/sprite_accessory/clothing/underwear - -//MALE UNDERWEAR -/datum/sprite_accessory/clothing/underwear/nude - name = "Nude" - icon_state = null - gender = NEUTER - -/datum/sprite_accessory/clothing/underwear/nude/make_appearance(mob/living/carbon/human/for_who) - return - -/datum/sprite_accessory/clothing/underwear/male_briefs - name = "Briefs" - icon_state = "male_briefs" - gender = MALE - -/datum/sprite_accessory/clothing/underwear/male_boxers - name = "Boxers" - icon_state = "male_boxers" - gender = MALE - digi_icon_state = "boxers" - -/datum/sprite_accessory/clothing/underwear/male_stripe - name = "Striped Boxers" - icon_state = "male_stripe" - gender = MALE - digi_icon_state = "boxers_stripe" - -/datum/sprite_accessory/clothing/underwear/male_midway - name = "Midway Boxers" - icon_state = "male_midway" - gender = MALE - digi_icon_state = "midway" - -/datum/sprite_accessory/clothing/underwear/male_longjohns - name = "Long Johns" - icon_state = "male_longjohns" - gender = MALE - digi_icon_state = "longjohns" - -/datum/sprite_accessory/clothing/underwear/male_kinky - name = "Jockstrap" - icon_state = "male_kinky" - gender = MALE - -/datum/sprite_accessory/clothing/underwear/male_mankini - name = "Mankini" - icon_state = "male_mankini" - gender = MALE - -/datum/sprite_accessory/clothing/underwear/male_hearts - name = "Hearts Boxers" - icon_state = "male_hearts" - gender = MALE - use_static = TRUE - digi_icon_state = "boxers_stripe_threecolor" - greyscale_colors = "#D62626#EEEEEE#D62626#" - -/datum/sprite_accessory/clothing/underwear/male_commie - name = "Commie Boxers" - icon_state = "male_commie" - gender = MALE - use_static = TRUE - digi_icon_state = "boxers_stripe_twocolor" - greyscale_colors = "#D62626#D1B62C#D62626" - -/datum/sprite_accessory/clothing/underwear/male_usastripe - name = "Freedom Boxers" - icon_state = "male_assblastusa" - gender = MALE - use_static = TRUE - digi_icon_state = "boxers_stripe_threecolor" - greyscale_colors = "#D62626#EEEEEE#2E26D6" - -/datum/sprite_accessory/clothing/underwear/male_uk - name = "UK Boxers" - icon_state = "male_uk" - gender = MALE - use_static = TRUE - digi_icon_state = "boxers_stripe_threecolor" - greyscale_colors = "#D62626#EEEEEE#2E26D6" - -//FEMALE UNDERWEAR -/datum/sprite_accessory/clothing/underwear/female_bikini - name = "Bikini" - icon_state = "female_bikini" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/female_lace - name = "Lace Bikini" - icon_state = "female_lace" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/female_bralette - name = "Bralette w/ Boyshorts" - icon_state = "female_bralette" - gender = FEMALE - digi_icon_state = "short_short" - -/datum/sprite_accessory/clothing/underwear/female_sport - name = "Sports Bra w/ Boyshorts" - icon_state = "female_sport" - gender = FEMALE - digi_icon_state = "short" - -/datum/sprite_accessory/clothing/underwear/female_thong - name = "Thong" - icon_state = "female_thong" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/female_strapless - name = "Strapless Bikini" - icon_state = "female_strapless" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/female_babydoll - name = "Babydoll" - icon_state = "female_babydoll" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/swimsuit_onepiece - name = "One-Piece Swimsuit" - icon_state = "swim_onepiece" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/swimsuit_strapless_onepiece - name = "Strapless One-Piece Swimsuit" - icon_state = "swim_strapless_onepiece" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/swimsuit_twopiece - name = "Two-Piece Swimsuit" - icon_state = "swim_twopiece" - gender = FEMALE - digi_icon_state = "short_short" - -/datum/sprite_accessory/clothing/underwear/swimsuit_strapless_twopiece - name = "Strapless Two-Piece Swimsuit" - icon_state = "swim_strapless_twopiece" - gender = FEMALE - digi_icon_state = "short_short" - -/datum/sprite_accessory/clothing/underwear/swimsuit_stripe - name = "Strapless Striped Swimsuit" - icon_state = "swim_stripe" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/swimsuit_halter - name = "Halter Swimsuit" - icon_state = "swim_halter" - gender = FEMALE - -/datum/sprite_accessory/clothing/underwear/female_white_neko - name = "Neko Bikini (White)" - icon_state = "female_neko_white" - gender = FEMALE - use_static = TRUE - -/datum/sprite_accessory/clothing/underwear/female_black_neko - name = "Neko Bikini (Black)" - icon_state = "female_neko_black" - gender = FEMALE - use_static = TRUE - -/datum/sprite_accessory/clothing/underwear/female_commie - name = "Commie Bikini" - icon_state = "female_commie" - gender = FEMALE - use_static = TRUE - -/datum/sprite_accessory/clothing/underwear/female_usastripe - name = "Freedom Bikini" - icon_state = "female_assblastusa" - gender = FEMALE - use_static = TRUE - -/datum/sprite_accessory/clothing/underwear/female_uk - name = "UK Bikini" - icon_state = "female_uk" - gender = FEMALE - use_static = TRUE - -/datum/sprite_accessory/clothing/underwear/female_kinky - name = "Lingerie" - icon_state = "female_kinky" - gender = FEMALE - use_static = TRUE - -//////////////////////////// -// Undershirt Definitions // -//////////////////////////// - -/datum/sprite_accessory/clothing/undershirt - icon = 'icons/mob/clothing/underwear.dmi' - em_block = TRUE - abstract_type = /datum/sprite_accessory/clothing/undershirt - -/datum/sprite_accessory/clothing/undershirt/nude - name = "Nude" - icon_state = null - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/nude/make_appearance(mob/living/carbon/human/for_who) - return - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/clothing/undershirt/bluejersey - name = "Jersey (Blue)" - icon_state = "shirt_bluejersey" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/redjersey - name = "Jersey (Red)" - icon_state = "shirt_redjersey" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/bluepolo - name = "Polo Shirt (Blue)" - icon_state = "bluepolo" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/grayyellowpolo - name = "Polo Shirt (Gray-Yellow)" - icon_state = "grayyellowpolo" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/redpolo - name = "Polo Shirt (Red)" - icon_state = "redpolo" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/whitepolo - name = "Polo Shirt (White)" - icon_state = "whitepolo" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/alienshirt - name = "Shirt (Alien)" - icon_state = "shirt_alien" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/mondmondjaja - name = "Shirt (Band)" - icon_state = "band" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/shirt_black - name = "Shirt (Black)" - icon_state = "shirt_black" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/blueshirt - name = "Shirt (Blue)" - icon_state = "shirt_blue" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/clownshirt - name = "Shirt (Clown)" - icon_state = "shirt_clown" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/commie - name = "Shirt (Commie)" - icon_state = "shirt_commie" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/greenshirt - name = "Shirt (Green)" - icon_state = "shirt_green" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/shirt_grey - name = "Shirt (Grey)" - icon_state = "shirt_grey" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/ian - name = "Shirt (Ian)" - icon_state = "ian" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/ilovent - name = "Shirt (I Love NT)" - icon_state = "ilovent" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/lover - name = "Shirt (Lover)" - icon_state = "lover" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/matroska - name = "Shirt (Matroska)" - icon_state = "matroska" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/meat - name = "Shirt (Meat)" - icon_state = "shirt_meat" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/nano - name = "Shirt (Nanotrasen)" - icon_state = "shirt_nano" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/peace - name = "Shirt (Peace)" - icon_state = "peace" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/pacman - name = "Shirt (Pogoman)" - icon_state = "pogoman" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/question - name = "Shirt (Question)" - icon_state = "shirt_question" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/redshirt - name = "Shirt (Red)" - icon_state = "shirt_red" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/skull - name = "Shirt (Skull)" - icon_state = "shirt_skull" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/ss13 - name = "Shirt (SS13)" - icon_state = "shirt_ss13" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/stripe - name = "Shirt (Striped)" - icon_state = "shirt_stripes" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tiedye - name = "Shirt (Tie-dye)" - icon_state = "shirt_tiedye" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/uk - name = "Shirt (UK)" - icon_state = "uk" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/usa - name = "Shirt (USA)" - icon_state = "shirt_assblastusa" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/shirt_white - name = "Shirt (White)" - icon_state = "shirt_white" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/blackshortsleeve - name = "Short-sleeved Shirt (Black)" - icon_state = "blackshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/blueshortsleeve - name = "Short-sleeved Shirt (Blue)" - icon_state = "blueshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/greenshortsleeve - name = "Short-sleeved Shirt (Green)" - icon_state = "greenshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/purpleshortsleeve - name = "Short-sleeved Shirt (Purple)" - icon_state = "purpleshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/whiteshortsleeve - name = "Short-sleeved Shirt (White)" - icon_state = "whiteshortsleeve" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/sports_bra - name = "Sports Bra" - icon_state = "sports_bra" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/sports_bra2 - name = "Sports Bra (Alt)" - icon_state = "sports_bra_alt" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/blueshirtsport - name = "Sports Shirt (Blue)" - icon_state = "blueshirtsport" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/greenshirtsport - name = "Sports Shirt (Green)" - icon_state = "greenshirtsport" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/redshirtsport - name = "Sports Shirt (Red)" - icon_state = "redshirtsport" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tank_black - name = "Tank Top (Black)" - icon_state = "tank_black" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tankfire - name = "Tank Top (Fire)" - icon_state = "tank_fire" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tank_grey - name = "Tank Top (Grey)" - icon_state = "tank_grey" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/female_midriff - name = "Tank Top (Midriff)" - icon_state = "tank_midriff" - gender = FEMALE - -/datum/sprite_accessory/clothing/undershirt/tank_red - name = "Tank Top (Red)" - icon_state = "tank_red" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tankstripe - name = "Tank Top (Striped)" - icon_state = "tank_stripes" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tank_white - name = "Tank Top (White)" - icon_state = "tank_white" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/redtop - name = "Top (Red)" - icon_state = "redtop" - gender = FEMALE - -/datum/sprite_accessory/clothing/undershirt/whitetop - name = "Top (White)" - icon_state = "whitetop" - gender = FEMALE - -/datum/sprite_accessory/clothing/undershirt/tshirt_blue - name = "T-Shirt (Blue)" - icon_state = "blueshirt" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tshirt_green - name = "T-Shirt (Green)" - icon_state = "greenshirt" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/tshirt_red - name = "T-Shirt (Red)" - icon_state = "redshirt" - gender = NEUTER - -/datum/sprite_accessory/clothing/undershirt/yellowshirt - name = "T-Shirt (Yellow)" - icon_state = "yellowshirt" - gender = NEUTER - -/////////////////////// -// Socks Definitions // -/////////////////////// - -/datum/sprite_accessory/clothing/socks - icon = 'icons/mob/clothing/underwear.dmi' - em_block = TRUE - abstract_type = /datum/sprite_accessory/clothing/socks - -/datum/sprite_accessory/clothing/socks/nude - name = "Nude" - icon_state = null - -/datum/sprite_accessory/clothing/socks/nude/make_appearance(mob/living/carbon/human/for_who) - return - -// please make sure they're sorted alphabetically and categorized - -/datum/sprite_accessory/clothing/socks/ace_knee - name = "Knee-high (Ace)" - icon_state = "ace_knee" - -/datum/sprite_accessory/clothing/socks/bee_knee - name = "Knee-high (Bee)" - icon_state = "bee_knee" - -/datum/sprite_accessory/clothing/socks/black_knee - name = "Knee-high (Black)" - icon_state = "black_knee" - -/datum/sprite_accessory/clothing/socks/commie_knee - name = "Knee-High (Commie)" - icon_state = "commie_knee" - -/datum/sprite_accessory/clothing/socks/usa_knee - name = "Knee-High (Freedom)" - icon_state = "assblastusa_knee" - -/datum/sprite_accessory/clothing/socks/rainbow_knee - name = "Knee-high (Rainbow)" - icon_state = "rainbow_knee" - -/datum/sprite_accessory/clothing/socks/striped_knee - name = "Knee-high (Striped)" - icon_state = "striped_knee" - -/datum/sprite_accessory/clothing/socks/thin_knee - name = "Knee-high (Thin)" - icon_state = "thin_knee" - -/datum/sprite_accessory/clothing/socks/trans_knee - name = "Knee-high (Trans)" - icon_state = "trans_knee" - -/datum/sprite_accessory/clothing/socks/uk_knee - name = "Knee-High (UK)" - icon_state = "uk_knee" - -/datum/sprite_accessory/clothing/socks/white_knee - name = "Knee-high (White)" - icon_state = "white_knee" - -/datum/sprite_accessory/clothing/socks/fishnet_knee - name = "Knee-high (Fishnet)" - icon_state = "fishnet_knee" - -/datum/sprite_accessory/clothing/socks/black_norm - name = "Normal (Black)" - icon_state = "black_norm" - -/datum/sprite_accessory/clothing/socks/white_norm - name = "Normal (White)" - icon_state = "white_norm" - -/datum/sprite_accessory/clothing/socks/pantyhose - name = "Pantyhose" - icon_state = "pantyhose" - -/datum/sprite_accessory/clothing/socks/black_short - name = "Short (Black)" - icon_state = "black_short" - -/datum/sprite_accessory/clothing/socks/white_short - name = "Short (White)" - icon_state = "white_short" - -/datum/sprite_accessory/clothing/socks/stockings_blue - name = "Stockings (Blue)" - icon_state = "stockings_blue" - -/datum/sprite_accessory/clothing/socks/stockings_cyan - name = "Stockings (Cyan)" - icon_state = "stockings_cyan" - -/datum/sprite_accessory/clothing/socks/stockings_dpink - name = "Stockings (Dark Pink)" - icon_state = "stockings_dpink" - -/datum/sprite_accessory/clothing/socks/stockings_green - name = "Stockings (Green)" - icon_state = "stockings_green" - -/datum/sprite_accessory/clothing/socks/stockings_orange - name = "Stockings (Orange)" - icon_state = "stockings_orange" - -/datum/sprite_accessory/clothing/socks/stockings_programmer - name = "Stockings (Programmer)" - icon_state = "stockings_lpink" - -/datum/sprite_accessory/clothing/socks/stockings_purple - name = "Stockings (Purple)" - icon_state = "stockings_purple" - -/datum/sprite_accessory/clothing/socks/stockings_yellow - name = "Stockings (Yellow)" - icon_state = "stockings_yellow" - -/datum/sprite_accessory/clothing/socks/stockings_fishnet - name = "Stockings (Fishnet)" - icon_state = "fishnet_full" - -/datum/sprite_accessory/clothing/socks/ace_thigh - name = "Thigh-high (Ace)" - icon_state = "ace_thigh" - -/datum/sprite_accessory/clothing/socks/bee_thigh - name = "Thigh-high (Bee)" - icon_state = "bee_thigh" - -/datum/sprite_accessory/clothing/socks/black_thigh - name = "Thigh-high (Black)" - icon_state = "black_thigh" - -/datum/sprite_accessory/clothing/socks/commie_thigh - name = "Thigh-high (Commie)" - icon_state = "commie_thigh" - -/datum/sprite_accessory/clothing/socks/usa_thigh - name = "Thigh-high (Freedom)" - icon_state = "assblastusa_thigh" - -/datum/sprite_accessory/clothing/socks/rainbow_thigh - name = "Thigh-high (Rainbow)" - icon_state = "rainbow_thigh" - -/datum/sprite_accessory/clothing/socks/striped_thigh - name = "Thigh-high (Striped)" - icon_state = "striped_thigh" - -/datum/sprite_accessory/clothing/socks/thin_thigh - name = "Thigh-high (Thin)" - icon_state = "thin_thigh" - -/datum/sprite_accessory/clothing/socks/trans_thigh - name = "Thigh-high (Trans)" - icon_state = "trans_thigh" - -/datum/sprite_accessory/clothing/socks/uk_thigh - name = "Thigh-high (UK)" - icon_state = "uk_thigh" - -/datum/sprite_accessory/clothing/socks/white_thigh - name = "Thigh-high (White)" - icon_state = "white_thigh" - -/datum/sprite_accessory/clothing/socks/fishnet_thigh - name = "Thigh-high (Fishnet)" - icon_state = "fishnet_thigh" - -/datum/sprite_accessory/clothing/socks/thocks - name = "Thocks" - icon_state = "thocks" - -//////////.////////////////// -// MutantParts Definitions // -///////////////////////////// - -/datum/sprite_accessory/lizard_markings - icon = 'icons/mob/human/species/lizard/lizard_markings.dmi' - -/datum/sprite_accessory/lizard_markings/dtiger - name = "Dark Tiger Body" - icon_state = "dtiger" - gender_specific = TRUE - -/datum/sprite_accessory/lizard_markings/ltiger - name = "Light Tiger Body" - icon_state = "ltiger" - gender_specific = TRUE - -/datum/sprite_accessory/lizard_markings/lbelly - name = "Light Belly" - icon_state = "lbelly" - gender_specific = TRUE - -/datum/sprite_accessory/tails - em_block = TRUE - /// Describes which tail spine sprites to use, if any. - var/spine_key = NONE - -///Used for fish-infused tails, which come in different flavors. -/datum/sprite_accessory/tails/fish - icon = 'icons/mob/human/fish_features.dmi' - color_src = TRUE - -/datum/sprite_accessory/tails/fish/simple - name = "Simple" - icon_state = "simple" - -/datum/sprite_accessory/tails/fish/crescent - name = "Crescent" - icon_state = "crescent" - -/datum/sprite_accessory/tails/fish/long - name = "Long" - icon_state = "long" - center = TRUE - dimension_x = 38 - -/datum/sprite_accessory/tails/fish/shark - name = "Shark" - icon_state = "shark" - -/datum/sprite_accessory/tails/fish/chonky - name = "Chonky" - icon_state = "chonky" - center = TRUE - dimension_x = 36 - -/datum/sprite_accessory/tails/lizard - icon = 'icons/mob/human/species/lizard/lizard_tails.dmi' - spine_key = SPINE_KEY_LIZARD - -/datum/sprite_accessory/tails/lizard/none - name = SPRITE_ACCESSORY_NONE - icon_state = "none" - natural_spawn = FALSE - -/datum/sprite_accessory/tails/lizard/smooth - name = "Smooth" - icon_state = "smooth" - -/datum/sprite_accessory/tails/lizard/dtiger - name = "Dark Tiger" - icon_state = "dtiger" - -/datum/sprite_accessory/tails/lizard/ltiger - name = "Light Tiger" - icon_state = "ltiger" - -/datum/sprite_accessory/tails/lizard/spikes - name = "Spikes" - icon_state = "spikes" - -/datum/sprite_accessory/tails/lizard/short - name = "Short" - icon_state = "short" - spine_key = NONE - -/datum/sprite_accessory/tails/felinid/cat - name = "Cat" - icon = 'icons/mob/human/cat_features.dmi' - icon_state = "default" - color_src = HAIR_COLOR - -/datum/sprite_accessory/tails/monkey - -/datum/sprite_accessory/tails/monkey/none - name = SPRITE_ACCESSORY_NONE - icon_state = "none" - natural_spawn = FALSE - -/datum/sprite_accessory/tails/monkey/default - name = "Monkey" - icon = 'icons/mob/human/species/monkey/monkey_tail.dmi' - icon_state = "default" - color_src = FALSE - -/datum/sprite_accessory/tails/xeno - icon_state = "default" - color_src = FALSE - center = TRUE - -/datum/sprite_accessory/tails/xeno/default - name = "Xeno" - icon = 'icons/mob/human/species/alien/tail_xenomorph.dmi' - dimension_x = 40 - -/datum/sprite_accessory/tails/xeno/queen - name = "Xeno Queen" - icon = 'icons/mob/human/species/alien/tail_xenomorph_queen.dmi' - dimension_x = 64 - -/datum/sprite_accessory/pod_hair - icon = 'icons/mob/human/species/podperson_hair.dmi' - em_block = TRUE - -/datum/sprite_accessory/pod_hair/ivy - name = "Ivy" - icon_state = "ivy" - -/datum/sprite_accessory/pod_hair/cabbage - name = "Cabbage" - icon_state = "cabbage" - -/datum/sprite_accessory/pod_hair/spinach - name = "Spinach" - icon_state = "spinach" - -/datum/sprite_accessory/pod_hair/prayer - name = "Prayer" - icon_state = "prayer" - -/datum/sprite_accessory/pod_hair/vine - name = "Vine" - icon_state = "vine" - -/datum/sprite_accessory/pod_hair/shrub - name = "Shrub" - icon_state = "shrub" - -/datum/sprite_accessory/pod_hair/rose - name = "Rose" - icon_state = "rose" - -/datum/sprite_accessory/pod_hair/orchid - name = "Orchid" - icon_state = "orchid" - -/datum/sprite_accessory/pod_hair/fig - name = "Fig" - icon_state = "fig" - -/datum/sprite_accessory/pod_hair/hibiscus - name = "Hibiscus" - icon_state = "hibiscus" - -/datum/sprite_accessory/snouts - icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' - em_block = TRUE - -/datum/sprite_accessory/snouts/sharp - name = "Sharp" - icon_state = "sharp" - -/datum/sprite_accessory/snouts/round - name = "Round" - icon_state = "round" - -/datum/sprite_accessory/snouts/sharplight - name = "Sharp + Light" - icon_state = "sharplight" - -/datum/sprite_accessory/snouts/roundlight - name = "Round + Light" - icon_state = "roundlight" - -/datum/sprite_accessory/horns - icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' - em_block = TRUE - -/datum/sprite_accessory/horns/simple - name = "Simple" - icon_state = "simple" - -/datum/sprite_accessory/horns/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/horns/curled - name = "Curled" - icon_state = "curled" - -/datum/sprite_accessory/horns/ram - name = "Ram" - icon_state = "ram" - -/datum/sprite_accessory/horns/angler - name = "Angeler" - icon_state = "angler" - -/datum/sprite_accessory/ears - icon = 'icons/mob/human/cat_features.dmi' - em_block = TRUE - -/datum/sprite_accessory/ears/cat - name = "Cat" - icon_state = "cat" - color_src = HAIR_COLOR - -/datum/sprite_accessory/ears/cat/big - name = "Big" - icon_state = "big" - -/datum/sprite_accessory/ears/cat/miqo - name = "Coeurl" - icon_state = "miqo" - -/datum/sprite_accessory/ears/cat/fold - name = "Fold" - icon_state = "fold" - -/datum/sprite_accessory/ears/cat/lynx - name = "Lynx" - icon_state = "lynx" - -/datum/sprite_accessory/ears/cat/round - name = "Round" - icon_state = "round" - -/datum/sprite_accessory/ears/cat/cybernetic - name = "Cybernetic" - icon_state = "cyber" - locked = TRUE - -/datum/sprite_accessory/ears/fox - icon = 'icons/mob/human/fox_features.dmi' - name = "Fox" - icon_state = "fox" - color_src = HAIR_COLOR - locked = TRUE - -/datum/sprite_accessory/wings - icon = 'icons/mob/human/species/wings.dmi' - em_block = TRUE - -/datum/sprite_accessory/wings_open - icon = 'icons/mob/human/species/wings.dmi' - em_block = TRUE - -/datum/sprite_accessory/wings/angel - name = "Angel" - icon_state = "angel" - color_src = FALSE - dimension_x = 46 - center = TRUE - dimension_y = 34 - locked = TRUE - -/datum/sprite_accessory/wings_open/angel - name = "Angel" - icon_state = "angel" - color_src = FALSE - dimension_x = 46 - center = TRUE - dimension_y = 34 - -/datum/sprite_accessory/wings/dragon - name = "Dragon" - icon_state = "dragon" - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/dragon - name = "Dragon" - icon_state = "dragon" - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/megamoth - name = "Megamoth" - icon_state = "megamoth" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/megamoth - name = "Megamoth" - icon_state = "megamoth" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/mothra - name = "Mothra" - icon_state = "mothra" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/mothra - name = "Mothra" - icon_state = "mothra" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/skeleton - name = "Skeleton" - icon_state = "skele" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/skeleton - name = "Skeleton" - icon_state = "skele" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/robotic - name = "Robotic" - icon_state = "robotic" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/robotic - name = "Robotic" - icon_state = "robotic" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/fly - name = "Fly" - icon_state = "fly" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/fly - name = "Fly" - icon_state = "fly" - color_src = FALSE - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/wings/slime - name = "Slime" - icon_state = "slime" - dimension_x = 96 - center = TRUE - dimension_y = 32 - locked = TRUE - -/datum/sprite_accessory/wings_open/slime - name = "Slime" - icon_state = "slime" - dimension_x = 96 - center = TRUE - dimension_y = 32 - -/datum/sprite_accessory/frills - icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' - -/datum/sprite_accessory/frills/simple - name = "Simple" - icon_state = "simple" - -/datum/sprite_accessory/frills/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/frills/aquatic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/spines - icon = 'icons/mob/human/species/lizard/lizard_spines.dmi' - em_block = TRUE - -/datum/sprite_accessory/tail_spines - icon = 'icons/mob/human/species/lizard/lizard_spines.dmi' - em_block = TRUE - -/datum/sprite_accessory/spines/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/tail_spines/short - name = "Short" - icon_state = "short" - -/datum/sprite_accessory/spines/shortmeme - name = "Short + Membrane" - icon_state = "shortmeme" - -/datum/sprite_accessory/tail_spines/shortmeme - name = "Short + Membrane" - icon_state = "shortmeme" - -/datum/sprite_accessory/spines/long - name = "Long" - icon_state = "long" - -/datum/sprite_accessory/tail_spines/long - name = "Long" - icon_state = "long" - -/datum/sprite_accessory/spines/longmeme - name = "Long + Membrane" - icon_state = "longmeme" - -/datum/sprite_accessory/tail_spines/longmeme - name = "Long + Membrane" - icon_state = "longmeme" - -/datum/sprite_accessory/spines/aquatic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/tail_spines/aquatic - name = "Aquatic" - icon_state = "aqua" - -/datum/sprite_accessory/caps - icon = 'icons/mob/human/species/mush_cap.dmi' - color_src = HAIR_COLOR - em_block = TRUE - -/datum/sprite_accessory/caps/round - name = "Round" - icon_state = "round" - -/datum/sprite_accessory/moth_wings - icon = 'icons/mob/human/species/moth/moth_wings.dmi' - color_src = null - em_block = TRUE - -/datum/sprite_accessory/moth_wings/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/moth_wings/monarch - name = "Monarch" - icon_state = "monarch" - -/datum/sprite_accessory/moth_wings/luna - name = "Luna" - icon_state = "luna" - -/datum/sprite_accessory/moth_wings/atlas - name = "Atlas" - icon_state = "atlas" - -/datum/sprite_accessory/moth_wings/reddish - name = "Reddish" - icon_state = "redish" - -/datum/sprite_accessory/moth_wings/royal - name = "Royal" - icon_state = "royal" - -/datum/sprite_accessory/moth_wings/gothic - name = "Gothic" - icon_state = "gothic" - -/datum/sprite_accessory/moth_wings/lovers - name = "Lovers" - icon_state = "lovers" - -/datum/sprite_accessory/moth_wings/whitefly - name = "White Fly" - icon_state = "whitefly" - -/datum/sprite_accessory/moth_wings/burnt_off - name = "Burnt Off" - icon_state = "burnt_off" - locked = TRUE - -/datum/sprite_accessory/moth_wings/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/moth_wings/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/moth_wings/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/moth_wings/ragged - name = "Ragged" - icon_state = "ragged" - -/datum/sprite_accessory/moth_wings/moonfly - name = "Moon Fly" - icon_state = "moonfly" - -/datum/sprite_accessory/moth_wings/snow - name = "Snow" - icon_state = "snow" - -/datum/sprite_accessory/moth_wings/oakworm - name = "Oak Worm" - icon_state = "oakworm" - -/datum/sprite_accessory/moth_wings/jungle - name = "Jungle" - icon_state = "jungle" - -/datum/sprite_accessory/moth_wings/witchwing - name = "Witch Wing" - icon_state = "witchwing" - -/datum/sprite_accessory/moth_wings/rosy - name = "Rosy" - icon_state = "rosy" - -/datum/sprite_accessory/moth_wings/feathery - name = "Feathery" - icon_state = "feathery" - -/datum/sprite_accessory/moth_wings/brown - name = "Brown" - icon_state = "brown" - -/datum/sprite_accessory/moth_wings/plasmafire - name = "Plasmafire" - icon_state = "plasmafire" - -/datum/sprite_accessory/moth_wings/moffra - name = "Moffra" - icon_state = "moffra" - -/datum/sprite_accessory/moth_wings/lightbearer - name = "Lightbearer" - icon_state = "lightbearer" - -/datum/sprite_accessory/moth_wings/dipped - name = "Dipped" - icon_state = "dipped" - -/datum/sprite_accessory/moth_antennae //Finally splitting the sprite - icon = 'icons/mob/human/species/moth/moth_antennae.dmi' - color_src = null - -/datum/sprite_accessory/moth_antennae/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/moth_antennae/reddish - name = "Reddish" - icon_state = "reddish" - -/datum/sprite_accessory/moth_antennae/royal - name = "Royal" - icon_state = "royal" - -/datum/sprite_accessory/moth_antennae/gothic - name = "Gothic" - icon_state = "gothic" - -/datum/sprite_accessory/moth_antennae/whitefly - name = "White Fly" - icon_state = "whitefly" - -/datum/sprite_accessory/moth_antennae/lovers - name = "Lovers" - icon_state = "lovers" - -/datum/sprite_accessory/moth_antennae/burnt_off - name = "Burnt Off" - icon_state = "burnt_off" - -/datum/sprite_accessory/moth_antennae/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/moth_antennae/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/moth_antennae/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/moth_antennae/ragged - name = "Ragged" - icon_state = "ragged" - -/datum/sprite_accessory/moth_antennae/moonfly - name = "Moon Fly" - icon_state = "moonfly" - -/datum/sprite_accessory/moth_antennae/oakworm - name = "Oak Worm" - icon_state = "oakworm" - -/datum/sprite_accessory/moth_antennae/jungle - name = "Jungle" - icon_state = "jungle" - -/datum/sprite_accessory/moth_antennae/witchwing - name = "Witch Wing" - icon_state = "witchwing" - -/datum/sprite_accessory/moth_antennae/regal - name = "Regal" - icon_state = "regal" -/datum/sprite_accessory/moth_antennae/rosy - name = "Rosy" - icon_state = "rosy" - -/datum/sprite_accessory/moth_antennae/feathery - name = "Feathery" - icon_state = "feathery" - -/datum/sprite_accessory/moth_antennae/brown - name = "Brown" - icon_state = "brown" - -/datum/sprite_accessory/moth_antennae/plasmafire - name = "Plasmafire" - icon_state = "plasmafire" - -/datum/sprite_accessory/moth_antennae/moffra - name = "Moffra" - icon_state = "moffra" - -/datum/sprite_accessory/moth_antennae/lightbearer - name = "Lightbearer" - icon_state = "lightbearer" - -/datum/sprite_accessory/moth_antennae/dipped - name = "Dipped" - icon_state = "dipped" - -/datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan - icon = 'icons/mob/human/species/moth/moth_markings.dmi' - color_src = null - -/datum/sprite_accessory/moth_markings/reddish - name = "Reddish" - icon_state = "reddish" - -/datum/sprite_accessory/moth_markings/royal - name = "Royal" - icon_state = "royal" - -/datum/sprite_accessory/moth_markings/gothic - name = "Gothic" - icon_state = "gothic" - -/datum/sprite_accessory/moth_markings/whitefly - name = "White Fly" - icon_state = "whitefly" - -/datum/sprite_accessory/moth_markings/lovers - name = "Lovers" - icon_state = "lovers" - -/datum/sprite_accessory/moth_markings/burnt_off - name = "Burnt Off" - icon_state = "burnt_off" - -/datum/sprite_accessory/moth_markings/firewatch - name = "Firewatch" - icon_state = "firewatch" - -/datum/sprite_accessory/moth_markings/deathhead - name = "Deathshead" - icon_state = "deathhead" - -/datum/sprite_accessory/moth_markings/poison - name = "Poison" - icon_state = "poison" - -/datum/sprite_accessory/moth_markings/ragged - name = "Ragged" - icon_state = "ragged" - -/datum/sprite_accessory/moth_markings/moonfly - name = "Moon Fly" - icon_state = "moonfly" - -/datum/sprite_accessory/moth_markings/oakworm - name = "Oak Worm" - icon_state = "oakworm" - -/datum/sprite_accessory/moth_markings/jungle - name = "Jungle" - icon_state = "jungle" - -/datum/sprite_accessory/moth_markings/witchwing - name = "Witch Wing" - icon_state = "witchwing" - -/datum/sprite_accessory/moth_markings/lightbearer - name = "Lightbearer" - icon_state = "lightbearer" - -/datum/sprite_accessory/moth_markings/dipped - name = "Dipped" - icon_state = "dipped" diff --git a/code/datums/sprite_accessories/_sprite_accessory.dm b/code/datums/sprite_accessories/_sprite_accessory.dm new file mode 100644 index 000000000000..4cdd8ab6e589 --- /dev/null +++ b/code/datums/sprite_accessories/_sprite_accessory.dm @@ -0,0 +1,66 @@ +/* + * Hello and welcome to sprite_accessories: For sprite accessories, such as hair, + * facial hair, and possibly tattoos and stuff somewhere along the line. This file is + * intended to be friendly for people with little to no actual coding experience. + * The process of adding in new hairstyles has been made pain-free and easy to do. + * Enjoy! - Doohl + * + * + * Notice: This all gets automatically compiled in a list in dna.dm, so you do not + * have to define any UI values for sprite accessories manually for hair and facial + * hair. Just add in new hair types and the game will naturally adapt. + * + * !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles, + * to the point where you may completely corrupt a server's savefiles. Please refrain + * from doing this unless you absolutely know what you are doing, and have defined a + * conversion in savefile.dm + */ + +/datum/sprite_accessory + /// The icon file the accessory is located in. + var/icon + /// The icon_state of the accessory. + var/icon_state + /// The preview name of the accessory. + var/name + /// Determines if the accessory will be skipped or included in random hair generations. + var/gender = NEUTER + /// Something that can be worn by either gender, but looks different on each. + var/gender_specific = FALSE + /// Determines if the accessory will be skipped by color preferences. + var/use_static + /** + * Currently only used by mutantparts so don't worry about hair and stuff. + * This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. + */ + var/color_src = MUTANT_COLOR + /// Is this part locked from roundstart selection? Used for parts that apply effects. + var/locked = FALSE + /// Should we center the sprite? + var/center = FALSE + /// The width of the sprite in pixels. Used to center it if necessary. + var/dimension_x = 32 + /// The height of the sprite in pixels. Used to center it if necessary. + var/dimension_y = 32 + /// Should this sprite block emissives? + var/em_block = FALSE + /// Determines if this is considered "sane" for the purpose of [/proc/randomize_human_normie] + /// Basically this is to blacklist the extremely wacky stuff from being picked in random human generation. + var/natural_spawn = TRUE + +/datum/sprite_accessory/blank + name = SPRITE_ACCESSORY_NONE + icon_state = SPRITE_ACCESSORY_NONE + +//////////.////////////////// +// MutantParts Definitions // +///////////////////////////// + +/datum/sprite_accessory/caps + icon = 'icons/mob/human/species/mush_cap.dmi' + color_src = HAIR_COLOR + em_block = TRUE + +/datum/sprite_accessory/caps/round + name = "Round" + icon_state = "round" diff --git a/code/datums/sprite_accessories/clothing.dm b/code/datums/sprite_accessories/clothing.dm new file mode 100644 index 000000000000..96b2f3b16fd6 --- /dev/null +++ b/code/datums/sprite_accessories/clothing.dm @@ -0,0 +1,719 @@ +/datum/sprite_accessory/clothing + abstract_type = /datum/sprite_accessory/clothing + /// Allows you to specify a greyscale config + var/greyscale_config + /// Icon state in the digitigrade template file to use if the wearer is digitigrade. + /// If null, no special digitigrade handling is done. + var/digi_icon_state + /// Color pallete for static colored underwear, like hearts. + /// Used so greyscale copies can have the same palette. + var/greyscale_colors = "#FFFFFF#FFFFFF#FFFFFF" + /// The layer this sprite accessory should render on + var/layer = BODY_LAYER + /// What kind of gender shaping this sprite accessory should use (in case your sprite gets a weird missing pixel in the center) + var/female_sprite_flags = FEMALE_UNIFORM_FULL + +/// Override to return a different icon state given a bodytype or physique +/datum/sprite_accessory/clothing/proc/get_icon_state(physique, bodyshape) + return icon_state + +/** + * Generate an appearance from this clothing datum + * + * * color - if this is NOT a statically colored clothing article and NOT gags, uses this color. + * * physique - physique of the wearer (male or female) + * * bodyshape - bodyshape of the wearer (humanoid, digitigrade, etc) + */ +/datum/sprite_accessory/clothing/proc/make_appearance(color = COLOR_WHITE, physique = MALE, bodyshape = BODYSHAPE_HUMANOID) + var/static/list/cached_icons = list() + var/use_female = physique == FEMALE && female_sprite_flags + var/use_digi = digi_icon_state && (bodyshape & BODYSHAPE_DIGITIGRADE) + var/female_sprite_flags_to_use = female_sprite_flags + var/icon_state_to_use = get_icon_state(physique, bodyshape) + if(use_digi && female_sprite_flags_to_use) + female_sprite_flags_to_use = FEMALE_UNIFORM_TOP_ONLY // No bottom gender shaping for the digi legs + + var/key = "[icon_state_to_use]-[greyscale_config || "ng"]-[use_female]-[use_digi]-[greyscale_colors]" + var/mutable_appearance/result + if(cached_icons[key]) // it's already cached + result = mutable_appearance(icon(cached_icons[key])) + + else if(greyscale_config || use_female || use_digi) // icon ops ahead + var/icon_file_path = greyscale_config ? SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors) : icon + var/icon/created = icon(icon_file_path, icon_state_to_use) + if(use_female) + created = wear_female_version(icon_state_to_use, icon_file_path, icon, female_sprite_flags_to_use) + if(use_digi) + var/icon/replacement = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade_underwear, greyscale_colors), digi_icon_state) + created = replace_icon_legs(created, replacement) + + cached_icons[key] = fcopy_rsc(created) + result = mutable_appearance(created) + + else // no caching necessary + result = mutable_appearance(icon, icon_state_to_use) + + result.layer = -layer + result.color = use_static ? null : color + + return result + + +/////////////////////////// +// Underwear Definitions // +/////////////////////////// + +/datum/sprite_accessory/clothing/underwear + icon = 'icons/mob/clothing/underwear.dmi' + use_static = FALSE + em_block = TRUE + abstract_type = /datum/sprite_accessory/clothing/underwear + +//MALE UNDERWEAR +/datum/sprite_accessory/clothing/underwear/nude + name = "Nude" + icon_state = null + gender = NEUTER + +/datum/sprite_accessory/clothing/underwear/nude/make_appearance(mob/living/carbon/human/for_who) + return + +/datum/sprite_accessory/clothing/underwear/male_briefs + name = "Briefs" + icon_state = "male_briefs" + gender = MALE + +/datum/sprite_accessory/clothing/underwear/male_boxers + name = "Boxers" + icon_state = "male_boxers" + gender = MALE + digi_icon_state = "boxers" + +/datum/sprite_accessory/clothing/underwear/male_stripe + name = "Striped Boxers" + icon_state = "male_stripe" + gender = MALE + digi_icon_state = "boxers_stripe" + +/datum/sprite_accessory/clothing/underwear/male_midway + name = "Midway Boxers" + icon_state = "male_midway" + gender = MALE + digi_icon_state = "midway" + +/datum/sprite_accessory/clothing/underwear/male_longjohns + name = "Long Johns" + icon_state = "male_longjohns" + gender = MALE + digi_icon_state = "longjohns" + +/datum/sprite_accessory/clothing/underwear/male_kinky + name = "Jockstrap" + icon_state = "male_kinky" + gender = MALE + +/datum/sprite_accessory/clothing/underwear/male_mankini + name = "Mankini" + icon_state = "male_mankini" + gender = MALE + +/datum/sprite_accessory/clothing/underwear/male_hearts + name = "Hearts Boxers" + icon_state = "male_hearts" + gender = MALE + use_static = TRUE + digi_icon_state = "boxers_stripe_threecolor" + greyscale_colors = "#D62626#EEEEEE#D62626#" + +/datum/sprite_accessory/clothing/underwear/male_commie + name = "Commie Boxers" + icon_state = "male_commie" + gender = MALE + use_static = TRUE + digi_icon_state = "boxers_stripe_twocolor" + greyscale_colors = "#D62626#D1B62C#D62626" + +/datum/sprite_accessory/clothing/underwear/male_usastripe + name = "Freedom Boxers" + icon_state = "male_assblastusa" + gender = MALE + use_static = TRUE + digi_icon_state = "boxers_stripe_threecolor" + greyscale_colors = "#D62626#EEEEEE#2E26D6" + +/datum/sprite_accessory/clothing/underwear/male_uk + name = "UK Boxers" + icon_state = "male_uk" + gender = MALE + use_static = TRUE + digi_icon_state = "boxers_stripe_threecolor" + greyscale_colors = "#D62626#EEEEEE#2E26D6" + +//FEMALE UNDERWEAR +/datum/sprite_accessory/clothing/underwear/female_bikini + name = "Bikini" + icon_state = "female_bikini" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/female_lace + name = "Lace Bikini" + icon_state = "female_lace" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/female_bralette + name = "Bralette w/ Boyshorts" + icon_state = "female_bralette" + gender = FEMALE + digi_icon_state = "short_short" + +/datum/sprite_accessory/clothing/underwear/female_sport + name = "Sports Bra w/ Boyshorts" + icon_state = "female_sport" + gender = FEMALE + digi_icon_state = "short" + +/datum/sprite_accessory/clothing/underwear/female_thong + name = "Thong" + icon_state = "female_thong" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/female_strapless + name = "Strapless Bikini" + icon_state = "female_strapless" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/female_babydoll + name = "Babydoll" + icon_state = "female_babydoll" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/swimsuit_onepiece + name = "One-Piece Swimsuit" + icon_state = "swim_onepiece" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/swimsuit_strapless_onepiece + name = "Strapless One-Piece Swimsuit" + icon_state = "swim_strapless_onepiece" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/swimsuit_twopiece + name = "Two-Piece Swimsuit" + icon_state = "swim_twopiece" + gender = FEMALE + digi_icon_state = "short_short" + +/datum/sprite_accessory/clothing/underwear/swimsuit_strapless_twopiece + name = "Strapless Two-Piece Swimsuit" + icon_state = "swim_strapless_twopiece" + gender = FEMALE + digi_icon_state = "short_short" + +/datum/sprite_accessory/clothing/underwear/swimsuit_stripe + name = "Strapless Striped Swimsuit" + icon_state = "swim_stripe" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/swimsuit_halter + name = "Halter Swimsuit" + icon_state = "swim_halter" + gender = FEMALE + +/datum/sprite_accessory/clothing/underwear/female_white_neko + name = "Neko Bikini (White)" + icon_state = "female_neko_white" + gender = FEMALE + use_static = TRUE + +/datum/sprite_accessory/clothing/underwear/female_black_neko + name = "Neko Bikini (Black)" + icon_state = "female_neko_black" + gender = FEMALE + use_static = TRUE + +/datum/sprite_accessory/clothing/underwear/female_commie + name = "Commie Bikini" + icon_state = "female_commie" + gender = FEMALE + use_static = TRUE + +/datum/sprite_accessory/clothing/underwear/female_usastripe + name = "Freedom Bikini" + icon_state = "female_assblastusa" + gender = FEMALE + use_static = TRUE + +/datum/sprite_accessory/clothing/underwear/female_uk + name = "UK Bikini" + icon_state = "female_uk" + gender = FEMALE + use_static = TRUE + +/datum/sprite_accessory/clothing/underwear/female_kinky + name = "Lingerie" + icon_state = "female_kinky" + gender = FEMALE + use_static = TRUE + +//////////////////////////// +// Undershirt Definitions // +//////////////////////////// + +/datum/sprite_accessory/clothing/undershirt + icon = 'icons/mob/clothing/underwear.dmi' + em_block = TRUE + abstract_type = /datum/sprite_accessory/clothing/undershirt + +/datum/sprite_accessory/clothing/undershirt/nude + name = "Nude" + icon_state = null + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/nude/make_appearance(mob/living/carbon/human/for_who) + return + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/clothing/undershirt/bluejersey + name = "Jersey (Blue)" + icon_state = "shirt_bluejersey" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/redjersey + name = "Jersey (Red)" + icon_state = "shirt_redjersey" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/bluepolo + name = "Polo Shirt (Blue)" + icon_state = "bluepolo" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/grayyellowpolo + name = "Polo Shirt (Gray-Yellow)" + icon_state = "grayyellowpolo" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/redpolo + name = "Polo Shirt (Red)" + icon_state = "redpolo" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/whitepolo + name = "Polo Shirt (White)" + icon_state = "whitepolo" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/alienshirt + name = "Shirt (Alien)" + icon_state = "shirt_alien" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/mondmondjaja + name = "Shirt (Band)" + icon_state = "band" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/shirt_black + name = "Shirt (Black)" + icon_state = "shirt_black" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/blueshirt + name = "Shirt (Blue)" + icon_state = "shirt_blue" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/clownshirt + name = "Shirt (Clown)" + icon_state = "shirt_clown" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/commie + name = "Shirt (Commie)" + icon_state = "shirt_commie" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/greenshirt + name = "Shirt (Green)" + icon_state = "shirt_green" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/shirt_grey + name = "Shirt (Grey)" + icon_state = "shirt_grey" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/ian + name = "Shirt (Ian)" + icon_state = "ian" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/ilovent + name = "Shirt (I Love NT)" + icon_state = "ilovent" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/lover + name = "Shirt (Lover)" + icon_state = "lover" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/matroska + name = "Shirt (Matroska)" + icon_state = "matroska" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/meat + name = "Shirt (Meat)" + icon_state = "shirt_meat" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/nano + name = "Shirt (Nanotrasen)" + icon_state = "shirt_nano" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/peace + name = "Shirt (Peace)" + icon_state = "peace" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/pacman + name = "Shirt (Pogoman)" + icon_state = "pogoman" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/question + name = "Shirt (Question)" + icon_state = "shirt_question" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/redshirt + name = "Shirt (Red)" + icon_state = "shirt_red" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/skull + name = "Shirt (Skull)" + icon_state = "shirt_skull" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/ss13 + name = "Shirt (SS13)" + icon_state = "shirt_ss13" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/stripe + name = "Shirt (Striped)" + icon_state = "shirt_stripes" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tiedye + name = "Shirt (Tie-dye)" + icon_state = "shirt_tiedye" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/uk + name = "Shirt (UK)" + icon_state = "uk" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/usa + name = "Shirt (USA)" + icon_state = "shirt_assblastusa" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/shirt_white + name = "Shirt (White)" + icon_state = "shirt_white" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/blackshortsleeve + name = "Short-sleeved Shirt (Black)" + icon_state = "blackshortsleeve" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/blueshortsleeve + name = "Short-sleeved Shirt (Blue)" + icon_state = "blueshortsleeve" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/greenshortsleeve + name = "Short-sleeved Shirt (Green)" + icon_state = "greenshortsleeve" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/purpleshortsleeve + name = "Short-sleeved Shirt (Purple)" + icon_state = "purpleshortsleeve" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/whiteshortsleeve + name = "Short-sleeved Shirt (White)" + icon_state = "whiteshortsleeve" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/sports_bra + name = "Sports Bra" + icon_state = "sports_bra" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/sports_bra2 + name = "Sports Bra (Alt)" + icon_state = "sports_bra_alt" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/blueshirtsport + name = "Sports Shirt (Blue)" + icon_state = "blueshirtsport" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/greenshirtsport + name = "Sports Shirt (Green)" + icon_state = "greenshirtsport" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/redshirtsport + name = "Sports Shirt (Red)" + icon_state = "redshirtsport" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tank_black + name = "Tank Top (Black)" + icon_state = "tank_black" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tankfire + name = "Tank Top (Fire)" + icon_state = "tank_fire" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tank_grey + name = "Tank Top (Grey)" + icon_state = "tank_grey" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/female_midriff + name = "Tank Top (Midriff)" + icon_state = "tank_midriff" + gender = FEMALE + +/datum/sprite_accessory/clothing/undershirt/tank_red + name = "Tank Top (Red)" + icon_state = "tank_red" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tankstripe + name = "Tank Top (Striped)" + icon_state = "tank_stripes" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tank_white + name = "Tank Top (White)" + icon_state = "tank_white" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/redtop + name = "Top (Red)" + icon_state = "redtop" + gender = FEMALE + +/datum/sprite_accessory/clothing/undershirt/whitetop + name = "Top (White)" + icon_state = "whitetop" + gender = FEMALE + +/datum/sprite_accessory/clothing/undershirt/tshirt_blue + name = "T-Shirt (Blue)" + icon_state = "blueshirt" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tshirt_green + name = "T-Shirt (Green)" + icon_state = "greenshirt" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/tshirt_red + name = "T-Shirt (Red)" + icon_state = "redshirt" + gender = NEUTER + +/datum/sprite_accessory/clothing/undershirt/yellowshirt + name = "T-Shirt (Yellow)" + icon_state = "yellowshirt" + gender = NEUTER + +/////////////////////// +// Socks Definitions // +/////////////////////// + +/datum/sprite_accessory/clothing/socks + icon = 'icons/mob/clothing/underwear.dmi' + em_block = TRUE + abstract_type = /datum/sprite_accessory/clothing/socks + +/datum/sprite_accessory/clothing/socks/nude + name = "Nude" + icon_state = null + +/datum/sprite_accessory/clothing/socks/nude/make_appearance(mob/living/carbon/human/for_who) + return + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/clothing/socks/ace_knee + name = "Knee-high (Ace)" + icon_state = "ace_knee" + +/datum/sprite_accessory/clothing/socks/bee_knee + name = "Knee-high (Bee)" + icon_state = "bee_knee" + +/datum/sprite_accessory/clothing/socks/black_knee + name = "Knee-high (Black)" + icon_state = "black_knee" + +/datum/sprite_accessory/clothing/socks/commie_knee + name = "Knee-High (Commie)" + icon_state = "commie_knee" + +/datum/sprite_accessory/clothing/socks/usa_knee + name = "Knee-High (Freedom)" + icon_state = "assblastusa_knee" + +/datum/sprite_accessory/clothing/socks/rainbow_knee + name = "Knee-high (Rainbow)" + icon_state = "rainbow_knee" + +/datum/sprite_accessory/clothing/socks/striped_knee + name = "Knee-high (Striped)" + icon_state = "striped_knee" + +/datum/sprite_accessory/clothing/socks/thin_knee + name = "Knee-high (Thin)" + icon_state = "thin_knee" + +/datum/sprite_accessory/clothing/socks/trans_knee + name = "Knee-high (Trans)" + icon_state = "trans_knee" + +/datum/sprite_accessory/clothing/socks/uk_knee + name = "Knee-High (UK)" + icon_state = "uk_knee" + +/datum/sprite_accessory/clothing/socks/white_knee + name = "Knee-high (White)" + icon_state = "white_knee" + +/datum/sprite_accessory/clothing/socks/fishnet_knee + name = "Knee-high (Fishnet)" + icon_state = "fishnet_knee" + +/datum/sprite_accessory/clothing/socks/black_norm + name = "Normal (Black)" + icon_state = "black_norm" + +/datum/sprite_accessory/clothing/socks/white_norm + name = "Normal (White)" + icon_state = "white_norm" + +/datum/sprite_accessory/clothing/socks/pantyhose + name = "Pantyhose" + icon_state = "pantyhose" + +/datum/sprite_accessory/clothing/socks/black_short + name = "Short (Black)" + icon_state = "black_short" + +/datum/sprite_accessory/clothing/socks/white_short + name = "Short (White)" + icon_state = "white_short" + +/datum/sprite_accessory/clothing/socks/stockings_blue + name = "Stockings (Blue)" + icon_state = "stockings_blue" + +/datum/sprite_accessory/clothing/socks/stockings_cyan + name = "Stockings (Cyan)" + icon_state = "stockings_cyan" + +/datum/sprite_accessory/clothing/socks/stockings_dpink + name = "Stockings (Dark Pink)" + icon_state = "stockings_dpink" + +/datum/sprite_accessory/clothing/socks/stockings_green + name = "Stockings (Green)" + icon_state = "stockings_green" + +/datum/sprite_accessory/clothing/socks/stockings_orange + name = "Stockings (Orange)" + icon_state = "stockings_orange" + +/datum/sprite_accessory/clothing/socks/stockings_programmer + name = "Stockings (Programmer)" + icon_state = "stockings_lpink" + +/datum/sprite_accessory/clothing/socks/stockings_purple + name = "Stockings (Purple)" + icon_state = "stockings_purple" + +/datum/sprite_accessory/clothing/socks/stockings_yellow + name = "Stockings (Yellow)" + icon_state = "stockings_yellow" + +/datum/sprite_accessory/clothing/socks/stockings_fishnet + name = "Stockings (Fishnet)" + icon_state = "fishnet_full" + +/datum/sprite_accessory/clothing/socks/ace_thigh + name = "Thigh-high (Ace)" + icon_state = "ace_thigh" + +/datum/sprite_accessory/clothing/socks/bee_thigh + name = "Thigh-high (Bee)" + icon_state = "bee_thigh" + +/datum/sprite_accessory/clothing/socks/black_thigh + name = "Thigh-high (Black)" + icon_state = "black_thigh" + +/datum/sprite_accessory/clothing/socks/commie_thigh + name = "Thigh-high (Commie)" + icon_state = "commie_thigh" + +/datum/sprite_accessory/clothing/socks/usa_thigh + name = "Thigh-high (Freedom)" + icon_state = "assblastusa_thigh" + +/datum/sprite_accessory/clothing/socks/rainbow_thigh + name = "Thigh-high (Rainbow)" + icon_state = "rainbow_thigh" + +/datum/sprite_accessory/clothing/socks/striped_thigh + name = "Thigh-high (Striped)" + icon_state = "striped_thigh" + +/datum/sprite_accessory/clothing/socks/thin_thigh + name = "Thigh-high (Thin)" + icon_state = "thin_thigh" + +/datum/sprite_accessory/clothing/socks/trans_thigh + name = "Thigh-high (Trans)" + icon_state = "trans_thigh" + +/datum/sprite_accessory/clothing/socks/uk_thigh + name = "Thigh-high (UK)" + icon_state = "uk_thigh" + +/datum/sprite_accessory/clothing/socks/white_thigh + name = "Thigh-high (White)" + icon_state = "white_thigh" + +/datum/sprite_accessory/clothing/socks/fishnet_thigh + name = "Thigh-high (Fishnet)" + icon_state = "fishnet_thigh" + +/datum/sprite_accessory/clothing/socks/thocks + name = "Thocks" + icon_state = "thocks" diff --git a/code/datums/sprite_accessories/ears.dm b/code/datums/sprite_accessories/ears.dm new file mode 100644 index 000000000000..bc770a2ec884 --- /dev/null +++ b/code/datums/sprite_accessories/ears.dm @@ -0,0 +1,40 @@ +/datum/sprite_accessory/ears + icon = 'icons/mob/human/cat_features.dmi' + em_block = TRUE + +/datum/sprite_accessory/ears/cat + name = "Cat" + icon_state = "cat" + color_src = HAIR_COLOR + +/datum/sprite_accessory/ears/cat/big + name = "Big" + icon_state = "big" + +/datum/sprite_accessory/ears/cat/miqo + name = "Coeurl" + icon_state = "miqo" + +/datum/sprite_accessory/ears/cat/fold + name = "Fold" + icon_state = "fold" + +/datum/sprite_accessory/ears/cat/lynx + name = "Lynx" + icon_state = "lynx" + +/datum/sprite_accessory/ears/cat/round + name = "Round" + icon_state = "round" + +/datum/sprite_accessory/ears/cat/cybernetic + name = "Cybernetic" + icon_state = "cyber" + locked = TRUE + +/datum/sprite_accessory/ears/fox + icon = 'icons/mob/human/fox_features.dmi' + name = "Fox" + icon_state = "fox" + color_src = HAIR_COLOR + locked = TRUE diff --git a/code/datums/sprite_accessories/facial_hair.dm b/code/datums/sprite_accessories/facial_hair.dm new file mode 100644 index 000000000000..1fd30435b4da --- /dev/null +++ b/code/datums/sprite_accessories/facial_hair.dm @@ -0,0 +1,161 @@ +/datum/sprite_accessory/facial_hair + icon = 'icons/mob/human/human_face.dmi' + gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P) + em_block = TRUE + +// please make sure they're sorted alphabetically and categorized + +/datum/sprite_accessory/facial_hair/abe + name = "Beard (Abraham Lincoln)" + icon_state = "facial_abe" + +/datum/sprite_accessory/facial_hair/brokenman + name = "Beard (Broken Man)" + icon_state = "facial_brokenman" + natural_spawn = FALSE + +/datum/sprite_accessory/facial_hair/chinstrap + name = "Beard (Chinstrap)" + icon_state = "facial_chin" + +/datum/sprite_accessory/facial_hair/dwarf + name = "Beard (Dwarf)" + icon_state = "facial_dwarf" + +/datum/sprite_accessory/facial_hair/fullbeard + name = "Beard (Full)" + icon_state = "facial_fullbeard" + +/datum/sprite_accessory/facial_hair/croppedfullbeard + name = "Beard (Cropped Fullbeard)" + icon_state = "facial_croppedfullbeard" + +/datum/sprite_accessory/facial_hair/gt + name = "Beard (Goatee)" + icon_state = "facial_gt" + +/datum/sprite_accessory/facial_hair/hip + name = "Beard (Hipster)" + icon_state = "facial_hip" + +/datum/sprite_accessory/facial_hair/jensen + name = "Beard (Jensen)" + icon_state = "facial_jensen" + +/datum/sprite_accessory/facial_hair/neckbeard + name = "Beard (Neckbeard)" + icon_state = "facial_neckbeard" + +/datum/sprite_accessory/facial_hair/vlongbeard + name = "Beard (Very Long)" + icon_state = "facial_wise" + +/datum/sprite_accessory/facial_hair/muttonmus + name = "Beard (Muttonmus)" + icon_state = "facial_muttonmus" + +/datum/sprite_accessory/facial_hair/martialartist + name = "Beard (Martial Artist)" + icon_state = "facial_martialartist" + natural_spawn = FALSE + +/datum/sprite_accessory/facial_hair/chinlessbeard + name = "Beard (Chinless Beard)" + icon_state = "facial_chinlessbeard" + +/datum/sprite_accessory/facial_hair/moonshiner + name = "Beard (Moonshiner)" + icon_state = "facial_moonshiner" + +/datum/sprite_accessory/facial_hair/longbeard + name = "Beard (Long)" + icon_state = "facial_longbeard" + +/datum/sprite_accessory/facial_hair/volaju + name = "Beard (Volaju)" + icon_state = "facial_volaju" + +/datum/sprite_accessory/facial_hair/threeoclock + name = "Beard (Three o Clock Shadow)" + icon_state = "facial_3oclock" + +/datum/sprite_accessory/facial_hair/fiveoclock + name = "Beard (Five o Clock Shadow)" + icon_state = "facial_fiveoclock" + +/datum/sprite_accessory/facial_hair/fiveoclockm + name = "Beard (Five o Clock Moustache)" + icon_state = "facial_5oclockmoustache" + +/datum/sprite_accessory/facial_hair/sevenoclock + name = "Beard (Seven o Clock Shadow)" + icon_state = "facial_7oclock" + +/datum/sprite_accessory/facial_hair/sevenoclockm + name = "Beard (Seven o Clock Moustache)" + icon_state = "facial_7oclockmoustache" + +/datum/sprite_accessory/facial_hair/moustache + name = "Moustache" + icon_state = "facial_moustache" + +/datum/sprite_accessory/facial_hair/pencilstache + name = "Moustache (Pencilstache)" + icon_state = "facial_pencilstache" + +/datum/sprite_accessory/facial_hair/smallstache + name = "Moustache (Smallstache)" + icon_state = "facial_smallstache" + +/datum/sprite_accessory/facial_hair/walrus + name = "Moustache (Walrus)" + icon_state = "facial_walrus" + +/datum/sprite_accessory/facial_hair/fu + name = "Moustache (Fu Manchu)" + icon_state = "facial_fumanchu" + +/datum/sprite_accessory/facial_hair/hogan + name = "Moustache (Hulk Hogan)" + icon_state = "facial_hogan" //-Neek + +/datum/sprite_accessory/facial_hair/selleck + name = "Moustache (Selleck)" + icon_state = "facial_selleck" + +/datum/sprite_accessory/facial_hair/chaplin + name = "Moustache (Square)" + icon_state = "facial_chaplin" + +/datum/sprite_accessory/facial_hair/vandyke + name = "Moustache (Van Dyke)" + icon_state = "facial_vandyke" + +/datum/sprite_accessory/facial_hair/watson + name = "Moustache (Watson)" + icon_state = "facial_watson" + +/datum/sprite_accessory/facial_hair/handlebar + name = "Moustache (Handlebar)" + icon_state = "facial_handlebar" + +/datum/sprite_accessory/facial_hair/handlebar2 + name = "Moustache (Handlebar 2)" + icon_state = "facial_handlebar2" + +/datum/sprite_accessory/facial_hair/elvis + name = "Sideburns (Elvis)" + icon_state = "facial_elvis" + +/datum/sprite_accessory/facial_hair/mutton + name = "Sideburns (Mutton Chops)" + icon_state = "facial_mutton" + +/datum/sprite_accessory/facial_hair/sideburn + name = "Sideburns" + icon_state = "facial_sideburn" + +/datum/sprite_accessory/facial_hair/shaved + name = "Shaved" + icon_state = SPRITE_ACCESSORY_NONE + gender = NEUTER diff --git a/code/datums/sprite_accessories/frills.dm b/code/datums/sprite_accessories/frills.dm new file mode 100644 index 000000000000..b470da027899 --- /dev/null +++ b/code/datums/sprite_accessories/frills.dm @@ -0,0 +1,14 @@ +/datum/sprite_accessory/frills + icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' + +/datum/sprite_accessory/frills/simple + name = "Simple" + icon_state = "simple" + +/datum/sprite_accessory/frills/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/frills/aquatic + name = "Aquatic" + icon_state = "aqua" diff --git a/code/datums/sprite_accessories/hair.dm b/code/datums/sprite_accessories/hair.dm new file mode 100644 index 000000000000..a8e4848762d5 --- /dev/null +++ b/code/datums/sprite_accessories/hair.dm @@ -0,0 +1,1185 @@ +/datum/hair_mask + var/icon/icon = 'icons/mob/human/hair_masks.dmi' + var/icon_state = "" + /// Strict coverage zones will always have the hair mask applied to them, even if a piece of hair at that location would normally resist being masked. + /// If a piece of headware only covers the top of the head, it should only strictly cover the top zone. But a mostly-enclosed helmet might strictly cover almost all zones. + var/strict_coverage_zones = NONE + +/datum/hair_mask/standard_hat_middle + icon_state = "hide_above_45deg" + strict_coverage_zones = HAIR_APPENDAGE_TOP + +/datum/hair_mask/standard_hat_low + icon_state = "hide_above_45deg_low" + strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR + +/datum/hair_mask/winterhood + icon_state = "hide_winterhood" + strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR + +/datum/hair_mask/hoodie + icon_state = "hide_hoodie" + strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR + +// Cache of each hairstyle's icon after being blended with the given masks +// "joined mask types" is each mask's type as a string joined by commas (for no masks, it is the empty string) +// /datum/sprite_accessory/hair path -> list(joined mask types -> icon) +GLOBAL_LIST_EMPTY(blended_hair_icons_cache) + +/datum/sprite_accessory/hair + icon = 'icons/mob/human/human_face.dmi' // default icon for all hairs + var/y_offset = 0 // Y offset to apply so we can have hair that reaches above the player sprite's visual bounding box + + // Some hair will have "appendages", such as pony tails, that stick out from certain parts of the head. These can be layered above or below headwear and resist being masked away by hair masks. + // Lists should be icon_state strings associated with the HAIR_APPENDAGE defines specifying the part of the head they stick out from. + // hair_appendages_inner contains icon_states that go in the normal hair layer, hair_appendages_outer contains icon_states that go above the layer for headwear. + // hair_appendages_inner will be masked normally if their HAIR_APPENDAGE zone is strictly masked by a piece of clothing (a fully enclosed helmet with a transparent visor will strictly mask all zones, a small hat will only strictly mask the top, etc.). + // hair_appendages_outer will never be masked at all and will just not be shown if their zone has strict masking. These should generally not have visible sprites for every dir. + var/list/hair_appendages_inner = null + var/list/hair_appendages_outer = null + +/// Retrieve the base hair icon with all hair appendeges blended in, with hair masks applied, from the cache, or generate it if it doesn't exist +/datum/sprite_accessory/hair/proc/getCachedIcon(list/hair_masks) + var/icon/cachedIcon + var/joinedMasks = LAZYLEN(hair_masks) ? jointext(hair_masks, ",") : "" + var/list/masks_to_icons = GLOB.blended_hair_icons_cache[type] + if(!masks_to_icons) + GLOB.blended_hair_icons_cache[type] = list() + else + cachedIcon = masks_to_icons[joinedMasks] + + if(!cachedIcon) + if(LAZYLEN(hair_masks)) + if(LAZYLEN(hair_appendages_inner)) + // Check if there are any hair appendages in a zone that is not strictly masked + var/found_mask_dodger = FALSE + for(var/datum/hair_mask/mask as anything in hair_masks) + for(var/appendage in hair_appendages_inner) + var/zone = hair_appendages_inner[appendage] + if(!(zone & mask.strict_coverage_zones)) + found_mask_dodger = TRUE + + if(found_mask_dodger) + // We have to process each icon individually + cachedIcon = icon(icon, icon_state) + // mask the base icon + for(var/datum/hair_mask/mask as anything in hair_masks) + var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) + mask_icon.Shift(SOUTH, y_offset) + cachedIcon.Blend(mask_icon, ICON_ADD) + + // mask the appendages if required and add them to the base icon + for(var/appendage_icon_state in hair_appendages_inner) + var/icon/appendage_icon = icon(icon, appendage_icon_state) + var/zone = hair_appendages_inner[appendage_icon_state] + for(var/datum/hair_mask/mask as anything in hair_masks) + if(zone & mask.strict_coverage_zones) + var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) + mask_icon.Shift(SOUTH, y_offset) + appendage_icon.Blend(mask_icon, ICON_ADD) + cachedIcon.Blend(appendage_icon, ICON_OVERLAY) + else + // No mask dodgers, so we can just mask the full (hopefully cached) icon + cachedIcon = icon(getCachedIcon()) + for(var/datum/hair_mask/mask as anything in hair_masks) + var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) + mask_icon.Shift(SOUTH, y_offset) + cachedIcon.Blend(mask_icon, ICON_ADD) + else + // No hair appendages, so just apply all hair masks to the base icon + cachedIcon = icon(icon, icon_state) + for(var/datum/hair_mask/mask as anything in hair_masks) + var/icon/mask_icon = icon('icons/mob/human/hair_masks.dmi', mask.icon_state) + mask_icon.Shift(SOUTH, y_offset) + cachedIcon.Blend(mask_icon, ICON_ADD) + else + // no hair masks + cachedIcon = icon(icon, icon_state) + if(LAZYLEN(hair_appendages_inner)) + for(var/appendage_icon_state in hair_appendages_inner) + var/icon/appendage_icon = icon(icon, appendage_icon_state) + cachedIcon.Blend(appendage_icon, ICON_OVERLAY) + // set cache + GLOB.blended_hair_icons_cache[type][joinedMasks] = cachedIcon + return cachedIcon + + +// please make sure they're sorted alphabetically and, where needed, categorized +// try to capitalize the names please~ +// try to spell +// you do not need to define _s or _l sub-states, game automatically does this for you + +/datum/sprite_accessory/hair/afro + name = "Afro" + icon_state = "hair_afro" + +/datum/sprite_accessory/hair/afro2 + name = "Afro 2" + icon_state = "hair_afro2" + +/datum/sprite_accessory/hair/afro_large + name = "Afro (Large)" + icon_state = "hair_bigafro" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/afro_over_eyes + name = "Afro (Over Eyes)" + icon_state = "hair_afro_over_eyes" + +/datum/sprite_accessory/hair/afrothreequarters + name = "Afro (Three Quarters)" + icon_state = "hair_afro_three_quarters" + +/datum/sprite_accessory/hair/afro_huge + name = "Afro (Huge)" + icon_state = "hair_hugeafro" + y_offset = 6 + natural_spawn = FALSE + +/datum/sprite_accessory/hair/allthefuzz + name = "All The Fuzz" + icon_state = "hair_allthefuzz" + +/datum/sprite_accessory/hair/antenna + name = "Ahoge" + icon_state = "hair_antenna" + hair_appendages_inner = list("hair_antenna_a1" = HAIR_APPENDAGE_TOP) + +/datum/sprite_accessory/hair/animeprotag + name = "Anime Protagonist" + icon_state = "hair_anime_protag" + +/datum/sprite_accessory/hair/bald + name = "Bald" + icon_state = null + +/datum/sprite_accessory/hair/balding + name = "Balding Hair" + icon_state = "hair_e" + +/datum/sprite_accessory/hair/bedhead + name = "Bedhead" + icon_state = "hair_bedhead" + +/datum/sprite_accessory/hair/bedhead2 + name = "Bedhead 2" + icon_state = "hair_bedheadv2" + +/datum/sprite_accessory/hair/bedhead3 + name = "Bedhead 3" + icon_state = "hair_bedheadv3" + +/datum/sprite_accessory/hair/bedheadv4 + name = "Bedhead 4x" + icon_state = "hair_bedheadv4" + +/datum/sprite_accessory/hair/bedheadlong + name = "Long Bedhead" + icon_state = "hair_long_bedhead" + +/datum/sprite_accessory/hair/bedheadfloorlength + name = "Floorlength Bedhead" + icon_state = "hair_floorlength_bedhead" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/badlycut + name = "Shorter Long Bedhead" + icon_state = "hair_verybadlycut" + +/datum/sprite_accessory/hair/beehive + name = "Beehive" + icon_state = "hair_beehive" + +/datum/sprite_accessory/hair/beehive2 + name = "Beehive 2" + icon_state = "hair_beehivev2" + +/datum/sprite_accessory/hair/bob + name = "Bob Hair" + icon_state = "hair_bob" + +/datum/sprite_accessory/hair/bob2 + name = "Bob Hair 2" + icon_state = "hair_bob2" + +/datum/sprite_accessory/hair/bob3 + name = "Bob Hair 3" + icon_state = "hair_bobcut" + +/datum/sprite_accessory/hair/bob4 + name = "Bob Hair 4" + icon_state = "hair_bob4" + +/datum/sprite_accessory/hair/bobcurl + name = "Bobcurl" + icon_state = "hair_bobcurl" + +/datum/sprite_accessory/hair/boddicker + name = "Boddicker" + icon_state = "hair_boddicker" + +/datum/sprite_accessory/hair/bowlcut + name = "Bowlcut" + icon_state = "hair_bowlcut" + +/datum/sprite_accessory/hair/bowlcut2 + name = "Bowlcut 2" + icon_state = "hair_bowlcut2" + +/datum/sprite_accessory/hair/bowlcutovereyes + name = "Bowl Cut Over Eyes" + icon_state = "hair_bowlcut_over_eyes" + +/datum/sprite_accessory/hair/braid + name = "Braid (Floorlength)" + icon_state = "hair_braid" + hair_appendages_inner = list("hair_braid_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_braid_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/braided + name = "Braided" + icon_state = "hair_braided" + +/datum/sprite_accessory/hair/front_braid + name = "Braided Front" + icon_state = "hair_braidfront" + hair_appendages_inner = list("hair_braidfront_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_braidfront_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/not_floorlength_braid + name = "Braid (High)" + icon_state = "hair_braid2" + hair_appendages_inner = list("hair_braid2_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_braid2_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/lowbraid + name = "Braid (Low)" + icon_state = "hair_hbraid" + +/datum/sprite_accessory/hair/shortbraid + name = "Braid (Short)" + icon_state = "hair_shortbraid" + hair_appendages_inner = list("hair_shortbraid_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_shortbraid_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/braidtail + name = "Braided Tail" + icon_state = "hair_braidtail" + hair_appendages_inner = list("hair_braidtail_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_braidtail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/bun + name = "Bun Head" + icon_state = "hair_bun" + +/datum/sprite_accessory/hair/bun2 + name = "Bun Head 2" + icon_state = "hair_bunhead2" + hair_appendages_inner = list("hair_bunhead2_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_bunhead2_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/bun3 + name = "Bun Head 3" + icon_state = "hair_bun3" + +/datum/sprite_accessory/hair/largebun + name = "Bun (Large)" + icon_state = "hair_largebun" + +/datum/sprite_accessory/hair/manbun + name = "Bun (Manbun)" + icon_state = "hair_manbun" + hair_appendages_inner = list("hair_manbun_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_manbun_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/tightbun + name = "Bun (Tight)" + icon_state = "hair_tightbun" + +/datum/sprite_accessory/hair/business + name = "Business Hair" + icon_state = "hair_business" + +/datum/sprite_accessory/hair/business2 + name = "Business Hair 2" + icon_state = "hair_business2" + +/datum/sprite_accessory/hair/business3 + name = "Business Hair 3" + icon_state = "hair_business3" + +/datum/sprite_accessory/hair/business4 + name = "Business Hair 4" + icon_state = "hair_business4" + +/datum/sprite_accessory/hair/buzz + name = "Buzzcut" + icon_state = "hair_buzzcut" + +/datum/sprite_accessory/hair/chinbob + name = "Chin-Length Bob Cut" + icon_state = "hair_chinbob" + +/datum/sprite_accessory/hair/comet + name = "Comet" + icon_state = "hair_comet" + +/datum/sprite_accessory/hair/cia + name = "CIA" + icon_state = "hair_cia" + +/datum/sprite_accessory/hair/coffeehouse + name = "Coffee House" + icon_state = "hair_coffeehouse" + +/datum/sprite_accessory/hair/coily + name = "Coily" + icon_state = "hair_coily" + +/datum/sprite_accessory/hair/combover + name = "Combover" + icon_state = "hair_combover" + +/datum/sprite_accessory/hair/cornrows1 + name = "Cornrows" + icon_state = "hair_cornrows" + +/datum/sprite_accessory/hair/cornrows2 + name = "Cornrows 2" + icon_state = "hair_cornrows2" + +/datum/sprite_accessory/hair/cornrowbun + name = "Cornrow Bun" + icon_state = "hair_cornrowbun" + +/datum/sprite_accessory/hair/cornrowbraid + name = "Cornrow Braid" + icon_state = "hair_cornrowbraid" + +/datum/sprite_accessory/hair/cornrowdualtail + name = "Cornrow Tail" + icon_state = "hair_cornrowtail" + hair_appendages_inner = list("hair_cornrowtail_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_cornrowtail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/crew + name = "Crewcut" + icon_state = "hair_crewcut" + +/datum/sprite_accessory/hair/curls + name = "Curls" + icon_state = "hair_curls" + +/datum/sprite_accessory/hair/curtains + name = "Curtains" + icon_state = "hair_curtains" + +/datum/sprite_accessory/hair/cut + name = "Cut Hair" + icon_state = "hair_c" + +/datum/sprite_accessory/hair/dandpompadour + name = "Dandy Pompadour" + icon_state = "hair_dandypompadour" + +/datum/sprite_accessory/hair/devillock + name = "Devil Lock" + icon_state = "hair_devilock" + +/datum/sprite_accessory/hair/doublebun + name = "Double Bun" + icon_state = "hair_doublebun" + hair_appendages_inner = list("hair_doublebun_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_doublebun_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/doubledrills + name = "Double Drills" + icon_state = "hair_double_drills" + hair_appendages_inner = list("hair_double_drills_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_double_drills_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/dreadlocks + name = "Dreadlocks" + icon_state = "hair_dreads" + +/datum/sprite_accessory/hair/drillhair + name = "Drillruru" + icon_state = "hair_drillruru" + hair_appendages_inner = list("hair_drillruru_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_drillruru_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/drillhairextended + name = "Drill Hair (Extended)" + icon_state = "hair_drillhairextended" + hair_appendages_inner = list("hair_drillhairextended_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_drillhairextended_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/emo + name = "Emo" + icon_state = "hair_emo" + +/datum/sprite_accessory/hair/emofrine + name = "Emo Fringe" + icon_state = "hair_emofringe" + +/datum/sprite_accessory/hair/nofade + name = "Fade (None)" + icon_state = "hair_nofade" + +/datum/sprite_accessory/hair/highfade + name = "Fade (High)" + icon_state = "hair_highfade" + +/datum/sprite_accessory/hair/medfade + name = "Fade (Medium)" + icon_state = "hair_medfade" + +/datum/sprite_accessory/hair/lowfade + name = "Fade (Low)" + icon_state = "hair_lowfade" + +/datum/sprite_accessory/hair/baldfade + name = "Fade (Bald)" + icon_state = "hair_baldfade" + +/datum/sprite_accessory/hair/feather + name = "Feather" + icon_state = "hair_feather" + +/datum/sprite_accessory/hair/father + name = "Father" + icon_state = "hair_father" + +/datum/sprite_accessory/hair/sargeant + name = "Flat Top" + icon_state = "hair_sargeant" + +/datum/sprite_accessory/hair/flair + name = "Flair" + icon_state = "hair_flair" + +/datum/sprite_accessory/hair/bigflattop + name = "Flat Top (Big)" + icon_state = "hair_bigflattop" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/flow_hair + name = "Flow Hair" + icon_state = "hair_f" + +/datum/sprite_accessory/hair/fluffymess + name = "Fluffy Mess" + icon_state = "hair_fluffy_mess" + +/datum/sprite_accessory/hair/frizzysidecut + name = "Frizzy Sidecut" + icon_state = "hair_frizzy_sidecut" + +/datum/sprite_accessory/hair/gelled + name = "Gelled Back" + icon_state = "hair_gelled" + +/datum/sprite_accessory/hair/gentle + name = "Gentle" + icon_state = "hair_gentle" + +/datum/sprite_accessory/hair/halfbang + name = "Half-banged Hair" + icon_state = "hair_halfbang" + +/datum/sprite_accessory/hair/halfbang2 + name = "Half-banged Hair 2" + icon_state = "hair_halfbang2" + +/datum/sprite_accessory/hair/halfshaved + name = "Half-shaved" + icon_state = "hair_halfshaved" + +/datum/sprite_accessory/hair/hedgehog + name = "Hedgehog Hair" + icon_state = "hair_hedgehog" + +/datum/sprite_accessory/hair/hightopslant + name = "Hightop Slant" + icon_state = "hair_hightop_slant" + +/datum/sprite_accessory/hair/himecut + name = "Hime Cut" + icon_state = "hair_himecut" + +/datum/sprite_accessory/hair/himecut2 + name = "Hime Cut 2" + icon_state = "hair_himecut2" + +/datum/sprite_accessory/hair/shorthime + name = "Hime Cut (Short)" + icon_state = "hair_shorthime" + +/datum/sprite_accessory/hair/himeup + name = "Hime Updo" + icon_state = "hair_himeup" + +/datum/sprite_accessory/hair/hitop + name = "Hitop" + icon_state = "hair_hitop" + +/datum/sprite_accessory/hair/jade + name = "Jade" + icon_state = "hair_jade" + +/datum/sprite_accessory/hair/jensen + name = "Jensen Hair" + icon_state = "hair_jensen" + +/datum/sprite_accessory/hair/joestar + name = "Joestar" + icon_state = "hair_joestar" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/keanu + name = "Keanu Hair" + icon_state = "hair_keanu" + +/datum/sprite_accessory/hair/killmonger + name = "Killmonger" + icon_state = "hair_killmonger" + +/datum/sprite_accessory/hair/kusangi + name = "Kusanagi Hair" + icon_state = "hair_kusanagi" + +/datum/sprite_accessory/hair/longdreads + name = "Long Dreadlocks" + icon_state = "hair_long_dreads" + +/datum/sprite_accessory/hair/long + name = "Long Hair 1" + icon_state = "hair_long" + hair_appendages_inner = list("hair_long_a1" = HAIR_APPENDAGE_HANGING_REAR) + +/datum/sprite_accessory/hair/long2 + name = "Long Hair 2" + icon_state = "hair_long2" + hair_appendages_inner = list("hair_long2_a1" = HAIR_APPENDAGE_HANGING_REAR) + +/datum/sprite_accessory/hair/long3 + name = "Long Hair 3" + icon_state = "hair_long3" + hair_appendages_inner = list("hair_long3_a1" = HAIR_APPENDAGE_HANGING_REAR) + +/datum/sprite_accessory/hair/long_over_eye + name = "Long Over Eye" + icon_state = "hair_longovereye" + +/datum/sprite_accessory/hair/longbangs + name = "Long Bangs" + icon_state = "hair_lbangs" + +/datum/sprite_accessory/hair/longdreadsup + name = "Long Dreads Up" + icon_state = "hair_long_dreads_up" + hair_appendages_inner = list("hair_long_dreads_up_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_long_dreads_up_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/longemo + name = "Long Emo" + icon_state = "hair_longemo" + +/datum/sprite_accessory/hair/longfringe + name = "Long Fringe" + icon_state = "hair_longfringe" + +/datum/sprite_accessory/hair/longsidecut + name = "Long Sidecut" + icon_state = "hair_long_sidecut" + +/datum/sprite_accessory/hair/sidepartlongalt + name = "Long Side Part" + icon_state = "hair_longsidepart" + hair_appendages_inner = list("hair_longsidepart_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_longsidepart_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/longwavy + name = "Long Wavy" + icon_state = "hair_long_wavy" + +/datum/sprite_accessory/hair/megaeyebrows + name = "Mega Eyebrows" + icon_state = "hair_megaeyebrows" + +/datum/sprite_accessory/hair/messy + name = "Messy" + icon_state = "hair_messy" + +/datum/sprite_accessory/hair/modern + name = "Modern" + icon_state = "hair_modern" + +/datum/sprite_accessory/hair/mohawk + name = "Mohawk" + icon_state = "hair_d" + natural_spawn = FALSE // sorry little one + +/datum/sprite_accessory/hair/nitori + name = "Nitori" + icon_state = "hair_nitori" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/reversemohawk + name = "Mohawk (Reverse)" + icon_state = "hair_reversemohawk" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/shavedmohawk + name = "Mohawk (Shaved)" + icon_state = "hair_shavedmohawk" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/unshavenmohawk + name = "Mohawk (Unshaven)" + icon_state = "hair_unshaven_mohawk" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/tallmohawk + name = "Mohawk (Tall)" + icon_state = "hair_tall_mohawk" + hair_appendages_inner = list("hair_tall_mohawk_a1" = HAIR_APPENDAGE_TOP) + y_offset = 2 + +/datum/sprite_accessory/hair/moneypiece + name = "Money Piece" + icon_state = "hair_money_piece" + +/datum/sprite_accessory/hair/mulder + name = "Mulder" + icon_state = "hair_mulder" + +/datum/sprite_accessory/hair/mullet + name = "Mullet" + icon_state = "hair_mullet" + +/datum/sprite_accessory/hair/mulletwrattail + name = "Mullet with Rat Tail" + icon_state = "hair_mullet_with_rat_tail" + +/datum/sprite_accessory/hair/odango + name = "Odango" + icon_state = "hair_odango" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/ombre + name = "Ombre" + icon_state = "hair_ombre" + +/datum/sprite_accessory/hair/oneshoulder + name = "One Shoulder" + icon_state = "hair_oneshoulder" + +/datum/sprite_accessory/hair/over_eye + name = "Over Eye" + icon_state = "hair_shortovereye" + +/datum/sprite_accessory/hair/hair_overeyetwo + name = "Over Eye 2" + icon_state = "hair_overeyetwo" + +/datum/sprite_accessory/hair/oxton + name = "Oxton" + icon_state = "hair_oxton" + +/datum/sprite_accessory/hair/parted + name = "Parted" + icon_state = "hair_parted" + +/datum/sprite_accessory/hair/partedside + name = "Parted (Side)" + icon_state = "hair_part" + +/datum/sprite_accessory/hair/kagami + name = "Pigtails" + icon_state = "hair_kagami" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/pigtail + name = "Pigtails 2" + icon_state = "hair_pigtails" + natural_spawn = FALSE + +/datum/sprite_accessory/hair/pigtail2 + name = "Pigtails 3" + icon_state = "hair_pigtails2" + natural_spawn = FALSE + hair_appendages_inner = list("hair_pigtails2_a1" = HAIR_APPENDAGE_LEFT, "hair_pigtails2_a2" = HAIR_APPENDAGE_RIGHT) + +/datum/sprite_accessory/hair/pigtails4 + name = "Pigtails 4" + icon_state = "hair_pigtails_4" + hair_appendages_inner = list("hair_pigtails_4_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_pigtails_4_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/pigtails5 + name = "Pigtails 5" + icon_state = "hair_pigtails_5" + +/datum/sprite_accessory/hair/pigtailsantenna + name = "Pigtails (Antenna)" + icon_state = "hair_pigtails_antenna" + hair_appendages_inner = list("hair_pigtails_antenna_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_pigtails_antenna_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/pigtailscupid + name = "Pigtails (Cupid)" + icon_state = "hair_pigtails_cupid" + hair_appendages_inner = list("hair_pigtails_cupid_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_pigtails_cupid_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/pixie + name = "Pixie Cut" + icon_state = "hair_pixie" + +/datum/sprite_accessory/hair/pompadour + name = "Pompadour" + icon_state = "hair_pompadour" + +/datum/sprite_accessory/hair/bigpompadour + name = "Pompadour (Big)" + icon_state = "hair_bigpompadour" + +/datum/sprite_accessory/hair/ponytail1 + name = "Ponytail" + icon_state = "hair_ponytail" + +/datum/sprite_accessory/hair/ponytail2 + name = "Ponytail 2" + icon_state = "hair_ponytail2" + +/datum/sprite_accessory/hair/ponytail3 + name = "Ponytail 3" + icon_state = "hair_ponytail3" + +/datum/sprite_accessory/hair/ponytail4 + name = "Ponytail 4" + icon_state = "hair_ponytail4" + hair_appendages_inner = list("hair_ponytail4_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_ponytail4_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/ponytail5 + name = "Ponytail 5" + icon_state = "hair_ponytail5" + hair_appendages_inner = list("hair_ponytail5_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_ponytail5_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/ponytail6 + name = "Ponytail 6" + icon_state = "hair_ponytail6" + hair_appendages_inner = list("hair_ponytail6_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_ponytail6_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/ponytail7 + name = "Ponytail 7" + icon_state = "hair_ponytail7" + hair_appendages_inner = list("hair_ponytail7_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_ponytail7_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/highponytail + name = "Ponytail (High)" + icon_state = "hair_highponytail" + hair_appendages_inner = list("hair_highponytail_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_highponytail_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/stail + name = "Ponytail (Short)" + icon_state = "hair_stail" + hair_appendages_inner = list("hair_stail_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_stail_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/longponytail + name = "Ponytail (Long)" + icon_state = "hair_longstraightponytail" + hair_appendages_inner = list("hair_longstraightponytail_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_longstraightponytail_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/countryponytail + name = "Ponytail (Country)" + icon_state = "hair_country" + hair_appendages_inner = list("hair_country_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_country_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/fringetail + name = "Ponytail (Fringe)" + icon_state = "hair_fringetail" + +/datum/sprite_accessory/hair/sidetail + name = "Ponytail (Side)" + icon_state = "hair_sidetail" + +/datum/sprite_accessory/hair/sidetail2 + name = "Ponytail (Side) 2" + icon_state = "hair_sidetail2" + +/datum/sprite_accessory/hair/sidetail3 + name = "Ponytail (Side) 3" + icon_state = "hair_sidetail3" + hair_appendages_inner = list("hair_sidetail3_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_sidetail3_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/sidetail4 + name = "Ponytail (Side) 4" + icon_state = "hair_sidetail4" + hair_appendages_inner = list("hair_sidetail4_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_sidetail4_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/spikyponytail + name = "Ponytail (Spiky)" + icon_state = "hair_spikyponytail" + hair_appendages_inner = list("hair_spikyponytail_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_spikyponytail_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/ponytailfro + name = "Ponytail (Fro)" + icon_state = "hair_ponytail_fro" + hair_appendages_inner = list("hair_ponytail_fro_a1" = HAIR_APPENDAGE_HANGING_REAR) + +/datum/sprite_accessory/hair/ponytailwavy + name = "Ponytail (Wavy)" + icon_state = "hair_ponytail_wavy" + hair_appendages_inner = list("hair_ponytail_wavy_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_ponytail_wavy_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/poofy + name = "Poofy" + icon_state = "hair_poofy" + +/datum/sprite_accessory/hair/quiff + name = "Quiff" + icon_state = "hair_quiff" + +/datum/sprite_accessory/hair/ronin + name = "Ronin" + icon_state = "hair_ronin" + +/datum/sprite_accessory/hair/sadako + name = "Sadako" + icon_state = "hair_sadako" + +/datum/sprite_accessory/hair/shaved + name = "Shaved" + icon_state = "hair_shaved" + +/datum/sprite_accessory/hair/shavedpart + name = "Shaved Part" + icon_state = "hair_shavedpart" + +/datum/sprite_accessory/hair/shortbangs + name = "Short Bangs" + icon_state = "hair_shortbangs" + +/datum/sprite_accessory/hair/shortbangs2 + name = "Short Bangs 2" + icon_state = "hair_shortbangs2" + +/datum/sprite_accessory/hair/shorterbangs + name = "Shorter Bangs" + icon_state = "hair_shorter_bangs" + +/datum/sprite_accessory/hair/short + name = "Short Hair" + icon_state = "hair_a" + +/datum/sprite_accessory/hair/shorthair2 + name = "Short Hair 2" + icon_state = "hair_shorthair2" + +/datum/sprite_accessory/hair/shorthair3 + name = "Short Hair 3" + icon_state = "hair_shorthair3" + +/datum/sprite_accessory/hair/shorthair4 + name = "Short Hair 4" + icon_state = "hair_d" + +/datum/sprite_accessory/hair/shorthair5 + name = "Short Hair 5" + icon_state = "hair_e" + +/datum/sprite_accessory/hair/shorthair6 + name = "Short Hair 6" + icon_state = "hair_f" + +/datum/sprite_accessory/hair/shorthair7 + name = "Short Hair 7" + icon_state = "hair_shorthairg" + +/datum/sprite_accessory/hair/shorthaireighties + name = "Short Hair 80s" + icon_state = "hair_80s" + +/datum/sprite_accessory/hair/rosa + name = "Short Hair Rosa" + icon_state = "hair_rosa" + +/datum/sprite_accessory/hair/shortwavy + name = "Short Wavy" + icon_state = "hair_short_wavy" + +/datum/sprite_accessory/hair/shoulderlength + name = "Shoulder-length Hair" + icon_state = "hair_b" + +/datum/sprite_accessory/hair/sidecut + name = "Sidecut" + icon_state = "hair_sidecut" + +/datum/sprite_accessory/hair/sidecutbang + name = "Sidecut Bang" + icon_state = "hair_sidecut_bang" + +/datum/sprite_accessory/hair/singedblownback + name = "Singed Blown Back" + icon_state = "hair_singed_blown_back" + +/datum/sprite_accessory/hair/singedpigtails + name = "Singed Pigtails" + icon_state = "hair_singed_pigtails" + hair_appendages_inner = list("hair_singed_pigtails_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_singed_pigtails_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/skinhead + name = "Skinhead" + icon_state = "hair_skinhead" + +/datum/sprite_accessory/hair/protagonist + name = "Slightly Long Hair" + icon_state = "hair_protagonist" + +/datum/sprite_accessory/hair/spiky + name = "Spiky" + icon_state = "hair_spikey" + +/datum/sprite_accessory/hair/spiky2 + name = "Spiky 2" + icon_state = "hair_spiky" + +/datum/sprite_accessory/hair/spiky3 + name = "Spiky 3" + icon_state = "hair_spiky2" + +/datum/sprite_accessory/hair/swept + name = "Swept Back Hair" + icon_state = "hair_swept" + +/datum/sprite_accessory/hair/swept2 + name = "Swept Back Hair 2" + icon_state = "hair_swept2" + +/datum/sprite_accessory/hair/swirlycurls + name = "Swirly Curls" + icon_state = "hair_swirly_curls" + +/datum/sprite_accessory/hair/swirlycurlsalt + name = "Swirl Curls Alt" + icon_state = "hair_swirly_curls_alt" + +/datum/sprite_accessory/hair/tayama + name = "Tayama" + icon_state = "hair_tayama" + +/datum/sprite_accessory/hair/thinning + name = "Thinning" + icon_state = "hair_thinning" + +/datum/sprite_accessory/hair/thinningfront + name = "Thinning (Front)" + icon_state = "hair_thinningfront" + +/datum/sprite_accessory/hair/thinningrear + name = "Thinning (Rear)" + icon_state = "hair_thinningrear" + +/datum/sprite_accessory/hair/topknot + name = "Topknot" + icon_state = "hair_topknot" + +/datum/sprite_accessory/hair/tressshoulder + name = "Tress Shoulder" + icon_state = "hair_tressshoulder" + hair_appendages_inner = list("hair_tressshoulder_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_tressshoulder_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/trimmed + name = "Trimmed" + icon_state = "hair_trimmed" + +/datum/sprite_accessory/hair/trimflat + name = "Trim Flat" + icon_state = "hair_trimflat" + +/datum/sprite_accessory/hair/twintails + name = "Twintails" + icon_state = "hair_twintail" + +/datum/sprite_accessory/hair/twintailswavy + name = "Twintails (Wavy)" + icon_state = "hair_twintails_wavy" + hair_appendages_inner = list("hair_twintails_wavy_a1" = HAIR_APPENDAGE_HANGING_FRONT) + hair_appendages_outer = list("hair_twintails_wavy_a1o" = HAIR_APPENDAGE_HANGING_FRONT) + +/datum/sprite_accessory/hair/undercut + name = "Undercut" + icon_state = "hair_undercut" + +/datum/sprite_accessory/hair/undercutleft + name = "Undercut Left" + icon_state = "hair_undercutleft" + +/datum/sprite_accessory/hair/undercutright + name = "Undercut Right" + icon_state = "hair_undercutright" + +/datum/sprite_accessory/hair/unkept + name = "Unkept" + icon_state = "hair_unkept" + +/datum/sprite_accessory/hair/updo + name = "Updo" + icon_state = "hair_updo" + hair_appendages_inner = list("hair_updo_a1" = HAIR_APPENDAGE_TOP) + +/datum/sprite_accessory/hair/longer + name = "Very Long Hair" + icon_state = "hair_vlong" + +/datum/sprite_accessory/hair/longest + name = "Very Long Hair 2" + icon_state = "hair_longest" + +/datum/sprite_accessory/hair/longest2 + name = "Very Long Over Eye" + icon_state = "hair_longest2" + +/datum/sprite_accessory/hair/veryshortovereye + name = "Very Short Over Eye" + icon_state = "hair_veryshortovereyealternate" + +/datum/sprite_accessory/hair/longestalt + name = "Very Long with Fringe" + icon_state = "hair_vlongfringe" + +/datum/sprite_accessory/hair/volaju + name = "Volaju" + icon_state = "hair_volaju" + +/datum/sprite_accessory/hair/wisp + name = "Wisp" + icon_state = "hair_wisp" + hair_appendages_inner = list("hair_wisp_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_wisp_a1o" = HAIR_APPENDAGE_REAR) + +/datum/sprite_accessory/hair/wolfcut + name = "Wolfcut" + icon_state = "hair_wolfcut" + +/datum/sprite_accessory/hair/ziegler + name = "Ziegler" + icon_state = "hair_ziegler" + hair_appendages_inner = list("hair_ziegler_a1" = HAIR_APPENDAGE_REAR) + hair_appendages_outer = list("hair_ziegler_a1o" = HAIR_APPENDAGE_REAR) + +/* +///////////////////////////////////// +/ =---------------------------= / +/ == Gradient Hair Definitions == / +/ =---------------------------= / +///////////////////////////////////// +*/ + +/datum/sprite_accessory/gradient + icon = 'icons/mob/human/species/hair_gradients.dmi' + ///whether this gradient applies to hair and/or beards. Some gradients do not work well on beards. + var/gradient_category = GRADIENT_APPLIES_TO_HAIR|GRADIENT_APPLIES_TO_FACIAL_HAIR + +/datum/sprite_accessory/gradient/none + name = SPRITE_ACCESSORY_NONE + icon_state = SPRITE_ACCESSORY_NONE + +/datum/sprite_accessory/gradient/full + name = "Full" + icon_state = "full" + +/datum/sprite_accessory/gradient/fadeup + name = "Fade Up" + icon_state = "fadeup" + +/datum/sprite_accessory/gradient/fadedown + name = "Fade Down" + icon_state = "fadedown" + +/datum/sprite_accessory/gradient/vertical_split + name = "Vertical Split" + icon_state = "vsplit" + +/datum/sprite_accessory/gradient/horizontal_split + name = "Horizontal Split" + icon_state = "bottomflat" + +/datum/sprite_accessory/gradient/reflected + name = "Reflected" + icon_state = "reflected_high" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/reflected/beard + icon_state = "reflected_high_beard" + gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR + +/datum/sprite_accessory/gradient/reflected_inverse + name = "Reflected Inverse" + icon_state = "reflected_inverse_high" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/reflected_inverse/beard + icon_state = "reflected_inverse_high_beard" + gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR + +/datum/sprite_accessory/gradient/wavy + name = "Wavy" + icon_state = "wavy" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/long_fade_up + name = "Long Fade Up" + icon_state = "long_fade_up" + +/datum/sprite_accessory/gradient/long_fade_down + name = "Long Fade Down" + icon_state = "long_fade_down" + +/datum/sprite_accessory/gradient/short_fade_up + name = "Short Fade Up" + icon_state = "short_fade_up" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/short_fade_up/beard + icon_state = "short_fade_down" + gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR + +/datum/sprite_accessory/gradient/short_fade_down + name = "Short Fade Down" + icon_state = "short_fade_down_beard" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/short_fade_down/beard + icon_state = "short_fade_down_beard" + gradient_category = GRADIENT_APPLIES_TO_FACIAL_HAIR + +/datum/sprite_accessory/gradient/wavy_spike + name = "Spiked Wavy" + icon_state = "wavy_spiked" + gradient_category = GRADIENT_APPLIES_TO_HAIR + +/datum/sprite_accessory/gradient/striped + name = "striped" + icon_state = "striped" + +/datum/sprite_accessory/gradient/striped_vertical + name = "Striped Vertical" + icon_state = "striped_vertical" diff --git a/code/datums/sprite_accessories/horns.dm b/code/datums/sprite_accessories/horns.dm new file mode 100644 index 000000000000..dc9331281777 --- /dev/null +++ b/code/datums/sprite_accessories/horns.dm @@ -0,0 +1,23 @@ +/datum/sprite_accessory/horns + icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' + em_block = TRUE + +/datum/sprite_accessory/horns/simple + name = "Simple" + icon_state = "simple" + +/datum/sprite_accessory/horns/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/horns/curled + name = "Curled" + icon_state = "curled" + +/datum/sprite_accessory/horns/ram + name = "Ram" + icon_state = "ram" + +/datum/sprite_accessory/horns/angler + name = "Angeler" + icon_state = "angler" diff --git a/code/datums/sprite_accessories/markings.dm b/code/datums/sprite_accessories/markings.dm new file mode 100644 index 000000000000..d8e483a80ec7 --- /dev/null +++ b/code/datums/sprite_accessories/markings.dm @@ -0,0 +1,85 @@ +/datum/sprite_accessory/lizard_markings + icon = 'icons/mob/human/species/lizard/lizard_markings.dmi' + +/datum/sprite_accessory/lizard_markings/dtiger + name = "Dark Tiger Body" + icon_state = "dtiger" + gender_specific = TRUE + +/datum/sprite_accessory/lizard_markings/ltiger + name = "Light Tiger Body" + icon_state = "ltiger" + gender_specific = TRUE + +/datum/sprite_accessory/lizard_markings/lbelly + name = "Light Belly" + icon_state = "lbelly" + gender_specific = TRUE + +/datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan + icon = 'icons/mob/human/species/moth/moth_markings.dmi' + color_src = null + +/datum/sprite_accessory/moth_markings/reddish + name = "Reddish" + icon_state = "reddish" + +/datum/sprite_accessory/moth_markings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_markings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_markings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_markings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_markings/burnt_off + name = "Burnt Off" + icon_state = "burnt_off" + +/datum/sprite_accessory/moth_markings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_markings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_markings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_markings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_markings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_markings/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/moth_markings/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/moth_markings/witchwing + name = "Witch Wing" + icon_state = "witchwing" + +/datum/sprite_accessory/moth_markings/lightbearer + name = "Lightbearer" + icon_state = "lightbearer" + +/datum/sprite_accessory/moth_markings/dipped + name = "Dipped" + icon_state = "dipped" diff --git a/code/datums/sprite_accessories/moth_antennae.dm b/code/datums/sprite_accessories/moth_antennae.dm new file mode 100644 index 000000000000..54a8cdc979a0 --- /dev/null +++ b/code/datums/sprite_accessories/moth_antennae.dm @@ -0,0 +1,94 @@ +/datum/sprite_accessory/moth_antennae //Finally splitting the sprite + icon = 'icons/mob/human/species/moth/moth_antennae.dmi' + color_src = null + +/datum/sprite_accessory/moth_antennae/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_antennae/reddish + name = "Reddish" + icon_state = "reddish" + +/datum/sprite_accessory/moth_antennae/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_antennae/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_antennae/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_antennae/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_antennae/burnt_off + name = "Burnt Off" + icon_state = "burnt_off" + +/datum/sprite_accessory/moth_antennae/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_antennae/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_antennae/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_antennae/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_antennae/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_antennae/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/moth_antennae/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/moth_antennae/witchwing + name = "Witch Wing" + icon_state = "witchwing" + +/datum/sprite_accessory/moth_antennae/regal + name = "Regal" + icon_state = "regal" +/datum/sprite_accessory/moth_antennae/rosy + name = "Rosy" + icon_state = "rosy" + +/datum/sprite_accessory/moth_antennae/feathery + name = "Feathery" + icon_state = "feathery" + +/datum/sprite_accessory/moth_antennae/brown + name = "Brown" + icon_state = "brown" + +/datum/sprite_accessory/moth_antennae/plasmafire + name = "Plasmafire" + icon_state = "plasmafire" + +/datum/sprite_accessory/moth_antennae/moffra + name = "Moffra" + icon_state = "moffra" + +/datum/sprite_accessory/moth_antennae/lightbearer + name = "Lightbearer" + icon_state = "lightbearer" + +/datum/sprite_accessory/moth_antennae/dipped + name = "Dipped" + icon_state = "dipped" diff --git a/code/datums/sprite_accessories/pod_hair.dm b/code/datums/sprite_accessories/pod_hair.dm new file mode 100644 index 000000000000..b1f696098e6f --- /dev/null +++ b/code/datums/sprite_accessories/pod_hair.dm @@ -0,0 +1,43 @@ +/datum/sprite_accessory/pod_hair + icon = 'icons/mob/human/species/podperson_hair.dmi' + em_block = TRUE + +/datum/sprite_accessory/pod_hair/ivy + name = "Ivy" + icon_state = "ivy" + +/datum/sprite_accessory/pod_hair/cabbage + name = "Cabbage" + icon_state = "cabbage" + +/datum/sprite_accessory/pod_hair/spinach + name = "Spinach" + icon_state = "spinach" + +/datum/sprite_accessory/pod_hair/prayer + name = "Prayer" + icon_state = "prayer" + +/datum/sprite_accessory/pod_hair/vine + name = "Vine" + icon_state = "vine" + +/datum/sprite_accessory/pod_hair/shrub + name = "Shrub" + icon_state = "shrub" + +/datum/sprite_accessory/pod_hair/rose + name = "Rose" + icon_state = "rose" + +/datum/sprite_accessory/pod_hair/orchid + name = "Orchid" + icon_state = "orchid" + +/datum/sprite_accessory/pod_hair/fig + name = "Fig" + icon_state = "fig" + +/datum/sprite_accessory/pod_hair/hibiscus + name = "Hibiscus" + icon_state = "hibiscus" diff --git a/code/datums/sprite_accessories/snouts.dm b/code/datums/sprite_accessories/snouts.dm new file mode 100644 index 000000000000..c4add777bbe1 --- /dev/null +++ b/code/datums/sprite_accessories/snouts.dm @@ -0,0 +1,19 @@ +/datum/sprite_accessory/snouts + icon = 'icons/mob/human/species/lizard/lizard_misc.dmi' + em_block = TRUE + +/datum/sprite_accessory/snouts/sharp + name = "Sharp" + icon_state = "sharp" + +/datum/sprite_accessory/snouts/round + name = "Round" + icon_state = "round" + +/datum/sprite_accessory/snouts/sharplight + name = "Sharp + Light" + icon_state = "sharplight" + +/datum/sprite_accessory/snouts/roundlight + name = "Round + Light" + icon_state = "roundlight" diff --git a/code/datums/sprite_accessories/spines.dm b/code/datums/sprite_accessories/spines.dm new file mode 100644 index 000000000000..8812c07dbc45 --- /dev/null +++ b/code/datums/sprite_accessories/spines.dm @@ -0,0 +1,47 @@ +/datum/sprite_accessory/spines + icon = 'icons/mob/human/species/lizard/lizard_spines.dmi' + em_block = TRUE + +/datum/sprite_accessory/tail_spines + icon = 'icons/mob/human/species/lizard/lizard_spines.dmi' + em_block = TRUE + +/datum/sprite_accessory/spines/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/tail_spines/short + name = "Short" + icon_state = "short" + +/datum/sprite_accessory/spines/shortmeme + name = "Short + Membrane" + icon_state = "shortmeme" + +/datum/sprite_accessory/tail_spines/shortmeme + name = "Short + Membrane" + icon_state = "shortmeme" + +/datum/sprite_accessory/spines/long + name = "Long" + icon_state = "long" + +/datum/sprite_accessory/tail_spines/long + name = "Long" + icon_state = "long" + +/datum/sprite_accessory/spines/longmeme + name = "Long + Membrane" + icon_state = "longmeme" + +/datum/sprite_accessory/tail_spines/longmeme + name = "Long + Membrane" + icon_state = "longmeme" + +/datum/sprite_accessory/spines/aquatic + name = "Aquatic" + icon_state = "aqua" + +/datum/sprite_accessory/tail_spines/aquatic + name = "Aquatic" + icon_state = "aqua" diff --git a/code/datums/sprite_accessories/tails.dm b/code/datums/sprite_accessories/tails.dm new file mode 100644 index 000000000000..3948108670d4 --- /dev/null +++ b/code/datums/sprite_accessories/tails.dm @@ -0,0 +1,97 @@ +/datum/sprite_accessory/tails + em_block = TRUE + /// Describes which tail spine sprites to use, if any. + var/spine_key = NONE + +///Used for fish-infused tails, which come in different flavors. +/datum/sprite_accessory/tails/fish + icon = 'icons/mob/human/fish_features.dmi' + color_src = TRUE + +/datum/sprite_accessory/tails/fish/simple + name = "Simple" + icon_state = "simple" + +/datum/sprite_accessory/tails/fish/crescent + name = "Crescent" + icon_state = "crescent" + +/datum/sprite_accessory/tails/fish/long + name = "Long" + icon_state = "long" + center = TRUE + dimension_x = 38 + +/datum/sprite_accessory/tails/fish/shark + name = "Shark" + icon_state = "shark" + +/datum/sprite_accessory/tails/fish/chonky + name = "Chonky" + icon_state = "chonky" + center = TRUE + dimension_x = 36 + +/datum/sprite_accessory/tails/lizard + icon = 'icons/mob/human/species/lizard/lizard_tails.dmi' + spine_key = SPINE_KEY_LIZARD + +/datum/sprite_accessory/tails/lizard/none + name = SPRITE_ACCESSORY_NONE + icon_state = "none" + natural_spawn = FALSE + +/datum/sprite_accessory/tails/lizard/smooth + name = "Smooth" + icon_state = "smooth" + +/datum/sprite_accessory/tails/lizard/dtiger + name = "Dark Tiger" + icon_state = "dtiger" + +/datum/sprite_accessory/tails/lizard/ltiger + name = "Light Tiger" + icon_state = "ltiger" + +/datum/sprite_accessory/tails/lizard/spikes + name = "Spikes" + icon_state = "spikes" + +/datum/sprite_accessory/tails/lizard/short + name = "Short" + icon_state = "short" + spine_key = NONE + +/datum/sprite_accessory/tails/felinid/cat + name = "Cat" + icon = 'icons/mob/human/cat_features.dmi' + icon_state = "default" + color_src = HAIR_COLOR + +/datum/sprite_accessory/tails/monkey + +/datum/sprite_accessory/tails/monkey/none + name = SPRITE_ACCESSORY_NONE + icon_state = "none" + natural_spawn = FALSE + +/datum/sprite_accessory/tails/monkey/default + name = "Monkey" + icon = 'icons/mob/human/species/monkey/monkey_tail.dmi' + icon_state = "default" + color_src = FALSE + +/datum/sprite_accessory/tails/xeno + icon_state = "default" + color_src = FALSE + center = TRUE + +/datum/sprite_accessory/tails/xeno/default + name = "Xeno" + icon = 'icons/mob/human/species/alien/tail_xenomorph.dmi' + dimension_x = 40 + +/datum/sprite_accessory/tails/xeno/queen + name = "Xeno Queen" + icon = 'icons/mob/human/species/alien/tail_xenomorph_queen.dmi' + dimension_x = 64 diff --git a/code/datums/sprite_accessories/wings.dm b/code/datums/sprite_accessories/wings.dm new file mode 100644 index 000000000000..083f6f6f5482 --- /dev/null +++ b/code/datums/sprite_accessories/wings.dm @@ -0,0 +1,249 @@ +/datum/sprite_accessory/moth_wings + icon = 'icons/mob/human/species/moth/moth_wings.dmi' + color_src = null + em_block = TRUE + +/datum/sprite_accessory/moth_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/moth_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/moth_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/moth_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/moth_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_wings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_wings/burnt_off + name = "Burnt Off" + icon_state = "burnt_off" + locked = TRUE + +/datum/sprite_accessory/moth_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_wings/snow + name = "Snow" + icon_state = "snow" + +/datum/sprite_accessory/moth_wings/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/moth_wings/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/moth_wings/witchwing + name = "Witch Wing" + icon_state = "witchwing" + +/datum/sprite_accessory/moth_wings/rosy + name = "Rosy" + icon_state = "rosy" + +/datum/sprite_accessory/moth_wings/feathery + name = "Feathery" + icon_state = "feathery" + +/datum/sprite_accessory/moth_wings/brown + name = "Brown" + icon_state = "brown" + +/datum/sprite_accessory/moth_wings/plasmafire + name = "Plasmafire" + icon_state = "plasmafire" + +/datum/sprite_accessory/moth_wings/moffra + name = "Moffra" + icon_state = "moffra" + +/datum/sprite_accessory/moth_wings/lightbearer + name = "Lightbearer" + icon_state = "lightbearer" + +/datum/sprite_accessory/moth_wings/dipped + name = "Dipped" + icon_state = "dipped" + +/datum/sprite_accessory/wings + icon = 'icons/mob/human/species/wings.dmi' + em_block = TRUE + +/datum/sprite_accessory/wings_open + icon = 'icons/mob/human/species/wings.dmi' + em_block = TRUE + +/datum/sprite_accessory/wings/angel + name = "Angel" + icon_state = "angel" + color_src = FALSE + dimension_x = 46 + center = TRUE + dimension_y = 34 + locked = TRUE + +/datum/sprite_accessory/wings_open/angel + name = "Angel" + icon_state = "angel" + color_src = FALSE + dimension_x = 46 + center = TRUE + dimension_y = 34 + +/datum/sprite_accessory/wings/dragon + name = "Dragon" + icon_state = "dragon" + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/dragon + name = "Dragon" + icon_state = "dragon" + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/megamoth + name = "Megamoth" + icon_state = "megamoth" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/megamoth + name = "Megamoth" + icon_state = "megamoth" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/mothra + name = "Mothra" + icon_state = "mothra" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/mothra + name = "Mothra" + icon_state = "mothra" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/skeleton + name = "Skeleton" + icon_state = "skele" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/skeleton + name = "Skeleton" + icon_state = "skele" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/robotic + name = "Robotic" + icon_state = "robotic" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/robotic + name = "Robotic" + icon_state = "robotic" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/fly + name = "Fly" + icon_state = "fly" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/fly + name = "Fly" + icon_state = "fly" + color_src = FALSE + dimension_x = 96 + center = TRUE + dimension_y = 32 + +/datum/sprite_accessory/wings/slime + name = "Slime" + icon_state = "slime" + dimension_x = 96 + center = TRUE + dimension_y = 32 + locked = TRUE + +/datum/sprite_accessory/wings_open/slime + name = "Slime" + icon_state = "slime" + dimension_x = 96 + center = TRUE + dimension_y = 32 diff --git a/code/datums/station_traits/_station_trait.dm b/code/datums/station_traits/_station_trait.dm index b937aa3082c2..99b5dfc158d4 100644 --- a/code/datums/station_traits/_station_trait.dm +++ b/code/datums/station_traits/_station_trait.dm @@ -71,14 +71,6 @@ GLOBAL_LIST_EMPTY(lobby_station_traits) qdel(src) -/// Called by decals if they can be colored, to see if we got some cool colors for them. Only takes the first station trait -/proc/request_station_colors(atom/thing_to_color, pattern) - for(var/datum/station_trait/trait in SSstation.station_traits) - var/decal_color = trait.get_decal_color(thing_to_color, pattern || PATTERN_DEFAULT) - if(decal_color) - return decal_color - return null - /// Return a color for the decals, if any /datum/station_trait/proc/get_decal_color(thing_to_color, pattern) return diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index b8730620c2d0..731a20d5518c 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -240,7 +240,7 @@ if(duration + bonus_time >= exhaustion_limit) duration = exhaustion_limit to_chat(new_owner, span_userdanger("Your muscles are exhausted! Might be a good idea to sleep...")) - new_owner.emote("scream") + INVOKE_ASYNC(new_owner, TYPE_PROC_REF(/mob, emote), "scream") return // exhaustion_limit return bonus_time diff --git a/code/datums/status_effects/buffs/cult_halo.dm b/code/datums/status_effects/buffs/cult_halo.dm new file mode 100644 index 000000000000..7cca84ae0033 --- /dev/null +++ b/code/datums/status_effects/buffs/cult_halo.dm @@ -0,0 +1,52 @@ +/// Adds the cult halo effect vfx to the mob (instantly/after a delay) +/datum/status_effect/cult_halo + id = "cult_halo" + alert_type = null + tick_interval = STATUS_EFFECT_NO_TICK + /// Cooldown for when the halo is actually visible + COOLDOWN_DECLARE(halo_start) + /// The actual halo applied to the mob + VAR_PRIVATE/mutable_appearance/halo_overlay + +/datum/status_effect/cult_halo/on_creation(mob/living/new_owner, initial_delay = 20 SECONDS) + COOLDOWN_START(src, halo_start, initial_delay) + return ..() + +/datum/status_effect/cult_halo/on_apply() + RegisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(add_halo)) + if(COOLDOWN_FINISHED(src, halo_start)) + refresh_halo() + else + addtimer(CALLBACK(src, PROC_REF(refresh_halo)), COOLDOWN_TIMELEFT(src, halo_start), TIMER_DELETE_ME) + return TRUE + +/datum/status_effect/cult_halo/on_remove() + UnregisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS) + owner.update_appearance(UPDATE_OVERLAYS) + REMOVE_TRAIT(owner, TRAIT_CULT_HALO, TRAIT_STATUS_EFFECT(id)) + halo_overlay = null + return TRUE + +/datum/status_effect/cult_halo/proc/refresh_halo() + COOLDOWN_RESET(src, halo_start) + ADD_TRAIT(owner, TRAIT_CULT_HALO, TRAIT_STATUS_EFFECT(id)) + owner.update_appearance(UPDATE_OVERLAYS) + new /obj/effect/temp_visual/cult/sparks(get_turf(owner), owner.dir) + +/datum/status_effect/cult_halo/proc/add_halo(datum/source, list/overlay_list) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, halo_start)) + return + + halo_overlay ||= mutable_appearance('icons/mob/effects/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) + halo_overlay.pixel_z = 0 + halo_overlay.pixel_w = 0 + if (ishuman(owner)) + var/mob/living/carbon/human/human_parent = owner + human_parent.apply_height(halo_overlay, UPPER_BODY) + + var/obj/item/bodypart/head/human_head = human_parent.get_bodypart(BODY_ZONE_HEAD) + human_head?.worn_head_offset?.apply_offset(halo_overlay) + + overlay_list += halo_overlay diff --git a/code/datums/status_effects/cuffed_item.dm b/code/datums/status_effects/cuffed_item.dm index 297666efc75a..53ccad34b143 100644 --- a/code/datums/status_effects/cuffed_item.dm +++ b/code/datums/status_effects/cuffed_item.dm @@ -323,7 +323,7 @@ var/atom/movable/movable_parent = parent link_effect = movable_parent.AddComponent(/datum/component/leash, owner = chained_to, distance = 1) tug_effect = movable_parent.AddComponent(/datum/component/tug_towards, tugging_to = chained_to, strength = 0.66) - beam_effect = movable_parent.Beam(chained_to, "chain") + beam_effect = movable_parent.Beam(chained_to, "chain", animate = FALSE) RegisterSignal(link_effect, COMSIG_QDELETING, PROC_REF(delete_self)) RegisterSignal(tug_effect, COMSIG_QDELETING, PROC_REF(delete_self)) RegisterSignal(beam_effect, COMSIG_QDELETING, PROC_REF(recreate_beam)) @@ -345,7 +345,7 @@ UnregisterSignal(beam_effect, COMSIG_QDELETING) var/atom/movable/movable_parent = parent - beam_effect = movable_parent.Beam(chained_to_weakref.resolve(), "chain") + beam_effect = movable_parent.Beam(chained_to_weakref.resolve(), "chain", animate = FALSE) RegisterSignal(beam_effect, COMSIG_QDELETING, PROC_REF(recreate_beam)) /datum/component/chained_together/proc/delete_self(datum/source) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index 08f36ff70363..17f56e203e31 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -15,6 +15,9 @@ processing_speed = STATUS_EFFECT_PRIORITY remove_on_fullheal = TRUE heal_flag_necessary = HEAL_CC_STATUS + /// Chance of triggering a force_say + var/force_say_chance = 66 + /// If TRUE we run update_stat on apply/remove var/needs_update_stat = FALSE /// Suffixes attached to the force_say when applied, uses the "hurt" suffixes by default var/list/alter_phrases @@ -39,14 +42,14 @@ if(!.) return - force_say() + try_force_say() -/datum/status_effect/incapacitating/proc/force_say() +/datum/status_effect/incapacitating/proc/try_force_say() SHOULD_CALL_PARENT(TRUE) var/mob/living/carbon/human/human = owner - if(istype(human)) - human.force_say(alter_phrases, immediate = TRUE) + if(istype(human) && prob(force_say_chance) && (duration >= 6 SECONDS || (duration >= 2 SECONDS && prob(66))) ) + human.force_say(alter_phrases, immediate = TRUE, major = (duration >= 30 SECONDS)) //STUN /datum/status_effect/incapacitating/stun @@ -80,6 +83,7 @@ //IMMOBILIZED /datum/status_effect/incapacitating/immobilized id = "immobilized" + force_say_chance = 0 /datum/status_effect/incapacitating/immobilized/on_apply() . = ..() @@ -111,6 +115,7 @@ /// This status effect represents anything that leaves a character unable to perform basic tasks (interrupting do-afters, for example), but doesn't incapacitate them further than that (no stuns etc..) /datum/status_effect/incapacitating/incapacitated id = "incapacitated" + force_say_chance = 0 // What happens when you get the incapacitated status. You get TRAIT_INCAPACITATED added to you for the duration of the status effect. /datum/status_effect/incapacitating/incapacitated/on_apply() @@ -129,6 +134,7 @@ /datum/status_effect/incapacitating/unconscious id = "unconscious" needs_update_stat = TRUE + force_say_chance = 100 /datum/status_effect/incapacitating/unconscious/on_apply() . = ..() @@ -152,6 +158,7 @@ needs_update_stat = TRUE tick_interval = 2 SECONDS alter_phrases = list("Zzz...", "ZZz...", "ZZZ...", "zzZ...", "zZZ...", "ZzZ...", "zzz...", "zZz...", "mimimimimimi...") + force_say_chance = 100 /datum/status_effect/incapacitating/sleeping/on_apply() . = ..() @@ -171,9 +178,9 @@ tick_interval = initial(tick_interval) return ..() -/datum/status_effect/incapacitating/sleeping/force_say() +/datum/status_effect/incapacitating/sleeping/try_force_say() if(!HAS_TRAIT(owner, TRAIT_SLEEPIMMUNE)) - ..() + return ..() ///If the mob is sleeping and gain the TRAIT_SLEEPIMMUNE we remove the TRAIT_KNOCKEDOUT and stop the tick() from happening /datum/status_effect/incapacitating/sleeping/proc/on_owner_insomniac(mob/living/source) @@ -375,7 +382,7 @@ /datum/status_effect/crusher_mark id = "crusher_mark" - duration = 300 //if you leave for 30 seconds you lose the mark, deal with it + duration = 30 SECONDS //if you leave for 30 seconds you lose the mark, deal with it status_type = STATUS_EFFECT_REFRESH alert_type = null /// The bubble that is added to the mob as a visual @@ -384,10 +391,21 @@ var/boosted = FALSE /// How long before the mark is ready to be detonated. Used for both the visual overlay and to determine when it's ready var/ready_delay = 0.8 SECONDS + /// Damage dealt when the mark is detonated + var/detonation_damage = 50 + /// PKC that set this mark, for PKC-independent bursts + var/obj/item/kinetic_crusher/crusher -/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, was_boosted) +/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, was_boosted, obj/item/kinetic_crusher/crusher) . = ..() boosted = was_boosted + src.crusher = crusher + if (crusher) + RegisterSignal(crusher, COMSIG_QDELETING, PROC_REF(on_crusher_destroyed)) + +/datum/status_effect/crusher_mark/proc/on_crusher_destroyed(datum/source) + SIGNAL_HANDLER + crusher = null /datum/status_effect/crusher_mark/on_apply() if(owner.mob_size < MOB_SIZE_LARGE) @@ -409,8 +427,42 @@ if(owner) owner.underlays -= marked_underlay QDEL_NULL(marked_underlay) + crusher = null return ..() +/datum/status_effect/crusher_mark/proc/detonate(obj/item/kinetic_crusher/used_crusher, mob/living/user, melee_hit = TRUE) + var/datum/status_effect/crusher_damage/crusher_damage_effect = owner.has_status_effect(/datum/status_effect/crusher_damage) || owner.apply_status_effect(/datum/status_effect/crusher_damage) + var/target_health = owner.health + var/combined_damage = detonation_damage + for(var/obj/item/crusher_trophy/crusher_trophy as anything in used_crusher?.trophies) + combined_damage += crusher_trophy.on_mark_detonation(owner, user, used_crusher) + + // Trophy effects kill the target, abort + if(QDELETED(owner)) + return + + if(!QDELETED(crusher_damage_effect)) + crusher_damage_effect.total_damage += target_health - owner.health // We did some damage, but let's not assume how much we did + + new /obj/effect/temp_visual/kinetic_blast(get_turf(owner)) + var/backstabbed = FALSE + var/def_check = owner.getarmor(type = BOMB) + + // Backstab bonus, only if a crusher was used to detonate the mark + if(melee_hit && used_crusher && (boosted || (user && check_behind(user, owner) && !HAS_TRAIT(owner, TRAIT_BACKSTAB_IMMUNE)))) + backstabbed = TRUE + combined_damage += used_crusher.backstab_bonus + playsound(user, used_crusher.backstab_sound, 100, TRUE) + + if(!QDELETED(crusher_damage_effect)) + crusher_damage_effect.total_damage += combined_damage + + if (user) + SEND_SIGNAL(user, COMSIG_LIVING_CRUSHER_DETONATE, owner, used_crusher, backstabbed) + owner.apply_damage(combined_damage, BRUTE, blocked = def_check) + if (!QDELETED(owner)) + owner.remove_status_effect(src) + // Object used to apply a underlay to the mob that gets this status applied /obj/effect/abstract/crusher_mark name = "Crusher mark underlay" @@ -892,7 +944,7 @@ if(!prob(1)) // 99% to_chat(victim, span_userdanger("You're covered in MORE ants!")) else // 1% - victim.say("AAHH! THIS SITUATION HAS ONLY BEEN MADE WORSE WITH THE ADDITION OF YET MORE ANTS!!", forced = /datum/status_effect/ants) + INVOKE_ASYNC(victim, TYPE_PROC_REF(/atom/movable, say), "AAHH! THIS SITUATION HAS ONLY BEEN MADE WORSE WITH THE ADDITION OF YET MORE ANTS!!", forced = /datum/status_effect/ants) ants_remaining += amount_left . = ..() diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm index 36860ae0a6b2..dcfff81332aa 100644 --- a/code/datums/status_effects/debuffs/drunk.dm +++ b/code/datums/status_effects/debuffs/drunk.dm @@ -105,6 +105,7 @@ owner.add_mood_event(id, /datum/mood_event/drunk, drunk_value) owner.clear_mood_event("[id]_after") RegisterSignal(owner, COMSIG_MOB_FIRED_GUN, PROC_REF(drunk_gun_fired)) + RegisterSignal(owner, COMSIG_MOVABLE_GRABBED_RESISTING, PROC_REF(grabbed_resisting)) /datum/status_effect/inebriated/drunk/on_remove() clear_effects() @@ -125,6 +126,7 @@ owner.sound_environment_override = SOUND_ENVIRONMENT_NONE UnregisterSignal(owner, COMSIG_MOB_FIRED_GUN) + UnregisterSignal(owner, COMSIG_MOVABLE_GRABBED_RESISTING) REMOVE_TRAIT(owner, TRAIT_FEARLESS, TRAIT_STATUS_EFFECT(id)) /datum/status_effect/inebriated/drunk/proc/drunk_gun_fired(datum/source, obj/item/gun/gun, atom/firing_at, params, zone, bonus_spread_values) @@ -138,6 +140,15 @@ return bonus_spread_values[MAX_BONUS_SPREAD_INDEX] += (drunk_value * 0.5) +/datum/status_effect/inebriated/drunk/proc/grabbed_resisting(datum/source, mob/living/grabbed, list/grab_stats) + SIGNAL_HANDLER + + if(!HAS_TRAIT(owner, TRAIT_DRUNKEN_BRAWLER)) + return + + grab_stats[GRAB_STAT_EFFECTIVE_STATE] += 1 + grab_stats[GRAB_STAT_FAIL_DAMAGE] += clamp((owner.get_fire_loss() + owner.get_brute_loss()) / 10, 3, 20) + /datum/status_effect/inebriated/drunk/set_drunk_value(set_to) . = ..() if(QDELETED(src)) diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm index e5270d2e72a5..07df99eeb2b7 100644 --- a/code/datums/status_effects/debuffs/fire_stacks.dm +++ b/code/datums/status_effects/debuffs/fire_stacks.dm @@ -183,7 +183,7 @@ return TRUE var/datum/gas_mixture/air = owner.loc.return_air() - if(!air.gases[/datum/gas/oxygen] || air.gases[/datum/gas/oxygen][MOLES] < 1) + if(air.moles[/datum/gas/oxygen] < 1) qdel(src) return TRUE @@ -346,6 +346,14 @@ adjust_stacks(decay * seconds_between_ticks) if(stacks <= 0) qdel(src) + return + + if(HAS_TRAIT(owner, TRAIT_RESISTCOLD)) + return + + if(owner.bodytemperature <= WATER_VAPOR_DEPOSITION_POINT) + owner.apply_status_effect(/datum/status_effect/freon, stacks SECONDS) + qdel(src) /datum/status_effect/fire_handler/wet_stacks/check_basic_mob_immunity(mob/living/basic/basic_owner) return !(basic_owner.basic_mob_flags & IMMUNE_TO_GETTING_WET) diff --git a/code/datums/status_effects/debuffs/genetic_damage.dm b/code/datums/status_effects/debuffs/genetic_damage.dm index fd96231961d0..64663a0c3ae7 100644 --- a/code/datums/status_effects/debuffs/genetic_damage.dm +++ b/code/datums/status_effects/debuffs/genetic_damage.dm @@ -46,11 +46,11 @@ qdel(src) return -/datum/status_effect/genetic_damage/proc/on_healthscan(datum/source, list/render_list, advanced, mob/user, mode, tochat) +/datum/status_effect/genetic_damage/proc/on_healthscan(datum/source, list/render_list, scanpower, mob/user, mode, tochat) SIGNAL_HANDLER var/message = "" - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) message = "Genetic damage: [round(total_damage / minimum_before_tox_damage * 100, 0.1)]%" else if(total_damage >= minimum_before_tox_damage) message = "Severe genetic damage detected." diff --git a/code/datums/status_effects/debuffs/hallucination.dm b/code/datums/status_effects/debuffs/hallucination.dm index 7e3286180963..09630fada3bb 100644 --- a/code/datums/status_effects/debuffs/hallucination.dm +++ b/code/datums/status_effects/debuffs/hallucination.dm @@ -54,10 +54,10 @@ )) /// Signal proc for [COMSIG_LIVING_HEALTHSCAN]. Show we're hallucinating to (advanced) scanners. -/datum/status_effect/hallucination/proc/on_health_scan(datum/source, list/render_list, advanced, mob/user, mode, tochat) +/datum/status_effect/hallucination/proc/on_health_scan(datum/source, list/render_list, scanpower, mob/user, mode, tochat) SIGNAL_HANDLER - if(!advanced) + if(scanpower <= SCANPOWER_BASIC) return render_list += "" render_list += conditional_tooltip("Subject is hallucinating.", "Supply antipsychotic medication, such as [/datum/reagent/medicine/haloperidol::name] or [/datum/reagent/medicine/synaptizine::name].", tochat) diff --git a/code/datums/status_effects/debuffs/hooked.dm b/code/datums/status_effects/debuffs/hooked.dm index 4747941ca007..d6dfa473c64c 100644 --- a/code/datums/status_effects/debuffs/hooked.dm +++ b/code/datums/status_effects/debuffs/hooked.dm @@ -12,7 +12,7 @@ /datum/status_effect/grouped/hooked/proc/still_exists() return !QDELETED(src) -/datum/status_effect/grouped/hooked/source_added(datum/beam/fishing_line/source) +/datum/status_effect/grouped/hooked/source_added(datum/beam/held/source) RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_fishing_line_deleted)) /datum/status_effect/grouped/hooked/proc/on_fishing_line_deleted(datum/source) @@ -37,7 +37,7 @@ if(!effect.try_unhook()) return owner.balloon_alert(owner, "hook removed") - var/datum/beam/fishing_line/rand_source = pick(effect.sources) + var/datum/beam/held/rand_source = pick(effect.sources) qdel(rand_source) ///Version used by the jawed fishing hook, which also applies slowdown diff --git a/code/datums/status_effects/debuffs/slime/slime_leech.dm b/code/datums/status_effects/debuffs/slime/slime_leech.dm index 5c7b7567d553..d1125b2d25d5 100644 --- a/code/datums/status_effects/debuffs/slime/slime_leech.dm +++ b/code/datums/status_effects/debuffs/slime/slime_leech.dm @@ -54,7 +54,7 @@ SEND_SIGNAL(owner, COMSIG_SLIME_DRAINED, our_slime) - if(prob(60) && owner.client && ishuman(owner) && !our_slime.ai_controller.blackboard[BB_SLIME_RABID]) + if(prob(60) && ishuman(owner) && owner.client && !our_slime.ai_controller.blackboard[BB_SLIME_RABID]) our_slime.ai_controller?.set_blackboard_key(BB_SLIME_RABID, TRUE) //we might go rabid after finishing to feed on a human with a client. our_slime.stop_feeding() diff --git a/code/datums/status_effects/debuffs/speech_debuffs.dm b/code/datums/status_effects/debuffs/speech_debuffs.dm index adb82b99023b..87bd2e6a9397 100644 --- a/code/datums/status_effects/debuffs/speech_debuffs.dm +++ b/code/datums/status_effects/debuffs/speech_debuffs.dm @@ -64,7 +64,7 @@ make_tts_message_original = TRUE tts_filter = "tremolo=f=10:d=0.8,rubberband=tempo=0.5" - /// The probability of adding a stutter to any character + /// The probability of adding a stutter to any word var/stutter_prob = 75 /// The chance of a four character stutter var/four_char_chance = 10 @@ -117,6 +117,52 @@ stutter_prob = clamp(host_quirk?.calculate_mood_mod() * 0.5, 5, 50) return ..() +/datum/status_effect/speech/stutter/obsession + id = "obsession_stutter" + stutter_prob = 25 + four_char_chance = 5 + three_char_chance = 25 + two_char_chance = 100 + remove_on_fullheal = FALSE + + COOLDOWN_DECLARE(stutter_cooldown) + +/datum/status_effect/speech/stutter/obsession/handle_message(datum/source, list/message_args) + if(should_stutter()) + var/datum/brain_trauma/special/obsessed/obsession_trauma = get_obsession() + stutter_prob = initial(stutter_prob) + four_char_chance = initial(four_char_chance) * max(1 - (obsession_trauma.time_spend_creeping / (10 SECONDS)), 0.01) + three_char_chance = initial(three_char_chance) * max(1 - (obsession_trauma.time_spend_creeping / (20 SECONDS)), 0.01) + two_char_chance = initial(two_char_chance) * max(1 - (obsession_trauma.time_spend_creeping / (40 SECONDS)), 0.01) + else + stutter_prob = 0 + return ..() + +/datum/status_effect/speech/stutter/obsession/apply_speech(original_word, index) + . = ..() + if(. == original_word || !should_stutter()) + return + var/datum/brain_trauma/special/obsessed/obsession_trauma = get_obsession() + to_chat(owner, span_warning("Being near [obsession_trauma.obsession.real_name] makes you nervous and stutter...")) + COOLDOWN_START(src, stutter_cooldown, rand(4, 8) SECONDS) + +/datum/status_effect/speech/stutter/obsession/proc/get_obsession() + if(!ishuman(owner)) + return null + + var/mob/living/carbon/human/human_owner = owner + return human_owner.has_trauma_type(/datum/brain_trauma/special/obsessed) + +/datum/status_effect/speech/stutter/obsession/proc/should_stutter() + if(HAS_TRAIT(owner, TRAIT_FEARLESS)) + return FALSE + if(!COOLDOWN_FINISHED(src, stutter_cooldown)) + return FALSE + var/datum/brain_trauma/special/obsessed/obsession_trauma = get_obsession() + if(isnull(obsession_trauma) || !obsession_trauma.viewing || obsession_trauma.witnessed_death) + return FALSE + return TRUE + /datum/status_effect/speech/stutter/derpspeech id = "derp_stutter" /// The probability of making our message entirely uppercase + adding exclamations diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 61142c73a8c9..c478b4a2267a 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -1,6 +1,6 @@ /datum/status_effect/freon id = "frozen" - duration = 100 + duration = 10 SECONDS status_type = STATUS_EFFECT_UNIQUE alert_type = /atom/movable/screen/alert/status_effect/freon var/icon/cube @@ -11,6 +11,11 @@ desc = "You're frozen inside an ice cube, and cannot move! You can still do stuff, like shooting. Resist out of the cube!" icon_state = "frozen" +/datum/status_effect/freon/on_creation(mob/living/new_owner, set_duration) + if(isnum(set_duration)) + duration = set_duration + return ..() + /datum/status_effect/freon/on_apply() . = ..() if(!.) @@ -22,7 +27,6 @@ cube = icon('icons/effects/freeze.dmi', "ice_cube") owner.add_overlay(cube) - /datum/status_effect/freon/tick(seconds_between_ticks) if(can_melt && owner.bodytemperature >= owner.get_body_temp_normal()) qdel(src) @@ -47,7 +51,7 @@ return ..() /datum/status_effect/freon/watcher - duration = 8 + duration = 0.8 SECONDS can_melt = FALSE /datum/status_effect/freon/watcher/extended diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 9ccc6e3d3335..4b787d51b820 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -214,6 +214,8 @@ var/list/possible_takers /// The actual item being offered var/obj/item/offered_item + ///If we should bypass active_hand checks. + var/bypass_active_hand = FALSE /// The type of alert given to people when offered, in case you need to override some behavior (like for high-fives) var/give_alert_type = /atom/movable/screen/alert/give diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm index 5ea0be0b256d..6b10d609778b 100644 --- a/code/datums/status_effects/wound_effects.dm +++ b/code/datums/status_effects/wound_effects.dm @@ -79,18 +79,21 @@ // less limping while we have determination still var/determined_mod = owner.has_status_effect(/datum/status_effect/determined) ? 0.5 : 1 + var/obj/item/bodypart/leg_about_to_limp var/limp_chance var/limp_slowdown if(next_leg == left) + leg_about_to_limp = left limp_chance = limp_chance_left limp_slowdown = slowdown_left next_leg = right else + leg_about_to_limp = right limp_chance = limp_chance_right limp_slowdown = slowdown_right next_leg = left - if(SEND_SIGNAL(owner, COMSIG_CARBON_LIMPING) & COMPONENT_CANCEL_LIMP) + if(SEND_SIGNAL(owner, COMSIG_CARBON_LIMPING, leg_about_to_limp) & COMPONENT_CANCEL_LIMP) return if(prob(limp_chance * determined_mod)) diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index c478de045f5d..01c4b3980ecf 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -795,6 +795,9 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) /datum/storage/proc/on_mousedrop_onto(datum/source, atom/over_object, mob/user) SIGNAL_HANDLER + if(SEND_SIGNAL(parent, COMSIG_STORAGE_DUMP_PRE_TRANSFER, src, over_object, user) & CANCEL_STORAGE_DUMP) + return COMPONENT_CANCEL_MOUSEDROP_ONTO + if(ismecha(user.loc) || user.incapacitated || !user.canUseStorage()) return NONE @@ -816,11 +819,6 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) if(!user.can_perform_action(parent, FORBID_TELEKINESIS_REACH | ALLOW_RESTING)) return NONE - if(isliving(parent) && user.pulling == parent) - var/mob/living/as_living = parent - if(as_living.can_be_held) - return - parent.add_fingerprint(user) INVOKE_ASYNC(src, PROC_REF(open_storage), user) return COMPONENT_CANCEL_MOUSEDROP_ONTO diff --git a/code/datums/storage/storage_interface.dm b/code/datums/storage/storage_interface.dm index 2e42e34a6ea0..2fb7929b0ab4 100644 --- a/code/datums/storage/storage_interface.dm +++ b/code/datums/storage/storage_interface.dm @@ -150,28 +150,18 @@ var/current_y = screen_start_y var/turf/our_turf = get_turf(real_location) - for(var/i in 1 to length(usable_modules)) - var/atom/movable/item = usable_modules[i] - if(item in robot_model.robot.held_items) - current_x++ - if(current_x - screen_start_x < columns) - continue - current_x = screen_start_x - - current_y++ - if(current_y - screen_start_y >= rows) - break - //Module is currently active - continue - - item.mouse_opacity = MOUSE_OPACITY_OPAQUE - SET_PLANE(item, ABOVE_HUD_PLANE, our_turf) - item.screen_loc = "[current_x]:[screen_pixel_x],[current_y]:[screen_pixel_y]" + for(var/obj/item/item in usable_modules) + //Only for non active modules + if(item.item_flags & IN_STORAGE) + item.mouse_opacity = MOUSE_OPACITY_OPAQUE + SET_PLANE(item, ABOVE_HUD_PLANE, our_turf) + item.screen_loc = "[current_x]:[screen_pixel_x + item.base_pixel_x],[current_y]:[screen_pixel_y + item.base_pixel_y]" current_x++ if(current_x - screen_start_x < columns) continue current_x = screen_start_x + current_y++ if(current_y - screen_start_y >= rows) break diff --git a/code/datums/storage/subtypes/belts.dm b/code/datums/storage/subtypes/belts.dm index bfd636f5bf04..4eb14f3f6910 100644 --- a/code/datums/storage/subtypes/belts.dm +++ b/code/datums/storage/subtypes/belts.dm @@ -17,7 +17,7 @@ /datum/storage/medical_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage, rustle_sound, remove_rustle_sound) . = ..() - set_holdable(list( + set_holdable(can_hold_list = list( /obj/item/bikehorn/rubberducky, /obj/item/blood_filter, /obj/item/blood_scanner, @@ -32,7 +32,6 @@ /obj/item/clothing/mask/surgical, /obj/item/clothing/neck/stethoscope, /obj/item/construction/plumbing, - /obj/item/crowbar/power/paramedic, /obj/item/dnainjector, /obj/item/extinguisher/mini, /obj/item/flashlight/pen, diff --git a/code/datums/storage/subtypes/boxes.dm b/code/datums/storage/subtypes/boxes.dm index 2a50119749f1..1bff890dc2cf 100644 --- a/code/datums/storage/subtypes/boxes.dm +++ b/code/datums/storage/subtypes/boxes.dm @@ -183,3 +183,14 @@ max_total_storage = WEIGHT_CLASS_SMALL * slots . = ..() set_holdable(/obj/item/fishing_lure) //can only hold lures + +/datum/storage/box/ramen_beef + max_slots = 2 + +/datum/storage/box/ramen_beef/New(atom/parent, max_slots, max_specific_storage, max_total_storage, rustle_sound, remove_rustle_sound) + . = ..() + set_holdable(list( + /obj/item/reagent_containers/condiment/pack/beef_flavour, + /obj/item/food/spaghetti/ramen_dry, + )) + diff --git a/code/datums/verb_metadata.dm b/code/datums/verb_metadata.dm new file mode 100644 index 000000000000..f0b0f72bd016 --- /dev/null +++ b/code/datums/verb_metadata.dm @@ -0,0 +1,12 @@ +/datum/verb_metadata + var/name + var/description + var/category + var/verb_path + var/body_path + +/datum/verb_metadata/proc/assign_to(target) + add_verb(target, verb_path) + +/datum/verb_metadata/proc/unassign_from(target) + remove_verb(target, verb_path) diff --git a/code/datums/voice_of_god_command.dm b/code/datums/voice_of_god_command.dm index 22a3993fa780..e6fe27d2014e 100644 --- a/code/datums/voice_of_god_command.dm +++ b/code/datums/voice_of_god_command.dm @@ -206,7 +206,8 @@ GLOBAL_LIST_INIT(voice_of_god_commands, init_voice_of_god_commands()) /datum/voice_of_god_command/bleed/execute(list/listeners, mob/living/user, power_multiplier = 1, message) for(var/mob/living/carbon/human/target in listeners) var/obj/item/bodypart/chosen_part = pick(target.get_bodyparts()) - chosen_part.adjustBleedStacks(5) + var/add_stacks = HAS_TRAIT(target, TRAIT_BLOOD_FOUNTAIN) ? 7 : 5 + chosen_part.adjustBleedStacks(add_stacks) /// This command sets the listeners ablaze. /datum/voice_of_god_command/burn diff --git a/code/datums/votes/_vote_datum.dm b/code/datums/votes/_vote_datum.dm index 957160dea7d3..6b9f7e3bdba7 100644 --- a/code/datums/votes/_vote_datum.dm +++ b/code/datums/votes/_vote_datum.dm @@ -23,6 +23,8 @@ var/winner_method = VOTE_WINNER_METHOD_SIMPLE /// Should we show details about the number of votes submitted for each option? var/display_statistics = TRUE + /// only applicable if `display_statistics` is false, this will let the final vote tally be printed to chat even if it couldn't be seen during the vote + var/print_results = TRUE // Internal values used when tracking ongoing votes. // Don't mess with these, change the above values / override procs for subtypes. @@ -193,7 +195,7 @@ if(total_votes <= 0) return span_bold("Vote Result: Inconclusive - No Votes!") - if (display_statistics) + if (display_statistics || print_results) returned_text += "\nResults:" for(var/option in choices) returned_text += "\n" diff --git a/code/datums/votes/custom_vote.dm b/code/datums/votes/custom_vote.dm index 78eb6d3b876d..50435d8d2c69 100644 --- a/code/datums/votes/custom_vote.dm +++ b/code/datums/votes/custom_vote.dm @@ -78,6 +78,19 @@ return FALSE display_statistics = display_stats == "Yes" + if (!display_statistics) + var/set_print_result = tgui_alert( + vote_creator, + "Should the vote tally be public after the vote is concluded?", + "Print vote tally after vote?", + list("Yes", "No"), + ) + + if (isnull(set_print_result)) + return FALSE + + print_results = set_print_result == "Yes" + override_question = tgui_input_text(vote_creator, "What is the vote for?", "Custom Vote") if(!override_question) return FALSE diff --git a/code/datums/votes/map_vote.dm b/code/datums/votes/map_vote.dm index 08f792d291de..dd099919aeb0 100644 --- a/code/datums/votes/map_vote.dm +++ b/code/datums/votes/map_vote.dm @@ -4,14 +4,13 @@ count_method = VOTE_COUNT_METHOD_SINGLE winner_method = VOTE_WINNER_METHOD_NONE display_statistics = FALSE + /datum/vote/map_vote/New() . = ..() default_choices = SSmap_vote.get_valid_map_vote_choices() /datum/vote/map_vote/create_vote() - var/list/new_choices = SSmap_vote.get_valid_map_vote_choices() - if (new_choices) - default_choices = new_choices + default_choices = SSmap_vote.get_valid_map_vote_choices() . = ..() if(!.) return FALSE @@ -43,10 +42,13 @@ if(SSmap_vote.next_map_config) return "The next map has already been selected." + // The below case will be caught in create_vote() if the vote is being forced + // This ensures proper map rotation if there aren't enough votable maps for whatever reason + if(forced) + return VOTE_AVAILABLE + var/list/new_choices = SSmap_vote.get_valid_map_vote_choices() - if (new_choices) - default_choices = new_choices - var/num_choices = length(default_choices) + var/num_choices = length(new_choices) if(num_choices <= 1) return "There [num_choices == 1 ? "is only one map" : "are no maps"] to choose from." diff --git a/code/datums/weather/particle_weather.dm b/code/datums/weather/particle_weather.dm index b8e1a5ac3fe2..ceb4a9c12859 100644 --- a/code/datums/weather/particle_weather.dm +++ b/code/datums/weather/particle_weather.dm @@ -16,6 +16,8 @@ /// How often can we change our severity? /// Don't set this too low or it'll look jank var/severity_cooldown = 5 SECONDS + /// Alpha of the area overlay when the particle weather pref is enabled + var/particle_weather_alpha = 255 /// Current weather severity var/severity = 0 @@ -26,7 +28,7 @@ /// Direction of our wind var/wind_sign = 0 -/datum/weather/particle/New(z_levels, list/weather_data) +/datum/weather/particle/New(list/z_levels, list/weather_data) . = ..() if (isnull(particle_type) && isnull(emissive_type)) CRASH("[src] ([type]) attempted to initialize without normal or emissive particle types!") @@ -37,13 +39,13 @@ var/obj/effect/abstract/weather_holder/holder = new() SET_PLANE_W_SCALAR(holder, RENDER_PLANE_PARTICLE_WEATHER, offset) holder.particles = new particle_type() - object_list += holder + object_list[holder] = impacted_z_levels if (emissive_type) var/obj/effect/abstract/weather_holder/holder = new() holder.particles = new emissive_type() SET_PLANE_W_SCALAR(holder, RENDER_PLANE_EMISSIVE_PARTICLE_WEATHER, offset) - object_list += holder + object_list[holder] = impacted_z_levels weather_objects += list(object_list) @@ -85,7 +87,7 @@ new_severity = clamp(new_severity, min(new_severity, min_severity), max_severity) if (WIND_DOWN_STAGE) // Slowly goes down to zero - new_severity += rand() * -severity_variation * (severity / min_severity) + new_severity += rand() * -severity_variation * 4 * max(severity / min_severity, 1) animate_severity(new_severity) @@ -101,6 +103,15 @@ /datum/weather/particle/generate_overlay_cache() . = ..() + + if (stage == END_STAGE) + return + + // Change alpha of overlays on the particle weather plane + for(var/mutable_appearance/overlay as anything in .) + if (PLANE_TO_TRUE(overlay.plane) == PARTICLE_WEATHER_PLANE) + overlay.alpha = particle_weather_alpha + for (var/offset in 0 to SSmapping.max_plane_offset) . += mutable_appearance('icons/effects/weather_overlay.dmi', "weather_overlay", overlay_layer, null, WEATHER_MASK_PLANE, offset_const = offset) diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 2829d15523ae..b8c001b20021 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -70,14 +70,15 @@ /// Areas that are protected and excluded from the affected areas. var/list/protected_areas = list() /// The list of z-levels that this weather is actively affecting - VAR_FINAL/impacted_z_levels + VAR_FINAL/list/impacted_z_levels /// A weighted list of z-levels impacted by weather, where weights reflect the total turf count on each level VAR_FINAL/list/impacted_z_levels_weighted = list() /// Since it's above everything else, this is the layer used by default. var/overlay_layer = AREA_LAYER - /// Plane for the overlay - var/overlay_plane = WEATHER_PLANE + /// Planes for the overlay + /// Base visuals should always render to both particle and non-particle planes as to work regardless of the toggle + var/list/overlay_planes = list(WEATHER_PLANE, PARTICLE_WEATHER_PLANE) /// Used by mobs (or movables containing mobs, such as enviro bags) to prevent them from being affected by the weather. var/immunity_type /// If this bit of weather should also draw an overlay that's uneffected by lighting onto the area @@ -136,10 +137,9 @@ /// The actual atom that holds our reagents that is held in nullspace var/obj/effect/abstract/weather_reagent_holder -/datum/weather/New(z_levels, list/weather_data) +/datum/weather/New(list/z_levels, list/weather_data) ..() - - impacted_z_levels = z_levels + impacted_z_levels = z_levels.Copy() weather_flags = isnull(weather_data?[WEATHER_FORCED_FLAGS]) ? weather_flags : weather_data?[WEATHER_FORCED_FLAGS] turf_thunder_chance = isnull(weather_data?[WEATHER_FORCED_THUNDER]) ? turf_thunder_chance : weather_data?[WEATHER_FORCED_THUNDER] telegraph_duration = isnull(weather_data?[WEATHER_FORCED_TELEGRAPH]) ? telegraph_duration : weather_data?[WEATHER_FORCED_TELEGRAPH] @@ -586,9 +586,12 @@ glow_overlay.color = weather_color gen_overlay_cache += glow_overlay - var/mutable_appearance/new_weather_overlay = mutable_appearance('icons/effects/weather_effects.dmi', weather_state, overlay_layer, plane = overlay_plane, alpha = weather_alpha, offset_const = offset) - new_weather_overlay.color = weather_color - gen_overlay_cache += new_weather_overlay + // By default we render ourselves to both particle and non-particle weather, as those are mutually exclusive + // So that particle weather can have full alpha overlays when the pref is disabled, but partially transparent overlays when its enabled + for (var/overlay_plane in overlay_planes) + var/mutable_appearance/new_weather_overlay = mutable_appearance('icons/effects/weather_effects.dmi', weather_state, overlay_layer, plane = overlay_plane, alpha = weather_alpha, offset_const = offset) + new_weather_overlay.color = weather_color + gen_overlay_cache += new_weather_overlay return gen_overlay_cache diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index ae12115e367f..16d04c8e19b6 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -7,7 +7,7 @@ emissive_type = /particles/weather/ash_storm/embers min_severity = 60 optimal_severity = 80 - weather_alpha = 100 + particle_weather_alpha = 100 wind_sign = -1 // Always blows left to sync with the animated overlays telegraph_message = span_boldwarning("An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter.") diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 2dcbbed0aa75..536c3461a2ba 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -19,7 +19,7 @@ target_trait = ZTRAIT_STATION overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only - overlay_plane = FLOOR_PLANE + overlay_planes = list(FLOOR_PLANE) immunity_type = TRAIT_LAVA_IMMUNE /// We don't draw on walls, so this ends up lookin weird /// Can't really use like, the emissive system here because I am not about to make diff --git a/code/datums/weather/weather_types/rain_storm.dm b/code/datums/weather/weather_types/rain_storm.dm index 2b2998fff727..43e9a375fa0d 100644 --- a/code/datums/weather/weather_types/rain_storm.dm +++ b/code/datums/weather/weather_types/rain_storm.dm @@ -6,13 +6,19 @@ min_severity = 30 telegraph_message = span_danger("Thunder rumbles far above. You hear droplets drumming against the canopy.") + telegraph_overlay = "rain_low" telegraph_duration = 30 SECONDS weather_message = span_userdanger("Rain pours down around you!") + weather_overlay = "rain_high" end_message = span_bolddanger("The downpour gradually slows to a light shower.") + end_overlay = "rain_low" end_duration = 30 SECONDS + // Don't display overlays when using particle weather + overlay_planes = list(WEATHER_PLANE) + weather_duration_lower = 3 MINUTES weather_duration_upper = 5 MINUTES diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm index c3b4efe3460e..fa22771945d2 100644 --- a/code/datums/wires/mulebot.dm +++ b/code/datums/wires/mulebot.dm @@ -3,7 +3,7 @@ #define SLOW_MOTOR_SPEED 3 /datum/wires/mulebot - holder_type = /mob/living/simple_animal/bot/mulebot + holder_type = /mob/living/basic/bot/mulebot proper_name = "Mulebot" randomize = TRUE @@ -19,12 +19,12 @@ /datum/wires/mulebot/interactable(mob/user) if(!..()) return FALSE - var/mob/living/simple_animal/bot/mulebot/mule = holder - if(mule.bot_cover_flags & BOT_COVER_MAINTS_OPEN) + var/mob/living/basic/bot/mulebot/mule = holder + if(mule.bot_access_flags & BOT_COVER_MAINTS_OPEN) return TRUE /datum/wires/mulebot/on_cut(wire, mend, source) - var/mob/living/simple_animal/bot/mulebot/mule = holder + var/mob/living/basic/bot/mulebot/mule = holder switch(wire) if(WIRE_MOTOR1, WIRE_MOTOR2) if(is_cut(WIRE_MOTOR1) && is_cut(WIRE_MOTOR2)) @@ -49,7 +49,7 @@ holder.audible_message(span_hear("Something inside [mule] clicks ominously!"), null, 1) /datum/wires/mulebot/on_pulse(wire) - var/mob/living/simple_animal/bot/mulebot/mule = holder + var/mob/living/basic/bot/mulebot/mule = holder if(!mule.has_power(TRUE)) return //logically mulebots can't flash and beep if they don't have power. switch(wire) @@ -57,7 +57,7 @@ holder.visible_message(span_notice("[icon2html(mule, viewers(holder))] The charge light flickers.")) if(WIRE_AVOIDANCE) holder.visible_message(span_notice("[icon2html(mule, viewers(holder))] The external warning lights flash briefly.")) - flick("[mule.base_icon]1", mule) + flick("[mule.base_icon_state]1", mule) if(WIRE_LOADCHECK) holder.visible_message(span_notice("[icon2html(mule, viewers(holder))] The load platform clunks.")) if(WIRE_MOTOR1, WIRE_MOTOR2) @@ -65,6 +65,7 @@ else holder.visible_message(span_notice("[icon2html(mule, viewers(holder))] You hear a radio crackle.")) + #undef FAST_MOTOR_SPEED #undef AVERAGE_MOTOR_SPEED #undef SLOW_MOTOR_SPEED diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 067225df49cf..d001c1d1050a 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -206,7 +206,7 @@ .["respawn"] = config ? !!CONFIG_GET(flag/allow_respawn) : FALSE // show respawn as true regardless of "respawn as char" or "free respawn" .["enter"] = !LAZYACCESS(SSlag_switch.measures, DISABLE_NON_OBSJOBS) .["ai"] = CONFIG_GET(flag/allow_ai) - .["host"] = world.host ? world.host : null + .["host"] = world?.host || CONFIG_GET(string/hostedby) .["round_id"] = GLOB.round_id .["players"] = GLOB.clients.len .["revision"] = GLOB.revdata.commit diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 87104b8cd473..fd0f586b98d5 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -12,6 +12,7 @@ plane = AREA_PLANE mouse_opacity = MOUSE_OPACITY_TRANSPARENT invisibility = INVISIBILITY_LIGHTING + tacmap_color = null /// List of all turfs currently inside this area as nested lists indexed by zlevel. /// Acts as a filtered version of area.contents For faster lookup @@ -137,6 +138,9 @@ /// Are shuttles allowed to dock in this area var/allow_shuttle_docking = FALSE + /// If TRUE, then this area will be skipped entirely by minimap rendering. + var/skip_minimap_rendering = FALSE + /** * A list of teleport locations * diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index 39d7ebce1dbe..53ee44f7b603 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -11,6 +11,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" default_gravity = STANDARD_GRAVITY ambience_index = AMBIENCE_AWAY sound_environment = SOUND_ENVIRONMENT_ROOM + skip_minimap_rendering = TRUE /area/awaymission/museum name = "Nanotrasen Museum" @@ -28,6 +29,11 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" name = "Nanotrasen Museum Cafeteria" sound_environment = SOUND_ENVIRONMENT_ROOM +/area/awaymission/museum/inaccessible + name = "Nanotrasen Museum (INACCESSIBLE)" + icon_state = "away_inaccessible" + area_flags = NOTELEPORT|HIDDEN_AREA + /area/awaymission/errorroom name = "Super Secret Room" static_lighting = FALSE @@ -57,3 +63,9 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" /area/awaymission/secret/powered/fullbright static_lighting = FALSE base_lighting_alpha = 255 + +///Denotes area of away missions that shouldn't be accessible through teleportation etc. +/area/awaymission/inaccessible + name = "inaccessible away mission area" + icon_state = "away_inaccessible" + area_flags = NOTELEPORT|HIDDEN_AREA diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index af047a00698d..51f054029739 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -196,6 +196,7 @@ sound_environment = SOUND_AREA_ICEMOON ambient_buzz = 'sound/ambience/lavaland/magma.ogg' allow_shuttle_docking = TRUE + skip_minimap_rendering = TRUE /area/icemoon/surface name = "Icemoon" diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index 94c826a729b1..99c745238353 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -17,6 +17,7 @@ sound_environment = SOUND_AREA_SPACE ambient_buzz = null //Space is deafeningly quiet allow_shuttle_docking = TRUE + skip_minimap_rendering = TRUE /area/space/nearstation icon_state = "space_near" diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index 92fff19386da..f0adbe7eb6bc 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -9,6 +9,7 @@ ambience_index = AMBIENCE_RUINS flags_1 = CAN_BE_DIRTY_1 sound_environment = SOUND_ENVIRONMENT_STONEROOM + skip_minimap_rendering = TRUE /area/ruin/unpowered always_unpowered = TRUE diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index 24bd482633ce..b8dd7c662508 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -785,3 +785,7 @@ /area/ruin/space/has_grav/film_studio/starboard name = "\improper Film Studio Starboard Wing" + +//Kilostation +/area/ruin/space/has_grav/abandoned_warehouse + name = "\improper Abandoned Warehouse" diff --git a/code/game/area/areas/station/cargo.dm b/code/game/area/areas/station/cargo.dm index 8e892efda95c..430122cc769b 100644 --- a/code/game/area/areas/station/cargo.dm +++ b/code/game/area/areas/station/cargo.dm @@ -3,6 +3,7 @@ icon_state = "quart" airlock_wires = /datum/wires/airlock/cargo sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = COLOR_CARGO_BROWN /area/station/cargo/sorting name = "\improper Delivery Office" diff --git a/code/game/area/areas/station/command.dm b/code/game/area/areas/station/command.dm index 30f126dc42cb..6cc80002aab1 100644 --- a/code/game/area/areas/station/command.dm +++ b/code/game/area/areas/station/command.dm @@ -6,6 +6,7 @@ ) airlock_wires = /datum/wires/airlock/command sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = TACMAP_AREA_COMMAND /area/station/command/bridge name = "\improper Bridge" diff --git a/code/game/area/areas/station/common.dm b/code/game/area/areas/station/common.dm index 1b6eba4dc25e..641c43dfd417 100644 --- a/code/game/area/areas/station/common.dm +++ b/code/game/area/areas/station/common.dm @@ -87,6 +87,7 @@ mood_message = "I love being in the bar!" mood_trait = TRAIT_EXTROVERT sound_environment = SOUND_AREA_SMALL_SOFTFLOOR + tacmap_color = TACMAP_AREA_SERVICE /area/station/commons/fitness name = "\improper Fitness Room" diff --git a/code/game/area/areas/station/engineering.dm b/code/game/area/areas/station/engineering.dm index 3f0464453857..04e27d738c4e 100644 --- a/code/game/area/areas/station/engineering.dm +++ b/code/game/area/areas/station/engineering.dm @@ -3,6 +3,7 @@ ambience_index = AMBIENCE_ENGI airlock_wires = /datum/wires/airlock/engineering sound_environment = SOUND_AREA_LARGE_ENCLOSED + tacmap_color = TACMAP_AREA_ENGINEERING /area/station/engineering/circuit_workshop name = "\improper Circuit Workshop" @@ -150,6 +151,7 @@ icon_state = "construction" ambience_index = AMBIENCE_ENGI sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = TACMAP_AREA_ENGINEERING /area/station/construction/mining/aux_base name = "Auxiliary Base Construction" diff --git a/code/game/area/areas/station/hallway.dm b/code/game/area/areas/station/hallway.dm index 12a5ba6816b4..3c82c9b1beea 100644 --- a/code/game/area/areas/station/hallway.dm +++ b/code/game/area/areas/station/hallway.dm @@ -92,6 +92,7 @@ /area/station/hallway/secondary/service name = "\improper Service Hallway" icon_state = "hall_service" + tacmap_color = TACMAP_AREA_SERVICE /area/station/hallway/secondary/spacebridge name = "\improper Space Bridge" diff --git a/code/game/area/areas/station/maintenance.dm b/code/game/area/areas/station/maintenance.dm index a6fa76cd80e9..84ce4032eb62 100644 --- a/code/game/area/areas/station/maintenance.dm +++ b/code/game/area/areas/station/maintenance.dm @@ -7,6 +7,7 @@ forced_ambience = TRUE ambient_buzz = 'sound/ambience/maintenance/source_corridor2.ogg' ambient_buzz_vol = 20 + tacmap_color = TACMAP_AREA_MAINTENANCE /* * Departmental Maintenance @@ -248,6 +249,7 @@ /area/station/maintenance/disposal/incinerator name = "\improper Incinerator" icon_state = "incinerator" + tacmap_color = TACMAP_AREA_ENGINEERING /area/station/maintenance/space_hut name = "\improper Space Hut" diff --git a/code/game/area/areas/station/medical.dm b/code/game/area/areas/station/medical.dm index 03bdc8eb5bf1..a02e014a0c00 100644 --- a/code/game/area/areas/station/medical.dm +++ b/code/game/area/areas/station/medical.dm @@ -4,6 +4,7 @@ ambience_index = AMBIENCE_MEDICAL airlock_wires = /datum/wires/airlock/medbay sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = TACMAP_AREA_MEDICAL /area/station/medical/abandoned name = "\improper Abandoned Medbay" @@ -12,6 +13,7 @@ 'sound/ambience/misc/signal.ogg', ) sound_environment = SOUND_AREA_SMALL_ENCLOSED + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/medical/medbay/central name = "Medbay Central" diff --git a/code/game/area/areas/station/science.dm b/code/game/area/areas/station/science.dm index b64e7efe75a4..9954a500673b 100644 --- a/code/game/area/areas/station/science.dm +++ b/code/game/area/areas/station/science.dm @@ -3,6 +3,7 @@ icon_state = "science" airlock_wires = /datum/wires/airlock/science sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = TACMAP_AREA_SCIENCE /area/station/science/lobby name = "\improper Science Lobby" @@ -131,6 +132,7 @@ name = "\improper Ordnance Bomb Site" icon_state = "ord_boom" area_flags = BLOBS_ALLOWED | CULT_PERMITTED | NO_GRAVITY + skip_minimap_rendering = TRUE /area/station/science/ordnance/bomb/planet area_flags = /area/station/science/ordnance/bomb::area_flags & ~NO_GRAVITY diff --git a/code/game/area/areas/station/security.dm b/code/game/area/areas/station/security.dm index 3166f7733d95..22d3bb0de85c 100644 --- a/code/game/area/areas/station/security.dm +++ b/code/game/area/areas/station/security.dm @@ -6,6 +6,7 @@ ambience_index = AMBIENCE_DANGER airlock_wires = /datum/wires/airlock/security sound_environment = SOUND_AREA_STANDARD_STATION + tacmap_color = TACMAP_AREA_SECURITY /area/station/security/office name = "\improper Security Office" diff --git a/code/game/area/areas/station/service.dm b/code/game/area/areas/station/service.dm index 355406563264..71e9421e3a5b 100644 --- a/code/game/area/areas/station/service.dm +++ b/code/game/area/areas/station/service.dm @@ -1,5 +1,6 @@ /area/station/service airlock_wires = /datum/wires/airlock/service + tacmap_color = TACMAP_AREA_SERVICE /* * Bar/Kitchen Areas @@ -199,27 +200,34 @@ name = "\improper Abandoned Garden" icon_state = "abandoned_garden" sound_environment = SOUND_AREA_SMALL_ENCLOSED + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/kitchen/abandoned name = "\improper Abandoned Kitchen" icon_state = "abandoned_kitchen" + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/electronic_marketing_den name = "\improper Electronic Marketing Den" icon_state = "abandoned_marketing_den" + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/abandoned_gambling_den name = "\improper Abandoned Gambling Den" icon_state = "abandoned_gambling_den" + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/abandoned_gambling_den/gaming name = "\improper Abandoned Gaming Den" icon_state = "abandoned_gaming_den" + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/theater/abandoned name = "\improper Abandoned Theater" icon_state = "abandoned_theatre" + tacmap_color = TACMAP_AREA_MAINTENANCE /area/station/service/library/abandoned name = "\improper Abandoned Library" icon_state = "abandoned_library" + tacmap_color = TACMAP_AREA_MAINTENANCE diff --git a/code/game/area/areas/station/solars.dm b/code/game/area/areas/station/solars.dm index 569a7f0a169e..d7765c6ee9b6 100644 --- a/code/game/area/areas/station/solars.dm +++ b/code/game/area/areas/station/solars.dm @@ -77,6 +77,7 @@ /area/station/maintenance/solars name = "Solar Maintenance" icon_state = "yellow" + tacmap_color = TACMAP_AREA_ENGINEERING /area/station/maintenance/solars/port name = "Port Solar Maintenance" diff --git a/code/game/area/areas/station/telecomm.dm b/code/game/area/areas/station/telecomm.dm index adb4670b44b3..46c644acfebe 100644 --- a/code/game/area/areas/station/telecomm.dm +++ b/code/game/area/areas/station/telecomm.dm @@ -15,6 +15,7 @@ 'sound/ambience/misc/ambimystery.ogg', ) airlock_wires = /datum/wires/airlock/engineering + tacmap_color = TACMAP_AREA_ENGINEERING /area/station/tcommsat/maints name = "\improper Telecomms Maintenance Room" diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index ad246f5ff825..5f703f9e6b63 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -147,6 +147,9 @@ /// Generally for niche objects, atoms blacklisted can spawn if enabled by spawner. var/spawn_blacklisted = FALSE + /// What color this shows up as on the tactical map + var/tacmap_color = TACMAP_SOLID + /** * Top level of the destroy chain for most atoms * @@ -192,6 +195,15 @@ if(smoothing_flags & SMOOTH_QUEUED) SSicon_smooth.remove_from_queues(src) +#ifndef DISABLE_DREAMLUAU + // These lists cease existing when src does, so we need to clear any lua refs to them that exist. + if(!(datum_flags & DF_STATIC_OBJECT)) + DREAMLUAU_CLEAR_REF_USERDATA(contents) + DREAMLUAU_CLEAR_REF_USERDATA(filters) + DREAMLUAU_CLEAR_REF_USERDATA(overlays) + DREAMLUAU_CLEAR_REF_USERDATA(underlays) +#endif + return ..() /atom/proc/handle_ricochet(obj/projectile/ricocheting_projectile) @@ -222,7 +234,12 @@ if(!mover.generic_canpass) return mover.CanPassThrough(src, REVERSE_DIR(border_dir), .) -/// Returns true or false to allow the mover to move through src +/** + * Returns true or false to allow the mover to move through src + * @params + * mover: The mob trying to move into this atom. + * border_dir: Typically the direction that mover has in relation to src. + */ /atom/proc/CanAllowThrough(atom/movable/mover, border_dir) SHOULD_CALL_PARENT(TRUE) //SHOULD_BE_PURE(TRUE) @@ -342,7 +359,14 @@ */ /atom/proc/on_craft_completion(list/components, datum/crafting_recipe/current_recipe, atom/crafter) SHOULD_CALL_PARENT(TRUE) + + if(isliving(crafter)) + var/mob/living/person = crafter + if(person.mind) + ADD_TRAIT(src, TRAIT_HANDMADE, REF(person.mind)) + SEND_SIGNAL(src, COMSIG_ATOM_ON_CRAFT, components, current_recipe) + var/list/remaining_parts = LAZYLISTDUPLICATE(current_recipe?.parts) var/list/parts_by_type = LAZYLISTDUPLICATE(remaining_parts) for(var/parttype in parts_by_type) //necessary for our is_type_in_list() call with the zebra arg set to true @@ -438,6 +462,10 @@ /atom/proc/HasProximity(atom/movable/proximity_check_mob as mob|obj) return +/// has a previously nearby atom moved away +/atom/proc/OnProximityExit(atom/movable/proximity_check_mob as mob|obj) + return + /// Sets the wire datum of an atom /atom/proc/set_wires(datum/wires/new_wires) wires = new_wires @@ -667,7 +695,7 @@ for(var/i = 1 to amount_to_create) var/atom/created_atom = new atom_to_create(drop_location()) created_atom.OnCreatedFromProcessing(user, process_item, chosen_option, src) - if(custom_materials) + if(custom_materials || IS_EDIBLE(src)) //materials are ALWAYS inherited for food, even if the source has none created_atom.set_custom_materials(custom_materials, 1 / amount_to_create) created_atom.pixel_x = pixel_x created_atom.pixel_y = pixel_y @@ -691,7 +719,7 @@ SEND_SIGNAL(src, COMSIG_ATOM_CREATEDBY_PROCESSING, original_atom, chosen_option) if(user.mind) - ADD_TRAIT(src, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) + ADD_TRAIT(src, TRAIT_HANDMADE, REF(user.mind)) ///Connect this atom to a shuttle /atom/proc/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) diff --git a/code/game/atom/atom_materials.dm b/code/game/atom/atom_materials.dm index 1f787d217bdb..01f349dab448 100644 --- a/code/game/atom/atom_materials.dm +++ b/code/game/atom/atom_materials.dm @@ -556,6 +556,31 @@ /atom/proc/get_custom_material_amount() return isnull(custom_materials) ? 0 : counterlist_sum(custom_materials) +/** + * Returns a list with the sum of the materials of the source and its contents for each mat type. + * If contents_type is set, only consider contained objects of that type (plus src). + * Any object that has any of the traits in skip_traits will also be skipped. + */ +/atom/proc/get_contents_custom_materials(contents_type, list/skip_traits) + var/list/contained = ispath(contents_type) ? get_all_contents_type(contents_type) : get_all_contents() + if(skip_traits && !islist(skip_traits)) + skip_traits = list(skip_traits) + var/list/all_mats = list() + for(var/atom/atom as anything in contained) + if(!length(atom.custom_materials)) + continue + if(skip_traits) + var/skip = FALSE + for(var/trait in skip_traits) + if(HAS_TRAIT(atom, trait)) + skip = TRUE + break + if(skip) + continue + for(var/material in atom.custom_materials) + all_mats[material] += atom.custom_materials[material] + return all_mats + /// A simple proc that iterates through each material that the object is made of and spawns some stacks based on their amount and associated sheet/ore type. /atom/proc/drop_custom_materials(multiplier = 1) for(var/datum/material/material as anything in custom_materials) @@ -609,20 +634,7 @@ var/index = 1 var/mats_len = length(mats_list) for(var/datum/material/mat as anything in mats_list) - var/amount_string = "" - if(as_sheets) - var/amount = sheets_from_value(mats_list[mat]) - switch(amount) - if(0 to 0.49) - amount_string = "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10) - if(0.5) - amount_string = "HALF_SHEET_MATERIAL_AMOUNT" - if(1) - amount_string = "SHEET_MATERIAL_AMOUNT" - else - amount_string = "SHEET_MATERIAL_AMOUNT * " + num2text(amount) - else - amount_string = "[mats_list[mat]]" + var/amount_string = as_sheets ? transcribe_mat_value_as_sheet(mats_list[mat]) : "[mats_list[mat]]" text += "[mat.type] = " + amount_string if(index < mats_len) text += ", " @@ -630,6 +642,22 @@ text += ")" return text +/proc/transcribe_mat_value_as_sheet(value) + var/amount = sheets_from_value(value) + switch(amount) + if(0 to 0.09) + return "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10) + if(0.1) + return "SMALL_MATERIAL_AMOUNT" + if(0.11 to 0.49) + return "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10) + if(0.5) + return "HALF_SHEET_MATERIAL_AMOUNT" + if(1) + return "SHEET_MATERIAL_AMOUNT" + else + return "SHEET_MATERIAL_AMOUNT * " + num2text(amount) + /// Convert a raw material amount into /// "SHEET_MATERIAL_AMOUNT", or "* N", with rounding rules. /proc/sheets_from_value(value, sheet_amount = SHEET_MATERIAL_AMOUNT) diff --git a/code/game/atom/atom_vv.dm b/code/game/atom/atom_vv.dm index d5a4b5ccd9dc..4998536a5894 100644 --- a/code/game/atom/atom_vv.dm +++ b/code/game/atom/atom_vv.dm @@ -12,6 +12,7 @@ . += "Jump To" VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform") VV_DROPDOWN_OPTION(VV_HK_DEBUG_APPEARANCE, "Debug Appearance") + VV_DROPDOWN_OPTION(VV_HK_DOWNLOAD_SPRITE, "Download Sprite") VV_DROPDOWN_OPTION(VV_HK_SPIN_ANIMATION, "SpinAnimation") VV_DROPDOWN_OPTION(VV_HK_STOP_ALL_ANIMATIONS, "Stop All Animations") VV_DROPDOWN_OPTION(VV_HK_SHOW_HIDDENPRINTS, "Show Hiddenprint log") @@ -189,6 +190,10 @@ if(href_list[VV_HK_TEST_MATRIXES]) usr.client?.open_matrix_tester(src) + if(href_list[VV_HK_DOWNLOAD_SPRITE]) + var/icon/target_icon = getFlatIcon(src) + usr << ftp(target_icon, "[name].png") + /atom/vv_get_header() . = ..() var/refid = REF(src) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index bba7df382899..fc38c768c7f6 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -113,6 +113,12 @@ /// The pitch adjustment that this movable uses when speaking. var/pitch = 0 + /// The base set of blips to use for blip calculation. + var/blip_base = "male" + + /// The blip variant to use for blip calculation. + var/blip_number = "1" + /// Datum that keeps all data related to zero-g drifting and handles related code/comsigs var/datum/drift_handler/drift_handler @@ -246,6 +252,12 @@ LAZYNULL(client_mobs_in_contents) +#ifndef DISABLE_DREAMLUAU + // These lists cease existing when src does, so we need to clear any lua refs to them that exist. + DREAMLUAU_CLEAR_REF_USERDATA(vis_contents) + DREAMLUAU_CLEAR_REF_USERDATA(vis_locs) +#endif + . = ..() for(var/movable_content in contents) @@ -944,7 +956,7 @@ if(!bumped_atom) CRASH("Bump was called with no argument.") if(SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, bumped_atom) & COMPONENT_INTERCEPT_BUMPED) - return + return TRUE . = ..() if(!QDELETED(throwing)) throwing.finalize(hit = TRUE, target = bumped_atom) @@ -1592,6 +1604,10 @@ /atom/movable/proc/has_language(language, flags_to_check) return get_language_holder().has_language(language, flags_to_check) +/// Checks if atom has the language. If spoken is true, only checks if atom can speak the language. +/atom/movable/proc/has_partial_language(language) + return get_language_holder().has_partial_language(language) + /// Checks if atom can speak the language. /atom/movable/proc/can_speak_language(language) return get_language_holder().can_speak_language(language) @@ -1617,6 +1633,10 @@ /atom/movable/proc/get_random_spoken_language() return get_language_holder().get_random_spoken_language() +/// Gets a list of all understood languages, excluding any blocked languages +/atom/movable/proc/get_understood_languages() as /list + return get_language_holder().get_understood_languages() || list() + /// Copies all languages into the supplied atom/language holder. Source should be overridden when you /// do not want the language overwritten by later atom updates or want to avoid blocked languages. /atom/movable/proc/copy_languages(datum/language_holder/from_holder, source_override) @@ -1732,6 +1752,8 @@ VV_DROPDOWN_OPTION(VV_HK_EDIT_PARTICLES, "Edit Particles") VV_DROPDOWN_OPTION(VV_HK_DEADCHAT_PLAYS, "Start/Stop Deadchat Plays") VV_DROPDOWN_OPTION(VV_HK_ADD_FANTASY_AFFIX, "Add Fantasy Affix") + if(SStts.tts_enabled) + VV_DROPDOWN_OPTION(VV_HK_SET_TTS_VOICE, "Modify TTS Voice") /atom/movable/vv_do_topic(list/href_list) . = ..() @@ -1788,6 +1810,14 @@ log_admin("[key_name(usr)] has added deadchat control to [src]") message_admins(span_notice("[key_name(usr)] has added deadchat control to [src]")) + if(href_list[VV_HK_SET_TTS_VOICE]) + var/chosen_voice = tgui_input_list(usr, "Choose a voice to use.", "Choose a voice.", SStts.available_speakers) + if(!chosen_voice) + return + voice = chosen_voice + log_admin("[key_name(usr)] has set [src]'s voice as [chosen_voice].") + message_admins(span_notice("[key_name(usr)] has set [src]'s voice as [chosen_voice].")) + /** * A wrapper for setDir that should only be able to fail by living mobs. * diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index f56633befce7..4e0bdb2873a9 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -455,46 +455,6 @@ Diagnostic HUDs! else set_hud_image_state(DIAG_CAMERA_HUD, "hudcamera") -/*~~~~~~~~~ - Bots! -~~~~~~~~~~*/ -/mob/living/simple_animal/bot/proc/diag_hud_set_bothealth() - set_hud_image_state(DIAG_HUD, "huddiag[RoundDiagBar(health/maxHealth)]") - -/mob/living/simple_animal/bot/proc/diag_hud_set_botstat() //On (With wireless on or off), Off, EMP'ed - if(bot_mode_flags & BOT_MODE_ON) - set_hud_image_state(DIAG_STAT_HUD, "hudstat") - else if(stat) //Generally EMP causes this - set_hud_image_state(DIAG_STAT_HUD, "hudoffline") - else //Bot is off - set_hud_image_state(DIAG_STAT_HUD, "huddead2") - -/mob/living/simple_animal/bot/proc/diag_hud_set_botmode() //Shows a bot's current operation - if(client) //If the bot is player controlled, it will not be following mode logic! - set_hud_image_state(DIAG_BOT_HUD, "hudsentient") - return - - switch(mode) - if(BOT_SUMMON, BOT_RESPONDING) //Responding to PDA or AI summons - set_hud_image_state(DIAG_BOT_HUD, "hudcalled") - if(BOT_CLEANING, BOT_HEALING) //Cleanbot cleaning, repairbot fixing, or Medibot Healing - set_hud_image_state(DIAG_BOT_HUD, "hudworking") - if(BOT_PATROL, BOT_START_PATROL) //Patrol mode - set_hud_image_state(DIAG_BOT_HUD, "hudpatrol") - if(BOT_PREP_ARREST, BOT_ARREST, BOT_HUNT) //STOP RIGHT THERE, CRIMINAL SCUM! - set_hud_image_state(DIAG_BOT_HUD, "hudalert") - if(BOT_MOVING, BOT_DELIVER, BOT_GO_HOME, BOT_NAV) //Moving to target for normal bots, moving to deliver or go home for MULES. - set_hud_image_state(DIAG_BOT_HUD, "hudmove") - else - set_hud_image_state(DIAG_BOT_HUD, "") - -/mob/living/simple_animal/bot/mulebot/proc/diag_hud_set_mulebotcell() - if(QDELETED(cell) || (cell.maxcharge == 0)) - set_hud_image_state(DIAG_BATT_HUD, "hudnobatt") - else - var/chargelvl = (cell.charge/cell.maxcharge) - set_hud_image_state(DIAG_BATT_HUD, "hudbatt[RoundDiagBar(chargelvl)]") - /*~~~~~~~~~~~~ Airlocks! ~~~~~~~~~~~~~*/ @@ -537,6 +497,18 @@ Diagnostic HUDs! var/list/dimensions = get_icon_dimensions(icon) return dimensions[CACHED_HEIGHT_INDEX] +/image/proc/get_cached_width() + if (isnull(icon)) + return 0 + var/list/dimensions = get_icon_dimensions(icon) + return dimensions[CACHED_WIDTH_INDEX] + +/image/proc/get_cached_height() + if (isnull(icon)) + return 0 + var/list/dimensions = get_icon_dimensions(icon) + return dimensions[CACHED_HEIGHT_INDEX] + #undef CACHED_WIDTH_INDEX #undef CACHED_HEIGHT_INDEX @@ -562,12 +534,18 @@ Diagnostic HUDs! ) return max(scale_list) - min(scale_list) +/atom/proc/get_hud_x_offset() + return -(get_cached_width() - ICON_SIZE_X) / 2 + +/atom/proc/get_hud_y_offset() + return get_cached_height() - ICON_SIZE_Y + /atom/proc/adjust_hud_position(image/holder, animate_time = null) if (animate_time) - animate(holder, pixel_w = -(get_cached_width() - ICON_SIZE_X) / 2, pixel_z = get_cached_height() - ICON_SIZE_Y, time = animate_time) + animate(holder, pixel_w = get_hud_x_offset(), pixel_z = get_hud_y_offset(), time = animate_time) return - holder.pixel_w = -(get_cached_width() - ICON_SIZE_X) / 2 - holder.pixel_z = get_cached_height() - ICON_SIZE_Y + holder.pixel_w = get_hud_x_offset() + holder.pixel_z = get_hud_y_offset() /atom/proc/set_hud_image_state(hud_type, hud_state, x_offset = 0, y_offset = 0) if (!hud_list) // Still initializing diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index b4cfe34cf497..a0fcedaa2d42 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -102,6 +102,7 @@ blocks_emissive = EMISSIVE_BLOCK_GENERIC initial_language_holder = /datum/language_holder/speaking_machine armor_type = /datum/armor/obj_machinery + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" ///see code/__DEFINES/stat.dm var/machine_stat = NONE diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 3343bd9416e1..6d5ad0529cf5 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -210,11 +210,10 @@ /obj/machinery/autolathe/ui_data(mob/user) var/list/data = list() - data["materials"] = list() + data["materials"] = materials.ui_data() data["materialtotal"] = materials.total_amount() data["materialsmax"] = materials.max_amount data["active"] = busy - data["materials"] = materials.ui_data() return data @@ -223,6 +222,27 @@ if(.) return + if (action == "eject") + var/datum/material/material = locate(params["ref"]) + if(!istype(material)) + return + + var/amount = params["amount"] + if(isnull(amount)) + return + + amount = text2num(amount) + if(isnull(amount)) + return + + //we use initial(active_power_usage) because higher tier parts will have higher active usage but we have no benefit from it + if(!directly_use_energy(ROUND_UP((amount / MAX_STACK_SIZE) * 0.4 * initial(active_power_usage)))) + say("No power to dispense sheets") + return + + materials.retrieve_stack(amount, material) + return TRUE + //sanity checks to start printing if(action != "make") stack_trace("unknown autolathe ui_act: [action]") @@ -306,7 +326,7 @@ materials_needed[material] += amount_needed //checks for available materials - var/material_cost_coefficient = ispath(design.build_path, /obj/item/stack) ? 1 : creation_efficiency + var/material_cost_coefficient = (ispath(design.build_path, /obj/item/stack) || design.fixed_cost_efficiency) ? 1 : creation_efficiency if(!materials.has_materials(materials_needed, material_cost_coefficient, build_count)) say("Not enough materials to begin production.") return @@ -389,22 +409,22 @@ materials.use_materials(materials_needed, material_cost_coefficient, is_stack ? items_remaining : 1) var/atom/movable/created + var/number_to_make = 1 if(is_stack) var/obj/item/stack/stack_item = initial(design.build_path) var/max_stack_amount = initial(stack_item.max_amount) - var/number_to_make = (initial(stack_item.amount) * items_remaining) + number_to_make = (initial(stack_item.amount) * items_remaining) while(number_to_make > max_stack_amount) created = design.create_result(target, materials_needed, amount = max_stack_amount) if(isitem(created)) created.pixel_x = created.base_pixel_x + rand(-6, 6) created.pixel_y = created.base_pixel_y + rand(-6, 6) number_to_make -= max_stack_amount - created = design.create_result(target, materials_needed, amount = number_to_make) - else - created = design.create_result(target, materials_needed) - if (length(slots_chosen)) - created.set_material_slots(slots_chosen) - split_materials_uniformly(materials_needed, material_cost_coefficient, created) + created = design.create_result(target, materials_needed, amount = number_to_make) + if (length(slots_chosen)) + created.set_material_slots(slots_chosen) + if(design.inherit_materials != DESIGN_DONT_INHERIT_MATS) + design.transfer_materials(materials_needed, material_cost_coefficient, created) if(isitem(created)) created.pixel_x = created.base_pixel_x + rand(-6, 6) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 313ce43fe50d..f7395d4fde7e 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -2,6 +2,7 @@ name = "bank machine" desc = "A machine used to deposit and withdraw station funds." circuit = /obj/item/circuitboard/computer/bankmachine + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/bank_machine") icon_screen = "vault" icon_keyboard = "security_key" req_access = list(ACCESS_VAULT) @@ -43,27 +44,28 @@ synced_bank_account = null return ..() -/obj/machinery/computer/bank_machine/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/computer/bank_machine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) var/value = 0 - if(istype(weapon, /obj/item/stack/spacecash)) - var/obj/item/stack/spacecash/inserted_cash = weapon + if(istype(tool, /obj/item/stack/spacecash)) + var/obj/item/stack/spacecash/inserted_cash = tool value = inserted_cash.value * inserted_cash.amount - else if(istype(weapon, /obj/item/holochip)) - var/obj/item/holochip/inserted_holochip = weapon + else if(istype(tool, /obj/item/holochip)) + var/obj/item/holochip/inserted_holochip = tool value = inserted_holochip.credits - else if(istype(weapon, /obj/item/coin)) - var/obj/item/coin/inserted_coin = weapon + else if(istype(tool, /obj/item/coin)) + var/obj/item/coin/inserted_coin = tool value = inserted_coin.value - else if(istype(weapon, /obj/item/poker_chip)) - var/obj/item/poker_chip/inserted_chip = weapon + else if(istype(tool, /obj/item/poker_chip)) + var/obj/item/poker_chip/inserted_chip = tool value = inserted_chip.get_item_credit_value() - if(value) - if(synced_bank_account) - synced_bank_account.adjust_money(value) - say("[MONEY_NAME_CAPITALIZED] deposited! The [synced_bank_account.account_holder] is now [synced_bank_account.account_balance] [MONEY_SYMBOL].") - qdel(weapon) - return - return ..() + if(!value) + return NONE + if(synced_bank_account) + synced_bank_account.adjust_money(value) + say("[MONEY_NAME_CAPITALIZED] deposited! The [synced_bank_account.account_holder] is now [synced_bank_account.account_balance] [MONEY_SYMBOL].") + qdel(tool) + return ITEM_INTERACT_SUCCESS + /obj/machinery/computer/bank_machine/process(seconds_per_tick) . = ..() diff --git a/code/game/machinery/barsigns.dm b/code/game/machinery/barsigns.dm index 409d0226bc0b..b122355ac700 100644 --- a/code/game/machinery/barsigns.dm +++ b/code/game/machinery/barsigns.dm @@ -152,35 +152,35 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) deconstruct(disassembled = TRUE) return ITEM_INTERACT_SUCCESS -/obj/machinery/barsign/attackby(obj/item/attacking_item, mob/user) +/obj/machinery/barsign/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(istype(attacking_item, /obj/item/blueprints) && !change_area_name) + if(istype(tool, /obj/item/blueprints) && !change_area_name) if(!panel_open) balloon_alert(user, "open the panel first!") - return TRUE + return ITEM_INTERACT_BLOCKING change_area_name = TRUE balloon_alert(user, "sign registered") - return TRUE + return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/stack/cable_coil) && panel_open) - var/obj/item/stack/cable_coil/wire = attacking_item + if(istype(tool, /obj/item/stack/cable_coil) && panel_open) + var/obj/item/stack/cable_coil/wire = tool if(atom_integrity >= max_integrity) balloon_alert(user, "doesn't need repairs!") - return TRUE + return ITEM_INTERACT_BLOCKING if(!wire.use(2)) balloon_alert(user, "need two cables!") - return TRUE + return ITEM_INTERACT_BLOCKING balloon_alert(user, "repaired") atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) update_appearance() - return TRUE + return ITEM_INTERACT_SUCCESS - return ..() + return NONE /obj/machinery/barsign/emp_act(severity) . = ..() diff --git a/code/game/machinery/big_manipulator/big_manipulator.dm b/code/game/machinery/big_manipulator/big_manipulator.dm index 83ab74f9a034..68cb85387f50 100644 --- a/code/game/machinery/big_manipulator/big_manipulator.dm +++ b/code/game/machinery/big_manipulator/big_manipulator.dm @@ -288,6 +288,18 @@ SStgui.update_uis(src) return ITEM_INTERACT_SUCCESS + if(isidcard(tool)) + if(!id_lock) + id_lock = WEAKREF(tool) + balloon_alert(user, "successfully locked") + return ITEM_INTERACT_SUCCESS + if(tool != id_lock.resolve()) + balloon_alert(user, "locked by another id") + return ITEM_INTERACT_BLOCKING + id_lock = null + balloon_alert(user, "successfully unlocked") + return ITEM_INTERACT_SUCCESS + if(!panel_open || !is_wire_tool(tool)) return NONE wires.interact(user) @@ -348,23 +360,6 @@ y_add = 32 + manipulator_arm.calculate_item_offset(FALSE, pixels_to_offset = 16) ) -/obj/machinery/big_manipulator/attackby(obj/item/some_item, mob/user, params) - . = ..() - if(!isidcard(some_item)) - return - - var/obj/item/card/id/clicked_by_this_id = some_item - - if(!id_lock) - id_lock = WEAKREF(clicked_by_this_id) - balloon_alert(user, "successfully locked") - return - var/obj/item/card/id/resolve_id = id_lock.resolve() - if(clicked_by_this_id != resolve_id) - balloon_alert(user, "locked by another id") - return - id_lock = null - balloon_alert(user, "successfully unlocked") /// Attaching the arm effect to the core. /obj/machinery/big_manipulator/proc/create_manipulator_arm() @@ -500,26 +495,26 @@ var/datum/manipulator_task/cargo/dropoff_base/use/t = task td["turf"] = "[t.offset_dx],[t.offset_dy]" td["filters_status"] = t.should_use_filters - td["filtering_mode"] = t.filtering_mode td["item_filters"] = _collect_filter_names(t.atom_filters) td["settings_list"] = _collect_priorities(t.interaction_priorities) td["worker_interaction"] = t.worker_interaction td["use_post_interaction"] = t.use_post_interaction td["worker_use_rmb"] = t.worker_use_rmb td["worker_combat_mode"] = t.worker_combat_mode + td["skip_anchored"] = t.skip_anchored else if(istype(task, /datum/manipulator_task/cargo/interact)) td["task_type"] = TASK_TYPE_INTERACT var/datum/manipulator_task/cargo/interact/t = task td["turf"] = "[t.offset_dx],[t.offset_dy]" td["filters_status"] = t.should_use_filters - td["filtering_mode"] = t.filtering_mode td["item_filters"] = _collect_filter_names(t.atom_filters) td["settings_list"] = _collect_priorities(t.interaction_priorities) td["worker_interaction"] = t.worker_interaction td["use_post_interaction"] = t.use_post_interaction td["worker_use_rmb"] = t.worker_use_rmb td["worker_combat_mode"] = t.worker_combat_mode + td["skip_anchored"] = t.skip_anchored else if(istype(task, /datum/manipulator_task/simple/wait)) td["task_type"] = TASK_TYPE_WAIT @@ -587,7 +582,10 @@ return TRUE if("unbuckle") - unbuckle_all_mobs() + var/mob/living/carbon/human/species/monkey/poor_monkey = monkey_worker?.resolve() + if(poor_monkey) + poor_monkey.drop_all_held_items() + poor_monkey.forceMove(get_turf(src)) monkey_worker = null return TRUE @@ -812,6 +810,8 @@ return TRUE if("cycle_filtering_mode") + if(istype(target_task, /datum/manipulator_task/cargo/dropoff_base/use) || istype(target_task, /datum/manipulator_task/cargo/interact)) + return FALSE if(!istype(target_task, /datum/manipulator_task/cargo)) return FALSE var/datum/manipulator_task/cargo/ct = target_task @@ -897,6 +897,17 @@ return TRUE return FALSE + if("toggle_skip_anchored") + if(istype(target_task, /datum/manipulator_task/cargo/dropoff_base/use)) + var/datum/manipulator_task/cargo/dropoff_base/use/unanchor_target = target_task + unanchor_target.skip_anchored = !unanchor_target.skip_anchored + return TRUE + if(istype(target_task, /datum/manipulator_task/cargo/interact)) + var/datum/manipulator_task/cargo/interact/unanchor_target = target_task + unanchor_target.skip_anchored = !unanchor_target.skip_anchored + return TRUE + return FALSE + /// Cycles the given value in the given list. /obj/machinery/big_manipulator/proc/cycle_value(current_value, list/possible_values) var/current_index = possible_values.Find(current_value) diff --git a/code/game/machinery/big_manipulator/big_manipulator_interactions.dm b/code/game/machinery/big_manipulator/big_manipulator_interactions.dm index 01500efdd5aa..e5f7c361330d 100644 --- a/code/game/machinery/big_manipulator/big_manipulator_interactions.dm +++ b/code/game/machinery/big_manipulator/big_manipulator_interactions.dm @@ -137,14 +137,18 @@ return FALSE var/obj/item/held_item = obj_resolve - var/atom/type_to_use = destination_task.find_type_priority() + var/atom/type_to_use = destination_task.find_type_priority(destination_task.skip_anchored) if(isnull(type_to_use)) - check_for_cycle_end_drop(destination_task, FALSE, work_done_at_point) + drop_held_after_use(destination_task) return FALSE if(isitem(type_to_use) && !destination_task.check_filters_for_atom(type_to_use)) - check_for_cycle_end_drop(destination_task, FALSE, work_done_at_point) + drop_held_after_use(destination_task) + return FALSE + + if(istype(destination_task, /datum/manipulator_task/cargo/interact) && destination_task.should_use_filters && isitem(type_to_use) && !destination_task.check_filters_for_atom(type_to_use)) + drop_held_after_use(destination_task) return FALSE var/original_loc = held_item.loc @@ -153,9 +157,10 @@ if(held_item.GetComponent(/datum/component/two_handed)) held_item.attack_self(monkey_resolve) + var/old_combat_mode = monkey_resolve.combat_mode monkey_resolve.combat_mode = destination_task.worker_combat_mode held_item.melee_attack_chain(monkey_resolve, type_to_use, list(RIGHT_CLICK = destination_task.worker_use_rmb ? TRUE : FALSE)) - monkey_resolve.combat_mode = FALSE + monkey_resolve.combat_mode = old_combat_mode do_attack_animation(destination_turf) manipulator_arm.do_attack_animation(destination_turf) @@ -217,7 +222,7 @@ obj_resolve.dir = get_dir(get_turf(obj_resolve), get_turf(src)) finish_manipulation() else - schedule_next_cycle() + addtimer(CALLBACK(src, PROC_REF(try_use_thing), destination_task, TRUE), BASE_INTERACTION_TIME * 2) /obj/machinery/big_manipulator/proc/throw_thing(datum/manipulator_task/cargo/dropoff_base/throw/throw_task) var/drop_turf = throw_task.interaction_turf @@ -241,21 +246,19 @@ finish_manipulation() return - var/atom/type_to_use = destination_task.find_type_priority() + var/atom/type_to_use = destination_task.find_type_priority(destination_task.skip_anchored) if(isnull(type_to_use)) check_end_of_use_for_use_with_empty_hand(destination_task, FALSE) return - if(isitem(type_to_use)) - var/obj/item/interact_with_item = type_to_use - var/resolve_loc = interact_with_item.loc - monkey_resolve.put_in_active_hand(interact_with_item) - interact_with_item.attack_self(monkey_resolve) - interact_with_item.forceMove(resolve_loc) - else - monkey_resolve.combat_mode = destination_task.worker_combat_mode - monkey_resolve.UnarmedAttack(type_to_use) - monkey_resolve.combat_mode = FALSE + if(destination_task.should_use_filters && isitem(type_to_use) && !destination_task.check_filters_for_atom(type_to_use)) + check_end_of_use_for_use_with_empty_hand(destination_task, FALSE) + return + + var/old_combat_mode = monkey_resolve.combat_mode + monkey_resolve.combat_mode = destination_task.worker_combat_mode + monkey_resolve.UnarmedAttack(type_to_use, modifiers = list(RIGHT_CLICK = destination_task.worker_use_rmb ? TRUE : FALSE)) + monkey_resolve.combat_mode = old_combat_mode var/turf/dest_turf = destination_task.interaction_turf if(dest_turf) @@ -277,6 +280,10 @@ /// Completes the current manipulation action and schedules the next step. /obj/machinery/big_manipulator/proc/finish_manipulation() + if(held_object) + var/obj/resolved = held_object.resolve() + if(resolved && resolved.loc == src) + resolved.forceMove(drop_location()) held_object = null manipulator_arm.update_claw(null) current_task = null diff --git a/code/game/machinery/big_manipulator/manipulator_tasks.dm b/code/game/machinery/big_manipulator/manipulator_tasks.dm index 48a136ff255f..00fe12715770 100644 --- a/code/game/machinery/big_manipulator/manipulator_tasks.dm +++ b/code/game/machinery/big_manipulator/manipulator_tasks.dm @@ -100,7 +100,7 @@ /datum/manipulator_task/cargo/proc/fill_priority_list(manipulator_tier) return list() -/datum/manipulator_task/cargo/proc/find_type_priority() +/datum/manipulator_task/cargo/proc/find_type_priority(skip_anchored = FALSE) var/atom/movable/best_candidate = null var/best_priority_index = INFINITY @@ -117,6 +117,9 @@ if(!istype(thing, prio.atom_typepath)) continue + if(skip_anchored && thing.anchored) + continue + if(isliving(thing)) var/mob/living/living_mob = thing if(living_mob.stat == DEAD) @@ -299,12 +302,16 @@ return FALSE return TRUE -/datum/manipulator_task/cargo/dropoff_base/can_run(obj/machinery/big_manipulator/manipulator) +/datum/manipulator_task/cargo/dropoff_base/use/can_run(obj/machinery/big_manipulator/manipulator) if(!..()) return FALSE var/atom/movable/target = manipulator.held_object?.resolve() if(!target) return FALSE + if(!manipulator.monkey_worker?.resolve()) + return FALSE + if(!find_type_priority(skip_anchored)) + return FALSE return can_accept(target) /datum/manipulator_task/cargo/dropoff_base/run_task(obj/machinery/big_manipulator/manipulator) @@ -409,6 +416,7 @@ var/use_post_interaction = POST_INTERACTION_DROP_AT_POINT var/worker_combat_mode = FALSE var/worker_use_rmb = FALSE + var/skip_anchored = FALSE /datum/manipulator_task/cargo/dropoff_base/use/fill_priority_list(manipulator_tier) var/list/priorities = list( @@ -434,6 +442,7 @@ data["use_post_interaction"] = use_post_interaction data["worker_combat_mode"] = worker_combat_mode data["worker_use_rmb"] = worker_use_rmb + data["skip_anchored"] = skip_anchored return data /datum/manipulator_task/cargo/dropoff_base/use/New(turf/new_turf, manipulator_tier, serialized_data) @@ -443,6 +452,7 @@ use_post_interaction = serialized_data["use_post_interaction"] worker_combat_mode = !!serialized_data["worker_combat_mode"] worker_use_rmb = !!serialized_data["worker_use_rmb"] + skip_anchored = !!serialized_data["skip_anchored"] return /datum/manipulator_task/cargo/dropoff_base/use/do_dropoff(obj/machinery/big_manipulator/manipulator) @@ -456,6 +466,7 @@ var/use_post_interaction = POST_INTERACTION_DROP_AT_POINT var/worker_combat_mode = FALSE var/worker_use_rmb = FALSE + var/skip_anchored = FALSE /datum/manipulator_task/cargo/interact/fill_priority_list(manipulator_tier) var/list/priorities = list( @@ -482,6 +493,7 @@ data["use_post_interaction"] = use_post_interaction data["worker_combat_mode"] = worker_combat_mode data["worker_use_rmb"] = worker_use_rmb + data["skip_anchored"] = skip_anchored return data /datum/manipulator_task/cargo/interact/New(turf/new_turf, manipulator_tier, serialized_data) @@ -491,11 +503,15 @@ use_post_interaction = serialized_data["use_post_interaction"] worker_combat_mode = !!serialized_data["worker_combat_mode"] worker_use_rmb = !!serialized_data["worker_use_rmb"] + skip_anchored = !!serialized_data["skip_anchored"] return /datum/manipulator_task/cargo/interact/proc/try_interact(obj/machinery/big_manipulator/manipulator) var/atom/movable/held = manipulator.held_object?.resolve() if(held) + if(!manipulator.monkey_worker?.resolve()) + manipulator.nothing_ever_happens() + return manipulator.try_use_thing(src) else manipulator.use_thing_with_empty_hand(src) diff --git a/code/game/machinery/big_manipulator/tasking.dm b/code/game/machinery/big_manipulator/tasking.dm index cc91434363e5..65d355c0b23a 100644 --- a/code/game/machinery/big_manipulator/tasking.dm +++ b/code/game/machinery/big_manipulator/tasking.dm @@ -13,6 +13,8 @@ // Moves through the list, skipping tasks that can't run. /datum/tasking_strategy/sequential + /// Separate index for candidate selection to avoid corrupting the task index. + var/candidate_index = 1 /datum/tasking_strategy/sequential/get_next_task(list/tasks, obj/machinery/big_manipulator/manipulator) if(!length(tasks)) @@ -33,16 +35,18 @@ /datum/tasking_strategy/sequential/get_next_candidate(list/candidates) if(!length(candidates)) return null - if(current_index < 1 || current_index > length(candidates)) - current_index = 1 - var/candidate = candidates[current_index] - current_index++ - if(current_index > length(candidates)) - current_index = 1 + if(candidate_index < 1 || candidate_index > length(candidates)) + candidate_index = 1 + var/candidate = candidates[candidate_index] + candidate_index++ + if(candidate_index > length(candidates)) + candidate_index = 1 return candidate // Stays on the current task until it can run. /datum/tasking_strategy/strict + /// Separate index for candidate selection to avoid corrupting the task index. + var/candidate_index = 1 /datum/tasking_strategy/strict/get_next_task(list/tasks, obj/machinery/big_manipulator/manipulator) if(!length(tasks)) @@ -60,10 +64,10 @@ /datum/tasking_strategy/strict/get_next_candidate(list/candidates) if(!length(candidates)) return null - if(current_index < 1 || current_index > length(candidates)) - current_index = 1 - var/candidate = candidates[current_index] - current_index++ - if(current_index > length(candidates)) - current_index = 1 + if(candidate_index < 1 || candidate_index > length(candidates)) + candidate_index = 1 + var/candidate = candidates[candidate_index] + candidate_index++ + if(candidate_index > length(candidates)) + candidate_index = 1 return candidate diff --git a/code/game/machinery/botlaunchpad.dm b/code/game/machinery/botlaunchpad.dm index 857e9278af01..ab949fb43585 100644 --- a/code/game/machinery/botlaunchpad.dm +++ b/code/game/machinery/botlaunchpad.dm @@ -65,12 +65,8 @@ user.balloon_alert(user, "no bots sent from the pad!") return user.balloon_alert(user, "bot sent back to pad") - if(isbasicbot(our_bot)) - var/mob/living/basic/bot/basic_bot = our_bot - basic_bot.summon_bot(src) - return - var/mob/living/simple_animal/bot/simple_bot = our_bot - simple_bot.call_bot(src, get_turf(src)) + var/mob/living/basic/bot/basic_bot = our_bot + basic_bot.summon_bot(src) /obj/structure/closet/supplypod/transport/botpod reverse_option_list = list("Mobs"=TRUE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE,"Mecha"=FALSE) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index c50f81bbb2e8..9025cc6e10ec 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -400,13 +400,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24) /obj/machinery/button/door/setup_device(mapload) if(mapload) - device = normaldoorcontrol ? new /obj/item/assembly/control/airlock(src) : new /obj/item/assembly/control(src) + device = normaldoorcontrol ? new /obj/item/assembly/control/airlock(src) : new /obj/item/assembly/control/blast_door(src) if(istype(device, /obj/item/assembly/control/airlock)) var/obj/item/assembly/control/airlock/airlock_device = device airlock_device.specialfunctions = specialfunctions - else if(istype(device, /obj/item/assembly/control)) - var/obj/item/assembly/control/control_device = device + else if(istype(device, /obj/item/assembly/control/blast_door)) + var/obj/item/assembly/control/blast_door/control_device = device control_device.sync_doors = sync_doors return ..() diff --git a/code/game/machinery/camera/camera_construction.dm b/code/game/machinery/camera/camera_construction.dm index 3b3fec8cd5d0..b067d19ae0ed 100644 --- a/code/game/machinery/camera/camera_construction.dm +++ b/code/game/machinery/camera/camera_construction.dm @@ -71,177 +71,171 @@ return ..() /obj/machinery/camera/wrench_act(mob/user, obj/item/tool) - if(camera_construction_state == CAMERA_STATE_WRENCHED) - tool.play_tool_sound(src) - to_chat(user, span_notice("You detach [src] from its place.")) - deconstruct(TRUE) - return ITEM_INTERACT_SUCCESS - return ..() + if(camera_construction_state != CAMERA_STATE_WRENCHED) + return NONE + tool.play_tool_sound(src) + to_chat(user, span_notice("You detach [src] from its place.")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS /obj/machinery/camera/crowbar_act(mob/living/user, obj/item/tool) - if(camera_construction_state == CAMERA_STATE_FINISHED) - if(!panel_open) - return ITEM_INTERACT_BLOCKING - var/list/droppable_parts = list() - if(xray_module) - droppable_parts += xray_module - if(emp_module) - droppable_parts += emp_module - if(proximity_monitor) - droppable_parts += proximity_monitor - if(!length(droppable_parts)) - return ITEM_INTERACT_BLOCKING - var/obj/item/choice = tgui_input_list(user, "Select a part to remove", "Part Removal", sort_names(droppable_parts)) - if(isnull(choice)) - return ITEM_INTERACT_BLOCKING - if(!user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) - return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("You remove [choice] from [src].")) - if(choice == xray_module) - drop_upgrade(xray_module) - removeXRay() - if(choice == emp_module) - drop_upgrade(emp_module) - removeEmpProof() - if(choice == proximity_monitor) - drop_upgrade(proximity_monitor) - removeMotion() - tool.play_tool_sound(src) - return ITEM_INTERACT_SUCCESS - return ..() + if(camera_construction_state != CAMERA_STATE_FINISHED || !panel_open) + return NONE + var/list/droppable_parts = list() + if(xray_module) + droppable_parts += xray_module + if(emp_module) + droppable_parts += emp_module + if(proximity_monitor) + droppable_parts += proximity_monitor + if(!length(droppable_parts)) + return ITEM_INTERACT_BLOCKING + var/obj/item/choice = tgui_input_list(user, "Select a part to remove", "Part Removal", sort_names(droppable_parts)) + if(isnull(choice)) + return ITEM_INTERACT_BLOCKING + if(!user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You remove [choice] from [src].")) + if(choice == xray_module) + drop_upgrade(xray_module) + removeXRay() + if(choice == emp_module) + drop_upgrade(emp_module) + removeEmpProof() + if(choice == proximity_monitor) + drop_upgrade(proximity_monitor) + removeMotion() + tool.play_tool_sound(src) + return ITEM_INTERACT_SUCCESS /obj/machinery/camera/multitool_act(mob/living/user, obj/item/tool) - if(camera_construction_state == CAMERA_STATE_FINISHED) - if(!panel_open) - return ITEM_INTERACT_BLOCKING - setViewRange((view_range == initial(view_range)) ? short_range : initial(view_range)) - to_chat(user, span_notice("You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus.")) - return ITEM_INTERACT_SUCCESS - return ..() - -/obj/machinery/camera/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(camera_construction_state != CAMERA_STATE_FINISHED || panel_open) - if(attacking_item.tool_behaviour == TOOL_ANALYZER) - if(!isXRay(TRUE)) //don't reveal it was already upgraded if was done via MALF AI Upgrade Camera Network ability - if(!user.temporarilyRemoveItemFromInventory(attacking_item, newloc = src)) - return - upgradeXRay(FALSE, TRUE) - to_chat(user, span_notice("You attach [attacking_item] into [name]'s inner circuits.")) - qdel(attacking_item) + if(camera_construction_state != CAMERA_STATE_FINISHED || !panel_open) + return NONE + setViewRange((view_range == initial(view_range)) ? short_range : initial(view_range)) + to_chat(user, span_notice("You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus.")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/gas_analyzer_act(mob/living/user, obj/item/tool) + if(camera_construction_state == CAMERA_STATE_FINISHED && !panel_open) + return NONE + if(isXRay(TRUE)) + to_chat(user, span_warning("[src] already has that upgrade!")) + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(tool, newloc = src)) + return ITEM_INTERACT_BLOCKING + upgradeXRay(FALSE, TRUE) + to_chat(user, span_notice("You attach [tool] into [src]'s inner circuits.")) + qdel(tool) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/plasma_act(mob/living/user, obj/item/tool) + if(camera_construction_state == CAMERA_STATE_FINISHED && !panel_open) + return NONE + if(isEmpProof(TRUE)) + to_chat(user, span_warning("[src] already has that upgrade!")) + return ITEM_INTERACT_BLOCKING + if(!tool.use_tool(src, user, 0, amount = 1)) + return ITEM_INTERACT_BLOCKING + upgradeEmpProof(FALSE, TRUE) + to_chat(user, span_notice("You attach [tool] into [src]'s inner circuits.")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/prox_act(mob/living/user, obj/item/tool) + if(camera_construction_state == CAMERA_STATE_FINISHED && !panel_open) + return NONE + if(isMotion()) + to_chat(user, span_warning("[src] already has that upgrade!")) + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(tool, newloc = src)) + return ITEM_INTERACT_BLOCKING + upgradeMotion() + to_chat(user, span_notice("You attach [tool] into [src]'s inner circuits.")) + qdel(tool) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/cable_act(mob/living/user, obj/item/tool) + if(camera_construction_state != CAMERA_STATE_WELDED) + return NONE + if(!astype(tool, /obj/item/stack/cable_coil)?.use(2)) + to_chat(user, span_warning("You need two lengths of cable to wire [src]!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You add wires to [src].")) + camera_construction_state = CAMERA_STATE_WIRED + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/computer_act(mob/living/user, obj/item/tool) + if(camera_construction_state != CAMERA_STATE_FINISHED) + return NONE + var/obj/item/modular_computer/computer = tool + var/note_name = sanitize(computer.name) + var/datum/computer_file/program/notepad/notepad_app = locate() in computer.stored_files + if(!notepad_app) + return ITEM_INTERACT_BLOCKING + var/note_text = sanitize(notepad_app.written_note) + if(!note_text) + return ITEM_INTERACT_BLOCKING + display_note(user, note_name, note_text, TRUE) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/paper_act(mob/living/user, obj/item/tool) + if(camera_construction_state != CAMERA_STATE_FINISHED) + return NONE + var/obj/item/paper/paper = tool + last_shown_paper = paper.copy(paper.type, null) + var/note_name = sanitize(last_shown_paper.name) + last_shown_paper.camera_holder = WEAKREF(src) + display_note(user, note_name, null, FALSE) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/camera/proc/display_note(mob/living/user, title, text, is_computer) + to_chat(user, span_notice("You hold up \the [title] up to the camera...")) + user.log_talk(title, LOG_GAME, "Pressed to camera", TRUE) + user.changeNext_move(CLICK_CD_MELEE) + + // Iterate over all living mobs and check if anyone is elibile to view the paper. + // This is backwards, but cameras don't store a list of people that are looking through them, + // and we'll have to iterate this list anyway so we can use it to pull out AIs too. + for(var/mob/potential_viewer as anything in GLOB.player_list) + // All AIs view through cameras, so we need to check them regardless. + if(isAI(potential_viewer)) + var/mob/living/silicon/ai/ai = potential_viewer + if(ai.control_disabled || ai.stat == DEAD) + continue + + ai.log_talk(title, LOG_VICTIM, "Pressed to camera from [key_name(user)]", FALSE) + if(is_computer) + ai.last_tablet_note_seen = "[title][text]" else - to_chat(user, span_warning("[src] already has that upgrade!")) - return - else if(istype(attacking_item, /obj/item/stack/sheet/mineral/plasma)) - if(!isEmpProof(TRUE)) //don't reveal it was already upgraded if was done via MALF AI Upgrade Camera Network ability - if(attacking_item.use_tool(src, user, 0, amount=1)) - upgradeEmpProof(FALSE, TRUE) - to_chat(user, span_notice("You attach [attacking_item] into [name]'s inner circuits.")) + log_paper("[key_name(user)] held [last_shown_paper] up to [src], requesting [key_name(ai)] read it.") + + var/href_string = is_computer ? "show_tablet_note=1" : "show_paper_note=[REF(last_shown_paper)]" + if(user.name == "Unknown") + to_chat(ai, "[span_name("[user]")] holds \a [title] up to one of your cameras...") else - to_chat(user, span_warning("[src] already has that upgrade!")) - return - else if(isprox(attacking_item)) - if(!isMotion()) - if(!user.temporarilyRemoveItemFromInventory(attacking_item, newloc = src)) - return - upgradeMotion() - to_chat(user, span_notice("You attach [attacking_item] into [name]'s inner circuits.")) - qdel(attacking_item) + to_chat(ai, "[span_name("[user]")] holds \a [title] up to one of your cameras...") + + // If it's not an AI, eye if the client's eye is set to the camera. I wonder if this even works anymore with tgui camera apps and stuff? + else if(potential_viewer.client?.eye == src) + potential_viewer.log_talk(title, LOG_VICTIM, "Pressed to camera from [key_name(user)]", FALSE) + if(!is_computer) + log_paper("[key_name(user)] held [last_shown_paper] up to [src], and [key_name(potential_viewer)] may read it.") + to_chat(potential_viewer, "[span_name("[user]")] holds \a [title] up to your camera...") else - to_chat(user, span_warning("[src] already has that upgrade!")) - return - switch(camera_construction_state) - if(CAMERA_STATE_WELDED) - if(istype(attacking_item, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/attacking_cable = attacking_item - if(attacking_cable.use(2)) - to_chat(user, span_notice("You add wires to [src].")) - camera_construction_state = CAMERA_STATE_WIRED - else - to_chat(user, span_warning("You need two lengths of cable to wire a camera!")) - return - if(CAMERA_STATE_FINISHED) - if(istype(attacking_item, /obj/item/modular_computer)) - var/itemname = "" - var/info = "" - - var/obj/item/modular_computer/computer = attacking_item - for(var/datum/computer_file/program/notepad/notepad_app in computer.stored_files) - info = notepad_app.written_note - break - - if(!info) - return - - itemname = computer.name - itemname = sanitize(itemname) - info = sanitize(info) - to_chat(user, span_notice("You hold \the [itemname] up to the camera...")) - user.log_talk(itemname, LOG_GAME, log_globally=TRUE, tag="Pressed to camera") - user.changeNext_move(CLICK_CD_MELEE) - - for(var/mob/potential_viewer as anything in GLOB.player_list) - if(isAI(potential_viewer)) - var/mob/living/silicon/ai/ai = potential_viewer - if(ai.control_disabled || (ai.stat == DEAD)) - continue - - ai.log_talk(itemname, LOG_VICTIM, tag="Pressed to camera from [key_name(user)]", log_globally=FALSE) - ai.last_tablet_note_seen = "[itemname][info]" - - if(user.name == "Unknown") - to_chat(ai, "[span_name(user)] holds \a [itemname] up to one of your cameras ...") - else - to_chat(ai, "[user] holds \a [itemname] up to one of your cameras ...") - continue - - if (potential_viewer.client?.eye == src) - to_chat(potential_viewer, "[span_name("[user]")] holds \a [itemname] up to one of the cameras ...") - potential_viewer.log_talk(itemname, LOG_VICTIM, tag="Pressed to camera from [key_name(user)]", log_globally=FALSE) - potential_viewer << browse("[itemname][info]", "window=[itemname]") - return - - if(istype(attacking_item, /obj/item/paper)) - // Grab the paper, sanitise the name as we're about to just throw it into chat wrapped in HTML tags. - var/obj/item/paper/paper = attacking_item - - // Make a complete copy of the paper, store a ref to it locally on the camera. - last_shown_paper = paper.copy(paper.type, null) - - // Then sanitise the name because we're putting it directly in chat later. - var/item_name = sanitize(last_shown_paper.name) - - // Start the process of holding it up to the camera. - to_chat(user, span_notice("You hold \the [item_name] up to the camera...")) - user.log_talk(item_name, LOG_GAME, log_globally=TRUE, tag="Pressed to camera") - user.changeNext_move(CLICK_CD_MELEE) - - // And make a weakref we can throw around to all potential viewers. - last_shown_paper.camera_holder = WEAKREF(src) - - // Iterate over all living mobs and check if anyone is elibile to view the paper. - // This is backwards, but cameras don't store a list of people that are looking through them, - // and we'll have to iterate this list anyway so we can use it to pull out AIs too. - for(var/mob/potential_viewer in GLOB.player_list) - // All AIs view through cameras, so we need to check them regardless. - if(isAI(potential_viewer)) - var/mob/living/silicon/ai/ai = potential_viewer - if(ai.control_disabled || (ai.stat == DEAD)) - continue - - ai.log_talk(item_name, LOG_VICTIM, tag="Pressed to camera from [key_name(user)]", log_globally=FALSE) - log_paper("[key_name(user)] held [last_shown_paper] up to [src], requesting [key_name(ai)] read it.") - - if(user.name == "Unknown") - to_chat(ai, "[span_name(user.name)] holds \a [item_name] up to one of your cameras ...") - else - to_chat(ai, "[user] holds \a [item_name] up to one of your cameras ...") - continue - - // If it's not an AI, eye if the client's eye is set to the camera. I wonder if this even works anymore with tgui camera apps and stuff? - if (potential_viewer.client?.eye == src) - log_paper("[key_name(user)] held [last_shown_paper] up to [src], and [key_name(potential_viewer)] may read it.") - potential_viewer.log_talk(item_name, LOG_VICTIM, tag="Pressed to camera from [key_name(user)]", log_globally=FALSE) - to_chat(potential_viewer, "[span_name(user)] holds \a [item_name] up to your camera...") - return - - return ..() + potential_viewer << browse("[title][text]", "window=[title]") + +/obj/machinery/camera/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK + if(istype(tool, /obj/item/stack/sheet/mineral/plasma)) + return plasma_act(user, tool) + if(istype(tool, /obj/item/analyzer)) + return gas_analyzer_act(user, tool) + if(isprox(tool)) + return prox_act(user, tool) + if(istype(tool, /obj/item/stack/cable_coil)) + return cable_act(user, tool) + if(istype(tool, /obj/item/modular_computer)) + return computer_act(user, tool) + if(istype(tool, /obj/item/paper)) + return paper_act(user, tool) + return NONE diff --git a/code/game/machinery/camera/trackable.dm b/code/game/machinery/camera/trackable.dm index 7155dc10e8e7..7d8622907b8e 100644 --- a/code/game/machinery/camera/trackable.dm +++ b/code/game/machinery/camera/trackable.dm @@ -72,6 +72,7 @@ return tracked_mob = track if(tracked_mob) + SEND_SIGNAL(src, COMSIG_TRACKABLE_TRACKING_STARTED, tracked_mob) RegisterSignal(tracked_mob, COMSIG_QDELETING, PROC_REF(target_deleted)) RegisterSignal(tracked_mob, COMSIG_MOVABLE_MOVED, PROC_REF(target_moved)) RegisterSignal(tracked_mob, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(glide_size_changed)) diff --git a/code/game/machinery/civilian_bounty/bounty_machinery.dm b/code/game/machinery/civilian_bounty/bounty_machinery.dm index 9ceeeed84aa5..9b06f6feeb2b 100644 --- a/code/game/machinery/civilian_bounty/bounty_machinery.dm +++ b/code/game/machinery/civilian_bounty/bounty_machinery.dm @@ -30,6 +30,7 @@ name = "civilian bounty control terminal" desc = "A console for assigning civilian bounties to inserted ID cards, and for controlling the bounty pad for export." status_report = "Ready for delivery." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/piratepad_control/civilian") icon_screen = "civ_bounty" icon_keyboard = "id_key" warmup_time = 3 SECONDS @@ -41,12 +42,13 @@ ///Cooldown for printing the bounty sheet, and not breaking people's eardrums. COOLDOWN_DECLARE(sheet_printer_cooldown) -/obj/machinery/computer/piratepad_control/civilian/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(isidcard(I)) - if(id_insert(user, I, inserted_scan_id)) - inserted_scan_id = I - return TRUE - return ..() +/obj/machinery/computer/piratepad_control/civilian/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isidcard(tool)) + return NONE + if(!id_insert(user, tool, inserted_scan_id)) + return ITEM_INTERACT_BLOCKING + inserted_scan_id = tool + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I) if(istype(I) && istype(I.buffer,/obj/machinery/piratepad/civilian)) diff --git a/code/game/machinery/civilian_bounty/civilian_bounty_trims.dm b/code/game/machinery/civilian_bounty/civilian_bounty_trims.dm index 6c3c7221de67..685d368dffe2 100644 --- a/code/game/machinery/civilian_bounty/civilian_bounty_trims.dm +++ b/code/game/machinery/civilian_bounty/civilian_bounty_trims.dm @@ -69,7 +69,9 @@ if(prob(50)) return /datum/bounty/reagent/chemical_simple return /datum/bounty/reagent/chemical_complex - if(CIV_JOB_VIRO) + if(CIV_JOB_MED_VIRO) + if(prob(75)) + return pick(subtypesof(/datum/bounty/item/medical)) return pick(subtypesof(/datum/bounty/virus)) if(CIV_JOB_SCI) if(prob(50)) diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 502c664c17db..f141e4c58f68 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -1,12 +1,13 @@ /obj/machinery/computer name = "computer" - icon = 'icons/obj/machines/computer.dmi' + icon = MAP_SWITCH('icons/obj/machines/computer.dmi', 'icons/obj/fluff/map_previews.dmi') icon_state = "computer" density = TRUE max_integrity = 200 integrity_failure = 0.5 armor_type = /datum/armor/machinery_computer interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_REQUIRES_LITERACY + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" // DARKPACK EDIT ADD START - STORYTELER_STATS skill_required_for_use = STAT_COMPUTER // V20 p. 108 says for 1 dot "Student: You can navigate touch-screen and traditional point-and-click GUIs" @@ -26,6 +27,7 @@ var/authenticated = FALSE /// Will projectiles be able to pass over this computer? var/projectiles_pass_chance = 65 + generate_map_preview = TRUE /datum/armor/machinery_computer fire = 40 @@ -35,6 +37,11 @@ . = ..() power_change() +/obj/machinery/computer/post_machine_initialize() + . = ..() + if(SStts.tts_enabled) + voice = SStts.computer_voice + /obj/machinery/computer/mouse_drop_receive(mob/living/dropping, mob/user, params) . = ..() // We add the component only once here & not in Initialize() because there are tons of computers & we don't want to add to their init times diff --git a/code/game/machinery/computer/accounting.dm b/code/game/machinery/computer/accounting.dm index 6ccc1d2c7b31..ff1c047a47ba 100644 --- a/code/game/machinery/computer/accounting.dm +++ b/code/game/machinery/computer/accounting.dm @@ -5,6 +5,7 @@ /obj/machinery/computer/accounting name = "account lookup console" desc = "Used to view crew member accounts and purchases." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/accounting") icon_screen = "accounts" icon_keyboard = "id_key" circuit = /obj/item/circuitboard/computer/accounting diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index dd76cd1efb71..8fb7fbf6dce8 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -3,6 +3,7 @@ desc = "Used with intelliCards containing nonfunctional AIs to restore them to working order." req_access = list(ACCESS_CAPTAIN, ACCESS_ROBOTICS, ACCESS_COMMAND) circuit = /obj/item/circuitboard/computer/aifixer + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/aifixer") icon_keyboard = "tech_key" icon_screen = "ai-fixer" light_color = LIGHT_COLOR_PINK diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index a7add4639c3e..bb881cb1fdef 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/apc_control name = "power flow control console" desc = "Used to remotely control the flow of power to different parts of the station." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/apc_control") icon_screen = "solar" icon_keyboard = "power_key" req_access = list(ACCESS_CE) diff --git a/code/game/machinery/computer/arcade/_arcade.dm b/code/game/machinery/computer/arcade/_arcade.dm index ac2e64adc376..dfcdc63764c2 100644 --- a/code/game/machinery/computer/arcade/_arcade.dm +++ b/code/game/machinery/computer/arcade/_arcade.dm @@ -2,7 +2,7 @@ name = "\proper the arcade cabinet which shouldn't exist" desc = "This arcade cabinet has no games installed, and in fact, should not exist. \ Report the location of this machine to your local diety." - icon_state = "arcade" + icon_state = MAP_SWITCH("arcade", "/obj/machinery/computer/arcade") icon_keyboard = null icon_screen = "invaders" light_color = LIGHT_COLOR_GREEN diff --git a/code/game/machinery/computer/arcade/amputation.dm b/code/game/machinery/computer/arcade/amputation.dm index d425cd5eba50..a1211489a5a7 100644 --- a/code/game/machinery/computer/arcade/amputation.dm +++ b/code/game/machinery/computer/arcade/amputation.dm @@ -2,7 +2,7 @@ name = "Mediborg's Amputation Adventure" desc = "A picture of a blood-soaked medical cyborg flashes on the screen. \ The mediborg has a speech bubble that says, \"Put your hand in the machine if you aren't a coward!\"" - icon_state = "arcade" + icon_state = MAP_SWITCH("arcade", "/obj/machinery/computer/arcade") circuit = /obj/item/circuitboard/computer/arcade/amputation interaction_flags_machine = NONE //borgs can't play, but the illiterate can. diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm index 11ef5e4a8d1d..2de4e165588a 100644 --- a/code/game/machinery/computer/arcade/battle.dm +++ b/code/game/machinery/computer/arcade/battle.dm @@ -40,7 +40,7 @@ /obj/machinery/computer/arcade/battle name = "battle arcade" desc = "Explore vast worlds and conquer." - icon_state = "arcade" + icon_state = MAP_SWITCH("arcade", "/obj/machinery/computer/arcade/battle") icon_screen = "fighters" circuit = /obj/item/circuitboard/computer/arcade/battle diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm index ce26a9b50fbe..c662d6092942 100644 --- a/code/game/machinery/computer/arcade/orion.dm +++ b/code/game/machinery/computer/arcade/orion.dm @@ -3,7 +3,7 @@ /obj/machinery/computer/arcade/orion_trail name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" - icon_state = "arcade" + icon_state = MAP_SWITCH("arcade", "/obj/machinery/computer/arcade") circuit = /obj/item/circuitboard/computer/arcade/orion_trail ///List of all orion events, created on Initialize. @@ -51,10 +51,10 @@ /obj/machinery/computer/arcade/orion_trail/kobayashi name = "Kobayashi Maru control computer" desc = "A test for cadets." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = MAP_SWITCH('icons/obj/machines/particle_accelerator.dmi', 'icons/obj/fluff/map_previews.dmi') + icon_state = MAP_SWITCH("control_boxp", "/obj/machinery/computer/arcade/orion_trail/kobayashi") icon_keyboard = null icon_screen = null - icon_state = "control_boxp" //kobatashi has a smaller list of events, so we copy from the global list and cut whatever isn't here var/list/event_whitelist = list( /datum/orion_event/raiders, diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 9bf72d637d68..583988ef7e6a 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -2,6 +2,7 @@ name = "atmospheric alert console" desc = "Used to monitor the station's air alarms." circuit = /obj/item/circuitboard/computer/atmos_alert + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/atmos_alert") icon_screen = "alert:0" icon_keyboard = "atmos_key" light_color = LIGHT_COLOR_CYAN diff --git a/code/game/machinery/computer/atmos_computers/_atmos_control.dm b/code/game/machinery/computer/atmos_computers/_atmos_control.dm index a785cd50456e..5d50ad44efa4 100644 --- a/code/game/machinery/computer/atmos_computers/_atmos_control.dm +++ b/code/game/machinery/computer/atmos_computers/_atmos_control.dm @@ -2,6 +2,7 @@ /obj/machinery/computer/atmos_control name = "atmospherics monitoring" desc = "Used to monitor the station's atmospherics sensors." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/atmos_control") icon_screen = "tank" icon_keyboard = "atmos_key" circuit = /obj/item/circuitboard/computer/atmos_control diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index f33cff0c7ea0..45849a8e3c3d 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -3,6 +3,7 @@ /obj/machinery/computer/security name = "security camera console" desc = "Used to access the various cameras on the station." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/warrant") icon_screen = "cameras" icon_keyboard = "security_key" circuit = /obj/item/circuitboard/computer/security @@ -190,7 +191,7 @@ /obj/machinery/computer/security/wooden_tv name = "security camera monitor" desc = "An old TV hooked into the station's camera network." - icon_state = "television" + icon_state = MAP_SWITCH("television", "/obj/machinery/computer/security/wooden_tv") icon_keyboard = null icon_screen = "detective_tv" pass_flags = PASSTABLE @@ -198,6 +199,7 @@ /obj/machinery/computer/security/mining name = "outpost camera console" desc = "Used to access the various cameras on the outpost." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/security/mining") icon_screen = "mining" icon_keyboard = "mining_key" network = list(CAMERANET_NETWORK_MINE, CAMERANET_NETWORK_AUXBASE) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 9761f5ec5504..18139f148078 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/camera_advanced name = "advanced camera console" desc = "Used to access the various cameras on the station." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/security") icon_screen = "cameras" icon_keyboard = "security_key" light_color = COLOR_SOFT_RED @@ -82,6 +83,7 @@ networks += "[port.shuttle_id]_[i]" /obj/machinery/computer/camera_advanced/syndie + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/syndie") icon_keyboard = "syndie_key" circuit = /obj/item/circuitboard/computer/advanced_camera diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 8854bda3f81c..eaf1119e6339 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -10,6 +10,7 @@ /obj/machinery/computer/communications name = "communications console" desc = "A console used for high-priority announcements and emergencies." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/communications") icon_screen = "comm" icon_keyboard = "tech_key" req_access = list(ACCESS_COMMAND) @@ -59,6 +60,7 @@ var/last_toggled /obj/machinery/computer/communications/syndicate + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/communications/syndicate") icon_screen = "commsyndie" circuit = /obj/item/circuitboard/computer/communications/syndicate req_access = list(ACCESS_SYNDICATE_LEADER) @@ -110,11 +112,11 @@ return TRUE return authenticated -/obj/machinery/computer/communications/attackby(obj/I, mob/user, list/modifiers, list/attack_modifiers) - if(isidcard(I)) - attack_hand(user) - else - return ..() +/obj/machinery/computer/communications/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isidcard(tool)) + return NONE + attack_hand(user) + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/communications/emag_act(mob/user, obj/item/card/emag/emag_card) if(istype(emag_card, /obj/item/card/emag/battlecruiser)) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index e8f700fd966c..bf77b85e37e8 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -6,6 +6,7 @@ /obj/machinery/computer/crew name = "crew monitoring console" desc = "Used to monitor active health sensors built into most of the crew's uniforms." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/crew") icon_screen = "crew" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/computer/crew @@ -74,6 +75,7 @@ records.set_output(new_table) /obj/machinery/computer/crew/syndie + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/crew/syndie") icon_keyboard = "syndie_key" /obj/machinery/computer/crew/ui_interact(mob/user) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 86cb2acec3de..76d3eab6c4e6 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -74,6 +74,7 @@ /obj/machinery/computer/dna_console name = "DNA Console" desc = "From here you can research mysteries of the DNA!" + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/dna_console") icon_screen = "dna" icon_keyboard = "med_key" density = TRUE @@ -181,53 +182,53 @@ genetic_damage_pulse() return -/obj/machinery/computer/dna_console/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/computer/dna_console/item_interaction(mob/living/user, obj/item/tool, list/modifiers) // Store chromosomes in the console if there's room - if (istype(item, /obj/item/chromosome)) - item.forceMove(src) - stored_chromosomes += item - to_chat(user, span_notice("You insert [item].")) - return + if (istype(tool, /obj/item/chromosome)) + tool.forceMove(src) + stored_chromosomes += tool + to_chat(user, span_notice("You insert [tool].")) + return ITEM_INTERACT_SUCCESS // Insert data disk if console disk slot is empty // Swap data disk if there is one already a disk in the console - if (istype(item, /obj/item/disk/data)) //INSERT SOME DISKETTES + if (istype(tool, /obj/item/disk/data)) //INSERT SOME DISKETTES // Insert disk into DNA Console - if (!user.transferItemToLoc(item,src)) - return + if (!user.transferItemToLoc(tool,src)) + return ITEM_INTERACT_BLOCKING // If insertion was successful and there's already a diskette in the console, eject the old one. if(diskette) eject_disk(user) // Set the new diskette. - diskette = item - to_chat(user, span_notice("You insert [item].")) - return + diskette = tool + to_chat(user, span_notice("You insert [tool].")) + return ITEM_INTERACT_SUCCESS // Recycle non-activator used injectors // Turn activator used injectors (aka research injectors) to chromosomes - if(istype(item, /obj/item/dnainjector/activator)) - var/obj/item/dnainjector/activator/activator = item - if(activator.used) - if(activator.research && activator.filled) - if(prob(60)) - var/c_typepath = generate_chromosome() - var/obj/item/chromosome/CM = new c_typepath (src) - stored_chromosomes += CM - to_chat(user,span_notice("[capitalize(CM.name)] added to storage.")) - else - to_chat(user, span_notice("There was not enough genetic data to extract a viable chromosome.")) - if(activator.crispr_charge) - crispr_charges++ - to_chat(user, span_notice("CRISPR charge added.")) - qdel(item) - to_chat(user,span_notice("Recycled [item].")) - return - else + if(istype(tool, /obj/item/dnainjector/activator)) + var/obj/item/dnainjector/activator/activator = tool + if(!activator.used) //recycle unused activators - qdel(item) - to_chat(user, span_notice("Recycled unused [item].")) - return - return ..() + qdel(tool) + to_chat(user, span_notice("Recycled unused [tool].")) + return ITEM_INTERACT_SUCCESS + if(activator.research && activator.filled) + if(prob(60)) + var/c_typepath = generate_chromosome() + var/obj/item/chromosome/CM = new c_typepath (src) + stored_chromosomes += CM + to_chat(user,span_notice("[capitalize(CM.name)] added to storage.")) + else + to_chat(user, span_notice("There was not enough genetic data to extract a viable chromosome.")) + if(activator.crispr_charge) + crispr_charges++ + to_chat(user, span_notice("CRISPR charge added.")) + qdel(tool) + to_chat(user,span_notice("Recycled [tool].")) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/machinery/computer/dna_console/multitool_act(mob/living/user, obj/item/multitool/tool) if(!QDELETED(tool.buffer) && istype(tool.buffer, /datum/techweb)) @@ -405,6 +406,17 @@ data["storage"]["injector"] = tgui_advinjector_mutations data["maxAdvInjectors"] = max_injector_selections + data["heldScannerBuffer"] = null + for(var/obj/item/sequence_scanner/scanner in user.held_items) //We got one or more scanners in our hands, lets get the data from them. + if(!LAZYLEN(scanner.buffer)) + continue + var/list/scanner_data = list() + for(var/mutation_type in scanner.buffer) + var/datum/mutation/mutation = GET_INITIALIZED_MUTATION(mutation_type) + if(mutation) + scanner_data[mutation.alias] = scanner.buffer[mutation_type] + data["heldScannerBuffer"] = scanner_data + return data /obj/machinery/computer/dna_console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index dcbd6499ec7f..d63640778596 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/launchpad name = "launchpad control console" desc = "Used to teleport objects to and from a launchpad." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/launchpad") icon_screen = "teleport" icon_keyboard = "teleport_key" circuit = /obj/item/circuitboard/computer/launchpad_console diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index c854dc746ca6..641107812079 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -2,20 +2,82 @@ /obj/machinery/computer/upload var/mob/living/silicon/current = null //The target of future law uploads + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/upload") icon_screen = "command" time_to_unscrew = 6 SECONDS + var/locked = FALSE + var/lock_timer /obj/machinery/computer/upload/Initialize(mapload) . = ..() + if(!mapload) log_silicon("\A [name] was created at [loc_name(src)].") message_admins("\A [name] was created at [ADMIN_VERBOSEJMP(src)].") + if(isnull(circuit) || circuit.obj_flags & EMAGGED) + return + + set_locked(TRUE) + + +/obj/machinery/computer/upload/emag_act(mob/user, obj/item/card/emag/emag_card) + if(circuit.obj_flags & EMAGGED) + return FALSE + circuit.obj_flags |= EMAGGED + set_locked(FALSE, user) + circuit.req_access = null + circuit.req_one_access = null + + if(user) + balloon_alert(user, "access restrictions removed!") + return TRUE + +/obj/machinery/computer/upload/proc/should_have_lock() + if(isnull(circuit)) + return FALSE + return length(circuit.req_access) || length(circuit.req_one_access) + +/obj/machinery/computer/upload/proc/set_locked(locked_state = TRUE, mob/user) + if(locked == locked_state) + return + if(!should_have_lock()) + return + locked = !!locked_state + icon_screen = locked ? "command_locked" : "command" + update_appearance(UPDATE_OVERLAYS) + if(user) + balloon_alert(user, locked ? "console locked!" : "console unlocked!") + /obj/machinery/computer/upload/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) + if(istype(O, /obj/item/card/id) && should_have_lock()) + if(machine_stat & (NOPOWER|BROKEN|MAINT)) + return + if(circuit.obj_flags & EMAGGED) + balloon_alert(user, "access locks fried!") + return + if(!circuit.check_access(O)) + balloon_alert(user, "access denied!") + return + + set_locked(!locked, user) + if(lock_timer) + deltimer(lock_timer) + lock_timer = null + if(!locked) + lock_timer = addtimer(CALLBACK(src, PROC_REF(set_locked), TRUE), 5 MINUTES, TIMER_UNIQUE | TIMER_STOPPABLE) + + update_appearance(UPDATE_OVERLAYS) + return TRUE + if(istype(O, /obj/item/ai_module)) - var/obj/item/ai_module/M = O + var/obj/item/ai_module/module = O if(machine_stat & (NOPOWER|BROKEN|MAINT)) return + if(locked && !module.bypass_access_check) + to_chat(user, span_alert("Console is locked! Swipe an ID card with proper access on the console to unlock it!")) + balloon_alert(user, "console locked!") + return if(!current) to_chat(user, span_alert("You haven't selected anything to transmit laws to!")) return @@ -27,7 +89,7 @@ to_chat(user, span_alert("Upload failed! Unable to establish a connection to [current.name]. You're too far away!")) current = null return - M.install(current.laws, user) + module.install(current.laws, user) imprint_gps("Weak Upload Signal") else return ..() @@ -38,6 +100,7 @@ return TRUE /obj/machinery/computer/upload/ai + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/upload/ai") // i mean it starts locked by default name = "\improper AI upload console" desc = "Used to upload laws to the AI." circuit = /obj/item/circuitboard/computer/aiupload @@ -47,6 +110,8 @@ if(mapload && HAS_TRAIT(SSstation, STATION_TRAIT_HUMAN_AI)) return INITIALIZE_HINT_QDEL + return . + /obj/machinery/computer/upload/ai/interact(mob/user) current = select_active_ai(user, z, TRUE) @@ -82,3 +147,10 @@ if(B.scrambledcodes || B.emagged) return FALSE return ..() + + +/obj/machinery/computer/upload/ai/no_lock + circuit = /obj/item/circuitboard/computer/aiupload/no_lock + +/obj/machinery/computer/upload/borg/no_lock + circuit = /obj/item/circuitboard/computer/borgupload/no_lock diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm index ee3451bb12b3..1403b4fad02b 100644 --- a/code/game/machinery/computer/mechlaunchpad.dm +++ b/code/game/machinery/computer/mechlaunchpad.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/mechpad name = "orbital mech pad console" desc = "A computer designed to handle the calculations and routing required for sending and receiving mechs from orbit. Requires a link to a nearby Orbital Mech Pad to function." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/mechpad") icon_screen = "mechpad" icon_keyboard = "teleport_key" circuit = /obj/item/circuitboard/computer/mechpad diff --git a/code/game/machinery/computer/modular_shield.dm b/code/game/machinery/computer/modular_shield.dm index dd80553bf391..1f9dd39ec54f 100644 --- a/code/game/machinery/computer/modular_shield.dm +++ b/code/game/machinery/computer/modular_shield.dm @@ -2,7 +2,7 @@ name = "modular shield control console" desc = "Used to remotely monitor and toggle modular shield generators." circuit = /obj/item/circuitboard/computer/modular_shield_console - + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/piratepad_control") ///the list of generators that are linked to us var/list/obj/machinery/modular_shield_generator/generators = list() diff --git a/code/game/machinery/computer/operating_computer.dm b/code/game/machinery/computer/operating_computer.dm index f401789252bc..328bbb104ee4 100644 --- a/code/game/machinery/computer/operating_computer.dm +++ b/code/game/machinery/computer/operating_computer.dm @@ -4,6 +4,7 @@ /obj/machinery/computer/operating name = "operating computer" desc = "Monitors patient vitals and displays surgery steps. Can be loaded with surgery disks to perform experimental procedures. Automatically syncs to operating tables within its line of sight for surgical tech advancement." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/crew") icon_screen = "crew" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/computer/operating diff --git a/code/game/machinery/computer/orders/order_computer/mining_order.dm b/code/game/machinery/computer/orders/order_computer/mining_order.dm index f6df92dd4442..074386b1f4be 100644 --- a/code/game/machinery/computer/orders/order_computer/mining_order.dm +++ b/code/game/machinery/computer/orders/order_computer/mining_order.dm @@ -16,6 +16,7 @@ 35% cheaper than express delivery."} express_tooltip = @{"Sends your purchases instantly."} credit_type = MONEY_MINING_SYMBOL + generate_map_preview = FALSE order_categories = list( CATEGORY_MINING, @@ -103,17 +104,17 @@ . = ..() . += span_notice("There's [points] point\s on the card.") -/obj/item/card/mining_point_card/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(!isidcard(attacking_item)) - return ..() - var/obj/item/card/id/attacking_id = attacking_item +/obj/item/card/mining_point_card/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isidcard(tool)) + return NONE + var/obj/item/card/id/attacking_id = tool balloon_alert(user, "starting transfer") var/point_movement = tgui_alert(user, "To ID (from card) or to card (from ID)?", "Mining Points Transfer", list(TO_USER_ID, TO_POINT_CARD)) if(!point_movement) - return + return ITEM_INTERACT_BLOCKING var/amount = tgui_input_number(user, "How much do you want to transfer? ID Balance: [attacking_id.registered_account.mining_points], Card Balance: [points]", "Transfer Points", min_value = 0, round_value = 1) if(!amount) - return + return ITEM_INTERACT_BLOCKING switch(point_movement) if(TO_USER_ID) if(amount > points) @@ -121,12 +122,15 @@ attacking_id.registered_account.mining_points += amount points -= amount to_chat(user, span_notice("You transfer [amount] mining points from [src] to [attacking_id].")) + return ITEM_INTERACT_SUCCESS if(TO_POINT_CARD) if(amount > attacking_id.registered_account.mining_points) amount = attacking_id.registered_account.mining_points attacking_id.registered_account.mining_points -= amount points += amount to_chat(user, span_notice("You transfer [amount] mining points from [attacking_id] to [src].")) + return ITEM_INTERACT_SUCCESS + return NONE #undef TO_POINT_CARD #undef TO_USER_ID diff --git a/code/game/machinery/computer/orders/order_computer/order_computer.dm b/code/game/machinery/computer/orders/order_computer/order_computer.dm index d89dd05c4349..ab8b32bb6121 100644 --- a/code/game/machinery/computer/orders/order_computer/order_computer.dm +++ b/code/game/machinery/computer/orders/order_computer/order_computer.dm @@ -4,6 +4,7 @@ GLOBAL_LIST_EMPTY(order_console_products) /obj/machinery/computer/order_console name = "Orders Console" desc = "An interface for ordering specific ingredients from Cargo, with an express option at the cost of more money." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/order_console") icon_screen = "request" icon_keyboard = "generic_key" light_color = LIGHT_COLOR_ORANGE diff --git a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm index 5eff7055b9fa..92cdeb84dc8b 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm @@ -11,7 +11,7 @@ /datum/orderable_item/veggies/carrot name = "Carrot" - purchase_path = /obj/item/food/grown/carrot + purchase_path = /obj/item/food/grown/carrotlike/carrot /datum/orderable_item/veggies/eggplant name = "Eggplant" @@ -40,7 +40,7 @@ /datum/orderable_item/veggies/watermelon name = "Watermelon" - purchase_path = /obj/item/food/grown/watermelon + purchase_path = /obj/item/food/grown/melonlike/watermelon /datum/orderable_item/veggies/corn name = "Corn" @@ -113,7 +113,7 @@ /datum/orderable_item/veggies/parsnip name = "Parsnip" - purchase_path = /obj/item/food/grown/parsnip + purchase_path = /obj/item/food/grown/carrotlike/parsnip /datum/orderable_item/veggies/redbeet name = "Red Beet" diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 798f20c21a8f..11280255ca27 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -133,14 +133,14 @@ /obj/machinery/computer/pod/old name = "\improper DoorMex control console" - icon_state = "oldcomp" + icon_state = MAP_SWITCH("oldcomp", "/obj/machinery/computer/pod/old") icon_screen = "library" icon_keyboard = null /obj/machinery/computer/pod/old/mass_driver_controller name = "\improper Mass Driver Controller" - icon = 'icons/obj/machines/wallmounts.dmi' - icon_state = "airlock_control_standby" + icon = MAP_SWITCH('icons/obj/machines/wallmounts.dmi', 'icons/obj/fluff/map_previews.dmi') + icon_state = MAP_SWITCH("airlock_control_standby", "/obj/machinery/computer/pod/old/mass_driver_controller") icon_screen = null density = FALSE diff --git a/code/game/machinery/computer/prisoner/_prisoner.dm b/code/game/machinery/computer/prisoner/_prisoner.dm index 6ad43ab5b051..c2d0de757258 100644 --- a/code/game/machinery/computer/prisoner/_prisoner.dm +++ b/code/game/machinery/computer/prisoner/_prisoner.dm @@ -1,4 +1,5 @@ /obj/machinery/computer/prisoner + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/prisoner/gulag_teleporter_computer") interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_REQUIRES_LITERACY /// ID card currently inserted into the computer. VAR_FINAL/obj/item/card/id/advanced/prisoner/contained_id @@ -50,9 +51,8 @@ balloon_alert_to_viewers("id ejected") playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE) -/obj/machinery/computer/prisoner/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/card/id/advanced/prisoner)) - id_insert(user, weapon) - return TRUE - - return ..() +/obj/machinery/computer/prisoner/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/card/id/advanced/prisoner)) + return NONE + id_insert(user, tool) + return ITEM_INTERACT_SUCCESS diff --git a/code/game/machinery/computer/records/medical.dm b/code/game/machinery/computer/records/medical.dm index 3511a75f706b..da0576fe2fbb 100644 --- a/code/game/machinery/computer/records/medical.dm +++ b/code/game/machinery/computer/records/medical.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/records/medical name = "medical records console" desc = "This can be used to check medical records." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/records/medical") icon_screen = "medcomp" icon_keyboard = "med_key" req_one_access = list(ACCESS_MEDICAL, ACCESS_DETECTIVE, ACCESS_GENETICS) @@ -8,13 +9,14 @@ light_color = LIGHT_COLOR_BLUE /obj/machinery/computer/records/medical/syndie + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/records/medical/syndie") icon_keyboard = "syndie_key" req_one_access = list(ACCESS_SYNDICATE) /obj/machinery/computer/records/medical/laptop name = "medical laptop" desc = "A cheap Nanotrasen medical laptop, it functions as a medical records computer. It's bolted to the table." - icon_state = "laptop" + icon_state = MAP_SWITCH("laptop", "/obj/machinery/computer/records/medical/laptop") icon_screen = "medlaptop" icon_keyboard = "laptop_key" pass_flags = PASSTABLE diff --git a/code/game/machinery/computer/records/security.dm b/code/game/machinery/computer/records/security.dm index a438acb40f55..881ff4afdafd 100644 --- a/code/game/machinery/computer/records/security.dm +++ b/code/game/machinery/computer/records/security.dm @@ -8,6 +8,7 @@ /obj/machinery/computer/records/security name = "security records console" desc = "Used to view and edit personnel's security records." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/warrant") icon_screen = "security" icon_keyboard = "security_key" req_one_access = list(ACCESS_SECURITY, ACCESS_HOP) @@ -17,13 +18,14 @@ var/printing = FALSE /obj/machinery/computer/records/security/syndie + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/records/security/syndie") icon_keyboard = "syndie_key" req_one_access = list(ACCESS_SYNDICATE) /obj/machinery/computer/records/security/laptop name = "security laptop" desc = "A cheap Nanotrasen security laptop, it functions as a security records console. It's bolted to the table." - icon_state = "laptop" + icon_state = MAP_SWITCH("laptop", "/obj/machinery/computer/records/security/laptop") icon_screen = "seclaptop" icon_keyboard = "laptop_key" pass_flags = PASSTABLE diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 0111a5c71b2e..9dd079048872 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/robotics name = "robotics control console" desc = "Used to remotely lockdown linked Cyborgs and Drones." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/robotics") icon_screen = "robot" icon_keyboard = "rd_key" req_access = list(ACCESS_ROBOTICS) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index f102f185ffcf..347ae65020ee 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/station_alert name = "station alert console" desc = "Used to access the station's automated alert system." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/atmos_alert") icon_screen = "alert:0" icon_keyboard = "atmos_key" circuit = /obj/item/circuitboard/computer/station_alert diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index b17589bb4bac..0e3acf6df26a 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -4,6 +4,7 @@ /obj/machinery/computer/teleporter name = "teleporter control console" desc = "Used to control a linked teleportation Hub and Station." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/launchpad") icon_screen = "teleport" icon_keyboard = "teleport_key" light_color = LIGHT_COLOR_BLUE diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm index 95bfe0e7b644..83a821fe2229 100644 --- a/code/game/machinery/computer/telescreen.dm +++ b/code/game/machinery/computer/telescreen.dm @@ -13,6 +13,7 @@ /// The kind of wallframe that this telescreen drops var/frame_type = /obj/item/wallframe/telescreen projectiles_pass_chance = 100 + generate_map_preview = FALSE /obj/machinery/computer/security/telescreen/Initialize(mapload) . = ..() @@ -26,6 +27,7 @@ icon_state = "telescreen" result_path = /obj/machinery/computer/security/telescreen pixel_shift = 32 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/machinery/computer/security/telescreen/on_deconstruction(disassembled) new frame_type(loc) diff --git a/code/game/machinery/computer/terminal.dm b/code/game/machinery/computer/terminal.dm index fc618703f985..9423a554874b 100644 --- a/code/game/machinery/computer/terminal.dm +++ b/code/game/machinery/computer/terminal.dm @@ -2,6 +2,7 @@ /obj/machinery/computer/terminal name = "terminal" desc = "A relatively low-tech solution for internal computing, internal network mail, and logging. This model appears to be quite old." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/piratepad_control") circuit = /obj/item/circuitboard/computer/terminal //Deconstruction still wipes contents but this is easier than smashing the console ///Text that displays on top of the actual 'lore' funnies. var/upperinfo = "COPYRIGHT 2487 NANOSOFT-TM - DO NOT REDISTRIBUTE" diff --git a/code/game/machinery/computer/warrant.dm b/code/game/machinery/computer/warrant.dm index dd85df26060a..af8b0e0d04ed 100644 --- a/code/game/machinery/computer/warrant.dm +++ b/code/game/machinery/computer/warrant.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/warrant name = "security warrant console" desc = "Used to view outstanding warrants." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/warrant") icon_screen = "security" icon_keyboard = "security_key" circuit = /obj/item/circuitboard/computer/warrant diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index a84c91ad0c89..ba31d4db98f3 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -85,18 +85,18 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) return user.put_in_hands(defib.paddles) -/obj/machinery/defibrillator_mount/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/defibrillator)) +/obj/machinery/defibrillator_mount/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/defibrillator)) if(defib) to_chat(user, span_warning("There's already a defibrillator in [src]!")) - return - var/obj/item/defibrillator/new_defib = item + return ITEM_INTERACT_BLOCKING + var/obj/item/defibrillator/new_defib = tool if(!new_defib.get_cell()) to_chat(user, span_warning("Only defibrilators containing a cell can be hooked up to [src]!")) - return + return ITEM_INTERACT_BLOCKING if(HAS_TRAIT(new_defib, TRAIT_NODROP) || !user.transferItemToLoc(new_defib, src)) to_chat(user, span_warning("[new_defib] is stuck to your hand!")) - return + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] hooks up [new_defib] to [src]!"), \ span_notice("You press [new_defib] into the mount, and it clicks into place.")) playsound(src, 'sound/machines/click.ogg', 50, TRUE) @@ -104,20 +104,27 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) defib = new_defib begin_processing() update_appearance() - return - else if(defib && item == defib.paddles) + return ITEM_INTERACT_SUCCESS + + if(defib && tool == defib.paddles) defib.paddles.snap_back() - return + return ITEM_INTERACT_SUCCESS + + if(!tool.GetID()) + return NONE - if(!item.GetID() || (!allowed(user) && SSsecurity_level.get_current_level_as_number() < SEC_LEVEL_RED)) //anyone can toggle the clamps in red alert! + if((!allowed(user) && SSsecurity_level.get_current_level_as_number() < SEC_LEVEL_RED)) //anyone can toggle the clamps in red alert! to_chat(user, span_warning("Insufficient access.")) - return + return ITEM_INTERACT_BLOCKING + if(!defib) to_chat(user, span_warning("You can't engage the clamps on a defibrillator that isn't there.")) - return + return ITEM_INTERACT_BLOCKING + clamps_locked = !clamps_locked to_chat(user, span_notice("Clamps [clamps_locked ? "" : "dis"]engaged.")) update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/defibrillator_mount/multitool_act(mob/living/user, obj/item/multitool) ..() @@ -209,7 +216,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) desc = "A frame for a defibrillator mount. Once placed, it can be removed with a wrench." icon = 'icons/obj/machines/defib_mount.dmi' icon_state = "defibrillator_mount" - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) w_class = WEIGHT_CLASS_BULKY result_path = /obj/machinery/defibrillator_mount pixel_shift = 28 @@ -218,7 +225,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) name = "unhooked PENLITE defibrillator mount" desc = "A frame for a PENLITE defibrillator mount. Unlike the normal mount, it can passively recharge the unit inside." icon_state = "penlite_mount" - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) result_path = /obj/machinery/defibrillator_mount/charging //mobile defib diff --git a/code/game/machinery/dna_infuser/dna_infuser.dm b/code/game/machinery/dna_infuser/dna_infuser.dm index 50fe6869ca9d..e972b32b63e3 100644 --- a/code/game/machinery/dna_infuser/dna_infuser.dm +++ b/code/game/machinery/dna_infuser/dna_infuser.dm @@ -172,7 +172,7 @@ return NONE // if the machine already has a infusion target, or the target is not valid then no adding. if(!is_valid_infusion(tool, user)) - return ITEM_INTERACT_BLOCKING + return ..() //research scanning is so back if(!user.transferItemToLoc(tool, src)) to_chat(user, span_warning("[tool] is stuck to your hand!")) return ITEM_INTERACT_BLOCKING diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm index 2bde7c4d0a8a..2cd9555676c2 100644 --- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm @@ -11,7 +11,7 @@ bonus_deactivate_text = span_notice("Your DNA is once again mostly yours, and so fades your ability to space-swim...") bonus_traits = list(TRAIT_SPACEWALK) bonus_biotype = MOB_AQUATIC - limb_overlay = /datum/bodypart_overlay/texture/carpskin + limb_texture = /datum/bodypart_texture/carpskin color_overlay_priority = LIMB_COLOR_CARP_INFUSION ///Carp lungs! You can breathe in space! Oh... you can't breathe on the station, you need low oxygen environments. @@ -120,6 +120,7 @@ greyscale_colors = CARP_COLORS can_smoothen_out = FALSE shade_color = "blue" + organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_FERAL_BITER) ///Timer counting down. When finished, the owner gets a bad moodlet. var/cooldown_timer diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm index c92f46b37ada..984dfd4a8273 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm @@ -26,7 +26,7 @@ TRAIT_WATER_ADAPTATION, ) bonus_biotype = MOB_AQUATIC - limb_overlay = /datum/bodypart_overlay/texture/fishscale + limb_texture = /datum/bodypart_texture/fishscale /// Are we at all five organs? var/color_active = FALSE @@ -301,15 +301,6 @@ else //otherwise get one from a set of faded out blue and some greys colors. return pick("#B4B8DD", "#85C7D0", "#67BBEE", "#2F4450", "#55CCBB", "#999FD0", "#345066", "#585B69", "#7381A0", "#B6DDE5", "#4E4E50") -/datum/bodypart_overlay/mutant/tail/fish/get_image(image_layer, obj/item/bodypart/limb) - var/mutable_appearance/appearance = ..() - // We add all appearances the parent bodypart has to the tail to inherit scales and fancy effects - // but most other organs don't want to inherit those so we do it here and not on parent - for (var/datum/bodypart_overlay/texture/texture in limb.bodypart_overlays) - if(texture.can_draw_on_bodypart(limb, limb.owner, limb.is_husked)) - texture.modify_bodypart_appearance(appearance) - return appearance - ///Lungs that replace the need of oxygen with water vapor or being wet /obj/item/organ/lungs/fish name = "mutated gills" @@ -333,7 +324,6 @@ /obj/item/organ/lungs/fish/Initialize(mapload) . = ..() add_gas_reaction(/datum/gas/water_vapor, always = PROC_REF(breathe_water)) - respiration_type |= RESPIRATION_OXYGEN //after all, we get oxygen from water AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish) if(has_gills) gills = new() @@ -379,7 +369,7 @@ /// Called when there isn't enough water to breath /obj/item/organ/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) breather.throw_alert(ALERT_NOT_ENOUGH_WATER, /atom/movable/screen/alert/not_enough_water) - var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.gases[/datum/gas/water_vapor][MOLES]) + var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.moles[/datum/gas/water_vapor]) if(water_pp) breathe_gas_volume(breath, /datum/gas/water_vapor, /datum/gas/carbon_dioxide, volume = gas_breathed) @@ -387,14 +377,14 @@ /datum/bodypart_overlay/simple/gills icon = 'icons/mob/human/fish_features.dmi' icon_state = "gills" - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) draw_on_husks = HUSK_OVERLAY_GRAYSCALE -/datum/bodypart_overlay/simple/gills/get_image(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/gills/get_image(obj/item/bodypart/limb, layer_index, layer_real) return image( icon = icon, - icon_state = "[icon_state]_[mutant_bodyparts_layertext(image_layer)]", - layer = image_layer, + icon_state = "[icon_state]_[layer_index]", + layer = layer_real, ) /// Subtype of gills that allow the mob to optionally breathe water. diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm index 125f92375fc7..cb3c8361b371 100644 --- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm @@ -142,14 +142,18 @@ // Simple overlay so we can add a roach shell to guys with roach hearts /datum/bodypart_overlay/simple/roach_shell icon_state = "roach_shell" - layers = EXTERNAL_FRONT|EXTERNAL_BEHIND + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER, + ) draw_on_husks = HUSK_OVERLAY_GRAYSCALE + offset_location = ENTIRE_BODY -/datum/bodypart_overlay/simple/roach_shell/get_image(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/simple/roach_shell/get_image(obj/item/bodypart/limb, layer_index, layer_real) return image( icon = icon, - icon_state = "[icon_state]_[mutant_bodyparts_layertext(image_layer)]", - layer = image_layer, + icon_state = "[icon_state]_[layer_index]", + layer = layer_real, ) /// Roach stomach: diff --git a/code/game/machinery/dna_infuser/organ_sets/stoat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/stoat_organs.dm index 90c5c2c1f4f5..e9316d4270d0 100644 --- a/code/game/machinery/dna_infuser/organ_sets/stoat_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/stoat_organs.dm @@ -125,29 +125,13 @@ greyscale_colors = STOAT_COLORS beat_noise = "a fast-paced high-pitched pit-pat" maxHealth = parent_type::maxHealth * 0.8 // weaker heart - /// Tracks height of the mob on add - var/mob_base_height = HUMAN_HEIGHT_MEDIUM + organ_traits = list(TRAIT_TOO_TALL) //noodly boy /obj/item/organ/heart/stoat/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/stoat) AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/heart/stoat/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) - . = ..() - if(!ishuman(organ_owner)) - return - var/mob/living/carbon/human/human_owner = organ_owner - mob_base_height = human_owner.get_base_mob_height() - human_owner.set_mob_height(HUMAN_HEIGHT_TALLEST, update_dna = FALSE) - -/obj/item/organ/heart/stoat/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) - . = ..() - if(!ishuman(organ_owner)) - return - var/mob/living/carbon/human/human_owner = organ_owner - human_owner.set_mob_height(mob_base_height, update_dna = FALSE) - /obj/item/organ/tongue/stoat name = "mutated stoat-tongue" desc = "Stoat DNA infused into what was once a normal tongue." diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 9dff3a3a1e0b..769f357740c6 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -155,6 +155,7 @@ /obj/item/disk/data name = "\improper DNA data disk" icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk. + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.5) var/list/genetic_makeup_buffer = list() var/list/mutations = list() var/max_mutations = 10 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3ff1662d99bb..e7ea2f192b6b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -940,18 +940,17 @@ /obj/machinery/door/airlock/wirecutter_act(mob/living/user, obj/item/tool) if(panel_open && security_level == AIRLOCK_SECURITY_PLASTEEL) - . = ITEM_INTERACT_SUCCESS // everything after this shouldn't result in attackby if(hasPower() && shock(user, 60)) // Protective grille of wiring is electrified - return . + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You start cutting through the outer grille.")) if(!tool.use_tool(src, user, 10, volume=100)) - return . + return ITEM_INTERACT_BLOCKING if(!panel_open) // double check it wasn't closed while we were trying to snip - return . + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] cut through [src]'s outer grille."), span_notice("You cut through [src]'s outer grille.")) security_level = AIRLOCK_SECURITY_PLASTEEL_O - return . + return ITEM_INTERACT_SUCCESS if(note) if(IsReachableBy(user)) user.visible_message(span_notice("[user] cuts down [note] from [src]."), span_notice("You remove [note] from [src].")) @@ -1073,85 +1072,98 @@ return ITEM_INTERACT_SUCCESS /obj/machinery/door/airlock/proc/try_reinforce(mob/user, obj/item/stack/sheet/material, amt_required, new_security_level) + if(!HAS_SILICON_ACCESS(user) && isElectrified() && shock(user, 75)) + return ITEM_INTERACT_BLOCKING if(material.get_amount() < amt_required) to_chat(user, span_warning("You need at least [amt_required] sheets of [material] to reinforce [src].")) - return FALSE + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You start reinforcing [src].")) if(!do_after(user, 2 SECONDS, src)) - return FALSE + return ITEM_INTERACT_BLOCKING if(!panel_open || !material.use(amt_required)) - return FALSE + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] reinforces [src] with [material]."), span_notice("You reinforce [src] with [material].")) security_level = new_security_level update_appearance() - return TRUE + return ITEM_INTERACT_SUCCESS -/obj/machinery/door/airlock/attackby(obj/item/C, mob/user, list/modifiers, list/attack_modifiers) - if(!HAS_SILICON_ACCESS(user)) - if(isElectrified() && (C.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 75)) - return +/obj/machinery/door/airlock/attacked_by(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) + if(!HAS_SILICON_ACCESS(user) && isElectrified() && (attacking_item.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 75)) + return ATTACK_FAILED + return ..() + +/obj/machinery/door/airlock/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(is_wire_tool(C) && panel_open) + if(is_wire_tool(tool) && panel_open) attempt_wire_interaction(user) - return - else if(panel_open && security_level == AIRLOCK_SECURITY_NONE && istype(C, /obj/item/stack/sheet)) - if(istype(C, /obj/item/stack/sheet/iron)) - return try_reinforce(user, C, 2, AIRLOCK_SECURITY_IRON) + return ITEM_INTERACT_SUCCESS - else if(istype(C, /obj/item/stack/sheet/plasteel)) - if(!try_reinforce(user, C, 2, AIRLOCK_SECURITY_PLASTEEL)) - return FALSE + if(panel_open && security_level == AIRLOCK_SECURITY_NONE && istype(tool, /obj/item/stack/sheet)) + if(istype(tool, /obj/item/stack/sheet/iron)) + return try_reinforce(user, tool, 2, AIRLOCK_SECURITY_IRON) + + if(istype(tool, /obj/item/stack/sheet/plasteel)) + if(try_reinforce(user, tool, 2, AIRLOCK_SECURITY_PLASTEEL) & ITEM_INTERACT_BLOCKING) + return ITEM_INTERACT_BLOCKING modify_max_integrity(max_integrity * AIRLOCK_INTEGRITY_MULTIPLIER) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R update_appearance() - return TRUE + return ITEM_INTERACT_SUCCESS + + return ..() - else if(istype(C, /obj/item/pai_cable)) - var/obj/item/pai_cable/cable = C + if(istype(tool, /obj/item/pai_cable)) + var/obj/item/pai_cable/cable = tool cable.plugin(src, user) - else if(istype(C, /obj/item/airlock_painter)) - change_paintjob(C, user) - else if(istype(C, /obj/item/door_seal)) //adding the seal - var/obj/item/door_seal/airlockseal = C + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/airlock_painter)) + change_paintjob(tool, user) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/door_seal)) //adding the seal + var/obj/item/door_seal/airlockseal = tool if(!density) to_chat(user, span_warning("[src] must be closed before you can seal it!")) - return + return ITEM_INTERACT_BLOCKING if(seal) to_chat(user, span_warning("[src] has already been sealed!")) - return + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] begins sealing [src]."), span_notice("You begin sealing [src].")) playsound(src, 'sound/items/tools/jaws_pry.ogg', 30, TRUE) if(!do_after(user, airlockseal.seal_time, target = src)) - return + return ITEM_INTERACT_BLOCKING if(!density) to_chat(user, span_warning("[src] must be closed before you can seal it!")) - return + return ITEM_INTERACT_BLOCKING if(seal) to_chat(user, span_warning("[src] has already been sealed!")) - return + return ITEM_INTERACT_BLOCKING if(!user.transferItemToLoc(airlockseal, src)) to_chat(user, span_warning("For some reason, you can't attach [airlockseal]!")) - return + return ITEM_INTERACT_BLOCKING playsound(src, 'sound/machines/airlock/airlockforced.ogg', 30, TRUE) user.visible_message(span_notice("[user] finishes sealing [src]."), span_notice("You finish sealing [src].")) seal = airlockseal modify_max_integrity(max_integrity * AIRLOCK_SEAL_MULTIPLIER) update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(C, /obj/item/paper) || istype(C, /obj/item/photo)) + if(istype(tool, /obj/item/paper) || istype(tool, /obj/item/photo)) if(note) to_chat(user, span_warning("There's already something pinned to this airlock! Use wirecutters to remove it.")) - return - if(!user.transferItemToLoc(C, src)) - to_chat(user, span_warning("For some reason, you can't attach [C]!")) - return - user.visible_message(span_notice("[user] pins [C] to [src]."), span_notice("You pin [C] to [src].")) - note = C + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("For some reason, you can't attach [tool]!")) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] pins [tool] to [src]."), span_notice("You pin [tool] to [src].")) + note = tool update_appearance() - else - return ..() + return ITEM_INTERACT_SUCCESS + + return ..() /obj/machinery/door/airlock/try_to_weld(obj/item/weldingtool/W, mob/living/user) @@ -1407,6 +1419,11 @@ if(!dangerous_close) for(var/turf/checked_turf in locs) for(var/atom/movable/blocking in checked_turf) + var/sigreturn = SEND_SIGNAL(blocking, COMSIG_MOVABLE_BLOCKING_AIRLOCK, src, forced, force_crush) + if(sigreturn & AIRLOCK_BLOCK_FORCE_CRUSH) + dangerous_close = TRUE + continue + if(blocking.density && blocking != src) autoclose_in(DOOR_CLOSE_WAIT) return FALSE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 57dffa377e5f..2fd10a28715b 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -28,6 +28,8 @@ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.1 active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.2 + tacmap_color = TACMAP_DOOR + /// The animation we're currently playing, if any var/animation var/visible = TRUE @@ -111,7 +113,7 @@ if(multi_tile) set_bounds() set_filler() - update_overlays() + update_appearance(UPDATE_OVERLAYS) air_update_turf(TRUE, TRUE) register_context() if(elevator_mode) @@ -127,7 +129,7 @@ flags_1 &= ~PREVENT_CLICK_UNDER_1 if(glass) - passwindow_on(src, INNATE_TRAIT) + pass_flags |= PASSWINDOW //doors only block while dense though so we have to use the proc real_explosion_block = explosion_block update_explosive_block() @@ -329,13 +331,13 @@ /obj/machinery/door/proc/try_to_activate_door(mob/user, access_bypass = FALSE, bumped = FALSE) add_fingerprint(user) if(operating || (obj_flags & EMAGGED)) - return + return FALSE if(!bumped && !can_open_with_hands) - return + return FALSE if(elevator_mode && elevator_status != LIFT_PLATFORM_UNLOCKED) - return + return FALSE // note: if the ID wire is cut no ID cards are checked at all! (This is intentional!) if(access_bypass || (requiresID() && user_can_activate_door(user))) @@ -345,8 +347,9 @@ close() return TRUE - else if(!operating && density) + if(!operating && density) run_animation(DOOR_DENY_ANIMATION) + return FALSE /// Used in try_to_activate_door /obj/machinery/door/proc/user_can_activate_door(mob/user) @@ -446,20 +449,28 @@ /obj/machinery/door/try_to_crowbar_secondary(obj/item/acting_object, mob/user) try_to_crowbar(null, user, FALSE) -/obj/machinery/door/attackby(obj/item/weapon, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/access_key)) - var/obj/item/access_key/key = weapon - return key.attempt_open_door(user, src) - else if(!user.combat_mode && istype(weapon, /obj/item/fireaxe)) - try_to_crowbar(weapon, user, FALSE) - return TRUE - else if(weapon.item_flags & NOBLUDGEON || user.combat_mode) - return ..() - else if(!user.combat_mode && istype(weapon, /obj/item/stack/sheet/mineral/wood)) - return ..() // we need this so our can_barricade element can be called using COMSIG_ATOM_ATTACKBY - else if(try_to_activate_door(user)) - return TRUE - return ..() +/obj/machinery/door/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/access_key)) + var/obj/item/access_key/key = tool + if(!key.attempt_open_door(user, src)) + return ITEM_INTERACT_BLOCKING + + return ITEM_INTERACT_SUCCESS + + if(!user.combat_mode && istype(tool, /obj/item/fireaxe)) + try_to_crowbar(tool, user, FALSE) + return ITEM_INTERACT_SUCCESS + + if(tool.item_flags & NOBLUDGEON || user.combat_mode) + return NONE + + if(istype(tool, /obj/item/stack/sheet/mineral/wood)) + return NONE // we need this so our can_barricade element can be called using COMSIG_ATOM_ATTACKBY + + if(try_to_activate_door(user)) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/machinery/door/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) // allows you to crowbar doors while in combat mode diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index ae6a3e002ee9..b5228803e616 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -286,7 +286,7 @@ if(environment.temperature >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) return FIRELOCK_ALARM_TYPE_HOT - if(environment.gases[/datum/gas/antinoblium] && environment.gases[/datum/gas/antinoblium][MOLES] > MINIMUM_MOLE_COUNT) + if(environment.moles[/datum/gas/antinoblium] > MINIMUM_MOLE_COUNT) return FIRELOCK_ALARM_TYPE_HOT if(environment.temperature <= BODYTEMP_COLD_DAMAGE_LIMIT) return FIRELOCK_ALARM_TYPE_COLD @@ -836,114 +836,128 @@ icon_state = "[base_icon_state][constructionStep]" return ..() -/obj/structure/firelock_frame/attackby(obj/item/attacking_object, mob/user) +/obj/structure/firelock_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) switch(constructionStep) if(CONSTRUCTION_PANEL_OPEN) - if(attacking_object.tool_behaviour == TOOL_CROWBAR) - attacking_object.play_tool_sound(src) - user.visible_message(span_notice("[user] begins removing the circuit board from [src]..."), \ - span_notice("You begin prying out the circuit board from [src]...")) - if(!attacking_object.use_tool(src, user, DEFAULT_STEP_TIME)) - return - if(constructionStep != CONSTRUCTION_PANEL_OPEN) - return - playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) - user.visible_message(span_notice("[user] removes [src]'s circuit board."), \ - span_notice("You remove the circuit board from [src].")) - new /obj/item/electronics/firelock(drop_location()) - constructionStep = CONSTRUCTION_NO_CIRCUIT - update_appearance() - return - if(attacking_object.tool_behaviour == TOOL_WRENCH) - if(locate(/obj/machinery/door/firedoor) in get_turf(src)) - to_chat(user, span_warning("There's already a firelock there.")) - return - attacking_object.play_tool_sound(src) - user.visible_message(span_notice("[user] starts bolting down [src]..."), \ - span_notice("You begin bolting [src]...")) - if(!attacking_object.use_tool(src, user, DEFAULT_STEP_TIME)) - return - if(locate(/obj/machinery/door/firedoor) in get_turf(src)) - return - user.visible_message(span_notice("[user] finishes the firelock."), \ - span_notice("You finish the firelock.")) - playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) - if(reinforced) - new /obj/machinery/door/firedoor/heavy(get_turf(src)) - else if(directional) - var/obj/machinery/door/firedoor/border_only/new_firedoor = new /obj/machinery/door/firedoor/border_only(get_turf(src)) - new_firedoor.setDir(dir) - new_firedoor.adjust_lights_starting_offset() - else - new /obj/machinery/door/firedoor(get_turf(src)) - qdel(src) - return - if(istype(attacking_object, /obj/item/stack/sheet/plasteel)) - if(directional) - to_chat(user, span_warning("[src] can not be reinforced.")) - return - var/obj/item/stack/sheet/plasteel/plasteel_sheet = attacking_object - if(reinforced) - to_chat(user, span_warning("[src] is already reinforced.")) - return - if(plasteel_sheet.get_amount() < 2) - to_chat(user, span_warning("You need more plasteel to reinforce [src].")) - return - user.visible_message(span_notice("[user] begins reinforcing [src]..."), \ - span_notice("You begin reinforcing [src]...")) - playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) - if(do_after(user, DEFAULT_STEP_TIME, target = src)) - if(constructionStep != CONSTRUCTION_PANEL_OPEN || reinforced || plasteel_sheet.get_amount() < 2 || !plasteel_sheet) - return - user.visible_message(span_notice("[user] reinforces [src]."), \ - span_notice("You reinforce [src].")) - playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) - plasteel_sheet.use(2) - reinforced = 1 - return + if(!istype(tool, /obj/item/stack/sheet/plasteel)) + return NONE + if(directional) + to_chat(user, span_warning("[src] can not be reinforced.")) + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/sheet/plasteel/plasteel_sheet = tool + if(reinforced) + to_chat(user, span_warning("[src] is already reinforced.")) + return ITEM_INTERACT_BLOCKING + if(plasteel_sheet.get_amount() < 2) + to_chat(user, span_warning("You need more plasteel to reinforce [src].")) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] begins reinforcing [src]..."), \ + span_notice("You begin reinforcing [src]...")) + playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) + if(!do_after(user, DEFAULT_STEP_TIME, target = src)) + return ITEM_INTERACT_BLOCKING + if(constructionStep != CONSTRUCTION_PANEL_OPEN || reinforced || plasteel_sheet.get_amount() < 2 || !plasteel_sheet) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] reinforces [src]."), \ + span_notice("You reinforce [src].")) + playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) + plasteel_sheet.use(2) + reinforced = 1 + return ITEM_INTERACT_SUCCESS + if(CONSTRUCTION_NO_CIRCUIT) - if(istype(attacking_object, /obj/item/electronics/firelock)) - user.visible_message(span_notice("[user] starts adding [attacking_object] to [src]..."), \ + if(istype(tool, /obj/item/electronics/firelock)) + user.visible_message(span_notice("[user] starts adding [tool] to [src]..."), \ span_notice("You begin adding a circuit board to [src]...")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) if(!do_after(user, DEFAULT_STEP_TIME, target = src)) - return + return ITEM_INTERACT_BLOCKING if(constructionStep != CONSTRUCTION_NO_CIRCUIT) - return - qdel(attacking_object) + return ITEM_INTERACT_BLOCKING + qdel(tool) user.visible_message(span_notice("[user] adds a circuit to [src]."), \ - span_notice("You insert and secure [attacking_object].")) + span_notice("You insert and secure [tool].")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) constructionStep = CONSTRUCTION_PANEL_OPEN update_appearance() - return - if(attacking_object.tool_behaviour == TOOL_WELDER) - if(!attacking_object.tool_start_check(user, amount=1)) - return - user.visible_message(span_notice("[user] begins cutting apart [src]'s frame..."), \ - span_notice("You begin slicing [src] apart...")) - - if(attacking_object.use_tool(src, user, DEFAULT_STEP_TIME, volume=50)) - if(constructionStep != CONSTRUCTION_NO_CIRCUIT) - return - user.visible_message(span_notice("[user] cuts apart [src]!"), \ - span_notice("You cut [src] into metal.")) - var/turf/targetloc = get_turf(src) - new /obj/item/stack/sheet/iron(targetloc, directional ? 2 : 3) - if(reinforced) - new /obj/item/stack/sheet/plasteel(targetloc, 2) - qdel(src) - return - if(istype(attacking_object, /obj/item/electroadaptive_pseudocircuit)) - var/obj/item/electroadaptive_pseudocircuit/raspberrypi = attacking_object + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/electroadaptive_pseudocircuit)) + var/obj/item/electroadaptive_pseudocircuit/raspberrypi = tool if(!raspberrypi.adapt_circuit(user, circuit_cost = DEFAULT_STEP_TIME * 0.0005 * STANDARD_CELL_CHARGE)) - return + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ span_notice("You adapt a firelock circuit and slot it into the assembly.")) constructionStep = CONSTRUCTION_PANEL_OPEN update_appearance() - return - return ..() + return ITEM_INTERACT_SUCCESS + return NONE + +/obj/structure/firelock_frame/crowbar_act(mob/living/user, obj/item/tool) + if(constructionStep != CONSTRUCTION_PANEL_OPEN) + return NONE + tool.play_tool_sound(src) + user.visible_message(span_notice("[user] begins removing the circuit board from [src]..."), \ + span_notice("You begin prying out the circuit board from [src]...")) + if(!tool.use_tool(src, user, DEFAULT_STEP_TIME)) + return ITEM_INTERACT_BLOCKING + if(constructionStep != CONSTRUCTION_PANEL_OPEN) + return ITEM_INTERACT_BLOCKING + playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) + user.visible_message(span_notice("[user] removes [src]'s circuit board."), \ + span_notice("You remove the circuit board from [src].")) + new /obj/item/electronics/firelock(drop_location()) + constructionStep = CONSTRUCTION_NO_CIRCUIT + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/structure/firelock_frame/wrench_act(mob/living/user, obj/item/tool) + if(constructionStep != CONSTRUCTION_PANEL_OPEN) + return NONE + if(locate(/obj/machinery/door/firedoor) in get_turf(src)) + to_chat(user, span_warning("There's already a firelock there.")) + return ITEM_INTERACT_BLOCKING + tool.play_tool_sound(src) + user.visible_message(span_notice("[user] starts bolting down [src]..."), \ + span_notice("You begin bolting [src]...")) + if(!tool.use_tool(src, user, DEFAULT_STEP_TIME)) + return ITEM_INTERACT_BLOCKING + if(locate(/obj/machinery/door/firedoor) in get_turf(src)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] finishes the firelock."), \ + span_notice("You finish the firelock.")) + playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, TRUE) + if(reinforced) + new /obj/machinery/door/firedoor/heavy(get_turf(src)) + else if(directional) + var/obj/machinery/door/firedoor/border_only/new_firedoor = new /obj/machinery/door/firedoor/border_only(get_turf(src)) + new_firedoor.setDir(dir) + new_firedoor.adjust_lights_starting_offset() + else + new /obj/machinery/door/firedoor(get_turf(src)) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/structure/firelock_frame/welder_act(mob/living/user, obj/item/tool) + if(constructionStep != CONSTRUCTION_NO_CIRCUIT) + return NONE + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] begins cutting apart [src]'s frame..."), \ + span_notice("You begin slicing [src] apart...")) + + if(!tool.use_tool(src, user, DEFAULT_STEP_TIME, volume=50)) + return ITEM_INTERACT_BLOCKING + if(constructionStep != CONSTRUCTION_NO_CIRCUIT) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] cuts apart [src]!"), \ + span_notice("You cut [src] into metal.")) + var/turf/targetloc = get_turf(src) + new /obj/item/stack/sheet/iron(targetloc, directional ? 2 : 3) + if(reinforced) + new /obj/item/stack/sheet/plasteel(targetloc, 2) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/firelock_frame/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_DECONSTRUCT) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index ac2ef03abe77..a299c1655402 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -69,7 +69,7 @@ if(deconstruction == BLASTDOOR_NEEDS_ELECTRONICS && istype(held_item, /obj/item/electronics/airlock)) context[SCREENTIP_CONTEXT_LMB] = "Add electronics" return CONTEXTUAL_SCREENTIP_SET - if(deconstruction == BLASTDOOR_FINISHED && istype(held_item, /obj/item/assembly/control)) + if(deconstruction == BLASTDOOR_FINISHED && istype(held_item, /obj/item/assembly/control/blast_door)) context[SCREENTIP_CONTEXT_LMB] = "Calibrate ID" return CONTEXTUAL_SCREENTIP_SET //we do not check for special effects like if they can actually perform the action because they will be told they can't do it when they try, @@ -117,14 +117,14 @@ deconstruction = BLASTDOOR_FINISHED return ITEM_INTERACT_SUCCESS - if(deconstruction == BLASTDOOR_FINISHED && istype(tool, /obj/item/assembly/control)) + if(deconstruction == BLASTDOOR_FINISHED && istype(tool, /obj/item/assembly/control/blast_door)) if(density) balloon_alert(user, "open the door first!") return ITEM_INTERACT_BLOCKING if(!panel_open) balloon_alert(user, "open the panel first!") return ITEM_INTERACT_BLOCKING - var/obj/item/assembly/control/controller_item = tool + var/obj/item/assembly/control/blast_door/controller_item = tool if(controller_item.id == -1) //collect existing ids var/list/door_ids = list() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 01ec6e7b66cb..02c09f285168 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -393,24 +393,24 @@ . = ..() if(density || operating) to_chat(user, span_warning("You need to open the door to access the maintenance panel!")) - return + return ITEM_INTERACT_BLOCKING add_fingerprint(user) tool.play_tool_sound(src) toggle_panel_open() to_chat(user, span_notice("You [panel_open ? "open" : "close"] the maintenance panel.")) - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/door/window/crowbar_act(mob/living/user, obj/item/tool) . = ..() if(!panel_open || density || operating) - return + return ITEM_INTERACT_BLOCKING add_fingerprint(user) user.visible_message(span_notice("[user] removes the electronics from \the [src]."), \ span_notice("You start to remove electronics from \the [src]...")) if(!tool.use_tool(src, user, 40, volume=50)) - return + return ITEM_INTERACT_BLOCKING if(!panel_open || density || operating || !loc) - return + return ITEM_INTERACT_BLOCKING var/obj/structure/windoor_assembly/windoor_assembly = new /obj/structure/windoor_assembly(loc) switch(base_state) if("left") @@ -424,14 +424,14 @@ windoor_assembly.facing = "r" windoor_assembly.secure = TRUE windoor_assembly.set_anchored(TRUE) - windoor_assembly.state= "02" + windoor_assembly.cables_added = TRUE windoor_assembly.setDir(dir) windoor_assembly.update_appearance() windoor_assembly.created_name = name if(obj_flags & EMAGGED) to_chat(user, span_warning("You discard the damaged electronics.")) qdel(src) - return + return ITEM_INTERACT_SUCCESS to_chat(user, span_notice("You remove the airlock electronics.")) var/obj/item/electronics/airlock/dropped_electronics if(!electronics) @@ -446,7 +446,7 @@ electronics = null dropped_electronics.forceMove(drop_location()) qdel(src) - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/door/window/interact(mob/user) //for sillycones try_to_activate_door(user) diff --git a/code/game/machinery/experimental_cloner/experimental_cloner_computer.dm b/code/game/machinery/experimental_cloner/experimental_cloner_computer.dm index 6e1b0542080b..2fc3ea73eda2 100644 --- a/code/game/machinery/experimental_cloner/experimental_cloner_computer.dm +++ b/code/game/machinery/experimental_cloner/experimental_cloner_computer.dm @@ -3,6 +3,7 @@ name = "experimental cloner control console" desc = "It scans DNA structures." circuit = /obj/item/circuitboard/computer/experimental_cloner + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/crew") icon_screen = "crew" icon_keyboard = "med_key" light_color = LIGHT_COLOR_GREEN diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index f08fc0046820..98e8edbf25d2 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -62,35 +62,45 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26) return ..() //Don't want to render prison breaks impossible -/obj/machinery/flasher/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/flasher/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if (attacking_item.tool_behaviour == TOOL_WIRECUTTER) - if (bulb) - user.visible_message(span_notice("[user] begins to disconnect [src]'s flashbulb."), span_notice("You begin to disconnect [src]'s flashbulb...")) - if(attacking_item.use_tool(src, user, 30, volume=50) && bulb) - user.visible_message(span_notice("[user] disconnects [src]'s flashbulb!"), span_notice("You disconnect [src]'s flashbulb.")) - bulb.forceMove(loc) - power_change() - - else if (istype(attacking_item, /obj/item/assembly/flash/handheld)) - if (!bulb) - if(!user.transferItemToLoc(attacking_item, src)) - return - user.visible_message(span_notice("[user] installs [attacking_item] into [src]."), span_notice("You install [attacking_item] into [src].")) - power_change() - else - to_chat(user, span_warning("A flashbulb is already installed in [src]!")) - - else if (attacking_item.tool_behaviour == TOOL_WRENCH) - if(!bulb) - to_chat(user, span_notice("You start unsecuring the flasher frame...")) - if(attacking_item.use_tool(src, user, 40, volume=50)) - to_chat(user, span_notice("You unsecure the flasher frame.")) - deconstruct(TRUE) - else - to_chat(user, span_warning("Remove a flashbulb from [src] first!")) - else - return ..() + + if (!istype(tool, /obj/item/assembly/flash/handheld)) + return NONE + if (bulb) + to_chat(user, span_warning("A flashbulb is already installed in [src]!")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] installs [tool] into [src]."), \ + span_notice("You install [tool] into [src].")) + power_change() + return ITEM_INTERACT_SUCCESS + + +/obj/machinery/flasher/wirecutter_act(mob/living/user, obj/item/tool) + add_fingerprint(user) + if(!bulb) + return NONE + user.visible_message(span_notice("[user] begins to disconnect [src]'s flashbulb."), span_notice("You begin to disconnect [src]'s flashbulb...")) + if(!tool.use_tool(src, user, 30, volume=50) || !bulb) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] disconnects [src]'s flashbulb!"), span_notice("You disconnect [src]'s flashbulb.")) + bulb.forceMove(loc) + power_change() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/flasher/wrench_act(mob/living/user, obj/item/tool) + add_fingerprint(user) + if(bulb) + to_chat(user, span_warning("Remove a flashbulb from [src] first!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start unsecuring the flasher frame...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You unsecure the flasher frame.")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS //Let the AI trigger them directly. /obj/machinery/flasher/attack_ai() @@ -189,25 +199,22 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26) if(vname == NAMEOF(src, flash_range)) proximity_monitor?.set_range(flash_range) -/obj/machinery/flasher/portable/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if (attacking_item.tool_behaviour == TOOL_WRENCH) - attacking_item.play_tool_sound(src, 100) - - if (!anchored && !isinspace()) - to_chat(user, span_notice("[src] is now secured.")) - add_overlay("[base_icon_state]-s") - set_anchored(TRUE) - power_change() - proximity_monitor.set_range(flash_range) - else - to_chat(user, span_notice("[src] can now be moved.")) - cut_overlays() - set_anchored(FALSE) - power_change() - proximity_monitor.set_range(0) - - else - return ..() +/obj/machinery/flasher/portable/wrench_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(src, 100) + if (!anchored && !isinspace()) + to_chat(user, span_notice("[src] is now secured.")) + add_overlay("[base_icon_state]-s") + set_anchored(TRUE) + power_change() + proximity_monitor.set_range(flash_range) + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("[src] can now be moved.")) + cut_overlays() + set_anchored(FALSE) + power_change() + proximity_monitor.set_range(0) + return ITEM_INTERACT_SUCCESS /obj/item/wallframe/flasher name = "mounted flash frame" diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 66daee76e7d1..d098cabf4e8c 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -89,6 +89,8 @@ Possible to do for anyone motivated enough: var/secure = FALSE /// If we are currently calling another holopad var/calling = FALSE + /// Whether this pad is currently projecting a pointing arrow + var/pointing = FALSE ///bitfield. used to turn on and off hearing sensitivity depending on if we can act on Hear() at all - meant for lowering the number of unessesary hearable atoms var/can_hear_flags = NONE @@ -738,6 +740,43 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ else ray.transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle) +/// Project a holographic pointing arrow from this holopad toward a target +/obj/machinery/holopad/proc/holo_point(atom/target, invisibility = 0) + if(pointing) + return + var/turf/pad_turf = get_turf(src) + var/turf/target_turf = get_turf(target) + if(!pad_turf || !target_turf) + return + pointing = TRUE + var/obj/effect/temp_visual/point/holo/visual = new(pad_turf, invisibility) + var/obj/effect/overlay/holoray/ray = new(pad_turf) + var/disty = target_turf.y - pad_turf.y + var/distx = target_turf.x - pad_turf.x + var/distance = sqrt(distx*distx + disty*disty) + var/angle + if(!disty) + angle = (distx >= 0) ? 90 : 270 + else + angle = arctan(distx/disty) + if(disty < 0) + angle += 180 + else if(distx < 0) + angle += 360 + var/matrix/M = matrix() + ray.transform = turn(M.Scale(1, distance), angle) + animate(visual, pixel_x = (target_turf.x - pad_turf.x) * ICON_SIZE_X + target.pixel_x, pixel_y = (target_turf.y - pad_turf.y) * ICON_SIZE_Y + target.pixel_y, time = 1.7, easing = EASE_OUT) + set_light(2) + icon_state = "[base_icon_state]1" + addtimer(CALLBACK(src, PROC_REF(clear_holo_point), ray), 2.5 SECONDS) + return visual + +/// Called after the holo-point expires to restore the holopad's state +/obj/machinery/holopad/proc/clear_holo_point(obj/effect/overlay/holoray/ray) + qdel(ray) + pointing = FALSE + SetLightsAndPower() + // RECORDED MESSAGES /obj/machinery/holopad/proc/setup_replay_holo(datum/holorecord/record) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 556df4d02ebe..7b52a4e92877 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -20,7 +20,7 @@ mouse_drag_pointer = MOUSE_ACTIVE_POINTER use_power = NO_POWER_USE interaction_flags_mouse_drop = NEED_HANDS - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2) /// Information and effects about where the IV drip is attached to var/datum/iv_drip_attachment/attachment @@ -323,9 +323,7 @@ /obj/machinery/iv_drip/proc/get_reagents() return use_internal_storage ? reagents : reagent_container?.reagents -/obj/machinery/iv_drip/verb/eject_beaker() - set name = "Remove IV Container" - set src in view(1) +GAME_VERB_SRC(/obj/machinery/iv_drip, eject_beaker, view(1), "Remove IV Container", null) if(!isliving(usr)) to_chat(usr, span_warning("You can't do that!")) @@ -342,9 +340,7 @@ reagent_container = null update_appearance(UPDATE_ICON) -/obj/machinery/iv_drip/verb/toggle_mode() - set name = "Toggle Mode" - set src in view(1) +GAME_VERB_SRC(/obj/machinery/iv_drip, toggle_mode, view(1), "Toggle Mode", null) if(!isliving(usr)) to_chat(usr, span_warning("You can't do that!")) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index ed60bd83539a..72e8723e40c6 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -320,15 +320,16 @@ closed = TRUE update_indicator() -/obj/machinery/launchpad/briefcase/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/launchpad_remote)) - var/obj/item/launchpad_remote/launch = item - if(IS_WEAKREF_OF(src, launch.pad)) //do not attempt to link when already linked - return ..() - launch.pad = WEAKREF(src) - to_chat(user, span_notice("You link [src] to [launch].")) - else - return ..() +/obj/machinery/launchpad/briefcase/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/launchpad_remote)) + return NONE + var/obj/item/launchpad_remote/remote = tool + if(IS_WEAKREF_OF(src, remote.pad)) //do not attempt to link when already linked + return ITEM_INTERACT_BLOCKING + remote.pad = WEAKREF(src) + to_chat(user, span_notice("You link [src] to [remote].")) + return ITEM_INTERACT_SUCCESS + /obj/item/launchpad_remote name = "folder" diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 7d553e47b2d6..4091e012985a 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -15,6 +15,10 @@ var/light_on_range = 1 /// Should this lightswitch automatically rename itself to match the area it's in? var/autoname = TRUE + /// The sound the light makes when it's turned on + var/sound_on = 'sound/items/weapons/magin.ogg' + /// The sound the light makes when it's turned off + var/sound_off = 'sound/items/weapons/magout.ogg' MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26) @@ -73,6 +77,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26) /obj/machinery/light_switch/interact(mob/user) . = ..() + playsound(src, area.lightswitch ? sound_off : sound_on, 40, TRUE) set_lights(!area.lightswitch) /obj/machinery/light_switch/screwdriver_act(mob/living/user, obj/item/tool) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index c4d95d8514b2..86e892b8adf5 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -345,4 +345,4 @@ for(var/id in SSresearch.techweb_designs) var/datum/design/found_design = SSresearch.techweb_design_by_id(id) if((found_design.build_type & LIMBGROWER) && !(RND_CATEGORY_HACKED in found_design.category)) - imported_designs |= found_design.id + imported_designs[found_design.id] = TRUE diff --git a/code/game/machinery/machine_frame.dm b/code/game/machinery/machine_frame.dm index 008849404eb1..5f7cf10d55f5 100644 --- a/code/game/machinery/machine_frame.dm +++ b/code/game/machinery/machine_frame.dm @@ -445,7 +445,7 @@ user.balloon_alert(user, "missing components!") return FALSE - if(!circuit.completion_requirements(src)) + if(!circuit.completion_requirements(src, user)) return FALSE tool.play_tool_sound(src) diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm index 43e19e3248ea..a6b6452a0d2b 100644 --- a/code/game/machinery/medical_kiosk.dm +++ b/code/game/machinery/medical_kiosk.dm @@ -239,10 +239,14 @@ var/blood_alcohol = patient.get_blood_alcohol_content() for(var/thing in patient.diseases) //Disease Information - var/datum/disease/D = thing - if(!(D.visibility_flags & HIDDEN_SCANNER)) + var/datum/disease/disease = thing + if(!(disease.visibility_flags & HIDDEN_SCANNER)) sickness = "Warning: Patient is harboring some form of viral disease. Seek further medical attention." - sickness_data = "\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]" + var/cure_text = disease.cure_text + if(istype(disease, /datum/disease/advance)) + var/datum/disease/advance/advanced_disease = disease + cure_text = advanced_disease.generate_cure_text(2) + sickness_data = "\nName: [disease.name].\nType: [disease.spread_text].\nStage: [disease.stage]/[disease.max_stages].\nPossible Cure: [cure_text]" if(patient.can_bleed()) //Blood levels Information blood_name = LOWER_TEXT(blood_type.get_blood_name()) diff --git a/code/game/machinery/modular_shield.dm b/code/game/machinery/modular_shield.dm index 6873c29afb24..e0f10eb7a472 100644 --- a/code/game/machinery/modular_shield.dm +++ b/code/game/machinery/modular_shield.dm @@ -144,13 +144,11 @@ /obj/machinery/modular_shield_generator/crowbar_act(mob/living/user, obj/item/tool) return default_deconstruction_crowbar(user, tool) -/obj/machinery/modular_shield_generator/attackby(obj/item/W, mob/user, list/modifiers) - - if(is_wire_tool(W) && panel_open) - wires.interact(user) - return TRUE - - return ..() +/obj/machinery/modular_shield_generator/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!panel_open || !is_wire_tool(tool)) + return NONE + wires.interact(user) + return ITEM_INTERACT_SUCCESS /obj/machinery/modular_shield_generator/multitool_act(mob/living/user, obj/item/multitool/multi) multi.set_buffer(src) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 0350799c6a8b..867c98c15ea6 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -119,24 +119,23 @@ . = ..() icon_state = "[base_icon_state][panel_open]" -/obj/machinery/navbeacon/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/navbeacon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) var/turf/our_turf = loc if(our_turf.underfloor_accessibility < UNDERFLOOR_INTERACTABLE) - return // prevent intraction when T-scanner revealed - - if (attacking_item.GetID()) - if(!panel_open) - if (allowed(user)) - controls_locked = !controls_locked - balloon_alert(user, "controls [controls_locked ? "locked" : "unlocked"]") - SStgui.update_uis(src) - else - balloon_alert(user, "access denied") - else - balloon_alert(user, "panel open!") - return + return ITEM_INTERACT_BLOCKING// prevent interaction when T-scanner revealed - return ..() + if(!tool.GetID()) + return NONE + if(panel_open) + balloon_alert(user, "panel open!") + return ITEM_INTERACT_BLOCKING + if (!allowed(user)) + balloon_alert(user, "access denied") + return ITEM_INTERACT_BLOCKING + controls_locked = !controls_locked + balloon_alert(user, "controls [controls_locked ? "locked" : "unlocked"]") + SStgui.update_uis(src) + return ITEM_INTERACT_SUCCESS /obj/machinery/navbeacon/attack_ai(mob/user) interact(user) diff --git a/code/game/machinery/newscaster/newscaster_machine.dm b/code/game/machinery/newscaster/newscaster_machine.dm index 2c1e548f80a8..92ff8502ef71 100644 --- a/code/game/machinery/newscaster/newscaster_machine.dm +++ b/code/game/machinery/newscaster/newscaster_machine.dm @@ -490,15 +490,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) . = ..() update_appearance() -/obj/machinery/newscaster/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/paper)) - if(!user.temporarilyRemoveItemFromInventory(attacking_item)) - return - paper_remaining++ - to_chat(user, span_notice("You insert [attacking_item] into [src]! It now holds [paper_remaining] sheet\s of paper.")) - qdel(attacking_item) - return - return ..() +/obj/machinery/newscaster/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/paper)) + return NONE + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + paper_remaining++ + to_chat(user, span_notice("You insert [tool] into [src]! It now holds [paper_remaining] sheet\s of paper.")) + qdel(tool) + return ITEM_INTERACT_SUCCESS ///returns (machine_stat & broken) /obj/machinery/newscaster/proc/needs_repair() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index a74c2cb3c394..5aaf647ce9f6 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -217,9 +217,7 @@ Buildable meters if(ispath(pipe_type,/obj/machinery/atmospherics/pipe/heat_exchanging)) resistance_flags |= FIRE_PROOF | LAVA_PROOF -/obj/item/pipe/verb/flip() - set name = "Invert Pipe" - set src in view(1) +GAME_VERB_SRC(/obj/item/pipe, flip, view(1), "Invert Pipe", null) if ( usr.incapacitated ) return diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 7c8e0b642b46..0fafff15822c 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -151,14 +151,13 @@ ui = new(user, src, "PipeDispenser", name) ui.open() -/obj/machinery/pipedispenser/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/pipedispenser/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter)) - to_chat(usr, span_notice("You put [W] back into [src].")) - qdel(W) - return - else - return ..() + if (!istype(tool, /obj/item/pipe) && !istype(tool, /obj/item/pipe_meter)) + return NONE + to_chat(usr, span_notice("You put [tool] back into [src].")) + qdel(tool) + return ITEM_INTERACT_SUCCESS /obj/machinery/pipedispenser/proc/verify_recipe(recipes, path) for(var/category in recipes) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index dc00ec5f5448..ac6f0c45f947 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -782,6 +782,19 @@ DEFINE_BITFIELD(turret_flags, list( . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) AddElement(/datum/element/nav_computer_icon, 'icons/effects/nav_computer_indicators.dmi', "turret", FALSE) + add_minimap_blip(src, MINIMAP_SYNDIE_TURRET_BLIP, "sentry_passive") + +/obj/machinery/porta_turret/syndicate/proc/update_turret_minimap_icon(new_icon_state) + var/atom/movable/screen/minimap_element/blip/blip = get_minimap_blip(MINIMAP_SYNDIE_TURRET_BLIP, src) + if(isnull(blip)) + return + blip.icon_state = new_icon_state + +/obj/machinery/porta_turret/syndicate/shootAt(atom/movable/target) + . = ..() + if(raised && (obj_flags & EMAGGED || last_fired == world.time)) + update_turret_minimap_icon("sentry_firing") + addtimer(CALLBACK(src, PROC_REF(update_turret_minimap_icon), "sentry_passive"), shot_delay + 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) /obj/machinery/porta_turret/syndicate/setup() return diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 6b06894e0106..4305dbb936c8 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -42,157 +42,162 @@ if(PTURRET_START_EXTERNAL_ARMOUR) . += span_notice("The turret's armor needs to be welded in place, the armor looks like it could be pried off.") -/obj/machinery/porta_turret_construct/attackby(obj/item/used, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/porta_turret_construct/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //this is a bit unwieldy but self-explanatory switch(build_step) - if(PTURRET_UNSECURED) //first step - if(used.tool_behaviour == TOOL_WRENCH && !anchored) - used.play_tool_sound(src, 100) - to_chat(user, span_notice("You secure the external bolts.")) - set_anchored(TRUE) - build_step = PTURRET_BOLTED - return - - else if(used.tool_behaviour == TOOL_CROWBAR && !anchored) - used.play_tool_sound(src, 75) - to_chat(user, span_notice("You dismantle the turret construction.")) - new /obj/item/stack/sheet/iron(loc, 5) - qdel(src) - return - if(PTURRET_BOLTED) - if(istype(used, /obj/item/stack/sheet/iron)) - var/obj/item/stack/sheet/iron/sheet = used - if(sheet.use(2)) - to_chat(user, span_notice("You add some metal armor to the interior frame.")) - build_step = PTURRET_START_INTERNAL_ARMOUR - icon_state = "turret_frame2" - else - to_chat(user, span_warning("You need two sheets of iron to continue construction!")) - return - - else if(used.tool_behaviour == TOOL_WRENCH) - used.play_tool_sound(src, 75) - to_chat(user, span_notice("You unfasten the external bolts.")) - set_anchored(FALSE) - build_step = PTURRET_UNSECURED - return + if(!istype(tool, /obj/item/stack/sheet/iron)) + return NONE + var/obj/item/stack/sheet/iron/sheet = tool + if(!sheet.use(2)) + to_chat(user, span_warning("You need two sheets of iron to continue construction!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You add some metal armor to the interior frame.")) + build_step = PTURRET_START_INTERNAL_ARMOUR + icon_state = "turret_frame2" + return ITEM_INTERACT_SUCCESS + if(PTURRET_INTERNAL_ARMOUR_ON) + if(!istype(tool, /obj/item/gun/energy)) //the gun installation part + return NONE + var/obj/item/gun/energy/egun = tool + if(egun.gun_flags & TURRET_INCOMPATIBLE) + to_chat(user, span_notice("You don't think it would be right to add [tool] to the turret")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(egun, src)) + return ITEM_INTERACT_BLOCKING + installed_gun = egun + to_chat(user, span_notice("You add [tool] to the turret.")) + build_step = PTURRET_GUN_EQUIPPED + return ITEM_INTERACT_SUCCESS + + if(PTURRET_GUN_EQUIPPED) + if(!isprox(tool)) + return NONE + build_step = PTURRET_SENSORS_ON + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You add the proximity sensor to the turret.")) + qdel(tool) + return ITEM_INTERACT_SUCCESS + + if(PTURRET_CLOSED) + if(!istype(tool, /obj/item/stack/sheet/iron)) + return NONE + var/obj/item/stack/sheet/iron/sheet = tool + if(!sheet.use(2)) + to_chat(user, span_warning("You need two sheets of iron to continue construction!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You add some metal armor to the exterior frame.")) + build_step = PTURRET_START_EXTERNAL_ARMOUR + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/machinery/porta_turret_construct/wrench_act(mob/living/user, obj/item/tool) + switch(build_step) + if(PTURRET_UNSECURED) + tool.play_tool_sound(src, 100) + to_chat(user, span_notice("You secure the external bolts.")) + set_anchored(TRUE) + build_step = PTURRET_BOLTED + return ITEM_INTERACT_SUCCESS + + if(PTURRET_BOLTED) + tool.play_tool_sound(src, 75) + to_chat(user, span_notice("You unfasten the external bolts.")) + set_anchored(FALSE) + build_step = PTURRET_UNSECURED + return ITEM_INTERACT_SUCCESS if(PTURRET_START_INTERNAL_ARMOUR) - if(used.tool_behaviour == TOOL_WRENCH) - used.play_tool_sound(src, 100) - to_chat(user, span_notice("You bolt the metal armor into place.")) - build_step = PTURRET_INTERNAL_ARMOUR_ON - return + tool.play_tool_sound(src, 100) + to_chat(user, span_notice("You bolt the metal armor into place.")) + build_step = PTURRET_INTERNAL_ARMOUR_ON + return ITEM_INTERACT_SUCCESS - else if(used.tool_behaviour == TOOL_WELDER) - if(!used.tool_start_check(user, amount = 5)) //uses up 5 fuel - return + if(PTURRET_INTERNAL_ARMOUR_ON) + tool.play_tool_sound(src, 100) + to_chat(user, span_notice("You remove the turret's metal armor bolts.")) + build_step = PTURRET_START_INTERNAL_ARMOUR + return ITEM_INTERACT_SUCCESS - to_chat(user, span_notice("You start to remove the turret's interior metal armor...")) + return ITEM_INTERACT_SKIP_TO_ATTACK - if(used.use_tool(src, user, 20, volume = 50, amount = 5)) //uses up 5 fuel - build_step = PTURRET_BOLTED - to_chat(user, span_notice("You remove the turret's interior metal armor.")) - new /obj/item/stack/sheet/iron(drop_location(), 2) - return +/obj/machinery/porta_turret_construct/crowbar_act(mob/living/user, obj/item/tool) + switch(build_step) + if(PTURRET_UNSECURED) + tool.play_tool_sound(src, 75) + to_chat(user, span_notice("You dismantle the turret construction.")) + new /obj/item/stack/sheet/iron(loc, 5) + qdel(src) + return ITEM_INTERACT_SUCCESS + if(PTURRET_START_EXTERNAL_ARMOUR) + tool.play_tool_sound(src, 75) + to_chat(user, span_notice("You pry off the turret's exterior armor.")) + new /obj/item/stack/sheet/iron(loc, 2) + build_step = PTURRET_CLOSED + return ITEM_INTERACT_SUCCESS - if(PTURRET_INTERNAL_ARMOUR_ON) - if(istype(used, /obj/item/gun/energy)) //the gun installation part - var/obj/item/gun/energy/egun = used - if(egun.gun_flags & TURRET_INCOMPATIBLE) - to_chat(user, span_notice("You don't think it would be right to add [used] to the turret")) - return - if(!user.transferItemToLoc(egun, src)) - return - installed_gun = egun - to_chat(user, span_notice("You add [used] to the turret.")) - build_step = PTURRET_GUN_EQUIPPED - return - else if(used.tool_behaviour == TOOL_WRENCH) - used.play_tool_sound(src, 100) - to_chat(user, span_notice("You remove the turret's metal armor bolts.")) - build_step = PTURRET_START_INTERNAL_ARMOUR - return + return ITEM_INTERACT_SKIP_TO_ATTACK - if(PTURRET_GUN_EQUIPPED) - if(isprox(used)) - build_step = PTURRET_SENSORS_ON - if(!user.temporarilyRemoveItemFromInventory(used)) - return - to_chat(user, span_notice("You add the proximity sensor to the turret.")) - qdel(used) - return +/obj/machinery/porta_turret_construct/welder_act(mob/living/user, obj/item/tool) + switch(build_step) + if(PTURRET_START_INTERNAL_ARMOUR) + if(!tool.tool_start_check(user, amount = 5)) //uses up 5 fuel + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start to remove the turret's interior metal armor...")) + if(!tool.use_tool(src, user, 20, volume = 50, amount = 5)) //uses up 5 fuel + return ITEM_INTERACT_BLOCKING + build_step = PTURRET_BOLTED + to_chat(user, span_notice("You remove the turret's interior metal armor.")) + new /obj/item/stack/sheet/iron(drop_location(), 2) + return ITEM_INTERACT_SUCCESS + if(PTURRET_START_EXTERNAL_ARMOUR) + if(!tool.tool_start_check(user, amount = 5)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You begin to weld the turret's armor down...")) + if(!tool.use_tool(src, user, 30, volume = 50, amount = 5)) + return ITEM_INTERACT_BLOCKING + build_step = PTURRET_EXTERNAL_ARMOUR_ON + to_chat(user, span_notice("You weld the turret's armor down.")) + + //The final step: create a full turret + + var/obj/machinery/porta_turret/turret + //fuck lasertag turrets + if(istype(installed_gun, /obj/item/gun/energy/laser/bluetag) || istype(installed_gun, /obj/item/gun/energy/laser/redtag)) + turret = new/obj/machinery/porta_turret/lasertag(loc) + else + turret = new/obj/machinery/porta_turret(loc) + turret.name = finish_name + turret.installation = installed_gun.type + turret.setup(installed_gun) + turret.locked = FALSE + qdel(src) + return ITEM_INTERACT_SUCCESS + + return ITEM_INTERACT_SKIP_TO_ATTACK + +/obj/machinery/porta_turret_construct/screwdriver_act(mob/living/user, obj/item/tool) + switch(build_step) if(PTURRET_SENSORS_ON) - if(used.tool_behaviour == TOOL_SCREWDRIVER) - used.play_tool_sound(src, 100) - build_step = PTURRET_CLOSED - to_chat(user, span_notice("You close the internal access hatch.")) - return - + tool.play_tool_sound(src, 100) + build_step = PTURRET_CLOSED + to_chat(user, span_notice("You close the internal access hatch.")) + return ITEM_INTERACT_SUCCESS if(PTURRET_CLOSED) - if(istype(used, /obj/item/stack/sheet/iron)) - var/obj/item/stack/sheet/iron/sheet = used - if(sheet.use(2)) - to_chat(user, span_notice("You add some metal armor to the exterior frame.")) - build_step = PTURRET_START_EXTERNAL_ARMOUR - else - to_chat(user, span_warning("You need two sheets of iron to continue construction!")) - return - - else if(used.tool_behaviour == TOOL_SCREWDRIVER) - used.play_tool_sound(src, 100) - build_step = PTURRET_SENSORS_ON - to_chat(user, span_notice("You open the internal access hatch.")) - return + tool.play_tool_sound(src, 100) + build_step = PTURRET_SENSORS_ON + to_chat(user, span_notice("You open the internal access hatch.")) + return ITEM_INTERACT_SUCCESS - if(PTURRET_START_EXTERNAL_ARMOUR) - if(used.tool_behaviour == TOOL_WELDER) - if(!used.tool_start_check(user, amount = 5)) - return - - to_chat(user, span_notice("You begin to weld the turret's armor down...")) - if(used.use_tool(src, user, 30, volume = 50, amount = 5)) - build_step = PTURRET_EXTERNAL_ARMOUR_ON - to_chat(user, span_notice("You weld the turret's armor down.")) - - //The final step: create a full turret - - var/obj/machinery/porta_turret/turret - //fuck lasertag turrets - if(istype(installed_gun, /obj/item/gun/energy/laser/bluetag) || istype(installed_gun, /obj/item/gun/energy/laser/redtag)) - turret = new/obj/machinery/porta_turret/lasertag(loc) - else - turret = new/obj/machinery/porta_turret(loc) - turret.name = finish_name - turret.installation = installed_gun.type - turret.setup(installed_gun) - turret.locked = FALSE - qdel(src) - return - - else if(used.tool_behaviour == TOOL_CROWBAR) - used.play_tool_sound(src, 75) - to_chat(user, span_notice("You pry off the turret's exterior armor.")) - new /obj/item/stack/sheet/iron(loc, 2) - build_step = PTURRET_CLOSED - return - - if(used.get_writing_implement_details()?["interaction_mode"] == MODE_WRITING) //you can rename turrets like bots! - var/choice = tgui_input_text(user, "Enter a new turret name", "Turret Classification", finish_name, max_length = MAX_NAME_LEN) - if(!choice) - return - if(!user.can_perform_action(src)) - return - - finish_name = choice - return - return ..() + return ITEM_INTERACT_SKIP_TO_ATTACK /obj/machinery/porta_turret_construct/nameformat(input, user) finish_name = input diff --git a/code/game/machinery/porta_turret/turret_control.dm b/code/game/machinery/porta_turret/turret_control.dm index c1b436f3dcc1..f08f35d477c4 100644 --- a/code/game/machinery/porta_turret/turret_control.dm +++ b/code/game/machinery/porta_turret/turret_control.dm @@ -91,27 +91,30 @@ to_chat(user, span_notice("You link \the [multi_tool.buffer] with \the [src].")) return ITEM_INTERACT_SUCCESS -/obj/machinery/turretid/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/turretid/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(machine_stat & BROKEN) - return + return NONE if (issilicon(user)) return attack_hand(user) - var/id = attacking_item.GetID() - - if(isnull(id)) - return + var/card = tool.GetID() - if (check_access(id)) - if(obj_flags & EMAGGED) - to_chat(user, span_warning("The turret control is unresponsive!")) - return + if(isnull(card)) + return NONE - locked = !locked - to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] the panel.")) - else + if(!check_access(card)) to_chat(user, span_alert("Access denied.")) + return ITEM_INTERACT_BLOCKING + + if(obj_flags & EMAGGED) + to_chat(user, span_warning("The turret control is unresponsive!")) + return ITEM_INTERACT_BLOCKING + + locked = !locked + to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] the panel.")) + return ITEM_INTERACT_SUCCESS + /obj/machinery/turretid/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) diff --git a/code/game/machinery/portagrav.dm b/code/game/machinery/portagrav.dm index 27cf859f8d70..6f73f3c781aa 100644 --- a/code/game/machinery/portagrav.dm +++ b/code/game/machinery/portagrav.dm @@ -88,7 +88,7 @@ /obj/machinery/power/portagrav/update_icon_state() . = ..() - icon_state = panel_open ? "[base_icon_state]-o" : base_icon_state + icon_state = panel_open ? "[base_icon_state]_o" : base_icon_state /obj/machinery/power/portagrav/screwdriver_act(mob/living/user, obj/item/tool) return default_deconstruction_screwdriver(user, tool) diff --git a/code/game/machinery/prisonlabor.dm b/code/game/machinery/prisonlabor.dm index f7b2bbb5e24e..ddca8462e97b 100644 --- a/code/game/machinery/prisonlabor.dm +++ b/code/game/machinery/prisonlabor.dm @@ -26,20 +26,21 @@ QDEL_NULL(current_plate) . = ..() -/obj/machinery/plate_press/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/machinery/plate_press/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/license_plates/empty)) + return NONE if(!is_operational) - to_chat(user, span_warning("[src] has to be on to do this!")) - return FALSE + to_chat(user, span_warning("[src] has to be on to be loaded!")) + return ITEM_INTERACT_BLOCKING if(current_plate) to_chat(user, span_warning("[src] already has a plate in it!")) - return FALSE - if(istype(I, /obj/item/stack/license_plates/empty)) - var/obj/item/stack/license_plates/empty/plate = I - plate.use(1) - current_plate = new plate.type(src, 1) //Spawn a new single sheet in the machine - update_appearance() - else - return ..() + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/license_plates/empty/plate = tool + plate.use(1) + current_plate = new plate.type(src, 1) //Spawn a new single sheet in the machine + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/plate_press/attack_hand(mob/living/user, list/modifiers) . = ..() diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f1b527c23cc5..c74466e21ced 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -108,7 +108,7 @@ open_machine() /obj/machinery/recharge_station/screwdriver_act(mob/living/user, obj/item/tool) - return state_open ? NONE : default_deconstruction_screwdriver(user, tool) + return state_open ? default_deconstruction_screwdriver(user, tool) : NONE /obj/machinery/recharge_station/crowbar_act(mob/living/user, obj/item/tool) return default_pry_open(user, tool, close_after_pry = FALSE, open_density = FALSE, closed_density = TRUE, deconstruct_on_fail = TRUE) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 1bc8c9a4fdab..53e3db3f2cff 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -517,19 +517,18 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) to_chat(user, span_warning("You must open the maintenance panel first!")) return TRUE -/obj/machinery/requests_console/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - var/obj/item/card/id/ID = attacking_item.GetID() - if(ID) - message_verified_by = "[ID.registered_name] ([ID.assignment])" - announcement_authenticated = (ACCESS_RC_ANNOUNCE in ID.access) +/obj/machinery/requests_console/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + var/obj/item/card/id/card = tool.GetID() + if(card) + message_verified_by = "[card.registered_name] ([card.assignment])" + announcement_authenticated = (ACCESS_RC_ANNOUNCE in card.access) SStgui.update_uis(src) - return - if (istype(attacking_item, /obj/item/stamp)) - var/obj/item/stamp/attacking_stamp = attacking_item - message_stamped_by = attacking_stamp.name + return ITEM_INTERACT_SUCCESS + if (istype(tool, /obj/item/stamp)) + message_stamped_by = tool.name SStgui.update_uis(src) - return - return ..() + return ITEM_INTERACT_SUCCESS + return NONE /obj/machinery/requests_console/on_deconstruction(disassembled) new /obj/item/wallframe/requests_console(loc) diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm index 7140e2914323..85ab9e2f4ef1 100644 --- a/code/game/machinery/roulette_machine.dm +++ b/code/game/machinery/roulette_machine.dm @@ -116,88 +116,90 @@ update_appearance() // Not applicable to all objects. ///Handles setting ownership and the betting itself. -/obj/machinery/roulette/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(machine_stat & MAINT && is_wire_tool(W)) +/obj/machinery/roulette/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(machine_stat & MAINT && is_wire_tool(tool)) wires.interact(user) - return + return ITEM_INTERACT_SUCCESS if(playing) - return ..() - var/obj/item/card/id/player_card = W.GetID() - if(player_card) - if(isidcard(W)) - playsound(src, 'sound/machines/card_slide.ogg', 50, TRUE) - else - playsound(src, 'sound/machines/terminal/terminal_success.ogg', 50, TRUE) - - if(machine_stat & MAINT || !on || locked) - to_chat(user, span_notice("The machine appears to be disabled.")) - return FALSE - - if(!player_card.registered_account) - say("You don't have a bank account!") - playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) - return FALSE - - if(my_card) - if(IS_DEPARTMENTAL_CARD(player_card)) // Are they using a department ID - say("You cannot gamble with the department budget!") - playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) - return FALSE - if(player_card.registered_account.account_balance < chosen_bet_amount) //Does the player have enough funds - say("You do not have the funds to play! Lower your bet or get more money.") - playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) - return FALSE - if(!chosen_bet_amount || isnull(chosen_bet_type)) - return FALSE - - //double to nothing bets - var/list/doubles = list( - ROULETTE_BET_2TO1_FIRST, - ROULETTE_BET_2TO1_SECOND, - ROULETTE_BET_2TO1_THIRD, - ROULETTE_BET_1TO12, - ROULETTE_BET_13TO24, - ROULETTE_BET_25TO36 - ) - //result of text2num is null if text starts with a character, meaning it's not a singles bet - var/single = !isnull(text2num(chosen_bet_type)) - var/potential_payout_mult - if (single) - potential_payout_mult = ROULETTE_SINGLES_PAYOUT - else - if (chosen_bet_type in doubles) - potential_payout_mult = ROULETTE_DOZ_COL_PAYOUT - else - potential_payout_mult = ROULETTE_SIMPLE_PAYOUT - var/potential_payout = chosen_bet_amount * potential_payout_mult - - if(!check_owner_funds(potential_payout)) - return FALSE //owner is too poor - - if(last_anti_spam > world.time) //do not cheat me - return FALSE - - last_anti_spam = world.time + anti_spam_cooldown - - icon_state = "rolling" //Prepare the new icon state for rolling before hand. - flick("flick_up", src) - playsound(src, 'sound/machines/piston/piston_raise.ogg', 70) - playsound(src, 'sound/machines/chime.ogg', 50) - - addtimer(CALLBACK(src, PROC_REF(play), user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first - return TRUE - else - var/msg = tgui_input_text(user, "Name of your roulette wheel", "Roulette Customization", "Roulette Machine", max_length = MAX_NAME_LEN) - if(!msg) - return - name = msg - desc = "Owned by [player_card.registered_account.account_holder], draws directly from [user.p_their()] account." - my_card = player_card - RegisterSignal(my_card, COMSIG_QDELETING, PROC_REF(on_my_card_deleted)) - to_chat(user, span_notice("You link the wheel to your account.")) - power_change() - return - return ..() + return NONE + var/obj/item/card/id/player_card = tool.GetID() + if(!player_card) + return NONE + if(isidcard(tool)) + playsound(src, 'sound/machines/card_slide.ogg', 50, TRUE) + else + playsound(src, 'sound/machines/terminal/terminal_success.ogg', 50, TRUE) + + if(machine_stat & MAINT || !on || locked) + to_chat(user, span_notice("The machine appears to be disabled.")) + return ITEM_INTERACT_BLOCKING + + if(!player_card.registered_account) + say("You don't have a bank account!") + playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) + return ITEM_INTERACT_BLOCKING + + if(!my_card) + var/msg = tgui_input_text(user, "Name of your roulette wheel", "Roulette Customization", "Roulette Machine", max_length = MAX_NAME_LEN) + if(!msg) + return ITEM_INTERACT_BLOCKING + name = msg + desc = "Owned by [player_card.registered_account.account_holder], draws directly from [user.p_their()] account." + my_card = player_card + RegisterSignal(my_card, COMSIG_QDELETING, PROC_REF(on_my_card_deleted)) + to_chat(user, span_notice("You link the wheel to your account.")) + power_change() + return ITEM_INTERACT_SUCCESS + + if(IS_DEPARTMENTAL_CARD(player_card)) // Are they using a department ID + say("You cannot gamble with the department budget!") + playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) + return ITEM_INTERACT_BLOCKING + + if(player_card.registered_account.account_balance < chosen_bet_amount) //Does the player have enough funds + say("You do not have the funds to play! Lower your bet or get more money.") + playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) + return ITEM_INTERACT_BLOCKING + + if(!chosen_bet_amount || isnull(chosen_bet_type)) + return ITEM_INTERACT_BLOCKING + + //double to nothing bets + var/list/doubles = list( + ROULETTE_BET_2TO1_FIRST, + ROULETTE_BET_2TO1_SECOND, + ROULETTE_BET_2TO1_THIRD, + ROULETTE_BET_1TO12, + ROULETTE_BET_13TO24, + ROULETTE_BET_25TO36 + ) + //result of text2num is null if text starts with a character, meaning it's not a singles bet + var/single = !isnull(text2num(chosen_bet_type)) + var/potential_payout_mult + if(single) + potential_payout_mult = ROULETTE_SINGLES_PAYOUT + else if(chosen_bet_type in doubles) + potential_payout_mult = ROULETTE_DOZ_COL_PAYOUT + else + potential_payout_mult = ROULETTE_SIMPLE_PAYOUT + var/potential_payout = chosen_bet_amount * potential_payout_mult + + if(!check_owner_funds(potential_payout)) + return ITEM_INTERACT_BLOCKING //owner is too poor + + if(last_anti_spam > world.time) //do not cheat me + return ITEM_INTERACT_BLOCKING + + last_anti_spam = world.time + anti_spam_cooldown + + icon_state = "rolling" //Prepare the new icon state for rolling before hand. + flick("flick_up", src) + playsound(src, 'sound/machines/piston/piston_raise.ogg', 70) + playsound(src, 'sound/machines/chime.ogg', 50) + + addtimer(CALLBACK(src, PROC_REF(play), user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first + return ITEM_INTERACT_SUCCESS + ///deletes the my_card ref to prevent harddels /obj/machinery/roulette/proc/on_my_card_deleted(datum/source) diff --git a/code/game/machinery/satellite/satellite_control.dm b/code/game/machinery/satellite/satellite_control.dm index 9983cc439e36..077f4ebba469 100644 --- a/code/game/machinery/satellite/satellite_control.dm +++ b/code/game/machinery/satellite/satellite_control.dm @@ -1,4 +1,5 @@ /obj/machinery/computer/sat_control + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/piratepad_control") name = "satellite control" desc = "Used to control the satellite network." circuit = /obj/item/circuitboard/computer/sat_control diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index e3d42f2bfb4b..9e44968cbc62 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -239,33 +239,36 @@ set_anchored(FALSE) -/obj/machinery/shieldgen/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/stack/cable_coil) && (machine_stat & BROKEN) && panel_open) - var/obj/item/stack/cable_coil/coil = W +/obj/machinery/shieldgen/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/cable_coil) && (machine_stat & BROKEN) && panel_open) + var/obj/item/stack/cable_coil/coil = tool if (coil.get_amount() < 1) to_chat(user, span_warning("You need one length of cable to repair [src]!")) - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You begin to replace the wires...")) - if(do_after(user, 3 SECONDS, target = src)) - if(coil.get_amount() < 1) - return - coil.use(1) - atom_integrity = max_integrity - set_machine_stat(machine_stat & ~BROKEN) - to_chat(user, span_notice("You repair \the [src].")) - update_appearance() + if(!do_after(user, 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + if(coil.get_amount() < 1) + return ITEM_INTERACT_BLOCKING + coil.use(1) + atom_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + to_chat(user, span_notice("You repair \the [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS - else if(W.GetID()) - if(allowed(user) && !(obj_flags & EMAGGED)) - locked = !locked - to_chat(user, span_notice("You [locked ? "lock" : "unlock"] the controls.")) - else if(obj_flags & EMAGGED) + if(tool.GetID()) + if(obj_flags & EMAGGED) to_chat(user, span_danger("Error, access controller damaged!")) - else + return ITEM_INTERACT_BLOCKING + if(!allowed(user)) to_chat(user, span_danger("Access denied.")) + return ITEM_INTERACT_BLOCKING + locked = !locked + to_chat(user, span_notice("You [locked ? "lock" : "unlock"] the controls.")) + return ITEM_INTERACT_SUCCESS - else - return ..() + return NONE /obj/machinery/shieldgen/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) @@ -464,22 +467,24 @@ return default_deconstruction_crowbar(user, tool) -/obj/machinery/power/shieldwallgen/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(W.GetID()) - if(allowed(user) && !(obj_flags & EMAGGED)) - locked = !locked - balloon_alert(user, "[locked ? "locked!" : "unlocked"]") - else if(obj_flags & EMAGGED) +/obj/machinery/power/shieldwallgen/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.GetID()) + if(obj_flags & EMAGGED) balloon_alert(user, "malfunctioning!") - else + return ITEM_INTERACT_BLOCKING + if(!allowed(user)) balloon_alert(user, "no access!") - return + return ITEM_INTERACT_BLOCKING + locked = !locked + balloon_alert(user, "[locked ? "locked!" : "unlocked"]") + return ITEM_INTERACT_SUCCESS add_fingerprint(user) - if(is_wire_tool(W) && panel_open) + if(is_wire_tool(tool) && panel_open) wires.interact(user) - return + return ITEM_INTERACT_SUCCESS + + return NONE /obj/machinery/power/shieldwallgen/interact(mob/user) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 698b7e3afd3a..867319561574 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -421,36 +421,40 @@ . = TRUE ///Slightly modified to ignore the open_hatch - it's always open, we hacked it. -/obj/machinery/space_heater/improvised_chem_heater/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/space_heater/improvised_chem_heater/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(default_deconstruction_crowbar(user, item)) - return - if(istype(item, /obj/item/stock_parts/power_store/cell)) + if(istype(tool, /obj/item/stock_parts/power_store/cell)) if(cell) to_chat(user, span_warning("There is already a power cell inside!")) - return - else if(!user.transferItemToLoc(item, src)) - return - cell = item - item.add_fingerprint(usr) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + cell = tool + tool.add_fingerprint(usr) user.visible_message(span_notice("\The [user] inserts a power cell into \the [src]."), span_notice("You insert the power cell into \the [src].")) SStgui.update_uis(src) + return ITEM_INTERACT_SUCCESS + //reagent containers - if(is_reagent_container(item) && !(item.item_flags & ABSTRACT) && item.is_open_container()) - . = TRUE //no afterattack - var/obj/item/reagent_containers/container = item + if(is_reagent_container(tool) && !(tool.item_flags & ABSTRACT) && tool.is_open_container()) + var/obj/item/reagent_containers/container = tool if(!user.transferItemToLoc(container, src)) - return + return ITEM_INTERACT_BLOCKING replace_beaker(user, container) to_chat(user, span_notice("You add [container] to [src]'s water bath.")) ui_interact(user) - return + return ITEM_INTERACT_SUCCESS + + if(!beaker|| !is_type_in_list(tool, list(/obj/item/reagent_containers/dropper, /obj/item/ph_meter, /obj/item/ph_paper, /obj/item/reagent_containers/syringe))) + return NONE //Dropper tools - if(beaker) - if(is_type_in_list(item, list(/obj/item/reagent_containers/dropper, /obj/item/ph_meter, /obj/item/ph_paper, /obj/item/reagent_containers/syringe))) - item.interact_with_atom(beaker, user) - return + tool.interact_with_atom(beaker, user) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/space_heater/crowbar_act(mob/living/user, obj/item/tool) + add_fingerprint(user) + return default_deconstruction_crowbar(user, tool) /obj/machinery/space_heater/improvised_chem_heater/on_deconstruction(disassembled = TRUE) . = ..() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 942344a30d62..2708c67d1683 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -196,24 +196,28 @@ return TRUE -/obj/machinery/syndicatebomb/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - - if(is_wire_tool(I) && open_panel) +/obj/machinery/syndicatebomb/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(is_wire_tool(tool) && open_panel) wires.interact(user) + return ITEM_INTERACT_SUCCESS - else if(istype(I, /obj/item/bombcore)) - if(!payload) - if(!user.transferItemToLoc(I, src)) - return - payload = I - to_chat(user, span_notice("You place [payload] into [src].")) - else + if(istype(tool, /obj/item/bombcore)) + if(payload) to_chat(user, span_warning("[payload] is already loaded into [src]! You'll have to remove it first.")) - else - var/old_integ = atom_integrity - . = ..() - if((old_integ > atom_integrity) && active && (payload in src)) - to_chat(user, span_warning("That seems like a really bad idea...")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + payload = tool + to_chat(user, span_notice("You place [payload] into [src].")) + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/machinery/syndicatebomb/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) + var/old_integ = atom_integrity + . = ..() + if((old_integ > atom_integrity) && active && payload) + to_chat(user, span_warning("That seems like a really bad idea...")) /obj/machinery/syndicatebomb/interact(mob/user) wires.interact(user) @@ -554,23 +558,26 @@ playsound(loc, 'sound/effects/bamf.ogg', 75, TRUE, 5) -/obj/item/bombcore/chemical/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_CROWBAR && beakers.len > 0) - I.play_tool_sound(src) - for (var/obj/item/B in beakers) - B.forceMove(drop_location()) - beakers -= B - return - else if(istype(I, /obj/item/reagent_containers/cup/beaker) || istype(I, /obj/item/reagent_containers/cup/bottle)) - if(beakers.len < max_beakers) - if(!user.transferItemToLoc(I, src)) - return - beakers += I - to_chat(user, span_notice("You load [src] with [I].")) - else - to_chat(user, span_warning("[I] won't fit! \The [src] can only hold up to [max_beakers] containers.")) - return - ..() +/obj/item/bombcore/chemical/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/reagent_containers/cup/beaker) && !istype(tool, /obj/item/reagent_containers/cup/bottle)) + return NONE + if(beakers.len >= max_beakers) + to_chat(user, span_warning("[tool] won't fit! \The [src] can only hold up to [max_beakers] containers.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + beakers += tool + to_chat(user, span_notice("You load [src] with [tool].")) + return ITEM_INTERACT_SUCCESS + +/obj/item/bombcore/chemical/crowbar_act(mob/living/user, obj/item/tool) + if(!beakers.len) + return NONE + tool.play_tool_sound(src) + for (var/obj/item/beaker in beakers) + beaker.forceMove(drop_location()) + beakers -= beaker + return ITEM_INTERACT_SUCCESS /obj/item/bombcore/chemical/on_craft_completion(list/components, datum/crafting_recipe/current_recipe, atom/crafter) // Using different grenade casings, causes the payload to have different properties. diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 68e469d1db96..bd483d279761 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -106,10 +106,6 @@ copy.levels = levels return copy -/// Past this amount of compression, the resulting gibberish will actually -/// replace characters, making it even harder to understand. -#define COMPRESSION_REPLACE_CHARACTER_THRESHOLD 30 - /// This is the meat function for making radios hear vocal transmissions. /datum/signal/subspace/vocal/broadcast() set waitfor = FALSE @@ -161,19 +157,43 @@ for(var/obj/item/radio/called_radio as anything in radios) called_radio.on_receive_message(data) + var/list/message_mods = data["mods"] - // From the list of radios, find all mobs who can hear those. - var/list/receive = get_hearers_in_radio_ranges(radios) + var/tts_radio_id = LAZYACCESS(message_mods, MODE_TTS_IDENTIFIER) + // Flat list of mobs who can hear the message + var/list/receive + // Assoc list of weakref to a radio to list of weakrefs to mobs who can hear the message + var/list/receive_radios + + if(tts_radio_id) // only do this if we have a TTS identifier to save on perf + receive = list() + receive_radios = list() + for(var/radio, radio_hearers in get_hearers_in_radio_ranges_track_radios(radios)) + receive |= radio_hearers + var/datum/weakref/radio_ref = WEAKREF(radio) + for(var/mob/possible_hearer in radio_hearers) + if(!isnull(possible_hearer.client) && can_hear_radio_tts(possible_hearer, frequency)) + receive_radios[radio_ref] ||= list() + receive_radios[radio_ref] += WEAKREF(possible_hearer) + + else + receive = get_hearers_in_radio_ranges(radios) // Add observers who have ghost radio enabled. for(var/mob/dead/observer/ghost in GLOB.player_list) if(get_chat_toggles(ghost.client) & CHAT_GHOSTRADIO) receive |= ghost + if(tts_radio_id && can_hear_radio_tts(ghost, frequency)) + receive_radios[TTS_GHOST_RADIO] ||= list() + receive_radios[TTS_GHOST_RADIO] += WEAKREF(ghost) + + if(tts_radio_id && length(receive_radios)) + SStts.queued_radio_messages[tts_radio_id] = receive_radios + SStts.queued_radio_messages_compression[tts_radio_id] = compression // Render the message and have everybody hear it. // Always call this on the virtualspeaker to avoid issues. var/spans = data["spans"] - var/list/message_mods = data["mods"] for(var/atom/movable/hearer as anything in receive) if(!hearer) @@ -207,5 +227,3 @@ log_telecomms("[virt.source] [log_text] [loc_name(get_turf(virt.source))]") QDEL_IN(virt, 5 SECONDS) // Make extra sure the virtualspeaker gets qdeleted - -#undef COMPRESSION_REPLACE_CHARACTER_THRESHOLD diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index e09e08b7a3d7..9bb4e5316c2b 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -4,6 +4,7 @@ /obj/machinery/computer/telecomms/server name = "telecommunications server monitoring console" + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/telecomms/server") icon_screen = "comm_logs" desc = "Has full access to all details and record of the telecommunications network it's monitoring." diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 20b77b00ee67..c64b420993e6 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -11,6 +11,7 @@ /obj/machinery/computer/message_monitor name = "message monitor console" desc = "Used to monitor the crew's PDA messages, as well as request console messages." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/telecomms/server") icon_screen = "comm_logs" circuit = /obj/item/circuitboard/computer/message_monitor light_color = LIGHT_COLOR_GREEN @@ -119,6 +120,20 @@ data["requests"] = request_list return data +/obj/machinery/computer/message_monitor/ui_static_data(mob/user) + var/list/data = list() + data["is_on_station"] = is_on_station() + return data + +/// Check if this console is on the station and in a valid area +/obj/machinery/computer/message_monitor/proc/is_on_station() + if(!is_station_level(z)) + return FALSE + var/area/station/area = get_area(src) + if(isnull(area) || !(area.area_flags & VALID_TERRITORY)) + return FALSE + return TRUE + /obj/machinery/computer/message_monitor/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) @@ -150,7 +165,11 @@ message_servers += message_server if(length(message_servers) > 1) - set_linked_server(tgui_input_list(usr, "Please select a server", "Server Selection", message_servers)) + var/selected_server = tgui_input_list(usr, "Please select a server", "Server Selection", message_servers) + if(QDELETED(src) || !is_operational || !usr.can_interact_with(src)) + screen = MSG_MON_SCREEN_MAIN + return TRUE + set_linked_server(selected_server) if(linked_server) notice_message = "NOTICE: Server selected." else if(length(message_servers) == 1) @@ -182,10 +201,17 @@ notice_message = "NOTICE: Logs cleared." return TRUE if("set_key") + if(!is_on_station()) + return TRUE + var/dkey = tgui_input_text(usr, "Please enter the decryption key", "Telecomms Decryption", max_length = 16) + if(QDELETED(src) || !is_operational || !usr.can_interact_with(src)) + return TRUE if(dkey && dkey != "") if(linked_server.decryptkey == dkey) var/newkey = tgui_input_text(usr, "Please enter the new key (3 - 16 characters max)", "New Key", max_length = 16) + if(QDELETED(src) || !is_operational || !usr.can_interact_with(src)) + return TRUE if(length(newkey) <= 3) notice_message = "NOTICE: Decryption key too short!" else if(newkey && newkey != "") @@ -238,10 +264,12 @@ if(isnull(recipient)) notice_message = "NOTICE: No recipient selected!" - return attack_hand(usr) + return TRUE if(isnull(message) || message == "") notice_message = "NOTICE: No message entered!" - return attack_hand(usr) + return TRUE + if(QDELETED(src) || !is_operational || !usr.can_interact_with(src)) + return TRUE var/datum/signal/subspace/messaging/tablet_message/signal = new(src, list( "fakename" = "[sender]", diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm index ff7b10dbd0f4..ac2ac00a8963 100644 --- a/code/game/machinery/telecomms/computers/telemonitor.dm +++ b/code/game/machinery/telecomms/computers/telemonitor.dm @@ -6,7 +6,7 @@ name = "telecommunications monitoring console" desc = "Monitors the details of the telecommunications network it's synced with." circuit = /obj/item/circuitboard/computer/comm_monitor - + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/telecomms/monitor") icon_screen = "comm_monitor" /// Weakref of the currently selected tcomms machine diff --git a/code/game/machinery/telecomms/machines/allinone.dm b/code/game/machinery/telecomms/machines/allinone.dm index 10952a88abee..377a8f1d9195 100644 --- a/code/game/machinery/telecomms/machines/allinone.dm +++ b/code/game/machinery/telecomms/machines/allinone.dm @@ -117,6 +117,6 @@ sleep(signal.data["slow"]) // simulate the network lag if necessary signal.broadcast() -/obj/machinery/telecomms/allinone/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(attacking_item.tool_behaviour == TOOL_MULTITOOL) - return attack_hand(user) +/obj/machinery/telecomms/allinone/multitool_act(mob/living/user, obj/item/tool) + attack_hand(user) + return ITEM_INTERACT_SUCCESS diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index eaa27f20794d..82eb339f17c4 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -34,18 +34,21 @@ to_chat(user, span_warning("It seems that the blackbox is missing...")) return -/obj/machinery/blackbox_recorder/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/blackbox)) - if(HAS_TRAIT(attacking_item, TRAIT_NODROP) || !user.transferItemToLoc(attacking_item, src)) - to_chat(user, span_warning("[attacking_item] is stuck to your hand!")) - return - user.visible_message(span_notice("[user] clicks [attacking_item] into [src]!"), \ - span_notice("You press the device into [src], and it clicks into place. The tapes begin spinning again.")) - playsound(src, 'sound/machines/click.ogg', 50, TRUE) - stored = attacking_item - update_appearance() - return - return ..() +/obj/machinery/blackbox_recorder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/blackbox)) + return NONE + if(stored) + to_chat(user, span_warning("There's already a blackbox in \the [src].")) //something's gone wrong to get here, but you know, it could happen + return ITEM_INTERACT_BLOCKING + if(HAS_TRAIT(tool, TRAIT_NODROP) || !user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("[tool] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] clicks [tool] into [src]!"), \ + span_notice("You press the device into [src], and it clicks into place. The tapes begin spinning again.")) + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + stored = tool + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/blackbox_recorder/Destroy() if(stored) @@ -104,7 +107,7 @@ . = ..() if (calibrating) calibrating += world.time - say("Calibrating... Estimated wait time: [rand(3, 9)] minutes.") + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, say), "Calibrating... Estimated wait time: [rand(3, 9)] minutes.") pda_msgs += new /datum/data_tablet_msg("System Administrator", "system", "This is an automated message. System calibration started at [server_timestamp(ic_time = TRUE)].") // DARKPACK EDIT CHANGE - CITY_TIME else pda_msgs += new /datum/data_tablet_msg("System Administrator", "system", MESSAGE_SERVER_FUNCTIONING_MESSAGE) diff --git a/code/game/machinery/wall_healer.dm b/code/game/machinery/wall_healer.dm index 4789b59d390e..a865477563e7 100644 --- a/code/game/machinery/wall_healer.dm +++ b/code/game/machinery/wall_healer.dm @@ -1,3 +1,5 @@ +#define WALL_HEALER_OFFSET 32 + /// A wall mounted machine that heals chip damage for a price /obj/machinery/wall_healer name = "\improper DeForest first aid station" @@ -10,6 +12,7 @@ payment_department = ACCOUNT_MED max_integrity = 150 armor_type = /datum/armor/obj_machinery/wall_healer + circuit = /obj/item/circuitboard/machine/wall_healer /// Cost per bandage dispensed. Note, always disregarded on red alert. var/per_bandage_cost = (/obj/item/stack/medical/wrap/gauze::custom_price) / (/obj/item/stack/medical/wrap/gauze::amount) @@ -51,26 +54,29 @@ VAR_PRIVATE/antispam_counter = 0 /datum/armor/obj_machinery/wall_healer - melee = 50 - bullet = 30 + melee = 20 + bullet = 20 laser = 30 - energy = 40 + energy = 30 bomb = 10 fire = 80 acid = 80 + bio = 100 /obj/machinery/wall_healer/Initialize(mapload) . = ..() if(!mapload) + num_bandages = 0 brute_healing = 0 burn_healing = 0 tox_healing = 0 blood_healing = 0 update_appearance() + if(istype(circuit) && (circuit.obj_flags & EMAGGED)) + obj_flags |= EMAGGED init_payment() register_context() - if(mapload) - find_and_mount_on_atom() + find_and_mount_on_atom() /obj/machinery/wall_healer/Destroy() clear_using_mob() @@ -85,6 +91,30 @@ if(istype(held_item, /obj/item/stack/medical/wrap/gauze)) context[SCREENTIP_CONTEXT_LMB] = "Restock" return CONTEXTUAL_SCREENTIP_SET + if(held_item?.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel" + return CONTEXTUAL_SCREENTIP_SET + if(held_item?.tool_behaviour == TOOL_CROWBAR && can_crowbar_deconstruct()) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" + return CONTEXTUAL_SCREENTIP_SET + return NONE + +// Someone please add generic support for constructing wall mounted objects thanks +/obj/machinery/wall_healer/on_construction(mob/user) + if(user.dir & NORTH) + pixel_y += WALL_HEALER_OFFSET + else if(user.dir & SOUTH) + pixel_y -= WALL_HEALER_OFFSET + + if(user.dir & EAST) + pixel_x += WALL_HEALER_OFFSET + else if(user.dir & WEST) + pixel_x -= WALL_HEALER_OFFSET + + if(!find_and_mount_on_atom()) + stack_trace("Got to on_construction for [type], but failed to mount on a wall! This should be asserted from construction requirements.") + loc.balloon_alert(user, "no wall to install on!") + deconstruct(TRUE) /obj/machinery/wall_healer/proc/refill_healing_pool(percent = 100) var/amount_refilled = 0 @@ -126,6 +156,9 @@ /obj/machinery/wall_healer/update_overlays() . = ..() + if(panel_open) + . += "open" + var/brute_state = 7 - round(7 * (brute_healing / initial(brute_healing)), 1) var/mutable_appearance/brute = mutable_appearance(icon, "bar[brute_state]", alpha = src.alpha, appearance_flags = RESET_COLOR) brute.color = /datum/reagent/medicine/c2/libital::color @@ -162,8 +195,21 @@ visible_message(span_warning("Sparks fly out of [src]!")) balloon_alert(user, "safeties disabled") obj_flags |= EMAGGED + circuit?.obj_flags |= EMAGGED return TRUE +/obj/machinery/wall_healer/screwdriver_act(mob/living/user, obj/item/tool) + return screwdriver_act_secondary(user, tool) + +/obj/machinery/wall_healer/screwdriver_act_secondary(mob/living/user, obj/item/tool) + return default_deconstruction_screwdriver(user, tool) + +/obj/machinery/wall_healer/crowbar_act(mob/living/user, obj/item/tool) + return crowbar_act_secondary(user, tool) + +/obj/machinery/wall_healer/crowbar_act_secondary(mob/living/user, obj/item/tool) + return default_deconstruction_crowbar(user, tool) + /// We want user to be right up to the wall mount to use it /// However people may often map the machine over a table /// In those contexts, they should be allowed to reach over the table @@ -354,7 +400,8 @@ var/atom/drop_loc = drop_location() for(var/obj/item/stack/medical/wrap/gauze/bandage as anything in stocked_bandages) bandage.forceMove(drop_loc) - new /obj/item/stack/medical/wrap/gauze(drop_loc, num_bandages) + if(num_bandages > 0) + new /obj/item/stack/medical/wrap/gauze(drop_loc, num_bandages) /obj/machinery/wall_healer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!istype(tool, /obj/item/stack/medical/wrap/gauze)) @@ -556,12 +603,17 @@ update(COOLDOWN_FINISHED(healer, injection_cooldown) ? 0 : COOLDOWN_TIMELEFT(healer, injection_cooldown)) -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer, 32) +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer, WALL_HEALER_OFFSET) /obj/machinery/wall_healer/free name = "\improper DeForest emergency first aid station" + circuit = /obj/item/circuitboard/machine/wall_healer/free + recharge_cd_length = 60 SECONDS + injection_cd_length = 2 SECONDS /obj/machinery/wall_healer/free/init_payment() return -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer/free, 32) +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/wall_healer/free, WALL_HEALER_OFFSET) + +#undef WALL_HEALER_OFFSET diff --git a/code/game/machinery/wall_vitals.dm b/code/game/machinery/wall_vitals.dm index beb8ecc1d7dc..8c4065562b9e 100644 --- a/code/game/machinery/wall_vitals.dm +++ b/code/game/machinery/wall_vitals.dm @@ -45,7 +45,7 @@ light_color = LIGHT_COLOR_FAINT_CYAN /// Whether we perform an advanced scan on examine or not - var/advanced = FALSE + var/scanpower = SCANPOWER_BASIC /// If TRUE, also append a chemical scan to the readout var/chemscan = TRUE /// Typepath to spawn when deconstructed @@ -80,7 +80,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/vitals_reader, 32) desc = "A screen that displays the vitals of a patient. \ Performs a more detailed scan of the patient than a basic display." frame = /obj/item/wallframe/status_display/vitals/advanced - advanced = TRUE + scanpower = SCANPOWER_ADVANCED MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/vitals_reader/advanced, 32) @@ -226,7 +226,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/vitals_reader/advanced, 32) else if(HAS_TRAIT(user, TRAIT_DUMB) || !user.can_read(src, reading_check_flags = READING_CHECK_LITERACY, silent = TRUE)) . += span_warning("You try to comprehend the display, but it's too complex for you to understand.") else - . += healthscan(user, patient, mode = SCANNER_CONDENSED, advanced = src.advanced, tochat = FALSE) + . += healthscan(user, patient, mode = SCANNER_CONDENSED, scanpower = src.scanpower, tochat = FALSE) . += chemscan(user, patient, tochat = FALSE) /obj/machinery/vitals_reader/add_context(atom/source, list/context, obj/item/held_item, mob/user) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 567f0933d124..d0e8a37bb93b 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -155,6 +155,7 @@ * force - TRUE if we should ignore buckled_mob.can_buckle_to */ /atom/movable/proc/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE) + if(!isliving(buckled_mob)) CRASH("Non-living [buckled_mob] thing called unbuckle_mob() for source.") if(buckled_mob.buckled != src) @@ -203,7 +204,7 @@ if(!has_buckled_mobs()) return for(var/m in buckled_mobs) - unbuckle_mob(m, force) + INVOKE_ASYNC(src, PROC_REF(unbuckle_mob), m, force) //Handle any extras after buckling //Called on buckle_mob() diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 91e858273ec2..a4c1e9306972 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -123,6 +123,14 @@ if (blood_type.reagent_type == /datum/reagent/blood) return TRUE +/obj/effect/decal/cleanable/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) + if (!isliving(user)) + return ..() + var/mob/living/as_living = user + if (as_living.combat_mode) + return TRUE + return ..() + /// Creates a cleanable decal on a turf /// Use this if your decal is one of one, and thus we should not spawn it if it's there already /// Returns either the existing cleanable, the one we created, or null if we can't spawn on that turf diff --git a/code/game/objects/effects/decals/cleanable/blood.dm b/code/game/objects/effects/decals/cleanable/blood.dm index 82253bfabf1a..b44e40f37810 100644 --- a/code/game/objects/effects/decals/cleanable/blood.dm +++ b/code/game/objects/effects/decals/cleanable/blood.dm @@ -50,6 +50,8 @@ can_hold_viruses = TRUE break . = ..(diseases = can_hold_viruses ? diseases : null) + if(. == INITIALIZE_HINT_QDEL) + return if(islist(blood_or_dna)) add_blood_DNA(blood_or_dna) else if(istype(blood_or_dna, /datum/blood_type)) diff --git a/code/game/objects/effects/decals/cleanable/fuel.dm b/code/game/objects/effects/decals/cleanable/fuel.dm index a55ff28e10d1..6dbd03ac8bea 100644 --- a/code/game/objects/effects/decals/cleanable/fuel.dm +++ b/code/game/objects/effects/decals/cleanable/fuel.dm @@ -82,11 +82,12 @@ ignite() log_combat(hit_proj.firer, src, "used [hit_proj] to ignite") -/obj/effect/decal/cleanable/fuel_pool/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(item.ignition_effect(src, user)) - ignite() - log_combat(user, src, "used [item] to ignite") - return ..() +/obj/effect/decal/cleanable/fuel_pool/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.ignition_effect(src, user)) + return ..() + ignite() + log_combat(user, src, "used [tool] to ignite") + return ITEM_INTERACT_SUCCESS /obj/effect/decal/cleanable/fuel_pool/proc/on_entered(datum/source, atom/movable/entered_atom) SIGNAL_HANDLER diff --git a/code/game/objects/effects/decals/cleanable/mess.dm b/code/game/objects/effects/decals/cleanable/mess.dm index e496b48acbda..d8346491066c 100644 --- a/code/game/objects/effects/decals/cleanable/mess.dm +++ b/code/game/objects/effects/decals/cleanable/mess.dm @@ -41,6 +41,8 @@ /obj/effect/decal/cleanable/glass/Initialize(mapload) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return setDir(pick(GLOB.cardinals)) /obj/effect/decal/cleanable/glass/ex_act() @@ -77,6 +79,8 @@ /obj/effect/decal/cleanable/dirt/Initialize(mapload) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return icon_state = pick("dirt-flat-0","dirt-flat-1","dirt-flat-2","dirt-flat-3") var/obj/structure/broken_flooring/broken_flooring = locate(/obj/structure/broken_flooring) in loc if(!isnull(broken_flooring)) @@ -140,6 +144,8 @@ /obj/effect/decal/cleanable/greenglow/radioactive/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return AddComponent( /datum/component/radioactive_emitter, \ cooldown_time = 5 SECONDS, \ @@ -228,6 +234,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/vomit/nebula/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return update_appearance(UPDATE_OVERLAYS) GLOB.nebula_vomits += src @@ -245,6 +253,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/vomit/nebula/worms/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return for (var/i in 1 to rand(2, 3)) new /mob/living/basic/hivelord_brood(loc) @@ -254,6 +264,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/vomit/old/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return icon_state += "-old" AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 10) @@ -302,6 +314,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/glitter/Initialize(mapload, list/datum/disease/diseases) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return add_overlay(mutable_appearance('icons/effects/glitter.dmi', "glitter_sparkle[rand(1,9)]", appearance_flags = EMISSIVE_APPEARANCE_FLAGS)) /obj/effect/decal/cleanable/plasma @@ -369,6 +383,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/garbage/Initialize(mapload) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return icon_state = "garbage[rand(1, 6)]" // DARKPACK EDIT ADD AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 15) @@ -391,6 +407,8 @@ GLOBAL_LIST_EMPTY(nebula_vomits) /obj/effect/decal/cleanable/rubble/Initialize(mapload) . = ..() + if(. == INITIALIZE_HINT_QDEL) + return flick("rubble_bounce", src) icon_state = "rubble" update_appearance(UPDATE_ICON_STATE) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index bbd451584d2a..ada037b02be7 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -68,7 +68,7 @@ if(ishuman(outlined_atom)) //humans are special, we want to exclude things like wounds so the outline isn't animated. var/mob/living/carbon/human/human_outline = outlined_atom - add_overlay(human_outline.get_overlays_copy(list(WOUND_LAYER, HALO_LAYER))) + add_overlay(human_outline.get_overlays_copy(list(WOUND_LAYER))) else icon = outlined_atom.icon icon_state = outlined_atom.icon_state diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index b8069b0ab41a..1839ec498b93 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -70,7 +70,7 @@ // If the tile uses holiday colors, apply them here if(use_holiday_colors) - var/custom_color = request_station_colors(src, pattern) || request_holiday_colors(src, pattern) + var/custom_color = request_decoration_colors(src, pattern) if(custom_color) color = custom_color alpha = DECAL_ALPHA diff --git a/code/game/objects/effects/decals/turfdecal/tilecoloring.dm b/code/game/objects/effects/decals/turfdecal/tilecoloring.dm index 737219f00a9e..9e7438660d3d 100644 --- a/code/game/objects/effects/decals/turfdecal/tilecoloring.dm +++ b/code/game/objects/effects/decals/turfdecal/tilecoloring.dm @@ -143,7 +143,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark) color = COLOR_RED /obj/effect/turf_decal/tile/holiday/Initialize(mapload) - color = request_holiday_colors(src, pattern) + color = request_decoration_colors(src, pattern, skip_station_trait = TRUE) alpha = DECAL_ALPHA return ..() @@ -176,7 +176,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/holiday/random) /obj/effect/turf_decal/trimline/tram/filled/corner/Initialize(mapload) if(use_holiday_colors) - var/current_holiday_color = request_holiday_colors(src, pattern) + var/current_holiday_color = request_decoration_colors(src, pattern) if(current_holiday_color) color = current_holiday_color alpha = DECAL_ALPHA @@ -186,7 +186,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/holiday/random) /obj/effect/turf_decal/trimline/tram/filled/line/Initialize(mapload) if(use_holiday_colors) - var/current_holiday_color = request_holiday_colors(src, pattern) + var/current_holiday_color = request_decoration_colors(src, pattern) if(current_holiday_color) color = current_holiday_color alpha = DECAL_ALPHA diff --git a/code/game/objects/effects/effect_system/effects_trail.dm b/code/game/objects/effects/effect_system/effects_trail.dm index fa0e688fe92c..d04d3f23e24d 100644 --- a/code/game/objects/effects/effect_system/effects_trail.dm +++ b/code/game/objects/effects/effect_system/effects_trail.dm @@ -101,3 +101,14 @@ /datum/effect_system/trail_follow/ion/grav_allowed nograv_required = FALSE + + +/datum/effect_system/trail_follow/smoke + effect_type = /obj/effect/particle_effect/smoke_trail + fadetype = "smoke_trail" + qdel_in_time = 2.3 SECONDS + +/obj/effect/particle_effect/smoke_trail + name = "smoke trails" + icon_state = "smoke_trail" + anchored = TRUE diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm index cea1190aa66d..5c5d108eeb3b 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm @@ -296,8 +296,8 @@ QDEL_NULL(hotspot) var/datum/gas_mixture/air = location.air - if (air.gases[/datum/gas/plasma]) - var/scrub_amt = min(30, air.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma + if (air.moles[/datum/gas/plasma]) + var/scrub_amt = min(30, air.moles[/datum/gas/plasma]) //Absorb some plasma air.adjust_gas(/datum/gas/plasma, -scrub_amt) absorbed_plasma += scrub_amt if (air.temperature > T20C) @@ -452,10 +452,10 @@ for(var/obj/effect/hotspot/fire in location) qdel(fire) - var/list/gases = air.gases - for(var/gas_type in gases) - if(!(ignored_gases[gas_type])) - gases[gas_type][MOLES] = 0 + var/list/cached_moles = air.moles + for(var/gas_id in cached_moles) + if(!(ignored_gases[gas_id])) + cached_moles[gas_id] = 0 air.garbage_collect() for(var/obj/machinery/atmospherics/components/unary/comp in location) diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm index cca69643fb36..1f7c671555e4 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm @@ -297,8 +297,8 @@ if(!distcheck || get_dist(location, chilly) < blast) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air air.temperature = temperature - if(air.gases[/datum/gas/plasma]) - var/mole_count = air.gases[/datum/gas/plasma][MOLES] + if(air.moles[/datum/gas/plasma]) + var/mole_count = air.moles[/datum/gas/plasma] air.adjust_gas(/datum/gas/nitrogen, mole_count) air.adjust_gas(/datum/gas/plasma, -mole_count) air.garbage_collect() diff --git a/code/game/objects/effects/mining_mob_respawner.dm b/code/game/objects/effects/mining_mob_respawner.dm new file mode 100644 index 000000000000..fe98fd02df0a --- /dev/null +++ b/code/game/objects/effects/mining_mob_respawner.dm @@ -0,0 +1,183 @@ +/// Respawns a mob if it's died and there's a storm +/obj/effect/mining_mob_respawner + icon = 'icons/turf/overlays.dmi' + icon_state = "explodable" + invisibility = INVISIBILITY_ABSTRACT + /// Do we check the outdoorsness of our spawn tile? + var/outdoor_only = TRUE + /// Are we waiting for a mob to spawn so we can link to it? + var/registered_spawn_signal = FALSE + // Spawn somewhere in an area around the spawner rather than dead on it + var/respawn_range = 3 + /// Min time from storm to spawn a mob + var/min_delay = 1 SECONDS + /// Max time from storm to spawn a mob + var/max_delay = 10 SECONDS + /// Our currently spawned mob + var/datum/weakref/our_mob + /// Weighted list of things we can spawn + var/list/valid_mobs = list() + /// List of things we want to remove from our spawner list before using it + var/list/invalid_mobs = list( + SPAWN_MEGAFAUNA, + /obj/effect/spawner/random/lavaland_mob/raptor, + /mob/living/basic/mining/tendril, + ) + /// Types of storm that respawn mobs, we might as well make it static because it's only used on init so there's no point in it supporting VV edits + var/static/list/valid_weather = list( + /datum/weather/particle/ash_storm, + /datum/weather/sand_storm, // We don't have any mining areas with sand but someone might start one there with an anomaly + /datum/weather/snow_storm, + ) + +/obj/effect/mining_mob_respawner/Initialize(mapload) + . = ..() + + if (mapload && length(valid_mobs)) + var/list/filtered_mobs = list() + for (var/path in valid_mobs) + if (!(path in invalid_mobs)) + filtered_mobs += path + valid_mobs = filtered_mobs + + if (!our_mob?.resolve() && !registered_spawn_signal) + make_mob() + + // We're just going to go ahead and assume these won't move after being spawned + for (var/weather in valid_weather) + RegisterSignal(get_area(src), COMSIG_WEATHER_BEGAN_IN_AREA(weather), PROC_REF(on_storm_event)) + +/// Let the map generator system pass us a list of mobs +/obj/effect/mining_mob_respawner/proc/setup(list/valid_mobs, atom/initial_spawn) + src.valid_mobs = valid_mobs + + if (istype(initial_spawn, /obj/effect/spawner/random)) + RegisterSignal(get_turf(src), COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(get_spawned_mob)) + registered_spawn_signal = TRUE + else + register_spawn(src, initial_spawn) + +/// Record something as our spawn, so we don't need to spawn something else +/obj/effect/mining_mob_respawner/proc/register_spawn(atom/source, atom/new_spawn) + SIGNAL_HANDLER + if (!new_spawn) + return + if (isliving(new_spawn)) + our_mob = WEAKREF(new_spawn) + +/// Make a guy and subscribe to see if they die +/obj/effect/mining_mob_respawner/proc/make_mob() + if (!length(valid_mobs)) + return + var/spawn_path = pick(valid_mobs) + + var/list/valid_locations = list() + + for(var/turf/turf_in_view in view(respawn_range, get_turf(src))) + if (isclosedturf(turf_in_view) || (isgroundlessturf(turf_in_view))) + continue + if (outdoor_only) + var/area/turf_area = get_area(turf_in_view) + if (!turf_area.outdoors) // Don't spawn inside a miner's little pod house + continue + valid_locations += turf_in_view + + if (!length(valid_locations)) + return + + var/turf/spawn_turf = pick(valid_locations) + // Bit roundabout but it's the only way of intercepting mob spawners + RegisterSignal(spawn_turf, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(get_spawned_mob)) + registered_spawn_signal = TRUE + new spawn_path(spawn_turf) + +/// Intercept the next mob spawned on the turf, because we might have spawned an object which spawns a mob instead +/obj/effect/mining_mob_respawner/proc/get_spawned_mob(datum/source, atom/new_spawn) + SIGNAL_HANDLER + if (!isliving(new_spawn)) + return + + UnregisterSignal(source, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON) + registered_spawn_signal = FALSE + register_spawn(source, new_spawn) + play_spawn_animation(new_spawn, source) + +/// When a storm hits & if our mob is dead, make a new one +/obj/effect/mining_mob_respawner/proc/on_storm_event() + SIGNAL_HANDLER + var/mob/living/resolved = our_mob?.resolve() + if (!resolved || resolved.stat == DEAD) + addtimer(CALLBACK(src, PROC_REF(make_mob)), rand(min_delay, max_delay), TIMER_DELETE_ME) + +/// Play an awesome animation +/obj/effect/mining_mob_respawner/proc/play_spawn_animation(mob/living/spawned, turf/spawned_turf) + if (HAS_TRAIT(spawned, TRAIT_MOVE_FLYING)) + new /obj/effect/fly_down(spawned_turf, spawned) + else + new /obj/effect/unburrow(spawned_turf, spawned) + spawned_turf.Shake(pixelshiftx = 0.5, pixelshifty = 0.5, duration = 2 SECONDS) + +/// A "good enough" alpha mask effect that looks like something is coming out of the ground +/// Not guaranteed to look right on things taller than 32 pixels because i didnt want to make a really massive alpha mask +/obj/effect/unburrow + appearance_flags = parent_type::appearance_flags | KEEP_TOGETHER + /// Time in which to animate emerging from the ground + var/animate_time = 2 SECONDS + +/obj/effect/unburrow/Initialize(mapload, atom/movable/thing) + . = ..() + if (QDELETED(thing)) + return INITIALIZE_HINT_QDEL + thing.forceMove(src) + setup(thing) + +/obj/effect/unburrow/proc/setup(atom/movable/thing) + vis_contents += thing + thing.pixel_y -= 32 + animate(thing, pixel_y = 32, time = animate_time, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE) + thing.Shake(pixelshiftx = 1, pixelshifty = 0.5, duration = animate_time) + thing.dir = pick(GLOB.cardinals) + + add_filter("alpha_mask", 2, alpha_mask_filter(icon = icon('icons/effects/64x64.dmi', "alpha_unburrow"), y = 16)) + var/filter = get_filter("alpha_mask") + animate(filter, y = -16, delay = animate_time, time = 0.5 SECONDS, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE) + addtimer(CALLBACK(src, PROC_REF(release), thing), animate_time + 0.5 SECONDS, TIMER_DELETE_ME) + +/obj/effect/unburrow/proc/release(atom/movable/thing) + if (!QDELETED(thing)) + thing.forceMove(drop_location()) + qdel(src) + +/// An effect that shows an object swooping to the ground from above +/obj/effect/fly_down + alpha = 0 + appearance_flags = parent_type::appearance_flags | KEEP_TOGETHER + /// Time in which to animate appearing + var/animate_time = 0.6 SECONDS + +/obj/effect/fly_down/Initialize(mapload, atom/movable/thing) + . = ..() + if (!thing) + thing = new /mob/living/basic/mining/watcher(loc) + if (QDELETED(thing)) + return INITIALIZE_HINT_QDEL + thing.forceMove(src) + setup(thing) + +/obj/effect/fly_down/proc/setup(atom/movable/thing) + vis_contents += thing + thing.pixel_y += 64 + var/direction = pick(list(1, -1)) + var/anim_offset = 32 * direction + thing.pixel_x += anim_offset + thing.dir = direction < 0 ? EAST : WEST + + animate(src, alpha = 255, time = 0.4 SECONDS, flags = ANIMATION_PARALLEL) + animate(thing, pixel_y = -64, time = animate_time, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE) + animate(thing, pixel_x = -anim_offset, time = animate_time, flags = ANIMATION_PARALLEL | ANIMATION_RELATIVE, easing = QUAD_EASING | EASE_IN) + addtimer(CALLBACK(src, PROC_REF(release), thing), animate_time, TIMER_DELETE_ME) + +/obj/effect/fly_down/proc/release(atom/movable/thing) + if (!QDELETED(thing)) + thing.forceMove(drop_location()) + qdel(src) diff --git a/code/game/objects/effects/particles/smoke.dm b/code/game/objects/effects/particles/smoke.dm index cd7766ccff7e..f8fdbda7b51f 100644 --- a/code/game/objects/effects/particles/smoke.dm +++ b/code/game/objects/effects/particles/smoke.dm @@ -127,7 +127,7 @@ fadein = 0.4 SECONDS position = generator(GEN_BOX, list(-17,-15,0), list(24,15,0), NORMAL_RAND) scale = generator(GEN_VECTOR, list(0.9,0.9), list(1.1,1.1), NORMAL_RAND) - drift = generator(GEN_SPHERE, list(-0.01,0), list(0.01,0.01), UNIFORM_RAND) + drift = generator(GEN_SPHERE, -0.01 , 0.01, UNIFORM_RAND) spin = generator(GEN_NUM, -2, 2, NORMAL_RAND) gravity = list(0.05, 0.28) friction = 0.3 diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index a42cab19b022..12535907914e 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -1,7 +1,7 @@ /proc/create_portal_pair(turf/source, turf/destination, _lifespan = 300, accuracy = 0, newtype = /obj/effect/portal) if(!istype(source) || !istype(destination)) return - var/turf/actual_destination = get_teleport_turf(destination, accuracy) + var/turf/actual_destination = get_valid_teleport_turf(source, destination, accuracy) var/obj/effect/portal/P1 = new newtype(source, _lifespan, null, FALSE, null) var/obj/effect/portal/P2 = new newtype(actual_destination, _lifespan, P1, TRUE, null) if(!istype(P1) || !istype(P2)) @@ -69,10 +69,12 @@ /obj/effect/portal/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 0, controlled_cap = null) return TRUE -/obj/effect/portal/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(user && Adjacent(user)) - teleport(user) - return TRUE +/obj/effect/portal/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!Adjacent(user) || istype(tool, /obj/item/hand_tele)) + return ..() + + teleport(user) + return ITEM_INTERACT_SUCCESS /obj/effect/portal/CanAllowThrough(atom/movable/mover, border_dir) . = ..() diff --git a/code/game/objects/effects/poster_demotivational.dm b/code/game/objects/effects/poster_demotivational.dm index ef946372dfd3..bd6141f38c0f 100644 --- a/code/game/objects/effects/poster_demotivational.dm +++ b/code/game/objects/effects/poster_demotivational.dm @@ -23,9 +23,8 @@ demoraliser = new(src, 7, TRUE, mood_category) return ..() -/obj/structure/sign/poster/traitor/attackby(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) - if (tool.tool_behaviour == TOOL_WIRECUTTER) - QDEL_NULL(demoraliser) +/obj/structure/sign/poster/traitor/wirecutter_act(mob/living/user, obj/item/tool) + QDEL_NULL(demoraliser) return ..() /obj/structure/sign/poster/traitor/Destroy() diff --git a/code/game/objects/effects/poster_motivational.dm b/code/game/objects/effects/poster_motivational.dm index 702cdfdde8a3..925f44ae5b9f 100644 --- a/code/game/objects/effects/poster_motivational.dm +++ b/code/game/objects/effects/poster_motivational.dm @@ -17,17 +17,18 @@ department_grab.quirk_poster_department = quirk_poster_department /// You can use any spraypaint can on a quirk poster to turn it into a contraband poster from the traitor objective -/obj/item/poster/quirk/attackby(obj/item/postertool, mob/user, list/modifiers, list/attack_modifiers) - if(!user.is_antag() || !HAS_TRAIT(user, TRAIT_POSTERBOY) || !istype(postertool, /obj/item/toy/crayon)) - return ..() +/obj/item/poster/quirk/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!user.is_antag() || !HAS_TRAIT(user, TRAIT_POSTERBOY) || !istype(tool, /obj/item/toy/crayon)) + return NONE balloon_alert(user, "converting poster...") if(!do_after(user, 5 SECONDS, user)) balloon_alert(user, "interrupted!") - return + return ITEM_INTERACT_BLOCKING var/obj/item/poster/traitor/quirkspawn = new(get_turf(src)) user.put_in_hands(quirkspawn) to_chat(user, span_notice("You have converted one of your posters!")) qdel(src) + return ITEM_INTERACT_SUCCESS /// Screentip for the above @@ -50,9 +51,8 @@ mood_buff = new(_host = src, range = 7, _ignore_if_not_on_turf = TRUE, department = quirk_poster_department) return ..() -/obj/structure/sign/poster/quirk/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if (I.tool_behaviour == TOOL_WIRECUTTER) - QDEL_NULL(mood_buff) +/obj/structure/sign/poster/quirk/wirecutter_act(mob/living/user, obj/item/tool) + QDEL_NULL(mood_buff) return ..() /obj/structure/sign/poster/quirk/Destroy() diff --git a/code/game/objects/effects/posters/official.dm b/code/game/objects/effects/posters/official.dm index ef5ad4ae8561..09de4dbcae7d 100644 --- a/code/game/objects/effects/posters/official.dm +++ b/code/game/objects/effects/posters/official.dm @@ -255,6 +255,25 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/official/the_owl, 32) name = "No ERP" desc = "This poster reminds the crew that Enterprise Resource Planning is not allowed by company policy, in accordance with Spinward governmental regulations on megacorporations." icon_state = "no_erp" + /// Tracks poster state for the hidden interaction + VAR_PRIVATE/corrupted = FALSE + +/obj/structure/sign/poster/official/no_erp/tear_poster(mob/user) + if(prob(99) && !check_holidays(APRIL_FOOLS)) + return ..() + + visible_message(span_notice("[user] rips [src] in a single, decisive motion... revealing another poster?")) + playsound(src, 'sound/items/poster/poster_ripped.ogg', 100, TRUE) + if(corrupted) + name = initial(name) + desc = initial(desc) + icon_state = initial(icon_state) + corrupted = FALSE + else + name = "Yes ERP" + desc = "This poster reminds the crew that Enterprise Resource Planning is both effective and critical for the station's operations." + icon_state = "yes_erp" + corrupted = TRUE MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/official/no_erp, 32) diff --git a/code/game/objects/effects/posters/poster.dm b/code/game/objects/effects/posters/poster.dm index fd66c4241ae2..4068e893c73c 100644 --- a/code/game/objects/effects/posters/poster.dm +++ b/code/game/objects/effects/posters/poster.dm @@ -56,18 +56,19 @@ . = ..() . += span_notice("You can booby-trap the poster by using a glass shard on it before you put it up.") -/obj/item/poster/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(I, /obj/item/shard)) - return ..() +/obj/item/poster/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/shard)) + return NONE - if (locate(/obj/item/shard) in (poster_structure?.contents || contents)) + if(locate(/obj/item/shard) in (poster_structure?.contents || contents)) balloon_alert(user, "already trapped!") - return + return ITEM_INTERACT_BLOCKING - if(!user.transferItemToLoc(I, src)) - return + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("You conceal \the [I] inside the rolled up poster.")) + to_chat(user, span_notice("You conceal \the [tool] inside the rolled up poster.")) + return ITEM_INTERACT_SUCCESS /obj/item/poster/interact_with_atom(turf/closed/wall_structure, mob/living/user, list/modifiers) if(!isclosedturf(wall_structure)) diff --git a/code/game/objects/effects/spawners/holiday.dm b/code/game/objects/effects/spawners/holiday.dm new file mode 100644 index 000000000000..a5355e1c6e9a --- /dev/null +++ b/code/game/objects/effects/spawners/holiday.dm @@ -0,0 +1,102 @@ +///A spawner that only spawns specific stuff on holidays +/obj/effect/spawner/holiday + icon = 'icons/effects/random_spawners.dmi' //reusing icons for efficiency + name = "holiday spawner" + desc = "a spawner effect that only spawns stuff if a holiday is being celebrated." + ///It contains holiday names (use macros please) as key, and the list of things to spawn on said holiday as value. + var/list/holidays_to_spawn + ///If set and no holiday object is spawned, spawn this instead. + var/non_holiday_spawn + +/obj/effect/spawner/holiday/Initialize(mapload) + . = ..() + var/found_holiday = FALSE + for(var/holiday in holidays_to_spawn) + if(check_holidays(holiday)) + found_holiday = TRUE + var/list/spawn_list = holidays_to_spawn[holiday] + for(var/path in spawn_list) + new path(loc) + if(!found_holiday && non_holiday_spawn) + new non_holiday_spawn(loc) + +/obj/effect/spawner/holiday/powdered_ingredient + name = "holiday powdered ingredient" + desc = "A little extra for the kitchen during specific holidays like moth and tiziran festivities." + icon_state = "chips" + holidays_to_spawn = list( + LIZARD_ATRAKOR_DAY = list( //korta flour is made of this + /obj/item/reagent_containers/condiment/korta_flour, + /obj/item/reagent_containers/condiment/korta_flour, + ), + MOTH_FLEET_DAY = list( //mothic dough is made of this, and a lot other things. + /obj/item/reagent_containers/condiment/cornmeal, + /obj/item/reagent_containers/condiment/cornmeal, + ), + ) + +/obj/effect/spawner/holiday/liquid_ingredient + name = "holiday liquid ingredient" + desc = /obj/effect/spawner/holiday/powdered_ingredient::desc + icon_state = "condiment" + holidays_to_spawn = list( + LIZARD_ATRAKOR_DAY = list( //a few lizard recipes use this (there are more that use olive oil but this is more iconic of the culture) + /obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar, + ), + MOTH_FLEET_DAY = list( //needed for mothic dough and other mothic recipes + /obj/item/reagent_containers/condiment/olive_oil, + /obj/item/reagent_containers/condiment/yoghurt, + ), + BEE_DAY = list( + /obj/item/reagent_containers/condiment/honey, + /obj/item/reagent_containers/condiment/honey, + ), + BEER_DAY = list( + /obj/effect/spawner/random/food_or_drink/booze, + ), + ) + +/obj/effect/spawner/holiday/meat_ingredient + name = "holiday meat ingredient" + desc = /obj/effect/spawner/holiday/powdered_ingredient::desc + icon_state = "condiment" + holidays_to_spawn = list( + LIZARD_ATRAKOR_DAY = list( + /obj/item/food/raw_tiziran_sausage, + /obj/item/organ/liver, + /obj/item/food/canned/larvae, + ), + MOTH_FLEET_DAY = list( + /obj/item/grown/cotton, + /obj/item/grown/cotton, + /obj/item/grown/cotton, + ), + VEGAN_DAY = list( ///plant-based "meat" slabs to allow chefs to cook meat recipes anyway. Plus some veggies. + /obj/item/food/meat/slab/killertomato, + /obj/item/food/meat/slab/killertomato, + /obj/item/food/meat/slab/human/mutant/plant, + /obj/item/food/meat/slab/human/mutant/plant, + /obj/item/food/grown/tomato, + /obj/item/food/grown/cabbage, + /obj/item/food/grown/onion/red, + /obj/item/food/grown/herbs, + ), + ) + +/obj/effect/spawner/holiday/bar_keg + name = "bar keg spawner" + desc = "The spawner of the keg on the station. Special stuff on Beer Day and St. Patrick's Day." + icon_state = "keg" + holidays_to_spawn = list( + ST_PATRICK_DAY = list( + /obj/structure/reagent_dispensers/keg/gold/irish, + ), + TALK_LIKE_A_PIRATE_DAY = list( + /obj/structure/reagent_dispensers/keg/gold/rum, + ), + BEER_DAY = list( + /obj/structure/reagent_dispensers/keg/gold/trappist, + ), + ) + + non_holiday_spawn = /obj/effect/spawner/random/food_or_drink/keg diff --git a/code/game/objects/effects/spawners/random/random.dm b/code/game/objects/effects/spawners/random/_random.dm similarity index 100% rename from code/game/objects/effects/spawners/random/random.dm rename to code/game/objects/effects/spawners/random/_random.dm diff --git a/code/game/objects/effects/spawners/random/entertainment.dm b/code/game/objects/effects/spawners/random/entertainment.dm index 5cc00beccf0e..8be6d4aa80cc 100644 --- a/code/game/objects/effects/spawners/random/entertainment.dm +++ b/code/game/objects/effects/spawners/random/entertainment.dm @@ -274,7 +274,10 @@ /obj/item/toy/plush/pkplush, /obj/item/toy/plush/horse, /obj/item/toy/plush/monkey, - /obj/item/toy/plush/goatplushie, // DARKPACK EDIT ADD - TOYS - Plushes.dm addition for mapping + // DARKPACK EDIT ADD START - TOYS - (Plushes.dm addition for mapping) + /obj/item/toy/plush/goatplushie, + /obj/item/toy/plush/argemia, + // DARKPACK EDIT ADD END ) /obj/effect/spawner/random/entertainment/plushie_delux @@ -291,7 +294,10 @@ /obj/item/toy/plush/pkplush = 5, /obj/item/toy/plush/human = 5, /obj/item/toy/plush/horse = 5, - /obj/item/toy/plush/goatplushie = 5, // DARKPACK EDIT ADD - TOYS - Plushes.dm addition for mapping + // DARKPACK EDIT ADD START - TOYS - (Plushes.dm addition for mapping) + /obj/item/toy/plush/goatplushie = 5, + /obj/item/toy/plush/argemia = 5, + // DARKPACK EDIT ADD END // rare plushies /obj/item/toy/plush/carpplushie = 3, /obj/item/toy/plush/lizard_plushie/green = 3, diff --git a/code/game/objects/effects/spawners/random/food_or_drink.dm b/code/game/objects/effects/spawners/random/food_or_drink.dm index 2273848c5597..6eaa5158eec7 100644 --- a/code/game/objects/effects/spawners/random/food_or_drink.dm +++ b/code/game/objects/effects/spawners/random/food_or_drink.dm @@ -105,7 +105,7 @@ /obj/item/food/grown/eggplant, /obj/item/food/grown/garlic, /obj/item/food/grown/korta_nut, - /obj/item/food/grown/watermelon, + /obj/item/food/grown/melonlike/watermelon, /obj/item/food/grown/olive, /obj/item/food/grown/onion, /obj/item/food/grown/peanut, @@ -113,8 +113,8 @@ /obj/item/food/grown/plum, /obj/item/food/grown/potato, /obj/item/food/grown/pumpkin, - /obj/item/food/grown/carrot, - /obj/item/food/grown/parsnip, + /obj/item/food/grown/carrotlike/carrot, + /obj/item/food/grown/carrotlike/parsnip, /obj/item/food/grown/whitebeet, /obj/item/food/grown/peas, /obj/item/grown/cotton, @@ -391,3 +391,17 @@ /obj/effect/spawner/random/food_or_drink/jelly_donuts = 3, /obj/effect/spawner/random/food_or_drink/slime_jelly_donuts = 1, ) + +/obj/effect/spawner/random/food_or_drink/keg + name = "alcohol keg spawner" + icon_state = "keg" + loot = list( + /obj/structure/reagent_dispensers/keg/beer = 16, + /obj/structure/reagent_dispensers/keg/whiskey = 4, + /obj/structure/reagent_dispensers/keg/rum = 4, + list( + /obj/structure/reagent_dispensers/keg/gold/rum, + /obj/structure/reagent_dispensers/keg/gold/irish, + /obj/structure/reagent_dispensers/keg/gold/trappist, + ) = 1, + ) diff --git a/code/game/objects/effects/spawners/random/trash.dm b/code/game/objects/effects/spawners/random/trash.dm index e80fde513eaf..e79c634f9ecf 100644 --- a/code/game/objects/effects/spawners/random/trash.dm +++ b/code/game/objects/effects/spawners/random/trash.dm @@ -92,10 +92,11 @@ /obj/effect/spawner/random/trash/food_packaging name = "empty food packaging spawner" loot = list( + /* // DARKPACK EDIT REMOVAL /obj/item/trash/raisins = 2, /obj/item/trash/cheesie = 2, /obj/item/trash/candy = 2, - /obj/item/trash/chips = 10, // DARKPACK EDIT CHANGE + /obj/item/trash/chips = 2, /obj/item/trash/sosjerky = 2, /obj/item/trash/pistachios = 2, /obj/item/trash/peanuts = 2, @@ -139,8 +140,12 @@ /obj/item/popsicle_stick = 1, /obj/item/trash/ready_donk = 1, /obj/item/trash/tray = 1, - /obj/item/trash/vampirebar = 5, // DARKPACK EDIT ADD START - /obj/item/trash/vampirenugget = 1, // DARKPACK EDIT ADD END + */ + // DARKPACK EDIT ADD START + /obj/item/trash/vampirebar = 5, + /obj/item/trash/chips = 10, + /obj/item/trash/vampirenugget = 1, + // DARKPACK EDIT ADD END ) /obj/effect/spawner/random/trash/botanical_waste diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm index e9e043a59817..fa6971c0d468 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -48,6 +48,7 @@ pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) /obj/effect/abstract/projectile_lighting + mouse_opacity = MOUSE_OPACITY_TRANSPARENT /obj/effect/abstract/projectile_lighting/Initialize(mapload, color, range, intensity) . = ..() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4285f07a7093..8f46dab52483 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -175,6 +175,8 @@ var/list/species_exception = null ///This is a bitfield that defines what variations exist for bodyparts like Digi legs. See: code\_DEFINES\inventory.dm var/supports_variations_flags = NONE + /// This is a bitfield that defines which bodyshapes this item is capable of rendering, used by build_worn_icon() + var/bodyshapes_with_variations = NONE ///Items can by default thrown up to 10 tiles by TK users tk_throw_range = 10 @@ -260,7 +262,7 @@ // Handle adding item associated actions for(var/path in actions_types) - add_item_action(path) + INVOKE_ASYNC(src, PROC_REF(add_item_action), path) actions_types = null if(force_string) @@ -410,9 +412,7 @@ onflooricon = SSgreyscale.GetColoredIconByType(greyscale_config_onfloor, greyscale_colors) // DARKPACK EDIT ADD END -/obj/item/verb/move_to_top() - set name = "Move To Top" - set src in oview(1) +GAME_VERB_SRC(/obj/item, move_to_top, oview(1), "Move To Top", null) if(!isturf(loc) || usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || anchored) return @@ -836,9 +836,7 @@ return M.can_equip(src, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action = indirect_action) -/obj/item/verb/verb_pickup() - set src in oview(1) - set name = "Pick up" +GAME_VERB_SRC(/obj/item, verb_pickup, oview(1), "Pick up", null) if(usr.incapacitated || !Adjacent(usr)) return @@ -1233,6 +1231,12 @@ outline_color = COLOR_THEME_TRASENKNOX if("detective") outline_color = COLOR_THEME_DETECTIVE + // DARKPACK EDIT ADD START + if("pentex-knox") + outline_color = COLOR_THEME_TRASENKNOX + if("world-of-darkness") + outline_color = COLOR_WHITE + // DARKPACK EDIT ADD END else //this should never happen, hopefully outline_color = COLOR_WHITE if(color) @@ -1522,7 +1526,7 @@ * * taker - the living mob trying to accept the offer */ /obj/item/proc/on_offer_taken(mob/living/offerer, mob/living/taker) - if(!(HAS_TRAIT(offerer, TRAIT_CAN_HOLD_ITEMS) && HAS_TRAIT(taker, TRAIT_CAN_HOLD_ITEMS))) + if(!HAS_TRAIT(offerer, TRAIT_CAN_HOLD_ITEMS) && !HAS_TRAIT(src, TRAIT_BORG_GIVE) && HAS_TRAIT(taker, TRAIT_CAN_HOLD_ITEMS)) return TRUE // both must be able to hold items for this to make sense if(SEND_SIGNAL(src, COMSIG_ITEM_OFFER_TAKEN, offerer, taker) & COMPONENT_OFFER_INTERRUPT) return TRUE diff --git a/code/game/objects/items/AI_modules/_AI_modules.dm b/code/game/objects/items/AI_modules/_AI_modules.dm index 69c809c903ee..12d1f437e9db 100644 --- a/code/game/objects/items/AI_modules/_AI_modules.dm +++ b/code/game/objects/items/AI_modules/_AI_modules.dm @@ -20,6 +20,8 @@ var/list/laws = list() /// Used to skip laws being checked (for reset & remove boards that have no laws) var/bypass_law_amt_check = FALSE + /// Used for the Traitor Hacked Upload board to ignore access restrictions on the upload console. + var/bypass_access_check = FALSE /obj/item/ai_module/Initialize(mapload) . = ..() @@ -134,6 +136,7 @@ law_datum.replace_random_law(templaw, list(LAW_INHERENT, LAW_SUPPLIED), LAW_INHERENT) /obj/item/ai_module/core/full + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) var/law_id // if non-null, loads the laws from the ai_laws datums /obj/item/ai_module/core/full/Initialize(mapload) diff --git a/code/game/objects/items/AI_modules/freeform.dm b/code/game/objects/items/AI_modules/freeform.dm index 05ef00c94677..95b04228badc 100644 --- a/code/game/objects/items/AI_modules/freeform.dm +++ b/code/game/objects/items/AI_modules/freeform.dm @@ -6,6 +6,7 @@ /obj/item/ai_module/core/freeformcore name = "'Freeform' Core AI Module" laws = list("") + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/core/freeformcore/attack_self(mob/user) var/targName = tgui_input_text(user, "Enter a new core law for the AI.", "Freeform Law Entry", laws[1], max_length = CONFIG_GET(number/max_law_len), multiline = TRUE) @@ -31,6 +32,7 @@ name = "'Freeform' AI Module" lawpos = 15 laws = list("") + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/supplied/freeform/attack_self(mob/user) var/newpos = tgui_input_number(user, "Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority ", lawpos, 50, 15) diff --git a/code/game/objects/items/AI_modules/hacked.dm b/code/game/objects/items/AI_modules/hacked.dm index 0fc61e2f956f..57e7c8980869 100644 --- a/code/game/objects/items/AI_modules/hacked.dm +++ b/code/game/objects/items/AI_modules/hacked.dm @@ -1,7 +1,8 @@ /obj/item/ai_module/syndicate // This one doesn't inherit from ion boards because it doesn't call ..() in transmitInstructions. ~Miauw name = "Hacked AI Module" - desc = "An AI Module for hacking additional laws to an AI." + desc = "An AI Module for hacking additional laws to an AI. This board bypasses all access restrictions on the upload console." laws = list("") + bypass_access_check = TRUE /obj/item/ai_module/syndicate/attack_self(mob/user) var/targName = tgui_input_text(user, "Enter a new law for the AI", "Freeform Law Entry", laws[1], max_length = CONFIG_GET(number/max_law_len), multiline = TRUE) diff --git a/code/game/objects/items/AI_modules/repair.dm b/code/game/objects/items/AI_modules/repair.dm index 4559a3157273..e7db26e5a592 100644 --- a/code/game/objects/items/AI_modules/repair.dm +++ b/code/game/objects/items/AI_modules/repair.dm @@ -8,6 +8,7 @@ name = "\improper 'Remove Law' AI module" desc = "An AI Module for removing single laws." bypass_law_amt_check = TRUE + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) var/lawpos = 1 /obj/item/ai_module/remove/attack_self(mob/user) @@ -35,6 +36,7 @@ var/targetName = "name" desc = "An AI Module for removing all non-core laws." bypass_law_amt_check = TRUE + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/reset/handle_unique_ai() return @@ -53,6 +55,7 @@ /obj/item/ai_module/reset/purge name = "'Purge' AI Module" desc = "An AI Module for purging all programmed laws." + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/reset/purge/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow) ..() diff --git a/code/game/objects/items/AI_modules/supplied.dm b/code/game/objects/items/AI_modules/supplied.dm index 76f471573062..112513ede951 100644 --- a/code/game/objects/items/AI_modules/supplied.dm +++ b/code/game/objects/items/AI_modules/supplied.dm @@ -9,6 +9,7 @@ /obj/item/ai_module/supplied name = "Optional Law board" var/lawpos = 50 + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/supplied/transmitInstructions(datum/ai_laws/law_datum, mob/sender) var/lawpostemp = lawpos diff --git a/code/game/objects/items/AI_modules/zeroth.dm b/code/game/objects/items/AI_modules/zeroth.dm index 480735bfe2fe..2dc15252c5d0 100644 --- a/code/game/objects/items/AI_modules/zeroth.dm +++ b/code/game/objects/items/AI_modules/zeroth.dm @@ -23,6 +23,7 @@ name = "'OneHuman' AI Module" var/targetName = "" laws = list("Only SUBJECT is human.") + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ai_module/zeroth/onehuman/attack_self(mob/user) var/targName = tgui_input_text(user, "Enter the subject who is the only human.", "One Human", user.real_name, max_length = MAX_NAME_LEN) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 512daefd1e19..8497fc9b82b7 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -26,6 +26,7 @@ attack_verb_simple = list("attack", "bap", "hit") resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) ///A string of flavortext to be displayed at the top of the UI, related to the type of blueprints we are. var/fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage." diff --git a/code/game/objects/items/botpad_remote.dm b/code/game/objects/items/botpad_remote.dm index 21620f05a7bf..fc039f2f04f1 100644 --- a/code/game/objects/items/botpad_remote.dm +++ b/code/game/objects/items/botpad_remote.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/devices/remote.dmi' icon_state = "botpad_controller" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) // ID of the remote, used for linking up var/id = "botlauncher" var/obj/machinery/botpad/connected_botpad diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 89f9a14d99cb..2ccf031f61b8 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -80,12 +80,11 @@ pushed_over = FALSE tacticool = AddComponent(/datum/component/tactical) -/obj/item/cardboard_cutout/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/toy/crayon)) - change_appearance(I, user) - return TRUE - - return ..() +/obj/item/cardboard_cutout/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/crayon)) + return NONE + change_appearance(tool, user) + return ITEM_INTERACT_SUCCESS /obj/item/cardboard_cutout/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) . = ..() diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 8e2ae5c689f9..fd6a963f009f 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -36,7 +36,7 @@ ///What is our honorific name/title combo to be displayed? var/honorific_title -/obj/item/card/suicide_act(mob/living/carbon/user) +/obj/item/card/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to swipe [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -69,6 +69,8 @@ interaction_flags_click = FORBID_TELEKINESIS_REACH armor_type = /datum/armor/card_id resistance_flags = FIRE_PROOF | ACID_PROOF + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT) + item_flags = parent_type::item_flags | NO_MAT_REDEMPTION // A little clemency to the people who fumble and misclick stuff, even if it's already easy enough to destroy one. /// The name registered on the card (for example: Dr Bryan See) var/registered_name = null diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm index d0f9dad00f74..df557bcf93b2 100644 --- a/code/game/objects/items/cigarettes.dm +++ b/code/game/objects/items/cigarettes.dm @@ -306,18 +306,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/cigarette/dropped(mob/dropee) . = ..() // Moving the cigarette from mask to hands (or pocket I guess) will emit a larger puff of smoke - if(!QDELETED(src) && !QDELETED(dropee) && how_long_have_we_been_smokin >= 4 SECONDS && iscarbon(dropee) && iscarbon(loc)) - var/mob/living/carbon/smoker = dropee + if(!QDELETED(src) && !QDELETED(dropee) && how_long_have_we_been_smokin >= 4 SECONDS && dropee == loc && iscarbon(dropee)) // This relies on the fact that dropped is called before slot is nulled - if(src == smoker.wear_mask && !smoker.incapacitated) - long_exhale(smoker) + if(dropee.get_item_by_slot(ITEM_SLOT_MASK) == src && !dropee.incapacitated) + long_exhale(dropee) UnregisterSignal(dropee, list(COMSIG_HUMAN_FORCESAY, COMSIG_ATOM_DIR_CHANGE)) QDEL_NULL(mob_smoke) how_long_have_we_been_smokin = 0 SECONDS -/obj/item/cigarette/proc/on_forcesay(mob/living/source) +/obj/item/cigarette/proc/on_forcesay(mob/living/source, major) SIGNAL_HANDLER + + if(!major) + return source.apply_status_effect(/datum/status_effect/choke, src, lit, choke_forever ? -1 : rand(25 SECONDS, choke_time_max)) /obj/item/cigarette/proc/on_mob_dir_change(mob/living/source, old_dir, new_dir) @@ -345,22 +347,24 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.visible_message(span_suicide("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.")) return (TOXLOSS|OXYLOSS) -/obj/item/cigarette/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/cigarette/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(lit) - return ..() + return NONE - var/lighting_text = W.ignition_effect(src, user) + var/lighting_text = tool.ignition_effect(src, user) if(!lighting_text) - return ..() + return NONE if(!check_oxygen(user)) //cigarettes need oxygen balloon_alert(user, "no air!") - return ..() + return ITEM_INTERACT_BLOCKING - if(smoketime > 0) - light(lighting_text) - else + if(!smoketime) to_chat(user, span_warning("There is nothing to smoke!")) + return ITEM_INTERACT_BLOCKING + + light(lighting_text) + return ITEM_INTERACT_SUCCESS /// Checks that we have enough air to smoke /obj/item/cigarette/proc/check_oxygen(mob/user) @@ -369,9 +373,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/datum/gas_mixture/air = return_air() if (!isnull(air) && air.has_gas(/datum/gas/oxygen, 1)) return TRUE - if (!iscarbon(user)) + if (!ishuman(user)) return FALSE - var/mob/living/carbon/the_smoker = user + var/mob/living/carbon/human/the_smoker = user return the_smoker.can_breathe_helmet() /obj/item/cigarette/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) @@ -462,7 +466,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(iscarbon(loc)) var/mob/living/carbon/smoker = loc - if(src == smoker.wear_mask) + if(smoker.get_item_by_slot(ITEM_SLOT_MASK) == src) make_mob_smoke(smoker) smoker.trigger_rotschreck(src, 3) // DARKPACK EDIT ADD - FRENZY @@ -560,7 +564,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.remove_all(to_smoke) return else - if(src != smoker.wear_mask) + if(smoker.get_item_by_slot(ITEM_SLOT_MASK) != src) reagents.remove_all(to_smoke) return @@ -973,18 +977,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) QDEL_NULL(cig_smoke) -/obj/item/cigarette/pipe/attackby(obj/item/thing, mob/user, list/modifiers, list/attack_modifiers) - if(!(istype(thing, /obj/item/food/grown) || istype(thing, /obj/item/food/drug))) +/obj/item/cigarette/pipe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!(istype(tool, /obj/item/food/grown) || istype(tool, /obj/item/food/drug))) return ..() if(packeditem) to_chat(user, span_warning("It is already packed!")) - return + return ITEM_INTERACT_BLOCKING - var/obj/item/to_smoke = thing + var/obj/item/to_smoke = tool if(istype(to_smoke, /obj/item/food/grown) && !HAS_TRAIT(to_smoke, TRAIT_DRIED)) to_chat(user, span_warning("It has to be dried first!")) - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You stuff [to_smoke] into [src].")) smoketime = 13 MINUTES @@ -993,6 +997,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(to_smoke.reagents) to_smoke.reagents.trans_to(src, to_smoke.reagents.total_volume, transferred_by = user) qdel(to_smoke) + return ITEM_INTERACT_SUCCESS /obj/item/cigarette/pipe/attack_self(mob/user) @@ -1177,7 +1182,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return var/mob/living/carbon/vaper = loc - if(!iscarbon(vaper) || src != vaper.wear_mask) + if(!iscarbon(vaper) || vaper.get_item_by_slot(ITEM_SLOT_MASK) != src) reagents.remove_all(REAGENTS_METABOLISM) return diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 40e85008cd40..5c97a173cb2f 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -69,7 +69,7 @@ * Arguments: * * install_frame - The frame the circuit has been installed into for reference. */ -/obj/item/circuitboard/proc/completion_requirements(obj/structure/frame/install_frame) +/obj/item/circuitboard/proc/completion_requirements(obj/structure/frame/install_frame, mob/living/user) return TRUE // Circuitboard/machine diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 8dd950e3a6cb..3b0aa1a21873 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -14,11 +14,23 @@ name = "AI Upload" greyscale_colors = CIRCUIT_COLOR_COMMAND build_path = /obj/machinery/computer/upload/ai + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) + req_one_access = list(ACCESS_AI_UPLOAD) + +/obj/item/circuitboard/computer/aiupload/no_lock + build_path = /obj/machinery/computer/upload/ai/no_lock + req_one_access = null /obj/item/circuitboard/computer/borgupload name = "Cyborg Upload" greyscale_colors = CIRCUIT_COLOR_COMMAND + req_one_access = list(ACCESS_AI_UPLOAD) build_path = /obj/machinery/computer/upload/borg + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) + +/obj/item/circuitboard/computer/borgupload/no_lock + req_one_access = null + build_path = /obj/machinery/computer/upload/borg/no_lock /obj/item/circuitboard/computer/bsa_control name = "Bluespace Artillery Controls" @@ -509,19 +521,21 @@ to_chat(user, span_notice("You overload the node announcement chip, forcing every node to be announced on the common channel.")) return TRUE -/obj/item/circuitboard/computer/rdconsole/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if (user.combat_mode || !isidcard(attacking_item)) - return ..() - if (check_access(attacking_item)) - locked = !locked - balloon_alert(user, locked ? "locked" : "unlocked") - user.visible_message( - message = span_notice("\The [user] unlock[user.p_s()] \the [src] with \the [attacking_item]."), - self_message = span_notice("You unlock \the [src] with \the [attacking_item]."), - blind_message = span_hear("You hear a soft beep."), - ) - else +/obj/item/circuitboard/computer/rdconsole/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (user.combat_mode || !isidcard(tool)) + return NONE + if (!check_access(tool)) balloon_alert(user, "no access!") + return ITEM_INTERACT_BLOCKING + locked = !locked + balloon_alert(user, locked ? "locked" : "unlocked") + user.visible_message( + span_notice("\The [user] unlock[user.p_s()] \the [src] with \the [tool]."), + span_notice("You unlock \the [src] with \the [tool]."), + span_hear("You hear a soft beep."), + ) + return ITEM_INTERACT_SUCCESS + /obj/item/circuitboard/computer/rdservercontrol name = "R&D Server Control" @@ -537,6 +551,7 @@ name = "Robotics Control" greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/computer/robotics + custom_materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/circuitboard/computer/teleporter name = "Teleporter" diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 060da2c649d4..149c950a93a4 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -36,7 +36,7 @@ /datum/stock_part/servo/tier3 = 5, /obj/item/stack/cable_coil = 2) -/obj/item/circuitboard/machine/dna_vault/completion_requirements(obj/structure/frame/install_frame) +/obj/item/circuitboard/machine/dna_vault/completion_requirements(obj/structure/frame/install_frame, mob/living/user) var/turf/center = get_turf(install_frame) var/blocked = FALSE for(var/turf/potential_turf as anything in CORNER_BLOCK_OFFSET(center, 3, 3, -1, -2)) @@ -1170,6 +1170,7 @@ build_path = /obj/machinery/recharger req_components = list(/datum/stock_part/capacitor = 1) needs_anchored = FALSE + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/circuitboard/machine/techfab/department/security name = "\improper Departmental Techfab - Security" @@ -1719,6 +1720,7 @@ /datum/stock_part/scanning_module = 1, /datum/stock_part/micro_laser = 1, ) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/circuitboard/machine/refinery name = "Boulder Refinery" @@ -1730,6 +1732,7 @@ /datum/stock_part/matter_bin = 2, /obj/item/reagent_containers/cup/beaker = 1, ) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT) /obj/item/circuitboard/machine/smelter name = "Boulder Smelter" @@ -1741,6 +1744,7 @@ /datum/stock_part/matter_bin = 2, /obj/item/reagent_containers/cup/beaker = 1, ) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT) /obj/item/circuitboard/machine/shieldwallgen name = "Shield Wall Generator" @@ -1938,3 +1942,46 @@ /datum/stock_part/water_recycler = 1, /datum/stock_part/servo = 1, ) + +/obj/item/circuitboard/machine/wall_healer + name = "DeForest First Aid Station" + greyscale_colors = CIRCUIT_COLOR_MEDICAL + build_path = /obj/machinery/wall_healer + req_components = list( + /obj/item/healthanalyzer/simple = 1, + /obj/item/reagent_containers/syringe = 1, + /obj/item/hemostat = 1, + /obj/item/scalpel = 1, + ) + +/obj/item/circuitboard/machine/wall_healer/examine(mob/user) + . = ..() + if(obj_flags & EMAGGED) + . += span_warning("The safety chip looks fried.") + +/obj/item/circuitboard/machine/wall_healer/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + + playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + visible_message(span_warning("Sparks fly out of [src]!")) + balloon_alert(user, "safeties disabled") + obj_flags |= EMAGGED + return TRUE + +// Someone please add generic support for constructing wall mounted objects thanks +/obj/item/circuitboard/machine/wall_healer/completion_requirements(obj/structure/frame/install_frame, mob/living/user) + if(locate(/obj/machinery/wall_healer) in install_frame.loc) // for subtypes support + install_frame.balloon_alert(user, "identical machine present!") + return FALSE + + var/turf/facing_wall = get_step(install_frame, user.dir) + if(!is_mountable_turf(facing_wall)) + install_frame.balloon_alert(user, "no wall to install on!") + return FALSE + + return TRUE + +/obj/item/circuitboard/machine/wall_healer/free + name = "DeForest Emergency First Aid Station" + build_path = /obj/machinery/wall_healer/free diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 752065ceb7ad..194fe3c982bf 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -238,6 +238,7 @@ icon_state = "air_horn" worn_icon_state = "horn_air" sound_file = 'sound/items/airhorn/airhorn2.ogg' + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /datum/crafting_recipe/airhorn name = "Air Horn" @@ -320,6 +321,7 @@ max_integrity = 20 armor_type = /datum/armor/item_banhammer resistance_flags = FIRE_PROOF + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10.8) /obj/item/balloon_mallet/examine(mob/user) . = ..() diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 11aa7647e97a..766197392686 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -198,11 +198,13 @@ pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP custom_price = 50 // DARKPACK EDIT ADD - ECONOMY + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7) -/obj/item/razor/suicide_act(mob/living/carbon/user) +/obj/item/razor/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!")) - shave(user, BODY_ZONE_PRECISE_MOUTH) - shave(user, BODY_ZONE_HEAD)//doesn't need to be BODY_ZONE_HEAD specifically, but whatever + if (ishuman(user)) + shave(user, BODY_ZONE_PRECISE_MOUTH) + shave(user, BODY_ZONE_HEAD) //doesn't need to be BODY_ZONE_HEAD specifically, but whatever return BRUTELOSS /obj/item/razor/proc/shave(mob/living/carbon/human/skinhead, location = BODY_ZONE_PRECISE_MOUTH) diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm index f053d84b5406..99609766ca01 100644 --- a/code/game/objects/items/courtroom.dm +++ b/code/game/objects/items/courtroom.dm @@ -36,10 +36,10 @@ resistance_flags = FLAMMABLE custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT) -/obj/item/gavelblock/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/gavelhammer)) - playsound(loc, 'sound/items/gavel.ogg', 100, TRUE) - user.visible_message(span_warning("[user] strikes [src] with [I].")) - user.changeNext_move(CLICK_CD_MELEE) - else - return ..() +/obj/item/gavelblock/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/gavelhammer)) + return NONE + playsound(loc, 'sound/items/gavel.ogg', 100, TRUE) + user.visible_message(span_warning("[user] strikes [src] with [tool].")) + user.changeNext_move(CLICK_CD_MELEE) + return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm index fdb179ba55af..e3cf37392c8c 100644 --- a/code/game/objects/items/crab17.dm +++ b/code/game/objects/items/crab17.dm @@ -71,32 +71,32 @@ return FALSE return TRUE -/obj/structure/checkoutmachine/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/checkoutmachine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!canwalk) balloon_alert(user, "not ready to accept transactions!") - return + return ITEM_INTERACT_BLOCKING if(check_if_finished()) qdel(src) - return + return ITEM_INTERACT_BLOCKING - var/obj/item/card/id/card = attacking_item.GetID() + var/obj/item/card/id/card = tool.GetID() if(!card) - balloon_alert(user, "your [attacking_item.name] gets repelled by the id card reader") + balloon_alert(user, "the reader repels your [tool.name]") var/throwtarget = get_step(user, get_dir(src, user)) user.safe_throw_at(throwtarget, 1, 1, force = MOVE_FORCE_EXTREMELY_STRONG) playsound(get_turf(src),'sound/effects/magic/repulse.ogg', 100, TRUE) - return + return ITEM_INTERACT_BLOCKING if(!card.registered_account) balloon_alert(user, "card has no registered account!") - return + return ITEM_INTERACT_BLOCKING if(!LAZYFIND(card.registered_account.being_dumped, src)) balloon_alert(user, "funds are already safe!") - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_warning("You quickly cash out your funds to a more secure banking location. Funds are safu.")) // This is a reference and not a typo accounts_to_rob -= card.registered_account @@ -104,7 +104,8 @@ if(check_if_finished()) qdel(src) - return + + return ITEM_INTERACT_SUCCESS /obj/structure/checkoutmachine/Initialize(mapload, mob/living/user) . = ..() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 9655aed9cf65..cbbbce8109a6 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -770,6 +770,7 @@ name = "spray can" icon_state = "spraycan" worn_icon_state = "spraycan" + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) icon_capped = "spraycan_cap" icon_uncapped = "spraycan" @@ -863,7 +864,7 @@ set_painting_tool_color(COLOR_SILVER) update_appearance() if(actually_paints) - user.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color) + user.AddComponent(/datum/component/face_decal, "spray", list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER), paint_color) reagents.trans_to(user, used, volume_multiplier, transferred_by = user, methods = VAPOR) return OXYLOSS @@ -921,7 +922,7 @@ flash_color(carbon_target, flash_color=paint_color, flash_time=40) if(ishuman(carbon_target) && actually_paints) var/mob/living/carbon/human/human_target = carbon_target - human_target.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color) + human_target.AddComponent(/datum/component/face_decal, "spray", list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER), paint_color) use_charges(user, 10, FALSE) var/fraction = min(1, . / reagents.maximum_volume) reagents.expose(carbon_target, VAPOR, fraction * volume_multiplier) diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 8d47b9e891bd..111c796b11ad 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -33,7 +33,7 @@ //Wait for animation to end addtimer(CALLBACK(src, PROC_REF(spawn_carp)), 0.6 SECONDS) -/obj/item/toy/plush/carpplushie/dehy_carp/suicide_act(mob/living/carbon/human/user) +/obj/item/toy/plush/carpplushie/dehy_carp/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] starts eating [src]. It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/eatfood.ogg', 50, TRUE) if(!istype(user)) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index c5472863e2fc..cd5c97ea5997 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -14,6 +14,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2) var/flush = FALSE var/mob/living/silicon/ai/AI @@ -34,14 +35,14 @@ desc = "A stylish upgrade (?) to the intelliCard." icon_state = "aitater" base_icon_state = "aitater" - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/aicard/aispook name = "intelliLantern" desc = "A spoOoOoky upgrade to the intelliCard." icon_state = "aispook" base_icon_state = "aispook" - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/aicard/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is trying to upload [user.p_them()]self into [src]! That's not going to work out well!")) diff --git a/code/game/objects/items/devices/anomaly_neutralizer.dm b/code/game/objects/items/devices/anomaly_neutralizer.dm index 32f0674690e3..864451f45fb0 100644 --- a/code/game/objects/items/devices/anomaly_neutralizer.dm +++ b/code/game/objects/items/devices/anomaly_neutralizer.dm @@ -10,6 +10,7 @@ w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT item_flags = NOBLUDGEON + custom_materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT) /obj/item/anomaly_neutralizer/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm index 4e4bdcbf885d..695cab697177 100644 --- a/code/game/objects/items/devices/beacon.dm +++ b/code/game/objects/items/devices/beacon.dm @@ -7,6 +7,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' obj_flags = UNIQUE_RENAME + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) var/enabled = TRUE var/renamed = FALSE diff --git a/code/game/objects/items/devices/blood_scanner.dm b/code/game/objects/items/devices/blood_scanner.dm index 4a32545b0a45..2f584f680b25 100644 --- a/code/game/objects/items/devices/blood_scanner.dm +++ b/code/game/objects/items/devices/blood_scanner.dm @@ -15,7 +15,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/blood_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!usable_check(person_scanning = user, scanee = interacting_with)) diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index 31006c8dc1d9..a3191364108b 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -8,7 +8,7 @@ item_flags = NOBLUDGEON lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 5) + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING /// Max time this can be set var/max_duration = 300 SECONDS diff --git a/code/game/objects/items/devices/earthcracker.dm b/code/game/objects/items/devices/earthcracker.dm index 455be3168f26..9ec9b87ec907 100644 --- a/code/game/objects/items/devices/earthcracker.dm +++ b/code/game/objects/items/devices/earthcracker.dm @@ -134,7 +134,7 @@ /// Cleanup after an earthcracker is activated either for sabotage or mining. /obj/item/earthcracker/proc/handle_after_activation(turf/cracked_hull) do_sparks(2, FALSE, src) - cracked_hull.levelupdate() + cracked_hull?.levelupdate() status = EARTHCRACKER_SPENT update_appearance(UPDATE_ICON) @@ -151,15 +151,15 @@ for(var/turf/rock in oview(i)) // This collects a list of rings of turfs (in a growing radius of i) that we'll applying logic to "drill" below. if(istype(rock, /turf/closed/mineral)) - if(prob(50 + (i * 8))) + if(prob((i * 15) - 25)) continue var/turf/closed/mineral/drillable = rock drillable.gets_drilled(user) - if(prob(50)) + if(prob(15)) new /obj/effect/decal/cleanable/rubble(rock) continue - if(istype(rock, /turf/open/misc/asteroid) && prob(35)) + if(istype(rock, /turf/open/misc/asteroid) && prob(10)) new /obj/effect/decal/cleanable/rubble(rock) continue sleep(0.6 SECONDS) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 14e5095bf7d7..a9d6aec87e45 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -118,7 +118,7 @@ attack_self(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN -/obj/item/flashlight/suicide_act(mob/living/carbon/human/user) +/obj/item/flashlight/suicide_act(mob/living/user) if (user.is_blind()) user.visible_message(span_suicide("[user] is putting [src] close to [user.p_their()] eyes and turning it on... but [user.p_theyre()] blind!")) return SHAME @@ -346,6 +346,7 @@ light_color = "#CCFFFF" has_closed_handle = FALSE COOLDOWN_DECLARE(holosign_cooldown) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/flashlight/pen/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!COOLDOWN_FINISHED(src, holosign_cooldown)) @@ -369,6 +370,7 @@ desc = "A high-powered UV penlight intended to help stave off infection in the field on serious burned patients. Probably really bad to look into." icon_state = "penlight_surgical" light_color = LIGHT_COLOR_PURPLE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /// Our current UV cooldown COOLDOWN_DECLARE(uv_cooldown) /// How long between UV fryings @@ -403,6 +405,7 @@ light_color = "#99ccff" hitsound = 'sound/items/weapons/genhit1.ogg' has_closed_handle = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25) // the desk lamps are a bit special /obj/item/flashlight/lamp @@ -1016,7 +1019,7 @@ user.visible_message(span_notice("[user] cracks and shakes [src]."), span_notice("You crack and shake [src], turning it on!")) turn_on() -/obj/item/flashlight/glowstick/suicide_act(mob/living/carbon/human/user) +/obj/item/flashlight/glowstick/suicide_act(mob/living/user) if(!get_fuel()) user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!")) return SHAME diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index e41c346c9930..b9b380ab87a8 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -10,7 +10,7 @@ worn_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/max_shield_integrity = 250 var/shield_integrity = 250 var/max_fields = 3 diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 35ab6e546792..5671bcd37709 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -14,6 +14,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/gpstag var/tracking_on = TRUE var/debug_mode = FALSE diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 71509d389cef..664b47db23d6 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -91,69 +91,71 @@ crystal_lens = null return ITEM_INTERACT_SUCCESS -/obj/item/laser_pointer/attackby(obj/item/attack_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attack_item, /obj/item/stock_parts/micro_laser)) +/obj/item/laser_pointer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stock_parts/micro_laser)) if(diode) balloon_alert(user, "already has a diode!") - return - var/obj/item/stock_parts/attack_diode = attack_item + return ITEM_INTERACT_BLOCKING + var/obj/item/stock_parts/attack_diode = tool if(crystal_lens && attack_diode.rating < 3) //only tier 3 and up are small enough to fit - to_chat(user, span_warning("You try to jam \the [attack_item.name] in place, but \the [crystal_lens.name] is in the way!")) + to_chat(user, span_warning("You try to jam \the [tool.name] in place, but \the [crystal_lens.name] is in the way!")) playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 20) - if(do_after(user, 2 SECONDS, src)) - var/atom/atom_to_teleport = pick(user, attack_item) - if(atom_to_teleport == user) - to_chat(user, span_warning("You jam \the [attack_item.name] in too hard and break \the [crystal_lens.name] inside, teleporting you away!")) - user.drop_all_held_items() - else if(atom_to_teleport == attack_item) - attack_item.forceMove(drop_location()) - to_chat(user, span_warning("You jam \the [attack_item.name] in too hard and break \the [crystal_lens.name] inside, teleporting \the [attack_item.name] away!")) - do_teleport(atom_to_teleport, get_turf(src), crystal_lens.blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) - qdel(crystal_lens) - return - if(!user.transferItemToLoc(attack_item, src)) - return + if(!do_after(user, 2 SECONDS, src)) + return ITEM_INTERACT_BLOCKING + var/atom/atom_to_teleport = pick(user, tool) + if(atom_to_teleport == user) + to_chat(user, span_warning("You jam \the [tool.name] in too hard and break \the [crystal_lens.name] inside, teleporting you away!")) + user.drop_all_held_items() + else if(atom_to_teleport == tool) + tool.forceMove(drop_location()) + to_chat(user, span_warning("You jam \the [tool.name] in too hard and break \the [crystal_lens.name] inside, teleporting \the [tool.name] away!")) + do_teleport(atom_to_teleport, get_turf(src), crystal_lens.blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) + qdel(crystal_lens) + return ITEM_INTERACT_SUCCESS + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING playsound(src, 'sound/items/tools/screwdriver.ogg', 30) - diode = attack_item + diode = tool balloon_alert(user, "installed \the [diode.name]") //we have a diode now, try starting a charge sequence in case the pointer was charging when we took out the diode recharging = TRUE START_PROCESSING(SSobj, src) - return TRUE + return ITEM_INTERACT_SUCCESS - if(istype(attack_item, /obj/item/stack/ore/bluespace_crystal)) + if(istype(tool, /obj/item/stack/ore/bluespace_crystal)) if(crystal_lens) balloon_alert(user, "already has a lens!") - return + return ITEM_INTERACT_BLOCKING //the crystal stack we're trying to install a crystal from - var/obj/item/stack/ore/bluespace_crystal/crystal_stack = attack_item + var/obj/item/stack/ore/bluespace_crystal/crystal_stack = tool if(diode && diode.rating < 3) //only lasers of tier 3 and up can house a lens to_chat(user, span_warning("You try to jam \the [crystal_stack.name] in front of the diode, but it's a bad fit!")) playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 20) - if(do_after(user, 2 SECONDS, src)) - var/atom/atom_to_teleport = pick(user, src) - if(atom_to_teleport == user) - to_chat(user, span_warning("You press on \the [crystal_stack.name] too hard and are teleported away!")) - user.drop_all_held_items() - else if(atom_to_teleport == src) - forceMove(drop_location()) - to_chat(user, span_warning("You press on \the [crystal_stack.name] too hard and \the [src] is teleported away!")) - do_teleport(atom_to_teleport, get_turf(src), crystal_stack.blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) - crystal_stack.use_tool(src, user, amount = 1) //use only one if we were installing from a stack of crystals - return + if(!do_after(user, 2 SECONDS, src)) + return ITEM_INTERACT_BLOCKING + var/atom/atom_to_teleport = pick(user, src) + if(atom_to_teleport == user) + to_chat(user, span_warning("You press on \the [crystal_stack.name] too hard and are teleported away!")) + user.drop_all_held_items() + else if(atom_to_teleport == src) + forceMove(drop_location()) + to_chat(user, span_warning("You press on \the [crystal_stack.name] too hard and \the [src] is teleported away!")) + do_teleport(atom_to_teleport, get_turf(src), crystal_stack.blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) + crystal_stack.use_tool(src, user, amount = 1) //use only one if we were installing from a stack of crystals + return ITEM_INTERACT_SUCCESS //the single crystal that we actually install var/obj/item/stack/ore/bluespace_crystal/single_crystal = crystal_stack.split_stack(1) if(isnull(single_crystal)) - return + return ITEM_INTERACT_BLOCKING single_crystal.forceMove(src) crystal_lens = single_crystal playsound(src, 'sound/items/tools/screwdriver2.ogg', 30) balloon_alert(user, "installed \the [crystal_lens.name]") to_chat(user, span_notice("You install a [crystal_lens.name] in [src]. \ It can now be used to shine through obstacles at the cost of double the energy drain.")) - return TRUE + return ITEM_INTERACT_SUCCESS - return ..() + return NONE /obj/item/laser_pointer/examine(mob/user) . = ..() @@ -235,7 +237,7 @@ //Intensity of the laser dot to pass to flash_act var/severity = pick(0, 1, 2) var/always_fail = FALSE - if(istype(target_humanoid.glasses, /obj/item/clothing/glasses/eyepatch) && prob(50)) + if(istype(target_humanoid.get_item_by_slot(ITEM_SLOT_EYES), /obj/item/clothing/glasses/eyepatch) && prob(50)) always_fail = TRUE //chance to actually hit the eyes depends on internal component diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index c15b6083dc61..0b9e11cd1786 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -44,6 +44,7 @@ obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 8 + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5) /// How many uses does our light replacer have? var/uses = 10 @@ -76,36 +77,35 @@ //replace lights & stuff return do_action(interacting_with, user) ? ITEM_INTERACT_SUCCESS : NONE -/obj/item/lightreplacer/attackby(obj/item/insert, mob/user, list/modifiers, list/attack_modifiers) - . = ..() +/obj/item/lightreplacer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(uses >= max_uses) user.balloon_alert(user, "already full!") - return TRUE + return ITEM_INTERACT_BLOCKING - if(istype(insert, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/glass_to_insert = insert - if(glass_to_insert.use(LIGHTBULB_COST)) - add_uses(GLASS_SHEET_USES) - user.balloon_alert(user, "glass inserted") - else + if(istype(tool, /obj/item/stack/sheet/glass)) + var/obj/item/stack/sheet/glass/glass_to_insert = tool + if(!glass_to_insert.use(LIGHTBULB_COST)) user.balloon_alert(user, "need [LIGHTBULB_COST] glass sheets!") - return TRUE + return ITEM_INTERACT_BLOCKING + add_uses(GLASS_SHEET_USES) + user.balloon_alert(user, "glass inserted") + return ITEM_INTERACT_SUCCESS - if(insert.type == /obj/item/shard) //we don't want to insert plasma, titanium or other types of shards - if(!user.temporarilyRemoveItemFromInventory(insert)) + if(tool.type == /obj/item/shard) //we don't want to insert plasma, titanium or other types of shards + if(!user.temporarilyRemoveItemFromInventory(tool)) user.balloon_alert(user, "stuck in your hand!") - return TRUE + return ITEM_INTERACT_BLOCKING if(!add_shard(user)) //add_shard will display a message if it created a bulb from the shard so only display message when that does not happen user.balloon_alert(user, "shard inserted") - qdel(insert) - return TRUE + qdel(tool) + return ITEM_INTERACT_SUCCESS - if(istype(insert, /obj/item/light)) - var/obj/item/light/light_to_insert = insert + if(istype(tool, /obj/item/light)) + var/obj/item/light/light_to_insert = tool //remove from player's hand if(!user.temporarilyRemoveItemFromInventory(light_to_insert)) user.balloon_alert(user, "stuck in your hand!") - return TRUE + return ITEM_INTERACT_BLOCKING //insert light. display message only if adding a shard did not create a new bulb else the messages will conflict var/display_msg = TRUE @@ -117,14 +117,13 @@ user.balloon_alert(user, "light inserted") qdel(light_to_insert) - return TRUE + return ITEM_INTERACT_SUCCESS - if(istype(insert, /obj/item/storage)) + if(istype(tool, /obj/item/storage)) var/replaced_something = FALSE var/loaded = FALSE - var/obj/item/storage/storage_to_empty = insert - for(var/obj/item/item_to_check in storage_to_empty.contents) + for(var/obj/item/item_to_check in tool.contents) //reached max capacity during insertion if(src.uses >= max_uses) break @@ -153,14 +152,13 @@ replaced_something = TRUE if(!replaced_something) - if(uses == max_uses) - user.balloon_alert(user, "already full!") - else - user.balloon_alert(user, "nothing usable in [storage_to_empty]!") - return TRUE + user.balloon_alert(user, "nothing usable in [tool]!") + return ITEM_INTERACT_BLOCKING user.balloon_alert(user, "lights inserted") - return TRUE + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/lightreplacer/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) @@ -334,6 +332,7 @@ bluespace_toggle = TRUE actions_types = list(/datum/action/item_action/lightreplacer_scan) action_slots = ALL + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5) COOLDOWN_DECLARE(lightreplacer_spot_cooldown) /obj/item/lightreplacer/blue/emag_act() diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 718f3ac72197..0f9d9351ef62 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -11,7 +11,7 @@ var/spamcheck = 0 var/list/voicespan = list(SPAN_COMMAND) -/obj/item/megaphone/suicide_act(mob/living/carbon/user) +/obj/item/megaphone/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) spamcheck = 0//so they dont have to worry about recharging user.say("AAAAAAAAAAAARGHHHHH", forced="megaphone suicide")//he must have died while coding this diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index c58e46e74787..2e1501f74cb3 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -118,7 +118,7 @@ if (!QDELETED(our_hud)) INVOKE_ASYNC(our_hud, TYPE_PROC_REF(/datum/hud, show_hud), our_hud.hud_version) -/obj/item/multitool/suicide_act(mob/living/carbon/user) +/obj/item/multitool/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] puts the [src] to [user.p_their()] chest. It looks like [user.p_theyre()] trying to pulse [user.p_their()] heart off!")) return OXYLOSS//there's a reason it wasn't recommended by doctors diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index d1bff2e74328..69a7cc018a12 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -64,17 +64,19 @@ if(istype(assembly)) assembly.activate() -/obj/item/pressure_plate/attackby(obj/item/item, mob/living/L) - if(isassembly(item) && !istype(assembly) && removable_assembly) - var/obj/item/assembly/new_assembly = item - if(!(new_assembly.assembly_behavior & ASSEMBLY_FUNCTIONAL_OUTPUT)) - to_chat(L, span_warning("\The [item] doesn't seem like it would do much of anything inside of [src]...")) - return - if(L.transferItemToLoc(item, src)) - assembly = item - SEND_SIGNAL(item, COMSIG_ASSEMBLY_ADDED_TO_PRESSURE_PLATE, src, L) - to_chat(L, span_notice("You attach [item] to [src]!")) - return ..() +/obj/item/pressure_plate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isassembly(tool) || assembly || !removable_assembly) + return NONE + var/obj/item/assembly/new_assembly = tool + if(!(new_assembly.assembly_behavior & ASSEMBLY_FUNCTIONAL_OUTPUT)) + to_chat(user, span_warning("\The [tool] doesn't seem like it would do much of anything inside of [src]...")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + assembly = tool + SEND_SIGNAL(tool, COMSIG_ASSEMBLY_ADDED_TO_PRESSURE_PLATE, src, user) + to_chat(user, span_notice("You attach [tool] to [src]!")) + return ITEM_INTERACT_SUCCESS /obj/item/pressure_plate/attack_self(mob/living/L) if(removable_assembly && istype(assembly)) diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm index abe5d99b55d8..2d822518a17f 100644 --- a/code/game/objects/items/devices/quantum_keycard.dm +++ b/code/game/objects/items/devices/quantum_keycard.dm @@ -12,6 +12,7 @@ w_class = WEIGHT_CLASS_TINY obj_flags = UNIQUE_RENAME interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /// The linked quantum pad var/obj/machinery/quantumpad/qpad diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 7b3d48a69dd7..d6557c4aaa80 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -33,32 +33,33 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/electropack/attack_hand(mob/user, list/modifiers) - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(src == C.back) - to_chat(user, span_warning("You need help taking this off!")) - return + if(user.get_item_by_slot(ITEM_SLOT_BACK) == src) + to_chat(user, span_warning("You need help taking this off!")) + return return ..() -/obj/item/electropack/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/clothing/head/helmet)) - var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit(user) - A.icon = 'icons/obj/devices/assemblies.dmi' +/obj/item/electropack/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/clothing/head/helmet)) + return NONE + if(!user.temporarilyRemoveItemFromInventory(tool)) + to_chat(user, span_warning("[tool] is stuck to your hand, you cannot attach it to [src]!")) + return ITEM_INTERACT_BLOCKING + var/obj/item/assembly/shock_kit/torture_device = new /obj/item/assembly/shock_kit(user) + torture_device.icon = 'icons/obj/devices/assemblies.dmi' - if(!user.transferItemToLoc(W, A)) - to_chat(user, span_warning("[W] is stuck to your hand, you cannot attach it to [src]!")) - return - W.master = A - A.helmet_part = W + tool.forceMove(torture_device) // Forcemove() because we've already seen we can move it with the check above and the check above forces us to use forceMove() next + + tool.master = torture_device + torture_device.helmet_part = tool + + user.transferItemToLoc(src, torture_device, TRUE) + master = torture_device + torture_device.electropack_part = src - user.transferItemToLoc(src, A, TRUE) - master = A - A.electropack_part = src + user.put_in_hands(torture_device) + torture_device.add_fingerprint(user) - user.put_in_hands(A) - A.add_fingerprint(user) - else - return ..() + return ITEM_INTERACT_SUCCESS /obj/item/electropack/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 2a4085595181..df65baacd9ae 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( overlay_mic_idle = null overlay_mic_active = null -/obj/item/radio/headset/suicide_act(mob/living/carbon/user) +/obj/item/radio/headset/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!")) return TOXLOSS @@ -361,7 +361,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( /obj/item/radio/headset/headset_cargo/mining/Initialize(mapload) . = ..() - AddComponent(/datum/component/callouts, ITEM_SLOT_EARS, examine_text = span_info("Use ctrl-click to enable or disable callouts.")) + AddComponent(/datum/component/callouts, ITEM_SLOT_EARS, examine_text = span_info("Use ctrl-click to enable or disable callouts."), active = FALSE) /obj/item/radio/headset/headset_cargo/mining/equipped(mob/living/carbon/human/user, slot) . = ..() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 00daa2ac91b7..494e0c729fac 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -296,7 +296,10 @@ /obj/item/radio/intercom/syndicate name = "syndicate intercom" desc = "Talk smack through this." + icon_state = "intercom_syndicate" command = TRUE + icon_off = "intercom_syndicate-p" + overlay_speaker_active = "intercom_receive_syndicate" special_channels = RADIO_SPECIAL_SYNDIE // Syndicate intercom that also has freefrange on top of syndicate channel @@ -346,39 +349,90 @@ desc = "A station intercom primarily intended for speaking with members of a department." keylock = RADIO_KEYSLOT_EMAGGABLE_LOCK abstract_type = /obj/item/radio/intercom/departmental + var/stripe_color = null /obj/item/radio/intercom/departmental/Initialize(mapload) . = ..() if(length(keyslot?.channels) >= 1) set_frequency(GLOB.default_radio_channels[keyslot.channels[1]]) +/obj/item/radio/intercom/departmental/update_overlays() + . = ..() + if(!stripe_color) + return + var/mutable_appearance/stripe = mutable_appearance(icon, "intercom_stripe") + stripe.color = stripe_color + . += stripe + /obj/item/radio/intercom/departmental/cargo name = "cargo intercom" keyslot = /obj/item/encryptionkey/headset_cargo + stripe_color = "#956929" /obj/item/radio/intercom/departmental/command name = "command intercom" keyslot = /obj/item/encryptionkey/headset_com + stripe_color = "#486091" /obj/item/radio/intercom/departmental/engineering name = "engineering intercom" keyslot = /obj/item/encryptionkey/headset_eng + stripe_color = "#EFB341" /obj/item/radio/intercom/departmental/medical name = "medical intercom" keyslot = /obj/item/encryptionkey/headset_med + stripe_color = "#52B4E9" /obj/item/radio/intercom/departmental/science name = "science intercom" keyslot = /obj/item/encryptionkey/headset_sci + stripe_color = "#D381C9" /obj/item/radio/intercom/departmental/security name = "security intercom" keyslot = /obj/item/encryptionkey/headset_sec + stripe_color = "#DE3A3A" /obj/item/radio/intercom/departmental/service name = "service intercom" keyslot = /obj/item/encryptionkey/headset_service + stripe_color = "#83ca41" + +// Heads of staff variants +/obj/item/radio/intercom/departmental/head + icon_state = "intercom_command" + command = TRUE + +/obj/item/radio/intercom/departmental/head/ce + name = "\proper the chief engineer's intercom" + keyslot = /obj/item/encryptionkey/heads/ce + stripe_color = "#EFB341" + +/obj/item/radio/intercom/departmental/head/cmo + name = "\proper the chief medical officer's intercom" + keyslot = /obj/item/encryptionkey/heads/cmo + stripe_color = "#52B4E9" + +/obj/item/radio/intercom/departmental/head/hop + name = "\proper the head of personnel's intercom" + keyslot = /obj/item/encryptionkey/heads/hop + stripe_color = "#83ca41" + +/obj/item/radio/intercom/departmental/head/hos + name = "\proper the head of security's intercom" + keyslot = /obj/item/encryptionkey/heads/hos + stripe_color = "#DE3A3A" + +/obj/item/radio/intercom/departmental/head/qm + name = "\proper the quartermaster's intercom" + keyslot = /obj/item/encryptionkey/heads/qm + stripe_color = "#956929" + +/obj/item/radio/intercom/departmental/head/rd + name = "\proper the research director's intercom" + keyslot = /obj/item/encryptionkey/heads/rd + stripe_color = "#D381C9" #define INTERCOM_OFFSET 27 @@ -404,5 +458,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/medical, INTER MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/science, INTERCOM_OFFSET) MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/security, INTERCOM_OFFSET) MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/service, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/ce, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/cmo, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/hop, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/hos, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/qm, INTERCOM_OFFSET) +MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom/departmental/head/rd, INTERCOM_OFFSET) #undef INTERCOM_OFFSET diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 47f9fae2f2b3..833f109b3473 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -434,6 +434,8 @@ // left hands are odd slots if (idx && (idx % 2) == (message_mods[RADIO_EXTENSION] == MODE_L_HAND)) return + if (message_mods[MODE_TTS_IDENTIFIER]) + filtered_mods[MODE_TTS_IDENTIFIER] = message_mods[MODE_TTS_IDENTIFIER] talk_into(speaker, raw_message, spans=spans, language=message_language, message_mods=filtered_mods) /// Checks if this radio can receive on the given frequency. @@ -507,7 +509,6 @@ data["subspace"] = subspace_transmission data["subspaceSwitchable"] = subspace_switchable data["headset"] = FALSE - data["radio_noises"] = (user.client?.prefs.read_preference(/datum/preference/numeric/volume/sound_radio_noise)) return data @@ -516,7 +517,6 @@ if(.) return - var/mob/user = ui.user switch(action) if("frequency") if(freqlock != RADIO_FREQENCY_UNLOCKED) @@ -567,15 +567,6 @@ else recalculateChannels() . = TRUE - if("set_radio_volume") - if(!user.client) - return - user.client.prefs.write_preference(GLOB.preference_entries[/datum/preference/numeric/volume/sound_radio_noise], params["volume"]) - //let them know what it'll sound like - //we get their read prefs instead of just taking the params beacuse write_preference is what handles ensuring - //there's no href exploits. - var/volume_modifier = (user.client.prefs.read_preference(/datum/preference/numeric/volume/sound_radio_noise)) - SEND_SOUND(user, sound('sound/items/radio/radio_receive.ogg', volume = volume_modifier)) /obj/item/radio/examine(mob/user) . = ..() diff --git a/code/game/objects/items/devices/scanners/autopsy_scanner.dm b/code/game/objects/items/devices/scanners/autopsy_scanner.dm index 5e0376879e77..5207e1b22fc8 100644 --- a/code/game/objects/items/devices/scanners/autopsy_scanner.dm +++ b/code/game/objects/items/devices/scanners/autopsy_scanner.dm @@ -11,7 +11,7 @@ item_flags = CRUEL_IMPLEMENT slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) custom_price = PAYCHECK_COMMAND sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP @@ -44,7 +44,7 @@ user.visible_message(span_notice("[user] scans [scanned]'s cadaver.")) to_chat(user, span_deadsay("[icon2html(src, user)] ANALYZING CADAVER.")) - healthscan(user, scanned, advanced = TRUE) + healthscan(user, scanned, scanpower = SCANPOWER_ADVANCED) add_fingerprint(user) @@ -147,8 +147,8 @@ -\ Missing" continue - var/status = organ.get_status_text(advanced = TRUE, add_tooltips = FALSE, colored = FALSE) - var/appendix = organ.get_status_appendix(advanced = TRUE, add_tooltips = FALSE) + var/status = organ.get_status_text(scanpower = SCANPOWER_ADVANCED, add_tooltips = FALSE, colored = FALSE) + var/appendix = organ.get_status_appendix(scanpower = SCANPOWER_ADVANCED, add_tooltips = FALSE) if(!status) status ||= "OK" // otherwise flawless organs have no status reported by default organreport += "\ diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index 738edcb3c457..1062a5c4f1b0 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -59,7 +59,7 @@ . += span_notice("Right-click [src] to open the gas reference.") . += span_notice("Alt-click [src] to activate the barometer function.") -/obj/item/analyzer/suicide_act(mob/living/carbon/user) +/obj/item/analyzer/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")) return BRUTELOSS @@ -212,10 +212,10 @@ if(total_moles > 0) message += span_notice("Moles: [round(total_moles, 0.01)] mol") - var/list/cached_gases = air.gases - for(var/id in cached_gases) - var/gas_concentration = cached_gases[id][MOLES]/total_moles - message += span_notice("[cached_gases[id][GAS_META][META_GAS_NAME]]: [round(cached_gases[id][MOLES], 0.01)] mol ([round(gas_concentration*100, 0.01)] %)") + var/list/cached_gas_name = GAS_META[META_GAS_NAME] + for(var/id, amount in air.moles) + var/gas_concentration = amount / total_moles + message += span_notice("[cached_gas_name[id]]: [round(amount, 0.01)] mol ([round(gas_concentration*100, 0.01)] %)") message += span_notice("Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)") message += span_notice("Volume: [volume] L") message += span_notice("Pressure: [round(pressure, 0.01)] kPa") diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index c3ae145b51e7..8e823fab54ed 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -19,7 +19,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT *2) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) interaction_flags_click = NEED_LITERACY|NEED_LIGHT|ALLOW_RESTING custom_price = PAYCHECK_COMMAND sound_vary = TRUE @@ -29,8 +29,8 @@ var/mode = SCANNER_VERBOSE /// HEALTH/WOUND var/scanmode = SCANMODE_HEALTH - /// Advanced health analyzer - var/advanced = FALSE + /// Health analyzing power + var/scanpower = SCANPOWER_BASIC /// If this analyzer will give a bonus to wound treatments apon woundscan. var/give_wound_treatment_bonus = FALSE var/last_scan_text @@ -47,7 +47,7 @@ if(src.mode != SCANNER_NO_MODE) . += span_notice("Alt-click [src] to toggle the limb damage readout. Ctrl-shift-click to print readout report.") -/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user) +/obj/item/healthanalyzer/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")) return BRUTELOSS @@ -90,7 +90,7 @@ last_scan_text = floor_text return - if(ispodperson(M) && !advanced) + if(ispodperson(M) && !scanpower <= SCANPOWER_ADVANCED) to_chat(user, span_info("[M]'s biological structure is too complex for the health analyzer.")) return @@ -101,7 +101,7 @@ var/readability_check = user.can_read(src) && !user.is_blind() switch (scanmode) if (SCANMODE_HEALTH) - last_scan_text = healthscan(user, M, mode, advanced, tochat = readability_check) + last_scan_text = healthscan(user, M, mode, scanpower, tochat = readability_check) if((M.health / M.maxHealth) > CLEAN_BILL_OF_HEALTH_RATIO) last_healthy_scanned = WEAKREF(M) else @@ -148,7 +148,7 @@ * advanced - Whether it will give more advanced details, such as husk source. * tochat - Whether to immediately post the result into the chat of the user, otherwise it will return the results. */ -/proc/healthscan(mob/user, mob/living/target, mode = SCANNER_VERBOSE, advanced = FALSE, tochat = TRUE) +/proc/healthscan(mob/user, mob/living/target, mode = SCANNER_VERBOSE, scanpower = SCANPOWER_BASIC, tochat = TRUE) if(user.incapacitated) return @@ -170,14 +170,14 @@ render_list += "[span_info("Analyzing results for [target] ([round_timestamp()]):")]
Overall status: [mob_status]
" - if(!advanced && target.has_reagent(/datum/reagent/inverse/technetium)) - advanced = TRUE + if(!scanpower == SCANPOWER_BASIC && target.has_reagent(/datum/reagent/inverse/technetium)) + scanpower = SCANPOWER_ADVANCED - SEND_SIGNAL(target, COMSIG_LIVING_HEALTHSCAN, render_list, advanced, user, mode, tochat) + SEND_SIGNAL(target, COMSIG_LIVING_HEALTHSCAN, render_list, scanpower, user, mode, tochat) // Husk detection if(HAS_TRAIT(target, TRAIT_HUSK)) - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) if(HAS_TRAIT_FROM(target, TRAIT_HUSK, CHANGELING_DRAIN)) render_list += "Subject has been husked by [conditional_tooltip("desiccation", "Irreparable. Under normal circumstances, revival can only proceed via brain transplant.", tochat)].
" else if(HAS_TRAIT_FROM(target, TRAIT_HUSK, SKELETON_TRAIT)) @@ -191,7 +191,7 @@ render_list += "Subject has been husked.
" if(target.get_stamina_loss()) - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) render_list += "Fatigue level: [target.get_stamina_loss()]%.
" else render_list += "Subject appears to be suffering from fatigue.
" @@ -212,7 +212,7 @@ var/mob/living/carbon/carbontarget = target if(LAZYLEN(carbontarget.quirks)) render_list += "Subject Major Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MAJOR_DISABILITY, from_scan = TRUE)].
" - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) render_list += "Subject Minor Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MINOR_DISABILITY, TRUE)].
" // Body part damage report @@ -294,7 +294,7 @@ \ \ \ - [advanced ? "" : ""]\ + [scanpower >= SCANPOWER_ADVANCED ? "" : ""]\ \ " @@ -306,19 +306,19 @@ if(missing_organs[sorted_slot]) render = TRUE toReport += "\ - [advanced ? "" : ""]\ + [scanpower >= SCANPOWER_ADVANCED ? "" : ""]\ " continue if(mode != SCANNER_VERBOSE && !organ.show_on_condensed_scans()) continue - var/status = organ.get_status_text(advanced, tochat) - var/appendix = organ.get_status_appendix(advanced, tochat) + var/status = organ.get_status_text(scanpower, tochat) + var/appendix = organ.get_status_appendix(scanpower, tochat) if(status || appendix) status ||= "OK" // otherwise flawless organs have no status reported by default render = TRUE toReport += "\ \ - [advanced ? "" : ""]\ + [scanpower >= SCANPOWER_ADVANCED ? "" : ""]\ \ " if(appendix) @@ -345,7 +345,7 @@ render_list += "
" //Genetic stability - if(advanced && humantarget.has_dna() && humantarget.dna.stability != initial(humantarget.dna.stability)) + if(scanpower >= SCANPOWER_ADVANCED && humantarget.has_dna() && humantarget.dna.stability != initial(humantarget.dna.stability)) render_list += "Genetic Stability: [humantarget.dna.stability]%.
" //body temperature @@ -389,22 +389,22 @@ if (blood_type.restoration_chem == /datum/reagent/iron) recommendation += "[/datum/reagent/medicine/salglu_solution::name]" if (length(recommendation)) - recommendation += "[blood_type.get_blood_name()] transufion" + recommendation += "[blood_type.get_blood_name()] transfusion" else - recommendation += "immediate [blood_type.get_blood_name()] transufion" + recommendation += "immediate [blood_type.get_blood_name()] transfusion" level_format = conditional_tooltip(level_format, "Recommendation: [english_list(recommendation, and_text = " or ")].", tochat) else level_format = "[blood_percent]%, [cached_blood_volume] cl" if (blood_type.get_type()) - blood_type_format = "type: [blood_type.get_type()]" + blood_type_format = "[blood_type.get_type()]" if(tochat && length(blood_type.compatible_types)) var/list/compatible_types_readable = list() for(var/datum/blood_type/comp_blood_type as anything in blood_type.compatible_types) compatible_types_readable |= initial(comp_blood_type.name) blood_type_format = span_tooltip("Can receive from types [english_list(compatible_types_readable)].", blood_type_format) - render_list += "[blood_type.get_blood_name()] level: [level_format],[blood_type_format]
" + render_list += "[blood_type.get_blood_name()] level: [level_format][blood_type_format]
" var/blood_alcohol_content = target.get_blood_alcohol_content() if(blood_alcohol_content > 0) @@ -414,6 +414,27 @@ else render_list += "[blood_type?.get_blood_name() || "Blood"] alcohol content: [blood_alcohol_content]%
" + // Ethereal Charge + if(istype(target.get_organ_slot(ORGAN_SLOT_STOMACH), /obj/item/organ/stomach/ethereal)) + var/obj/item/organ/stomach/ethereal/battery_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH) + var/charge = battery_stomach.cell.charge + var/charge_dangerous = charge > ETHEREAL_CHARGE_FULL || charge < ETHEREAL_CHARGE_LOWPOWER + var/charge_format = "[display_power(charge)] / [display_power(ETHEREAL_CHARGE_FULL)]" + + if(charge_dangerous) + var/recommendation = "Recommendation: " + switch(charge) + if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER) + recommendation += "charging by LE-fortified food" + if(ETHEREAL_CHARGE_FULL to ETHEREAL_CHARGE_OVERLOAD) + recommendation += "discharge into nearest undercapacity APC" + if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS) + recommendation += "preparation for violent electrocardiac discharge event" + recommendation = uppertext(recommendation) + charge_format = span_tooltip("[recommendation] followed with toxins treatment.", charge_format) + + render_list += "Electrical charge: [charge_format]
" + //Diseases var/disease_hr = FALSE for(var/datum/disease/disease as anything in target.diseases) @@ -425,17 +446,13 @@ var/cure_text if(istype(disease, /datum/disease/advance)) var/datum/disease/advance/advanced_disease = disease - var/remedies = list() - var/remedy_limit = advanced ? 3 : 2 - for(var/datum/symptom/each_symptom as anything in advanced_disease.symptoms) - if(!each_symptom.symptom_cure) - continue - var/datum/reagent/each_cure = each_symptom.symptom_cure - if(!each_symptom.neutered && !(each_cure::name in remedies)) - remedies += each_cure::name - if(length(remedies) >= remedy_limit) - break - cure_text = english_list(remedies, nothing_text = "Nothing") + var/cure_count = 2 + switch(scanpower) + if(SCANPOWER_ADVANCED) + cure_count = 3 + if(SCANPOWER_SUPER) + cure_count = INFINITY + cure_text = advanced_disease.generate_cure_text(cure_count) else cure_text = disease.cure_text render_list += "\ @@ -603,7 +620,14 @@ name = "advanced health analyzer" icon_state = "health_adv" desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." - advanced = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75) + scanpower = SCANPOWER_ADVANCED + +/obj/item/healthanalyzer/super + name = "super health analyzer" + icon_state = "health_super" + desc = "A health scanner for debuggers. Functions the same as ghost healthscans." + scanpower = SCANPOWER_SUPER #define AID_EMOTION_NEUTRAL "neutral" #define AID_EMOTION_HAPPY "happy" @@ -791,11 +815,7 @@ var/disease_cure = disease.cure_text if(istype(disease, /datum/disease/advance)) var/datum/disease/advance/advanced_disease = disease - for(var/datum/symptom/each_symptom as anything in advanced_disease.symptoms) - if(!each_symptom.neutered && each_symptom.symptom_cure) - var/datum/reagent/each_cure = each_symptom.symptom_cure - disease_cure = each_cure::name - break // We only get one + disease_cure = advanced_disease.generate_cure_text(1) render += "Warning: [disease.form] detected
\
Name: [disease.name].
Type: [disease.spread_text].
Stage: [disease.stage]/[disease.max_stages].
Possible Cure: [disease_cure]
\
" diff --git a/code/game/objects/items/devices/scanners/plant_analyzer.dm b/code/game/objects/items/devices/scanners/plant_analyzer.dm index 4adfec936299..6dfa8e24cf17 100644 --- a/code/game/objects/items/devices/scanners/plant_analyzer.dm +++ b/code/game/objects/items/devices/scanners/plant_analyzer.dm @@ -116,7 +116,7 @@ span_notice("You analyze [scanned_mob]'s vitals.") ) - healthscan(user, scanned_mob, advanced = TRUE) + healthscan(user, scanned_mob, scanpower = SCANPOWER_ADVANCED) add_fingerprint(user) /* @@ -303,6 +303,9 @@ ) seed_data["removable_traits"] = list() seed_data["core_traits"] = list() + seed_data["distill_reagent"] = "" + seed_data["juice_name"] = "" + seed_data["grind_results"] = list() for(var/datum/plant_gene/trait/trait in seed.genes) if(trait.mutability_flags & PLANT_GENE_REMOVABLE) seed_data["removable_traits"] += trait.type @@ -317,7 +320,7 @@ var/datum/plant_gene/trait/maxchem/volume_trait = locate(/datum/plant_gene/trait/maxchem) in seed.genes var/datum/plant_gene/trait/modified_volume/volume_unit_trait = locate(/datum/plant_gene/trait/modified_volume) in seed.genes seed_data["volume_mod"] = volume_trait ? volume_trait.rate : 1 - seed_data["volume_units"] = volume_unit_trait ? volume_unit_trait.new_capcity : PLANT_REAGENT_VOLUME + seed_data["volume_units"] = volume_unit_trait ? volume_unit_trait.new_capacity : PLANT_REAGENT_VOLUME seed_data["mutatelist"] = list() for(var/obj/item/seeds/mutant as anything in seed.mutatelist) seed_data["mutatelist"] += initial(mutant.plantname) diff --git a/code/game/objects/items/devices/scanners/sequence_scanner.dm b/code/game/objects/items/devices/scanners/sequence_scanner.dm index 938c5637b74e..a763c7c1cc87 100644 --- a/code/game/objects/items/devices/scanners/sequence_scanner.dm +++ b/code/game/objects/items/devices/scanners/sequence_scanner.dm @@ -18,6 +18,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/list/discovered = list() //hit a dna console to update the scanners database var/list/buffer diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm index c355da8ba7d4..19e6ca2d0902 100644 --- a/code/game/objects/items/devices/scanners/slime_scanner.dm +++ b/code/game/objects/items/devices/scanners/slime_scanner.dm @@ -11,7 +11,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.30, /datum/material/glass=SMALL_MATERIAL_AMOUNT * 0.20) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) /obj/item/slime_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) diff --git a/code/game/objects/items/devices/scanners/t_scanner.dm b/code/game/objects/items/devices/scanners/t_scanner.dm index 30083139abd2..9cfa2e097666 100644 --- a/code/game/objects/items/devices/scanners/t_scanner.dm +++ b/code/game/objects/items/devices/scanners/t_scanner.dm @@ -14,10 +14,11 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) /// Is this T-Ray scanner currently on? var/on = FALSE -/obj/item/t_scanner/suicide_act(mob/living/carbon/user) +/obj/item/t_scanner/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm index 01fda4b6456c..91b0b36d2772 100644 --- a/code/game/objects/items/devices/swapper.dm +++ b/code/game/objects/items/devices/swapper.dm @@ -9,6 +9,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING + custom_materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /// Cooldown for usage var/cooldown = 30 SECONDS /// Next available time @@ -27,22 +28,22 @@ icon_state = "swapper[linked_swapper ? "-linked" : null]" return ..() -/obj/item/swapper/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/swapper)) - var/obj/item/swapper/other_swapper = I - if(other_swapper.linked_swapper) - to_chat(user, span_warning("[other_swapper] is already linked. Break the current link to establish a new one.")) - return - if(linked_swapper) - to_chat(user, span_warning("[src] is already linked. Break the current link to establish a new one.")) - return - to_chat(user, span_notice("You establish a quantum link between the two devices.")) - linked_swapper = other_swapper - other_swapper.linked_swapper = src - update_appearance() - linked_swapper.update_appearance() - else - return ..() +/obj/item/swapper/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/swapper)) + return NONE + var/obj/item/swapper/other_swapper = tool + if(other_swapper.linked_swapper) + to_chat(user, span_warning("[other_swapper] is already linked. Break the current link to establish a new one.")) + return ITEM_INTERACT_BLOCKING + if(linked_swapper) + to_chat(user, span_warning("[src] is already linked. Break the current link to establish a new one.")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You establish a quantum link between the two devices.")) + linked_swapper = other_swapper + other_swapper.linked_swapper = src + update_appearance() + linked_swapper.update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/swapper/attack_self(mob/living/user) if(world.time < next_use) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 880d949d238b..a90ea8ddec04 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -85,15 +85,16 @@ else soundloop.start() -/obj/item/taperecorder/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(!mytape && istype(I, /obj/item/tape)) - if(!user.transferItemToLoc(I,src)) - return - mytape = I - balloon_alert(user, "inserted [mytape]") - playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) - update_appearance() - +/obj/item/taperecorder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(mytape || !istype(tool, /obj/item/tape)) + return NONE + if(!user.transferItemToLoc(tool,src)) + return ITEM_INTERACT_BLOCKING + mytape = tool + balloon_alert(user, "inserted [mytape]") + playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/taperecorder/proc/eject(mob/user) if(!mytape) @@ -126,8 +127,7 @@ return FALSE -/obj/item/taperecorder/verb/ejectverb() - set name = "Eject Tape" +GAME_VERB(/obj/item/taperecorder, ejectverb, "Eject Tape", null) if(!can_use(usr)) balloon_alert(usr, "can't use!") @@ -161,8 +161,7 @@ mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss", NO_TIMEZONE)]\] [speaker.get_voice()]: [raw_message]" -/obj/item/taperecorder/verb/record() - set name = "Start Recording" +GAME_VERB(/obj/item/taperecorder, record, "Start Recording", null) if(!can_use(usr)) balloon_alert(usr, "can't use!") @@ -203,8 +202,7 @@ playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) -/obj/item/taperecorder/verb/stop() - set name = "Stop" +GAME_VERB(/obj/item/taperecorder, stop, "Stop", null) if(!can_use(usr)) balloon_alert(usr, "can't use!") @@ -223,8 +221,7 @@ update_appearance() update_sound() -/obj/item/taperecorder/verb/play() - set name = "Play Tape" +GAME_VERB(/obj/item/taperecorder, play, "Play Tape", null) if(!can_use(usr)) balloon_alert(usr, "can't use!") @@ -295,8 +292,7 @@ if("Eject") eject(user) -/obj/item/taperecorder/verb/print_transcript() - set name = "Print Transcript" +GAME_VERB(/obj/item/taperecorder, print_transcript, "Print Transcript", null) var/list/transcribed_info = mytape.storedinfo if(!length(transcribed_info)) @@ -371,7 +367,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.05) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2) force = 1 throwforce = 0 obj_flags = UNIQUE_RENAME //my mixtape diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 0ba47962bebc..bf91d8a0fe59 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -404,7 +404,7 @@ effective or pretty fucking useless. desc = "A jury-rigged device that disrupts nearby radio communication. Its crude construction provides a significantly smaller area of effect compared to its Syndicate counterpart." range = 5 disruptor_range = 3 - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55) /obj/item/jammer/makeshift/Initialize(mapload) . = ..() @@ -442,35 +442,39 @@ effective or pretty fucking useless. return TRUE -/obj/machinery/porta_turret/syndicate/toolbox/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(!istype(attacking_item, /obj/item/wrench/combat)) +/obj/machinery/porta_turret/syndicate/toolbox/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/wrench/combat)) return ..() - if(!attacking_item.toolspeed) - return + if(!tool.toolspeed) // This is a check for the laser wrench being off, I think + return ITEM_INTERACT_BLOCKING if(user.combat_mode) balloon_alert(user, "deconstructing...") - if(!attacking_item.use_tool(src, user, 5 SECONDS, volume = 20)) - return + if(!tool.use_tool(src, user, 5 SECONDS, volume = 20)) + return ITEM_INTERACT_BLOCKING deconstruct(TRUE) - attacking_item.play_tool_sound(src, 50) + tool.play_tool_sound(src, 50) balloon_alert(user, "deconstructed!") + return ITEM_INTERACT_SUCCESS - else - if(atom_integrity == max_integrity) - balloon_alert(user, "already repaired!") - return - balloon_alert(user, "repairing...") - while(atom_integrity != max_integrity) - if(!attacking_item.use_tool(src, user, 2 SECONDS, volume = 20)) - return + if(atom_integrity == max_integrity) + balloon_alert(user, "already repaired!") + return ITEM_INTERACT_BLOCKING - repair_damage(10) + balloon_alert(user, "repairing...") + . = ITEM_INTERACT_BLOCKING // I'm doing this such that at least one successful repair considers the interaction a success + while(atom_integrity != max_integrity) + if(!tool.use_tool(src, user, 2 SECONDS, volume = 20)) + return . - balloon_alert(user, "repaired!") + repair_damage(10) + . = ITEM_INTERACT_SUCCESS + + balloon_alert(user, "repaired!") + return ITEM_INTERACT_SUCCESS /obj/machinery/porta_turret/syndicate/toolbox/on_deconstruction(disassembled) if(disassembled) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index c1e7f296846a..7dcf6fa10618 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -107,7 +107,7 @@ user.log_message("attached [src] to [chair]", LOG_GAME) return ITEM_INTERACT_SUCCESS else if(istype(interacting_with, /obj/item/tank)) - if(try_attach_tank(interacting_with)) + if(try_attach_tank(interacting_with, user)) return ITEM_INTERACT_SUCCESS else return ITEM_INTERACT_FAILURE @@ -118,33 +118,42 @@ return ITEM_INTERACT_FAILURE return NONE -/obj/item/transfer_valve/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/tank)) - try_attach_tank(item, user) -//TODO: Have this take an assemblyholder - else if(isassembly(item)) - try_attach_assembly(item, user) - else if(istype(item, /obj/item/stack/cable_coil) && !wired) - var/obj/item/stack/cable_coil/coil = item +/obj/item/transfer_valve/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/tank)) + try_attach_tank(tool, user) + return ITEM_INTERACT_SUCCESS + + //TODO: Have this take an assemblyholder <-- commit five years ago + if(isassembly(tool)) + try_attach_assembly(tool, user) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/cable_coil) && !wired) + var/obj/item/stack/cable_coil/coil = tool if (coil.get_amount() < 15) to_chat(user, span_warning("You need fifteen lengths of coil for this!")) - return + return ITEM_INTERACT_BLOCKING coil.use(15) to_chat(user, span_notice("You add some cables, not being really sure why. Looks like backpack straps.")) wired = TRUE slot_flags |= ITEM_SLOT_BACK update_appearance() + return ITEM_INTERACT_SUCCESS - else if(item.tool_behaviour == TOOL_WIRECUTTER && wired) - item.play_tool_sound(src) - to_chat(user, span_notice("You remove the cables.")) - wired = FALSE - slot_flags &= ~ITEM_SLOT_BACK - Move(drop_location()) - new /obj/item/stack/cable_coil(drop_location(), 15) - update_appearance() + return NONE + +/obj/item/transfer_valve/wirecutter_act(mob/living/user, obj/item/tool) + if(!wired) + return ITEM_INTERACT_SKIP_TO_ATTACK + tool.play_tool_sound(src) + to_chat(user, span_notice("You remove the cables.")) + wired = FALSE + slot_flags &= ~ITEM_SLOT_BACK + forceMove(drop_location()) + new /obj/item/stack/cable_coil(drop_location(), 15) + update_appearance() + return ITEM_INTERACT_SUCCESS - return /obj/item/transfer_valve/proc/try_attach_tank(obj/item/tank/new_tank, mob/user) if(!tank_one) diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index a3189c94cfb0..095f9e2c5e73 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -13,7 +13,7 @@ throw_speed = 2 throw_range = 1 w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma= SMALL_MATERIAL_AMOUNT * 5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) /// how long the seal takes to place on the door var/seal_time = 3 SECONDS /// how long it takes to remove the seal from a door diff --git a/code/game/objects/items/floppy_disk.dm b/code/game/objects/items/floppy_disk.dm index 3b7a75f1fa63..60dfac95a56b 100644 --- a/code/game/objects/items/floppy_disk.dm +++ b/code/game/objects/items/floppy_disk.dm @@ -361,6 +361,7 @@ /obj/item/disk/manipulator name = "manipulator task disk" desc = "A floppy disk containing manipulator tasks." + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT) var/list/tasks_data = list() /obj/item/disk/manipulator/proc/set_tasks(list/new_tasks_data) diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm index 0d715d8e6d9f..0602c653a6f2 100644 --- a/code/game/objects/items/grenades/_grenade.dm +++ b/code/game/objects/items/grenades/_grenade.dm @@ -64,7 +64,7 @@ ADD_TRAIT(src, TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT, type) RegisterSignal(src, COMSIG_ITEM_USED_AS_INGREDIENT, PROC_REF(on_used_as_ingredient)) -/obj/item/grenade/suicide_act(mob/living/carbon/user) +/obj/item/grenade/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] primes [src], then eats it! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/eatfood.ogg', 50, TRUE) arm_grenade(user, det_time) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index e1780c09c6eb..88018ecbc566 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -298,6 +298,7 @@ affected_area = 5 ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades. threatscale = 1.1 // 10% more effective. + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) /obj/item/grenade/chem_grenade/large/detonate(mob/living/lanced_by) if(stage != GRENADE_READY || dud_flags) @@ -357,6 +358,7 @@ base_icon_state = "cryog" affected_area = 2 ignition_temp = -100 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures. name = "pyro grenade" @@ -365,6 +367,7 @@ icon_state = "pyrog" base_icon_state = "pyrog" ignition_temp = 500 // This is enough to expose a hotspot. + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses. name = "advanced release grenade" @@ -372,6 +375,7 @@ casedesc = "This casing is able to detonate more than once. Can be configured using a multitool." icon_state = "timeg" base_icon_state = "timeg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool. /obj/item/grenade/chem_grenade/adv_release/multitool_act(mob/living/user, obj/item/tool) diff --git a/code/game/objects/items/grenades/festive.dm b/code/game/objects/items/grenades/festive.dm index faa8d8da5bf2..cdc651b3c381 100644 --- a/code/game/objects/items/grenades/festive.dm +++ b/code/game/objects/items/grenades/festive.dm @@ -14,12 +14,12 @@ /obj/item/sparkler/fire_act(exposed_temperature, exposed_volume) light() -/obj/item/sparkler/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - var/ignition_msg = item.ignition_effect(src, user) - if(ignition_msg) - light(user, ignition_msg) - else - return ..() +/obj/item/sparkler/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + var/ignition_msg = tool.ignition_effect(src, user) + if(!ignition_msg) + return NONE + light(user, ignition_msg) + return ITEM_INTERACT_SUCCESS /obj/item/sparkler/proc/light(mob/user, message) if(lit) @@ -75,13 +75,15 @@ /obj/item/grenade/firecracker/attack_self(mob/user) // You need to light it manually. return -/obj/item/grenade/firecracker/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - var/ignition_msg = item.ignition_effect(src, user) - if(ignition_msg && !active) - visible_message(ignition_msg) - arm_grenade(user) - else - return ..() +/obj/item/grenade/firecracker/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(active) + return NONE + var/ignition_msg = tool.ignition_effect(src, user) + if(!ignition_msg) + return NONE + visible_message(ignition_msg) + arm_grenade(user) + return ITEM_INTERACT_SUCCESS /obj/item/grenade/firecracker/fire_act(exposed_temperature, exposed_volume) detonate() diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 5dbf50521688..779ff29f169a 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -75,10 +75,10 @@ if(activator) activator.holder_movement() -/obj/item/grenade/iedcasing/dropped() +/obj/item/grenade/iedcasing/dropped(mob/user, silent) . = ..() if(activator) - activator.dropped() + activator.dropped(user, silent) /obj/item/grenade/iedcasing/proc/process_activation(obj/item/assembly) detonate() @@ -218,33 +218,33 @@ else . += span_notice("The wires are just dangling from it, you need some sort of activating assembly.") -/obj/item/sliced_pipe/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/sliced_pipe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!wires_are_in) // here we can stuff in additional objects for a cooler effect - if(is_type_in_typecache(item, allowed) && contents.len < MAX_STUFFINGS) + if(is_type_in_typecache(tool, allowed) && contents.len < MAX_STUFFINGS) balloon_alert(user, "stuffed in") - var/atom/movable/to_put = item - if(isstack(item)) - var/obj/item/stack/as_stack = item + var/atom/movable/to_put = tool + if(isstack(tool)) + var/obj/item/stack/as_stack = tool var/obj/item/stack/new_stack = as_stack.split_stack(1) new_stack.merge_type = null //prevent them from merging inside for contents.len to_put = new_stack to_put.forceMove(src) - return + return ITEM_INTERACT_SUCCESS //if the item has reagents lets allow it to transfer - if(item.reagents) - return ..() + if(tool.reagents) + return NONE if(reagents.total_volume < 5) balloon_alert(user, "add more fuel!") - return + return ITEM_INTERACT_BLOCKING - var/obj/item/stack/cable_coil/coil = item + var/obj/item/stack/cable_coil/coil = tool if(!istype(coil)) - return + return ITEM_INTERACT_BLOCKING if (coil.get_amount() < 15) balloon_alert(user, "need 15 length!") - return + return ITEM_INTERACT_BLOCKING coil.use(15) var/cur_power = 0 @@ -260,27 +260,30 @@ icon_state = "[icon_state]-cable" reagents.flags = SEALED_CONTAINER wires_are_in = TRUE - else // wires are in, lets finish this up - var/obj/item/assembly/assembly = item - if(!istype(assembly) || !(assembly.type in allowed_activators)) - return - if(assembly.secured) - balloon_alert(user, "unsecure assembly first!") - return - if(!user.transferItemToLoc(assembly, src)) - return - user.balloon_alert(user, "attached") - - var/obj/item/grenade/iedcasing/pipebomb = new(drop_location()) - for(var/atom/movable/item_inside as anything in contents) - item_inside.forceMove(pipebomb) - - pipebomb.power = power - pipebomb.attach_activator(assembly) - pipebomb.setup_effects_from_contents() - var/was_in_hands = (loc == user) - qdel(src) - if(was_in_hands) - user.put_in_hands(pipebomb) + return ITEM_INTERACT_SUCCESS + + // wires are in, lets finish this up + var/obj/item/assembly/assembly = tool + if(!istype(assembly) || !(assembly.type in allowed_activators)) + return ITEM_INTERACT_BLOCKING + if(assembly.secured) + balloon_alert(user, "unsecure assembly first!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(assembly, src)) + return ITEM_INTERACT_BLOCKING + user.balloon_alert(user, "attached") + + var/obj/item/grenade/iedcasing/pipebomb = new(drop_location()) + for(var/atom/movable/item_inside as anything in contents) + item_inside.forceMove(pipebomb) + + pipebomb.power = power + pipebomb.attach_activator(assembly) + pipebomb.setup_effects_from_contents() + var/was_in_hands = (loc == user) + qdel(src) + if(was_in_hands) + user.put_in_hands(pipebomb) + return ITEM_INTERACT_SUCCESS #undef MAX_STUFFINGS diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index fa94f2e4608b..82bea271e951 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -146,6 +146,8 @@ thrown_weapon.get_embed()?.embed_chance = 0 else if(isliving(bomb_target)) plastic_overlay.layer = FLOAT_LAYER + else if(isopenturf(bomb_target)) //Render them above open turf layer if theyre open turf + plastic_overlay.layer = ABOVE_OPEN_TURF_LAYER target.add_overlay(plastic_overlay) to_chat(user, span_notice("You plant the bomb. Timer counting down from [det_time].")) diff --git a/code/game/objects/items/gun_maintenance.dm b/code/game/objects/items/gun_maintenance.dm index d580d37fe253..eef9ea10b9e8 100644 --- a/code/game/objects/items/gun_maintenance.dm +++ b/code/game/objects/items/gun_maintenance.dm @@ -77,3 +77,4 @@ inhand_icon_state = "toolbox_blue" uses = 1 max_uses = 1 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm index 1e5ef4bd23e9..27cf4205b256 100644 --- a/code/game/objects/items/hand_items.dm +++ b/code/game/objects/items/hand_items.dm @@ -724,7 +724,7 @@ // From here on, no message suppressed = SUPPRESSED_VERY - if(!(kisser.mind && HAS_TRAIT_FROM(target, TRAIT_FOOD_CHEF_MADE, REF(kisser.mind)))) + if(!(kisser.mind && HAS_TRAIT_FROM(target, TRAIT_HANDMADE, REF(kisser.mind)))) to_chat(firer, span_warning("Wait a second, you didn't make this [target.name]. How can you claim it as your own?")) return if(target.reagents.has_reagent(/datum/reagent/love)) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index cc8889b3b12b..c1983cf691f4 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -14,7 +14,7 @@ dye_color = DYE_PRISONER icon = 'icons/obj/weapons/restraints.dmi' -/obj/item/restraints/suicide_act(mob/living/carbon/user) +/obj/item/restraints/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return OXYLOSS @@ -362,6 +362,7 @@ breakouttime = 45 SECONDS color = null cable_color = null + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/restraints/handcuffs/cable/zipties/on_uncuffed(datum/source, mob/living/wearer) . = ..() @@ -444,6 +445,7 @@ throw_range = 1 icon_state = "beartrap" desc = "A trap used to catch bears and other legged creatures." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT) ///If true, the trap is "open" and can trigger. var/armed = FALSE ///How much damage the trap deals when triggered. @@ -574,6 +576,7 @@ breakouttime = 3 SECONDS item_flags = DROPDEL flags_1 = NONE + custom_materials = null // cannot be recycled anyway /obj/item/restraints/legcuffs/beartrap/energy/Initialize(mapload) . = ..() @@ -679,7 +682,7 @@ w_class = WEIGHT_CLASS_SMALL breakouttime = 6 SECONDS custom_price = PAYCHECK_COMMAND * 0.35 - custom_materials = null + custom_materials = list(/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/restraints/legcuffs/bola/energy/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index 6e46cdb2a4df..3e62bbe94a80 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -16,6 +16,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/list/signs var/max_signs = 10 //time to create a holosign in deciseconds. @@ -119,6 +120,7 @@ holosign_type = /obj/structure/holosign/barrier/wetsign creation_time = 1 SECONDS max_signs = 12 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/holosign_creator/security name = "security holobarrier projector" @@ -127,6 +129,7 @@ holosign_type = /obj/structure/holosign/barrier creation_time = 2 SECONDS max_signs = 6 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/holosign_creator/engineering name = "engineering holobarrier projector" @@ -135,6 +138,7 @@ holosign_type = /obj/structure/holosign/barrier/engineering creation_time = 1 SECONDS max_signs = 12 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/holosign_creator/atmos name = "ATMOS holofan projector" @@ -149,6 +153,7 @@ /obj/structure/window, /obj/structure/grille, ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /// Clearview holograms don't catch clicks and are more transparent var/clearview = FALSE /// Timer for auto-turning off clearview @@ -207,6 +212,7 @@ holosign_type = /obj/structure/holosign/barrier/medical creation_time = 1 SECONDS max_signs = 6 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT) /obj/item/holosign_creator/cyborg name = "Energy Barrier Projector" diff --git a/code/game/objects/items/implants/implant_clown.dm b/code/game/objects/items/implants/implant_clown.dm index adcd272b8c27..81bac749a5a2 100644 --- a/code/game/objects/items/implants/implant_clown.dm +++ b/code/game/objects/items/implants/implant_clown.dm @@ -2,6 +2,7 @@ /obj/item/implant/sad_trombone name = "sad trombone implant" actions_types = null + custom_materials = list(/datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT) /// What do we play when the implantee deathgasps? var/death_noise = 'sound/misc/sadtrombone.ogg' diff --git a/code/game/objects/items/implants/implant_freedom.dm b/code/game/objects/items/implants/implant_freedom.dm index 4d7cff4211cf..fda16334567c 100644 --- a/code/game/objects/items/implants/implant_freedom.dm +++ b/code/game/objects/items/implants/implant_freedom.dm @@ -33,7 +33,7 @@ uses-- carbon_imp_in.uncuff() - var/obj/item/clothing/shoes/shoes = carbon_imp_in.shoes + var/obj/item/clothing/shoes/shoes = carbon_imp_in.get_item_by_slot(ITEM_SLOT_FEET) if(istype(shoes) && shoes.tied == SHOES_KNOTTED) shoes.adjust_laces(SHOES_TIED, carbon_imp_in) @@ -45,7 +45,7 @@ if(implanted_in.handcuffed || implanted_in.legcuffed) return TRUE - var/obj/item/clothing/shoes/shoes = implanted_in.shoes + var/obj/item/clothing/shoes/shoes = implanted_in.get_item_by_slot(ITEM_SLOT_FEET) if(istype(shoes) && shoes.tied == SHOES_KNOTTED) return TRUE diff --git a/code/game/objects/items/implants/implant_tacmap.dm b/code/game/objects/items/implants/implant_tacmap.dm new file mode 100644 index 000000000000..33ebbe88c08e --- /dev/null +++ b/code/game/objects/items/implants/implant_tacmap.dm @@ -0,0 +1,120 @@ +/obj/item/implant/tacmap + name = "tactical map implant" + desc = "provides you with a map" + actions_types = list(/datum/action/minimap) + var/wearer_icon_state = null + /// Optional z-trait that resolves to the first z-level and locks the minimap there. + var/minimap_fixed_z_trait + /// Whether this implant allows drawing/labeling on the personal minimap HUD. + var/can_draw_on_personal_minimap = FALSE + var/static/list/minimap_refresh_signals = list( + COMSIG_MOB_STATCHANGE, + COMSIG_LIVING_REVIVE, + COMSIG_MOB_GHOSTIZED, + ) + +/obj/item/implant/tacmap/implant(mob/living/target, mob/user, silent, force) + . = ..() + if(.) + configure_minimap_action() + RegisterSignals(target, minimap_refresh_signals, PROC_REF(refresh_minimap_icon)) + addtimer(CALLBACK(src, PROC_REF(update_minimap_icon), target), 0.1 SECONDS) // Mobs are spawned inside nullspace sometimes so this avoids that hijinks. + +/obj/item/implant/tacmap/removed(mob/living/source, silent, special) + UnregisterSignal(source, minimap_refresh_signals) + remove_minimap(source) + return ..() + +///Remove all action of type minimap from the wearer, and make him disappear from the minimap +/obj/item/implant/tacmap/proc/remove_minimap(mob/user) + remove_minimap_blip(MINIMAP_NUKEOP_BLIP, user) + +/obj/item/implant/tacmap/proc/refresh_minimap_icon() + SIGNAL_HANDLER + if(imp_in) + update_minimap_icon(imp_in) + +/obj/item/implant/tacmap/proc/resolve_fixed_minimap_z_level() + if(!isnull(minimap_fixed_z_trait)) + var/list/trait_levels = SSmapping.levels_by_trait(minimap_fixed_z_trait) + if(length(trait_levels)) + return trait_levels[1] + return null + +/obj/item/implant/tacmap/proc/configure_minimap_action() + var/datum/action/minimap/minimap_action = locate(/datum/action/minimap) in actions + if(isnull(minimap_action)) + return + minimap_action.fixed_z_level = resolve_fixed_minimap_z_level() + minimap_action.can_draw = can_draw_on_personal_minimap + +/obj/item/implant/tacmap/proc/get_minimap_icon_state(mob/living/wearer) + return wearer_icon_state + +///Updates the wearer's minimap icon +/obj/item/implant/tacmap/proc/update_minimap_icon(mob/wearer) + SIGNAL_HANDLER + remove_minimap_blip(MINIMAP_NUKEOP_BLIP, wearer) + add_minimap_blip(wearer, MINIMAP_NUKEOP_BLIP, get_minimap_icon_state(wearer)) + +/obj/item/implant/tacmap/nuclear // Nukie subtype, map shows you nuke disk, operatives, cayenne and the nuke + actions_types = list(/datum/action/minimap/nuclear) + wearer_icon_state = "syndicate" + +/obj/item/implant/tacmap/nuclear/implant(mob/living/target, mob/user, silent, force) + . = ..() + if(.) + RegisterSignal(target, COMSIG_MINIMAP_ACTION_TRIGGER, PROC_REF(deny_nukie_base_open)) + +/obj/item/implant/tacmap/nuclear/get_minimap_icon_state(mob/living/wearer) + if(wearer.stat != DEAD && istype(wearer, /mob/living/basic/carp/pet/cayenne)) + return "cayenne" + . = ..() + +/obj/item/implant/tacmap/nuclear/removed(mob/living/source, silent, special) + UnregisterSignal(source, COMSIG_MINIMAP_ACTION_TRIGGER) + return ..() + +/obj/item/implant/tacmap/nuclear/proc/deny_nukie_base_open(mob/living/user) + var/turf/user_turf = get_turf(user) + if(user_turf.onSyndieBase()) + user.balloon_alert(user, "can't use implant in the base, go to the holotable!") + return COMSIG_MINIMAP_ACTION_TRIGGER_CANCEL + +/obj/item/implant/tacmap/nuclear/cayenne // subtype used for cayenne and syndie sentience potions in general + wearer_icon_state = "cayenne" + +/obj/item/implant/tacmap/nuclear/leader // Leader subtype lets him draw on the map + actions_types = list(/datum/action/minimap/nuclear) + can_draw_on_personal_minimap = TRUE + wearer_icon_state = "syndicate_leader" + +/obj/item/implant/tacmap/nuclear/leader/implant(mob/living/target, mob/user, silent, force) + . = ..() + if(.) + ADD_TRAIT(target, TRAIT_MINIMAP_TABLE_DRAW, REF(src)) + +/obj/item/implant/tacmap/nuclear/leader/removed(mob/living/source, silent, special) + REMOVE_TRAIT(source, TRAIT_MINIMAP_TABLE_DRAW, REF(src)) + return ..() + +// Subtype that just lets them open it off-base. +/obj/item/implant/tacmap/nuclear/offbase + minimap_fixed_z_trait = ZTRAIT_STATION + can_draw_on_personal_minimap = TRUE + +/obj/item/implant/tacmap/nuclear/offbase/deny_nukie_base_open(mob/living/user) + return + +/obj/item/implanter/tacmap + name = "implanter (minimap)" + imp_type = /obj/item/implant/tacmap + +/obj/item/implanter/tacmap/nuclear + name = "implanter (operative minimap)" + imp_type = /obj/item/implant/tacmap/nuclear + +/obj/item/implantcase/tacmap + name = "implant case - 'Tactical Map'" + desc = "A glass case containing an implant with a virtual map." + imp_type = /obj/item/implant/tacmap diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm index 094e8d51676a..7faa508b7602 100644 --- a/code/game/objects/items/implants/implantpad.dm +++ b/code/game/objects/items/implants/implantpad.dm @@ -40,15 +40,16 @@ inserted_case = null update_appearance(UPDATE_ICON) -/obj/item/implantpad/attackby(obj/item/implantcase/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(inserted_case || !istype(attacking_item)) - return ..() - if(!user.transferItemToLoc(attacking_item, src)) - return +/obj/item/implantpad/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(inserted_case || !istype(tool, /obj/item/implantcase)) + return NONE + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING user.balloon_alert(user, "case inserted") - inserted_case = attacking_item + inserted_case = tool update_static_data_for_all_viewers() update_appearance(UPDATE_ICON) + return ITEM_INTERACT_SUCCESS /obj/item/implantpad/click_alt(mob/user) remove_implant(user) diff --git a/code/game/objects/items/implants/security/implant_beacon.dm b/code/game/objects/items/implants/security/implant_beacon.dm index 95840516beea..16b9dd4d1eab 100644 --- a/code/game/objects/items/implants/security/implant_beacon.dm +++ b/code/game/objects/items/implants/security/implant_beacon.dm @@ -5,6 +5,7 @@ actions_types = null implant_flags = IMPLANT_TYPE_SECURITY hud_icon_state = "hud_imp_beacon" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) ///How long will the implant be teleportable to after death? var/lifespan_postmortem = 10 MINUTES diff --git a/code/game/objects/items/implants/security/implant_chem.dm b/code/game/objects/items/implants/security/implant_chem.dm index 07cdf80e009b..e4f3a379f79e 100644 --- a/code/game/objects/items/implants/security/implant_chem.dm +++ b/code/game/objects/items/implants/security/implant_chem.dm @@ -5,6 +5,7 @@ actions_types = null implant_flags = IMPLANT_TYPE_SECURITY hud_icon_state = "hud_imp_chem" + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) /// All possible injection sizes for the implant shown in the prisoner management console. var/list/implant_sizes = list(1, 5, 10) /// Frequency of radio signal we've been synced to @@ -79,16 +80,16 @@ . = ..() if(!cause || !imp_in) return - var/mob/living/carbon/R = imp_in + var/mob/living/carbon/victim = imp_in var/injectamount = null if (cause == "action_button") injectamount = reagents.total_volume else injectamount = cause - reagents.trans_to(R, injectamount) - to_chat(R, span_hear("You hear a faint beep.")) + reagents.trans_to(victim, injectamount, methods = INJECT) + to_chat(victim, span_hear("You hear a faint beep.")) if(!reagents.total_volume) - to_chat(R, span_hear("You hear a faint click from your chest.")) + to_chat(victim, span_hear("You hear a faint click from your chest.")) qdel(src) /obj/item/implant/chem/item_interaction(mob/living/user, obj/item/tool, list/modifiers) diff --git a/code/game/objects/items/implants/security/implant_exile.dm b/code/game/objects/items/implants/security/implant_exile.dm index 588c8a17b45b..faeffa2b4eb8 100644 --- a/code/game/objects/items/implants/security/implant_exile.dm +++ b/code/game/objects/items/implants/security/implant_exile.dm @@ -7,6 +7,7 @@ actions_types = null implant_flags = IMPLANT_TYPE_SECURITY hud_icon_state = "hud_imp_exile" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3) implant_info = "Automatically activates upon implantation. \ Prevents returning through Nanotrasen gateway systems, and prevents usage of Nanotrasen mining shuttle controls." diff --git a/code/game/objects/items/implants/security/implant_noteleport.dm b/code/game/objects/items/implants/security/implant_noteleport.dm index 38efeb1a028b..7d74953faa6d 100644 --- a/code/game/objects/items/implants/security/implant_noteleport.dm +++ b/code/game/objects/items/implants/security/implant_noteleport.dm @@ -5,6 +5,7 @@ actions_types = null implant_flags = IMPLANT_TYPE_SECURITY hud_icon_state = "hud_imp_noteleport" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) implant_info = "Automatically activates upon implantation. \ Grounds users' bluespace signatures, preventing jaunting and/or teleportation." diff --git a/code/game/objects/items/implants/security/implant_track.dm b/code/game/objects/items/implants/security/implant_track.dm index 17fa6c4cef87..6839bb8d56a9 100644 --- a/code/game/objects/items/implants/security/implant_track.dm +++ b/code/game/objects/items/implants/security/implant_track.dm @@ -4,6 +4,7 @@ actions_types = null implant_flags = IMPLANT_TYPE_SECURITY hud_icon_state = "hud_imp_tracking" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) ///How long will the implant continue to function after death? var/lifespan_postmortem = 10 MINUTES diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm index 4ca2320caa2e..975bcaf83092 100644 --- a/code/game/objects/items/inspector.dm +++ b/code/game/objects/items/inspector.dm @@ -24,6 +24,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4.6, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) ///Power cell used to power the scanner. Paths g var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/crap ///Cell cover status diff --git a/code/game/objects/items/kirby_plants/kirbyplants.dm b/code/game/objects/items/kirby_plants/kirbyplants.dm index 08989ccb3636..b3368560438c 100644 --- a/code/game/objects/items/kirby_plants/kirbyplants.dm +++ b/code/game/objects/items/kirby_plants/kirbyplants.dm @@ -51,19 +51,23 @@ . = ..() icon_state = dead ? "plant-25" : base_icon_state -/obj/item/kirbyplants/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() - if(!dead && trimmable && HAS_TRAIT(user,TRAIT_BONSAI) && isturf(loc) && I.get_sharpness()) +/obj/item/kirbyplants/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!dead && trimmable && HAS_TRAIT(user, TRAIT_BONSAI) && isturf(loc) && tool.get_sharpness()) to_chat(user,span_notice("You start trimming [src].")) - if(do_after(user,3 SECONDS,target=src)) - to_chat(user,span_notice("You finish trimming [src].")) - change_visual() - if(dead && istype(I, /obj/item/seeds)) + if(!do_after(user, 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + to_chat(user,span_notice("You finish trimming [src].")) + change_visual() + + if(dead && istype(tool, /obj/item/seeds)) to_chat(user,span_notice("You start planting a new seed into the pot.")) - if(do_after(user,3 SECONDS,target=src)) - qdel(I) - dead = FALSE - update_appearance() + if(!do_after(user, 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + qdel(tool) + dead = FALSE + update_appearance() + + return NONE /// Cycle basic plant visuals /obj/item/kirbyplants/proc/change_visual() diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index f9eb7b87c31b..7d314b0903e2 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -101,16 +101,17 @@ burst() return ..() -/obj/item/latexballoon/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/tank)) - var/obj/item/tank/air_tank = item +/obj/item/latexballoon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/tank)) + var/obj/item/tank/air_tank = tool blow(air_tank, user) - return - if(item.get_sharpness() || item.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + return ITEM_INTERACT_SUCCESS + + if(tool.get_sharpness() || tool.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) burst() - return + return ITEM_INTERACT_SUCCESS - return ..() + return NONE #undef INFLATED #undef POPPED diff --git a/code/game/objects/items/lighter.dm b/code/game/objects/items/lighter.dm index 222a4a42fe75..ce683a80a2c9 100644 --- a/code/game/objects/items/lighter.dm +++ b/code/game/objects/items/lighter.dm @@ -93,7 +93,7 @@ return set_lit(FALSE) -/obj/item/lighter/suicide_act(mob/living/carbon/user) +/obj/item/lighter/suicide_act(mob/living/user) if (lit) user.visible_message(span_suicide("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE) diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm index 734930a30e99..8b448ebaea54 100644 --- a/code/game/objects/items/mail.dm +++ b/code/game/objects/items/mail.dm @@ -98,16 +98,19 @@ postmark_image.appearance_flags |= RESET_COLOR|KEEP_APART . += postmark_image -/obj/item/mail/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/mail/item_interaction(mob/living/user, obj/item/tool, list/modifiers) // Destination tagging - if(istype(W, /obj/item/dest_tagger)) - var/obj/item/dest_tagger/destination_tag = W - - if(sort_tag != destination_tag.currTag) - var/tag = uppertext(GLOB.TAGGERLOCATIONS[destination_tag.currTag]) - to_chat(user, span_notice("*[tag]*")) - sort_tag = destination_tag.currTag - playsound(loc, 'sound/machines/beep/twobeep_high.ogg', vol = 100, vary = TRUE) + if(!istype(tool, /obj/item/dest_tagger)) + return NONE + var/obj/item/dest_tagger/destination_tag = tool + + if(sort_tag == destination_tag.currTag) + return ITEM_INTERACT_BLOCKING + var/tag = uppertext(GLOB.TAGGERLOCATIONS[destination_tag.currTag]) + to_chat(user, span_notice("*[tag]*")) + sort_tag = destination_tag.currTag + playsound(loc, 'sound/machines/beep/twobeep_high.ogg', vol = 100, vary = TRUE) + return ITEM_INTERACT_SUCCESS /obj/item/mail/multitool_act(mob/living/user, obj/item/tool) if(user.get_inactive_held_item() == src) diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index a4a738469cd5..d04b77683442 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -15,6 +15,7 @@ attack_verb_continuous = list("mops", "bashes", "bludgeons", "whacks") attack_verb_simple = list("mop", "bash", "bludgeon", "whack") resistance_flags = FLAMMABLE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) var/mopcount = 0 ///Maximum volume of reagents it can hold. var/max_reagent_volume = 15 @@ -37,6 +38,7 @@ /obj/item/mop/Initialize(mapload) . = ..() AddComponent(/datum/component/cleaner, mopspeed, pre_clean_callback=CALLBACK(src, PROC_REF(should_clean)), on_cleaned_callback=CALLBACK(src, PROC_REF(apply_reagents))) + AddComponent(/datum/component/walking_aid) create_reagents(max_reagent_volume) GLOB.janitor_devices += src @@ -84,6 +86,7 @@ throwforce = 14 throw_range = 4 mopspeed = 0.8 SECONDS + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. /// Amount of reagent to refill per second var/refill_rate = 0.5 diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 7d5cc7eabe8f..7921088a5205 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -131,6 +131,7 @@ name = "paint remover" desc = "Used to remove color from anything." icon_state = "paint_neutral" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/paint/paint_remover/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isturf(interacting_with) || !isobj(interacting_with)) diff --git a/code/game/objects/items/piggy_bank.dm b/code/game/objects/items/piggy_bank.dm index 071faaca6900..e34caa6d5066 100644 --- a/code/game/objects/items/piggy_bank.dm +++ b/code/game/objects/items/piggy_bank.dm @@ -124,23 +124,28 @@ if(95 to INFINITY) balloon_alert(user, "brimming with cash") -/obj/item/piggy_bank/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - var/creds_value = item.get_item_credit_value() +/obj/item/piggy_bank/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + var/creds_value = tool.get_item_credit_value() if(isnull(creds_value)) - return ..() + return NONE var/dosh_amount = calculate_dosh_amount() if(dosh_amount >= maximum_value) balloon_alert(user, "it's full!") - else if(dosh_amount + creds_value > maximum_value) + return ITEM_INTERACT_BLOCKING + + if(dosh_amount + creds_value > maximum_value) balloon_alert(user, "too much cash!") - else if(!user.transferItemToLoc(item, src)) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) balloon_alert(user, "stuck in your hands!") - else - balloon_alert(user, "inserted [creds_value] creds") - sanitize_piggy_bank_contents_len() - return TRUE + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "inserted [creds_value] creds") + sanitize_piggy_bank_contents_len() + return ITEM_INTERACT_SUCCESS ///Returns the total amount of credits that its contents amount to. /obj/item/piggy_bank/proc/calculate_dosh_amount() diff --git a/code/game/objects/items/pillow.dm b/code/game/objects/items/pillow.dm index 2ccf7157b834..789c5c1fbb63 100644 --- a/code/game/objects/items/pillow.dm +++ b/code/game/objects/items/pillow.dm @@ -73,29 +73,31 @@ user.visible_message("[user] starts to smother [victim]", span_notice("You begin smothering [victim]"), vision_distance = COMBAT_MESSAGE_RANGE) INVOKE_ASYNC(src, PROC_REF(smothering), user, victim) -/obj/item/pillow/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(!bricked && istype(attacking_item, /obj/item/stack/sheet/mineral/sandstone)) - var/obj/item/stack/sheet/mineral/sandstone/brick = attacking_item +/obj/item/pillow/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!bricked && istype(tool, /obj/item/stack/sheet/mineral/sandstone)) + var/obj/item/stack/sheet/mineral/sandstone/brick = tool balloon_alert(user, "inserting brick...") if(!do_after(user, 2 SECONDS, src)) - return + return ITEM_INTERACT_BLOCKING if(!brick.use(1)) balloon_alert(user, "not enough bricks!") - return + return ITEM_INTERACT_BLOCKING balloon_alert(user, "bricked!") become_bricked() - return - if(istype(attacking_item, /obj/item/clothing/neck/pillow_tag)) - if(!pillow_trophy) - user.transferItemToLoc(attacking_item, src) - pillow_trophy = attacking_item - balloon_alert(user, "honor reclaimed!") - update_appearance() - return - else + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/clothing/neck/pillow_tag)) + if(pillow_trophy) balloon_alert(user, "tag is intact.") - return - return ..() + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + pillow_trophy = tool + balloon_alert(user, "honor reclaimed!") + update_appearance() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/pillow/examine(mob/user) . = ..() @@ -172,6 +174,7 @@ worn_icon = 'icons/mob/clothing/suits/pillow.dmi' icon_state = "pillow_suit" armor_type = /datum/armor/suit_pillow_suit + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) var/obj/item/pillow/unstoppably_plushed /datum/armor/suit_pillow_suit @@ -197,6 +200,7 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS armor_type = /datum/armor/head_pillow_hood + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /datum/armor/head_pillow_hood melee = 5 diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index db79f9388df7..526668d18a07 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -111,6 +111,7 @@ worn_icon_state = "pinpointer_crew" custom_price = PAYCHECK_CREW * 6 custom_premium_price = PAYCHECK_CREW * 6 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /// The mob that the pinpointer is owned by. var/pinpointer_owner = null /// Do we find people even if their suit sensors are turned off diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm index 99f714f09f3b..497e213acba0 100644 --- a/code/game/objects/items/pitchfork.dm +++ b/code/game/objects/items/pitchfork.dm @@ -32,6 +32,7 @@ . = ..() AddComponent(/datum/component/jousting) AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="[base_icon_state]1") + AddComponent(/datum/component/walking_aid) /obj/item/pitchfork/update_icon_state() icon_state = "[base_icon_state]0" diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 48e5f14d0c6e..e0f5d1faa7a8 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -131,50 +131,54 @@ else to_chat(user, span_notice("You try to pet [src], but it has no stuffing. Aww...")) -/obj/item/toy/plush/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(I.get_sharpness()) - if(!grenade) - if(!stuffed) - to_chat(user, span_warning("You already murdered it!")) - return - if(!divine) - user.visible_message(span_notice("[user] tears out the stuffing from [src]!"), span_notice("You rip a bunch of the stuffing from [src]. Murderer.")) - I.play_tool_sound(src) - stuffed = FALSE - else - to_chat(user, span_notice("What a fool you are. [src] is a god, how can you kill a god? What a grand and intoxicating innocence.")) - user.adjust_drunk_effect(20, up_to = 50) - - var/turf/current_location = get_turf(user) - var/area/current_area = current_location.loc //copied from hand tele code - if(current_location && current_area && (current_area.area_flags & NOTELEPORT)) - to_chat(user, span_notice("There is no escape. No recall or intervention can work in this place.")) - else - to_chat(user, span_notice("There is no escape. Although recall or intervention can work in this place, attempting to flee from [src]'s immense power would be futile.")) - user.visible_message(span_notice("[user] lays down their weapons and begs for [src]'s mercy!"), span_notice("You lay down your weapons and beg for [src]'s mercy.")) - user.drop_all_held_items() - else +/obj/item/toy/plush/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.get_sharpness()) + if(grenade) to_chat(user, span_notice("You remove the grenade from [src].")) user.put_in_hands(grenade) - return - if(isgrenade(I)) + return ITEM_INTERACT_SUCCESS + if(!stuffed) + to_chat(user, span_warning("You already murdered it!")) + return ITEM_INTERACT_BLOCKING + if(!divine) + user.visible_message(span_notice("[user] tears out the stuffing from [src]!"), span_notice("You rip a bunch of the stuffing from [src]. Murderer.")) + tool.play_tool_sound(src) + stuffed = FALSE + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("What a fool you are. [src] is a god, how can you kill a god? What a grand and intoxicating innocence.")) + user.adjust_drunk_effect(20, up_to = 50) + + var/turf/current_location = get_turf(user) + var/area/current_area = current_location.loc //copied from hand tele code + if(current_location && current_area && (current_area.area_flags & NOTELEPORT)) + to_chat(user, span_notice("There is no escape. No recall or intervention can work in this place.")) + else + to_chat(user, span_notice("There is no escape. Although recall or intervention can work in this place, attempting to flee from [src]'s immense power would be futile.")) + user.visible_message(span_notice("[user] lays down their weapons and begs for [src]'s mercy!"), span_notice("You lay down your weapons and beg for [src]'s mercy.")) + user.drop_all_held_items() + return ITEM_INTERACT_SUCCESS + + if(isgrenade(tool)) if(stuffed) to_chat(user, span_warning("You need to remove some stuffing first!")) - return + return ITEM_INTERACT_BLOCKING if(grenade) to_chat(user, span_warning("[src] already has a grenade!")) - return - if(!user.transferItemToLoc(I, src)) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING user.visible_message(span_warning("[user] slides [grenade] into [src]."), \ - span_danger("You slide [I] into [src].")) - grenade = I - user.log_message("added a grenade ([I.name]) to [src]", LOG_GAME) - return - if(istype(I, /obj/item/toy/plush)) - love(I, user) - return - return ..() + span_danger("You slide [tool] into [src].")) + grenade = tool + user.log_message("added a grenade ([tool.name]) to [src]", LOG_GAME) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/toy/plush)) + love(tool, user) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3 var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I? @@ -422,7 +426,7 @@ return var/obj/item/toy/plush/narplush/P = locate() in range(1, src) if(P && istype(P.loc, /turf/open) && !P.clashing) - clash_of_the_plushies(P) + INVOKE_ASYNC(src, PROC_REF(clash_of_the_plushies), P) /obj/item/toy/plush/ratplush/proc/clash_of_the_plushies(obj/item/toy/plush/narplush/P) clash_target = P @@ -507,7 +511,7 @@ . = ..() var/obj/item/toy/plush/ratplush/P = locate() in range(1, src) if(P && istype(P.loc, /turf/open) && !P.clash_target && !clashing) - P.clash_of_the_plushies(src) + INVOKE_ASYNC(P, TYPE_PROC_REF(/obj/item/toy/plush/ratplush, clash_of_the_plushies), src) /obj/item/toy/plush/lizard_plushie name = "lizard plushie" diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 9256ac01307e..6ed39149dd9f 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -124,13 +124,13 @@ desc = "This door only opens when a keycard is swiped. It looks virtually indestructible." uses_queuelinks = FALSE -/obj/machinery/door/puzzle/keycard/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(!istype(attacking_item, /obj/item/keycard)) - return - var/obj/item/keycard/key = attacking_item - if(!try_puzzle_open(key.puzzle_id)) +/obj/machinery/door/puzzle/keycard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/keycard)) + return NONE + if(!try_puzzle_open(astype(tool, /obj/item/keycard).puzzle_id)) to_chat(user, span_notice("[src] buzzes. This must not be the right key.")) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS //Test doors. Gives admins a few doors to use quickly should they so choose for events. /obj/machinery/door/puzzle/keycard/yellow_required diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm index 1e531a2ddcc6..25392395677c 100644 --- a/code/game/objects/items/rcd/RCD.dm +++ b/code/game/objects/items/rcd/RCD.dm @@ -20,6 +20,7 @@ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg' pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg' sound_vary = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3) /// main category of currently selected design[Structures, Airlocks, Airlock Access] var/root_category @@ -43,7 +44,7 @@ /// variable for R walls to deconstruct them var/canRturf = FALSE /// integrated airlock electronics for setting access to a newly built airlocks - var/obj/item/electronics/airlock/airlock_electronics + var/obj/item/electronics/airlock/rcd/airlock_electronics COOLDOWN_DECLARE(destructive_scan_cooldown) @@ -54,6 +55,10 @@ name = "hologram" mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/obj/item/electronics/airlock/rcd + item_flags = parent_type::item_flags | ABSTRACT + custom_materials = null + /obj/effect/rcd_hologram/Initialize(mapload) . = ..() QDEL_IN(src, RCD_HOLOGRAM_FADE_TIME) @@ -568,8 +573,9 @@ ranged = TRUE has_ammobar = FALSE resistance_flags = FIRE_PROOF | INDESTRUCTIBLE // should NOT be destroyed unless the equipment is destroyed - item_flags = NO_MAT_REDEMPTION | NOBLUDGEON | DROPDEL // already qdeleted in the equipment's Destroy() but you can never be too sure + item_flags = NOBLUDGEON | DROPDEL // already qdeleted in the equipment's Destroy() but you can never be too sure delay_mod = 0.5 + custom_materials = null /obj/item/construction/rcd/exosuit/ui_status(mob/user, datum/ui_state/state) if(ismecha(owner)) @@ -639,9 +645,9 @@ w_class = WEIGHT_CLASS_TINY lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT *6, /datum/material/glass=SHEET_MATERIAL_AMOUNT*4) + custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass=SHEET_MATERIAL_AMOUNT*3) var/ammoamt = 40 /obj/item/rcd_ammo/large - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*24, /datum/material/glass=SHEET_MATERIAL_AMOUNT*16) + custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*24, /datum/material/glass=SHEET_MATERIAL_AMOUNT*12) ammoamt = 160 diff --git a/code/game/objects/items/rcd/RCL.dm b/code/game/objects/items/rcd/RCL.dm index 6c48d2f691d7..45768399a90c 100644 --- a/code/game/objects/items/rcd/RCL.dm +++ b/code/game/objects/items/rcd/RCL.dm @@ -72,30 +72,34 @@ loaded = null update_appearance() -/obj/item/rcl/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/stack/pipe_cleaner_coil)) - var/obj/item/stack/pipe_cleaner_coil/C = W - - if(!loaded) - if(!user.transferItemToLoc(W, src)) - to_chat(user, span_warning("[src] is stuck to your hand!")) - return - else - loaded = W //W.loc is src at this point. - loaded.set_pipecleaner_color(colors[current_color_index]) - loaded.max_amount = max_amount //We store a lot. - return - - if(loaded.amount < max_amount) - var/transfer_amount = min(max_amount - loaded.amount, C.amount) - C.use(transfer_amount) - loaded.amount += transfer_amount - else - return +/obj/item/rcl/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/pipe_cleaner_coil)) + return NONE + + + if(!loaded) + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("[src] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + + loaded = tool //tool.loc is src at this point. + loaded.set_pipecleaner_color(colors[current_color_index]) + loaded.max_amount = max_amount //We store a lot. update_appearance() - to_chat(user, span_notice("You add the pipe cleaners to [src]. It now contains [loaded.amount].")) - else - ..() + return ITEM_INTERACT_SUCCESS + + var/obj/item/stack/pipe_cleaner_coil/loading_coil = tool + + if(loaded.amount >= max_amount) + return ITEM_INTERACT_BLOCKING + + var/transfer_amount = min(max_amount - loaded.amount, loading_coil.amount) + loading_coil.use(transfer_amount) + loaded.amount += transfer_amount + + update_appearance() + to_chat(user, span_notice("You add the pipe cleaners to [src]. It now contains [loaded.amount].")) + return ITEM_INTERACT_SUCCESS /obj/item/rcl/examine(mob/user) . = ..() diff --git a/code/game/objects/items/rcd/RDD.dm b/code/game/objects/items/rcd/RDD.dm new file mode 100644 index 000000000000..65d4083d670c --- /dev/null +++ b/code/game/objects/items/rcd/RDD.dm @@ -0,0 +1,346 @@ +//RAPID DECORATION DEVICE + +/// Multiplier applied to cost when using RDD — each decoration costs this many matter units +#define RDD_COST_MULTIPLIER 1 + +/// All decoration designs available in the RDD +GLOBAL_LIST_INIT(rdd_designs, list( + "Grasses" = list( + list("name" = "Plastic Grass Patch", "path" = /obj/structure/decoration/grass/first), + list("name" = "Plastic Grass Patch (Alt)", "path" = /obj/structure/decoration/grass/second), + list("name" = "Plastic Grass Patch (Alt 2)", "path" = /obj/structure/decoration/grass/third), + list("name" = "Plastic Grass Patch (Random)", "path" = /obj/structure/decoration/grass/style_random), + list("name" = "Plastic Brown Grass", "path" = /obj/structure/decoration/grass/brown/first), + list("name" = "Plastic Brown Grass (Alt)", "path" = /obj/structure/decoration/grass/brown/second), + list("name" = "Plastic Brown Grass (Alt 2)", "path" = /obj/structure/decoration/grass/brown/third), + list("name" = "Plastic Brown Grass (Random)", "path" = /obj/structure/decoration/grass/brown/style_random), + list("name" = "Plastic Jungle Grass", "path" = /obj/structure/decoration/jungle_grass/first), + list("name" = "Plastic Jungle Grass (Alt)", "path" = /obj/structure/decoration/jungle_grass/second), + list("name" = "Plastic Jungle Grass (Alt 2)", "path" = /obj/structure/decoration/jungle_grass/third), + list("name" = "Plastic Jungle Grass (Alt 3)", "path" = /obj/structure/decoration/jungle_grass/fourth), + list("name" = "Plastic Jungle Grass (Alt 4)", "path" = /obj/structure/decoration/jungle_grass/fifth), + list("name" = "Plastic Jungle Grass (Random)", "path" = /obj/structure/decoration/jungle_grass/style_random), + list("name" = "Plastic Jungle Grass B", "path" = /obj/structure/decoration/jungle_grass/b/first), + list("name" = "Plastic Jungle Grass B (Alt)", "path" = /obj/structure/decoration/jungle_grass/b/second), + list("name" = "Plastic Jungle Grass B (Alt 2)", "path" = /obj/structure/decoration/jungle_grass/b/third), + list("name" = "Plastic Jungle Grass B (Alt 3)", "path" = /obj/structure/decoration/jungle_grass/b/fourth), + list("name" = "Plastic Jungle Grass B (Alt 4)", "path" = /obj/structure/decoration/jungle_grass/b/fifth), + list("name" = "Plastic Jungle Grass B (Random)", "path" = /obj/structure/decoration/jungle_grass/b/style_random), + ), + "Bushes" = list( + list("name" = "Plastic Bush", "path" = /obj/structure/decoration/bush/first), + list("name" = "Plastic Bush (Alt)", "path" = /obj/structure/decoration/bush/second), + list("name" = "Plastic Bush (Alt 2)", "path" = /obj/structure/decoration/bush/third), + list("name" = "Plastic Bush (Alt 3)", "path" = /obj/structure/decoration/bush/fourth), + list("name" = "Plastic Bush (Random)", "path" = /obj/structure/decoration/bush/style_random), + list("name" = "Plastic Reeds", "path" = /obj/structure/decoration/bush/reed/first), + list("name" = "Plastic Reeds (Alt)", "path" = /obj/structure/decoration/bush/reed/second), + list("name" = "Plastic Reeds (Alt 2)", "path" = /obj/structure/decoration/bush/reed/third), + list("name" = "Plastic Reeds (Alt 3)", "path" = /obj/structure/decoration/bush/reed/fourth), + list("name" = "Plastic Reeds (Random)", "path" = /obj/structure/decoration/bush/reed/style_random), + list("name" = "Plastic Leafy Bush", "path" = /obj/structure/decoration/bush/leafy/first), + list("name" = "Plastic Leafy Bush (Alt)", "path" = /obj/structure/decoration/bush/leafy/second), + list("name" = "Plastic Leafy Bush (Alt 2)", "path" = /obj/structure/decoration/bush/leafy/third), + list("name" = "Plastic Leafy Bush (Random)", "path" = /obj/structure/decoration/bush/leafy/style_random), + list("name" = "Plastic Pale Bush", "path" = /obj/structure/decoration/bush/pale/first), + list("name" = "Plastic Pale Bush (Alt)", "path" = /obj/structure/decoration/bush/pale/second), + list("name" = "Plastic Pale Bush (Alt 2)", "path" = /obj/structure/decoration/bush/pale/third), + list("name" = "Plastic Pale Bush (Alt 3)", "path" = /obj/structure/decoration/bush/pale/fourth), + list("name" = "Plastic Pale Bush (Random)", "path" = /obj/structure/decoration/bush/pale/style_random), + list("name" = "Plastic Stalky Bush", "path" = /obj/structure/decoration/bush/stalky/first), + list("name" = "Plastic Stalky Bush (Alt)", "path" = /obj/structure/decoration/bush/stalky/second), + list("name" = "Plastic Stalky Bush (Alt 2)", "path" = /obj/structure/decoration/bush/stalky/third), + list("name" = "Plastic Stalky Bush (Random)", "path" = /obj/structure/decoration/bush/stalky/style_random), + list("name" = "Plastic Grassy Bush", "path" = /obj/structure/decoration/bush/grassy/first), + list("name" = "Plastic Grassy Bush (Alt)", "path" = /obj/structure/decoration/bush/grassy/second), + list("name" = "Plastic Grassy Bush (Alt 2)", "path" = /obj/structure/decoration/bush/grassy/third), + list("name" = "Plastic Grassy Bush (Alt 3)", "path" = /obj/structure/decoration/bush/grassy/fourth), + list("name" = "Plastic Grassy Bush (Random)", "path" = /obj/structure/decoration/bush/grassy/style_random), + list("name" = "Plastic Sparse Grass", "path" = /obj/structure/decoration/bush/sparsegrass/first), + list("name" = "Plastic Sparse Grass (Alt)", "path" = /obj/structure/decoration/bush/sparsegrass/second), + list("name" = "Plastic Sparse Grass (Alt 2)", "path" = /obj/structure/decoration/bush/sparsegrass/third), + list("name" = "Plastic Sparse Grass (Random)", "path" = /obj/structure/decoration/bush/sparsegrass/style_random), + list("name" = "Plastic Full Grass", "path" = /obj/structure/decoration/bush/fullgrass/first), + list("name" = "Plastic Full Grass (Alt)", "path" = /obj/structure/decoration/bush/fullgrass/second), + list("name" = "Plastic Full Grass (Alt 2)", "path" = /obj/structure/decoration/bush/fullgrass/third), + list("name" = "Plastic Full Grass (Random)", "path" = /obj/structure/decoration/bush/fullgrass/style_random), + list("name" = "Plastic Ferny Bush", "path" = /obj/structure/decoration/bush/ferny/first), + list("name" = "Plastic Ferny Bush (Alt)", "path" = /obj/structure/decoration/bush/ferny/second), + list("name" = "Plastic Ferny Bush (Alt 2)", "path" = /obj/structure/decoration/bush/ferny/third), + list("name" = "Plastic Ferny Bush (Random)", "path" = /obj/structure/decoration/bush/ferny/style_random), + list("name" = "Plastic Sunny Bush", "path" = /obj/structure/decoration/bush/sunny/first), + list("name" = "Plastic Sunny Bush (Alt)", "path" = /obj/structure/decoration/bush/sunny/second), + list("name" = "Plastic Sunny Bush (Alt 2)", "path" = /obj/structure/decoration/bush/sunny/third), + list("name" = "Plastic Sunny Bush (Random)", "path" = /obj/structure/decoration/bush/sunny/style_random), + list("name" = "Plastic Generic Bush", "path" = /obj/structure/decoration/bush/generic/first), + list("name" = "Plastic Generic Bush (Alt)", "path" = /obj/structure/decoration/bush/generic/second), + list("name" = "Plastic Generic Bush (Alt 2)", "path" = /obj/structure/decoration/bush/generic/third), + list("name" = "Plastic Generic Bush (Alt 3)", "path" = /obj/structure/decoration/bush/generic/fourth), + list("name" = "Plastic Generic Bush (Random)", "path" = /obj/structure/decoration/bush/generic/style_random), + list("name" = "Plastic Pointy Bush", "path" = /obj/structure/decoration/bush/pointy/first), + list("name" = "Plastic Pointy Bush (Alt)", "path" = /obj/structure/decoration/bush/pointy/second), + list("name" = "Plastic Pointy Bush (Alt 2)", "path" = /obj/structure/decoration/bush/pointy/third), + list("name" = "Plastic Pointy Bush (Alt 3)", "path" = /obj/structure/decoration/bush/pointy/fourth), + list("name" = "Plastic Pointy Bush (Random)", "path" = /obj/structure/decoration/bush/pointy/style_random), + list("name" = "Plastic Lavender Grass", "path" = /obj/structure/decoration/bush/lavendergrass/first), + list("name" = "Plastic Lavender Grass (Alt)", "path" = /obj/structure/decoration/bush/lavendergrass/second), + list("name" = "Plastic Lavender Grass (Alt 2)", "path" = /obj/structure/decoration/bush/lavendergrass/third), + list("name" = "Plastic Lavender Grass (Alt 3)", "path" = /obj/structure/decoration/bush/lavendergrass/fourth), + list("name" = "Plastic Lavender Grass (Random)", "path" = /obj/structure/decoration/bush/lavendergrass/style_random), + ), + "Flowers" = list( + list("name" = "Plastic Yellow-White Flowers", "path" = /obj/structure/decoration/bush/flowers_yw/first), + list("name" = "Plastic Yellow-White Flowers (Alt)", "path" = /obj/structure/decoration/bush/flowers_yw/second), + list("name" = "Plastic Yellow-White Flowers (Alt 2)", "path" = /obj/structure/decoration/bush/flowers_yw/third), + list("name" = "Plastic Yellow-White Flowers (Random)", "path" = /obj/structure/decoration/bush/flowers_yw/style_random), + list("name" = "Plastic Blue-Red Flowers", "path" = /obj/structure/decoration/bush/flowers_br/first), + list("name" = "Plastic Blue-Red Flowers (Alt)", "path" = /obj/structure/decoration/bush/flowers_br/second), + list("name" = "Plastic Blue-Red Flowers (Alt 2)", "path" = /obj/structure/decoration/bush/flowers_br/third), + list("name" = "Plastic Blue-Red Flowers (Random)", "path" = /obj/structure/decoration/bush/flowers_br/style_random), + list("name" = "Plastic Purple Flowers", "path" = /obj/structure/decoration/bush/flowers_pp/first), + list("name" = "Plastic Purple Flowers (Alt)", "path" = /obj/structure/decoration/bush/flowers_pp/second), + list("name" = "Plastic Purple Flowers (Alt 2)", "path" = /obj/structure/decoration/bush/flowers_pp/third), + list("name" = "Plastic Purple Flowers (Random)", "path" = /obj/structure/decoration/bush/flowers_pp/style_random), + ), + "Snow" = list( + list("name" = "Plastic Snowy Bush", "path" = /obj/structure/decoration/bush/snow/first), + list("name" = "Plastic Snowy Bush (Alt)", "path" = /obj/structure/decoration/bush/snow/second), + list("name" = "Plastic Snowy Bush (Alt 2)", "path" = /obj/structure/decoration/bush/snow/third), + list("name" = "Plastic Snowy Bush (Alt 3)", "path" = /obj/structure/decoration/bush/snow/fourth), + list("name" = "Plastic Snowy Bush (Alt 4)", "path" = /obj/structure/decoration/bush/snow/fifth), + list("name" = "Plastic Snowy Bush (Alt 5)", "path" = /obj/structure/decoration/bush/snow/sixth), + list("name" = "Plastic Snowy Bush (Random)", "path" = /obj/structure/decoration/bush/snow/style_random), + ), + "Jungle" = list( + list("name" = "Plastic Jungle Bush", "path" = /obj/structure/decoration/bush/jungle/first), + list("name" = "Plastic Jungle Bush (Alt)", "path" = /obj/structure/decoration/bush/jungle/second), + list("name" = "Plastic Jungle Bush (Alt 2)", "path" = /obj/structure/decoration/bush/jungle/third), + list("name" = "Plastic Jungle Bush (Random)", "path" = /obj/structure/decoration/bush/jungle/style_random), + list("name" = "Plastic Jungle Bush B", "path" = /obj/structure/decoration/bush/jungle/b/first), + list("name" = "Plastic Jungle Bush B (Alt)", "path" = /obj/structure/decoration/bush/jungle/b/second), + list("name" = "Plastic Jungle Bush B (Alt 2)", "path" = /obj/structure/decoration/bush/jungle/b/third), + list("name" = "Plastic Jungle Bush B (Random)", "path" = /obj/structure/decoration/bush/jungle/b/style_random), + list("name" = "Plastic Jungle Bush C", "path" = /obj/structure/decoration/bush/jungle/c/first), + list("name" = "Plastic Jungle Bush C (Alt)", "path" = /obj/structure/decoration/bush/jungle/c/second), + list("name" = "Plastic Jungle Bush C (Alt 2)", "path" = /obj/structure/decoration/bush/jungle/c/third), + list("name" = "Plastic Jungle Bush C (Random)", "path" = /obj/structure/decoration/bush/jungle/c/style_random), + list("name" = "Large Plastic Bush", "path" = /obj/structure/decoration/bush/large/first), + list("name" = "Large Plastic Bush (Alt)", "path" = /obj/structure/decoration/bush/large/second), + list("name" = "Large Plastic Bush (Alt 2)", "path" = /obj/structure/decoration/bush/large/third), + list("name" = "Large Plastic Bush (Random)", "path" = /obj/structure/decoration/bush/large/style_random), + ), + "Rocks" = list( + list("name" = "Plastic Rock", "path" = /obj/structure/decoration/rock/first), + list("name" = "Plastic Rock (Alt)", "path" = /obj/structure/decoration/rock/second), + list("name" = "Plastic Rock (Alt 2)", "path" = /obj/structure/decoration/rock/third), + list("name" = "Plastic Rock (Alt 3)", "path" = /obj/structure/decoration/rock/fourth), + list("name" = "Plastic Rock (Random)", "path" = /obj/structure/decoration/rock/style_random), + list("name" = "Plastic Rock Pile", "path" = /obj/structure/decoration/rock/pile/first), + list("name" = "Plastic Rock Pile (Alt)", "path" = /obj/structure/decoration/rock/pile/second), + list("name" = "Plastic Rock Pile (Alt 2)", "path" = /obj/structure/decoration/rock/pile/third), + list("name" = "Plastic Rock Pile (Random)", "path" = /obj/structure/decoration/rock/pile/style_random), + list("name" = "Plastic Jungle Rocks", "path" = /obj/structure/decoration/rock/pile/jungle/first), + list("name" = "Plastic Jungle Rocks (Alt)", "path" = /obj/structure/decoration/rock/pile/jungle/second), + list("name" = "Plastic Jungle Rocks (Alt 2)", "path" = /obj/structure/decoration/rock/pile/jungle/third), + list("name" = "Plastic Jungle Rocks (Alt 3)", "path" = /obj/structure/decoration/rock/pile/jungle/fourth), + list("name" = "Plastic Jungle Rocks (Alt 4)", "path" = /obj/structure/decoration/rock/pile/jungle/fifth), + list("name" = "Plastic Jungle Rocks (Random)", "path" = /obj/structure/decoration/rock/pile/jungle/style_random), + list("name" = "Large Plastic Rocks", "path" = /obj/structure/decoration/rock/pile/jungle/large/first), + list("name" = "Large Plastic Rocks (Alt)", "path" = /obj/structure/decoration/rock/pile/jungle/large/second), + list("name" = "Large Plastic Rocks (Alt 2)", "path" = /obj/structure/decoration/rock/pile/jungle/large/third), + list("name" = "Large Plastic Rocks (Random)", "path" = /obj/structure/decoration/rock/pile/jungle/large/style_random), + ), +)) + +/obj/item/construction/rdd + name = "rapid-decoration-device (RDD)" + desc = "A device used to rapidly deploy plastic decorative flora. \ + Internally synthesizes cheap plastic replicas of natural scenery." + icon = 'icons/obj/tools.dmi' + icon_state = "rdd" + worn_icon_state = "RCD" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + custom_premium_price = PAYCHECK_COMMAND * 1 + max_matter = 60 + slot_flags = ITEM_SLOT_BELT + item_flags = NO_MAT_REDEMPTION | NOBLUDGEON + has_ammobar = TRUE + banned_upgrades = RCD_ALL_UPGRADES & ~RCD_UPGRADE_SILO_LINK + charge_icon_state = "rtd" + drop_sound = 'sound/items/handling/tools/rcd_drop.ogg' + pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg' + sound_vary = TRUE + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5) + + /// Currently selected decoration path + var/obj/structure/decoration/selected_decoration + /// Currently selected category name (for UI) + var/selected_category + /// Currently selected design name (for UI) + var/selected_design_name + +/obj/item/construction/rdd/Initialize(mapload) + . = ..() + selected_category = GLOB.rdd_designs[1] + var/list/category_designs = GLOB.rdd_designs[selected_category] + if(length(category_designs)) + var/list/first_design = category_designs[1] + selected_decoration = first_design["path"] + selected_design_name = first_design["name"] + +/obj/item/construction/rdd/examine(mob/user) + . = ..() + . += span_info("Currently set to produce: [span_bold(initial(selected_decoration.name))].") + +/obj/item/construction/rdd/attack_self(mob/user) + . = ..() + ui_interact(user) + +/obj/item/construction/rdd/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "RapidDecorationDevice", name) + ui.open() + +/obj/item/construction/rdd/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet_batched/rdd), + ) + +/obj/item/construction/rdd/ui_static_data(mob/user) + var/list/data = ..() + + data["categories"] = list() + for(var/category in GLOB.rdd_designs) + var/list/cat_entry = list("cat_name" = category, "designs" = list()) + for(var/list/design in GLOB.rdd_designs[category]) + cat_entry["designs"] += list(list( + "name" = design["name"], + "icon" = sanitize_css_class_name(design["name"]), + )) + data["categories"] += list(cat_entry) + + return data + +/obj/item/construction/rdd/ui_data(mob/user) + var/list/data = ..() + + var/total_matter = get_matter(user) + data["matter"] = isnum(total_matter) ? total_matter : 0 + data["max_matter"] = max_matter + data["selected_category"] = selected_category + data["selected_design"] = selected_design_name + + return data + +/obj/item/construction/rdd/handle_ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("design") + var/category = params["category"] + var/design_name = params["name"] + for(var/list/design as anything in GLOB.rdd_designs[category]) + if(design["name"] == design_name) + selected_decoration = design["path"] + selected_category = category + selected_design_name = design_name + playsound(src, SFX_TOOL_SWITCH, 20, TRUE) + return TRUE + + return TRUE + +/obj/item/construction/rdd/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + . = ..() + if(. & ITEM_INTERACT_ANY_BLOCKER) + return . + + var/turf/target_turf = get_turf(interacting_with) + if(!target_turf) + return ITEM_INTERACT_BLOCKING + + if(target_turf.is_blocked_turf(exclude_mobs = TRUE)) + balloon_alert(user, "tile is blocked!") + return ITEM_INTERACT_BLOCKING + + var/decoration_count = 0 + for(var/obj/structure/decoration/existing in target_turf.contents) + decoration_count++ + if(decoration_count >= 3) + balloon_alert(user, "too many decorations here!") + return ITEM_INTERACT_BLOCKING + + var/cost = RDD_COST_MULTIPLIER + if(!useResource(cost, user, TRUE)) + return ITEM_INTERACT_BLOCKING + + playsound(loc, 'sound/machines/click.ogg', 50, TRUE) + if(!do_after(user, 0.5 SECONDS, target_turf)) + return ITEM_INTERACT_BLOCKING + if(!useResource(cost, user, TRUE)) + return ITEM_INTERACT_BLOCKING + + playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) + new selected_decoration(target_turf) + useResource(cost, user) + + log_tool("[key_name(user)] used [src] to create [initial(selected_decoration.name)] at [AREACOORD(target_turf)]") + return ITEM_INTERACT_SUCCESS + +/obj/item/construction/rdd/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + var/turf/target_turf = get_turf(interacting_with) + if(!target_turf) + return NONE + + var/obj/structure/decoration/found = locate() in target_turf + + if(!found) + return NONE + + playsound(target_turf, 'sound/machines/click.ogg', 50, TRUE) + if(!do_after(user, 0.5 SECONDS, target_turf)) + return ITEM_INTERACT_BLOCKING + + playsound(target_turf, 'sound/items/deconstruct.ogg', 50, TRUE) + qdel(found) + + log_tool("[key_name(user)] used [src] to deconstruct [found] at [AREACOORD(target_turf)]") + return ITEM_INTERACT_SUCCESS + +/obj/item/construction/rdd/borg + desc = "A device used to rapidly deploy plastic decorative flora. Uses the cyborg's internal cell." + custom_materials = null + /// energy usage per decoration + var/energyfactor = 0.1 * STANDARD_CELL_CHARGE + +/obj/item/construction/rdd/borg/get_matter(mob/user) + if(!iscyborg(user)) + return 0 + var/mob/living/silicon/robot/borgy = user + if(!borgy.cell) + return 0 + max_matter = borgy.cell.maxcharge + return borgy.cell.charge + +/obj/item/construction/rdd/borg/useResource(amount, mob/user, dry_run) + var/mob/living/silicon/robot/borgy = user + if(!iscyborg(borgy)) + return FALSE + if(!borgy.cell) + balloon_alert(user, "no cell found!") + return FALSE + if(borgy.cell.charge < amount * energyfactor) + balloon_alert(user, "insufficient charge!") + return FALSE + if(!dry_run) + playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) + return borgy.cell.use(amount * energyfactor) + return TRUE + +/obj/item/construction/rdd/loaded + matter = /obj/item/construction/rdd::max_matter + +#undef RDD_COST_MULTIPLIER diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index 40f989ee0882..6022fe83e596 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -30,6 +30,8 @@ var/has_ammobar = FALSE /// amount of divisions in the ammo indicator overlay/number of ammo indicator states var/ammo_sections = 10 + /// icon_state prefix used for charge overlays — defaults to icon_state if not set + var/charge_icon_state /// bitflags for upgrades var/construction_upgrades = NONE /// bitflags for banned upgrades @@ -179,7 +181,7 @@ if(has_ammobar) var/ratio = ceil((matter / max_matter) * ammo_sections) if(ratio > 0) - . += "[icon_state]_charge[ratio]" + . += "[charge_icon_state || icon_state]_charge[ratio]" /** * Uses resource to do some action. Returns amount of resource used or TRUE/FALSE if only an dry run is required @@ -193,7 +195,7 @@ if(!silo_mats || !silo_link) if(matter < amount) if(has_ammobar) - flick("[icon_state]_empty", src) + flick("[charge_icon_state || icon_state]_empty", src) if(user) balloon_alert(user, "not enough matter!") return FALSE @@ -297,6 +299,7 @@ desc = "It seems to be empty." icon = 'icons/obj/devices/floppy_disks.dmi' icon_state = "datadisk3" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75) var/upgrade /obj/item/rcd_upgrade/frames @@ -322,18 +325,21 @@ desc = "It contains the upgrades necessary to allow more frequent use of the RCD." icon_state = "datadisk7" upgrade = RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/rcd_upgrade/silo_link name = "RCD advanced upgrade: silo link" desc = "It contains direct silo connection RCD upgrade." icon_state = "datadisk8" upgrade = RCD_UPGRADE_SILO_LINK + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.25) /obj/item/rcd_upgrade/furnishing name = "RCD advanced upgrade: furnishings" desc = "It contains the design for chairs, stools, tables, and glass tables." icon_state = "datadisk5" upgrade = RCD_UPGRADE_FURNISHING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75) /datum/action/item_action/rcd_scan name = "Destruction Scan" diff --git a/code/game/objects/items/rcd/RLD.dm b/code/game/objects/items/rcd/RLD.dm index 05d4e840925e..fd38da49adf2 100644 --- a/code/game/objects/items/rcd/RLD.dm +++ b/code/game/objects/items/rcd/RLD.dm @@ -225,6 +225,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' matter = 100 max_matter = 100 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT) #undef LIGHT_TUBE_COST #undef FLOOR_LIGHT_COST diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm index 9cbe5a9bd3e5..2663ce0c97a2 100644 --- a/code/game/objects/items/rcd/RPD.dm +++ b/code/game/objects/items/rcd/RPD.dm @@ -607,6 +607,7 @@ desc = "Adds reverse wrench mode to the RPD. Attention, due to budget cuts, the mode is hard linked to the destroy mode control button." icon_state = "datadisk1" upgrade_flags = RPD_UPGRADE_UNWRENCH + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25) #undef ATMOS_CATEGORY #undef DISPOSALS_CATEGORY diff --git a/code/game/objects/items/rcd/RPLD.dm b/code/game/objects/items/rcd/RPLD.dm index 46c39e536198..80bacbfe0873 100644 --- a/code/game/objects/items/rcd/RPLD.dm +++ b/code/game/objects/items/rcd/RPLD.dm @@ -15,6 +15,7 @@ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg' pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg' sound_vary = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 38, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 18, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) ///category of design selected var/selected_category @@ -298,6 +299,7 @@ icon_state = "plumberer_service" ///Extra price because it appears in bartender's vendor custom_premium_price = PAYCHECK_CREW * 6 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 37.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 18.75, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) ///Design types for plumbing service constructor var/static/list/service_design_types = list( //Category 1 synthesizers diff --git a/code/game/objects/items/rcd/RSF.dm b/code/game/objects/items/rcd/RSF.dm index 1dff040fcfd1..dbde9ab8cdd6 100644 --- a/code/game/objects/items/rcd/RSF.dm +++ b/code/game/objects/items/rcd/RSF.dm @@ -72,23 +72,25 @@ RSF /obj/item/rsf/cyborg matter = 30 -/obj/item/rsf/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(is_type_in_list(W,matter_by_item))//If the thing we got hit by is in our matter list - var/tempMatter = matter_by_item[W.type] + matter - if(tempMatter > max_matter) - to_chat(user, span_warning("\The [src] can't hold any more [discriptor]!")) - return - if(isstack(W)) - var/obj/item/stack/stack = W - stack.use(1) - else - qdel(W) - matter = tempMatter //We add its value - playsound(src.loc, 'sound/machines/click.ogg', 10, TRUE) - to_chat(user, span_notice("\The [src] now holds [matter]/[max_matter] [discriptor].")) - icon_state = base_icon_state//and set the icon state to the base state +/obj/item/rsf/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_type_in_list(tool, matter_by_item))//If the thing we got hit by is in our matter list + return NONE + + var/tempMatter = matter_by_item[tool.type] + matter + if(tempMatter > max_matter) + to_chat(user, span_warning("\The [src] can't hold any more [discriptor]!")) + return ITEM_INTERACT_BLOCKING + + if(isstack(tool)) + var/obj/item/stack/stack = tool + stack.use(1) else - return ..() + qdel(tool) + matter = tempMatter //We add its value + playsound(src.loc, 'sound/machines/click.ogg', 10, TRUE) + to_chat(user, span_notice("\The [src] now holds [matter]/[max_matter] [discriptor].")) + icon_state = base_icon_state//and set the icon state to the base state + return ITEM_INTERACT_SUCCESS /obj/item/rsf/attack_self(mob/user) playsound(src.loc, 'sound/effects/pop.ogg', 50, FALSE) diff --git a/code/game/objects/items/rcd/RTD.dm b/code/game/objects/items/rcd/RTD.dm index b552fc33d4e1..ce04a4f2663b 100644 --- a/code/game/objects/items/rcd/RTD.dm +++ b/code/game/objects/items/rcd/RTD.dm @@ -27,6 +27,7 @@ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg' pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg' sound_vary = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25) /// main category for tile design var/root_category = "Conventional" diff --git a/code/game/objects/items/rcd/RWD.dm b/code/game/objects/items/rcd/RWD.dm index bafbfdc5d8dd..86553acb0db9 100644 --- a/code/game/objects/items/rcd/RWD.dm +++ b/code/game/objects/items/rcd/RWD.dm @@ -1,3 +1,6 @@ +//This represents the amount of materials (both iron and glass that the max_amount of cable would amount to +#define MAX_CABLE_AMOUNT (SMALL_MATERIAL_AMOUNT * 0.1 * /obj/item/rwd/loaded::max_amount) + /obj/item/rwd name = "rapid wiring device" desc = "A device used to rapidly lay cable & pick up stray cable pieces laying around." @@ -12,6 +15,7 @@ w_class = WEIGHT_CLASS_NORMAL lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5 - MAX_CABLE_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5 - MAX_CABLE_AMOUNT) /// maximum amount of cable this device can hold var/max_amount = 210 @@ -28,6 +32,8 @@ /// radial menu to select cable layer var/list/radial_menu = null +#undef MAX_CABLE_AMOUNT + /obj/item/rwd/Initialize(mapload) . = ..() AddComponent(/datum/component/two_handed, wield_callback = CALLBACK(src, PROC_REF(on_wield)), unwield_callback = CALLBACK(src, PROC_REF(on_unwield))) @@ -118,12 +124,11 @@ listeningTo = null /// for inserting cable into the rwd -/obj/item/rwd/attackby(obj/item/attacking_item, mob/living/user) - if(!istype(attacking_item, /obj/item/stack/cable_coil)) - return - var/obj/item/stack/cable_coil/cable = attacking_item - add_cable(user, cable) - return TRUE +/obj/item/rwd/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/cable_coil)) + return NONE + add_cable(user, tool) + return ITEM_INTERACT_SUCCESS /obj/item/rwd/click_alt(mob/user) if(!radial_menu) diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index d4328980022b..5ab3d483182c 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -349,6 +349,10 @@ var/staffcooldown = 0 var/staffwait = 30 +/obj/item/godstaff/Initialize(mapload) + . = ..() + AddComponent(/datum/component/walking_aid) + /obj/item/godstaff/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(SHOULD_SKIP_INTERACTION(interacting_with, src, user)) return NONE diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm index 80e97acab186..34458f6f6463 100644 --- a/code/game/objects/items/robot/ai_upgrades.dm +++ b/code/game/objects/items/robot/ai_upgrades.dm @@ -75,6 +75,7 @@ name = "surveillance software upgrade" desc = "An illegal software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading and hidden microphones." to_gift = /datum/ai_module/malf/upgrade/eavesdrop + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/aiupgrade/surveillance_upgrade/Initialize(mapload) . = ..() @@ -85,3 +86,4 @@ name = "power transfer upgrade" desc = "A legal upgrade that allows an artificial intelligence to directly provide power to APCs from a distance" to_gift = /datum/ai_module/power_apc + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) diff --git a/code/game/objects/items/robot/items/janitor.dm b/code/game/objects/items/robot/items/janitor.dm new file mode 100644 index 000000000000..75f47f70f276 --- /dev/null +++ b/code/game/objects/items/robot/items/janitor.dm @@ -0,0 +1,243 @@ +/obj/item/borg/cleaner_box + name = "janitorial vacuum suite" + desc = "A module designed to compensate for your lack of hands by offloading your job onto your more squishy overlords." + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "cleanerbox" + var/obj/item/vacuum_item/hose + var/deployed = FALSE + var/locked = FALSE + var/datum/weakref/module_list + +/obj/item/borg/cleaner_box/Initialize(mapload) + . = ..() + var/mob/living/silicon/robot = loc + if(!istype(robot)) + return INITIALIZE_HINT_QDEL + var/obj/item/robot_model/janitor/model = locate() in robot.get_contents() + module_list = WEAKREF(model) + AddComponent(/datum/component/borg_item_offered_when_pulled, robot) + ADD_TRAIT(src, TRAIT_BORG_GIVE, TRAIT_BORG_GIVE) + hose = new(src) + hose.cleaner_box = WEAKREF(src) + hose.AddComponent( \ + /datum/component/transforming, \ + force_on = hose.force, \ + hitsound_on = hose.hitsound, \ + w_class_on = hose.w_class, \ + clumsy_check = FALSE, \ + attack_verb_continuous_on = list("washed", "mopped", "scrubbed", "whacked", "bapped", "decontaminated"), \ + attack_verb_simple_on = list("wash", "mop", "scrub", "whack", "bap", "decontaminate"), \ + ) + hose.RegisterSignal(hose, COMSIG_TRANSFORMING_ON_TRANSFORM, TYPE_PROC_REF(/obj/item/vacuum_item, on_transform)) + update_icon(UPDATE_OVERLAYS) + +/obj/item/borg/cleaner_box/Destroy(force) + if(hose?.borg_hose) + QDEL_NULL(hose.borg_hose) + if(deployed) + hose.retract_hose() + QDEL_NULL(hose) + return ..() + +/obj/item/borg/cleaner_box/attack_self(mob/user, modifiers) + . = ..() + if(deployed) + hose.retract_hose() + return COMPONENT_CANCEL_ATTACK_CHAIN + +/obj/item/borg/cleaner_box/click_alt(mob/user) + if(deployed) + hose.retract_hose() + locked = !locked + update_icon(UPDATE_OVERLAYS) + return CLICK_ACTION_SUCCESS + +/obj/item/borg/cleaner_box/on_offered(mob/living/offerer, mob/living/carbon/offered) + . = TRUE + if(SEND_SIGNAL(src, COMSIG_ITEM_OFFERING, offerer) & COMPONENT_OFFER_INTERRUPT) + return + if(hose.loc != src && !istype(hose.loc, /mob/living)) // Error handling + stack_trace("[src] has been offered with [hose] not present inside its contents or inside a mob's loc variable. Location: [isnull(loc) ? "NULLSPACE" : "[hose.loc], X: [hose.x], Y: [hose.y], Z:[hose.z]"]") + deployed = FALSE + hose.forceMove(src) + if(locked || deployed) + return + if(!offered) + offered = locate(/mob/living/carbon) in orange(1, offerer) + if(offered && istype(offered)) + offerer.visible_message( + span_notice("[offerer] extends the handle towards [offered] for their cleaning suite."), + span_notice("The handle to your [src] extends towards [offered]'s hand."), null, 2) + + offerer.apply_status_effect(/datum/status_effect/offering, src, /atom/movable/screen/alert/give/borg, offered) + return + +/obj/item/borg/cleaner_box/on_offer_taken(mob/living/offerer, mob/living/taker) + . = ..() + if(.) + return TRUE + hose.bag = istype(loc, /mob/living/silicon) ? pick(loc.get_all_contents_type(/obj/item/storage/bag/trash)) : locate(/obj/item/storage/bag/trash) in module_list.resolve() + if(!hose.bag) + stack_trace("[src] failed to connect to a trash bag on [module_list.resolve()].") + return TRUE + taker.visible_message( + span_notice("[taker] takes the [hose] from [offerer]."), + span_notice("You take the [hose] from [offerer]")) + hose.do_pickup_animation(taker, offerer) + taker.put_in_hands(hose) + hose.borg_hose = hose.generate_hose(offerer, taker) + hose.RegisterSignal(hose, COMSIG_ITEM_DROPPED, TYPE_PROC_REF(/obj/item/vacuum_item, on_drop)) + playsound(hose, 'sound/items/vacuum/vacuum_hose.ogg', 100, TRUE) + deployed = TRUE + update_icon(UPDATE_OVERLAYS) + offerer.remove_status_effect(/datum/status_effect/offering) + return TRUE + +/obj/item/borg/cleaner_box/update_overlays() + . = ..() + if(deployed) + . += "cleanerbox_on" + else + . += "cleanerbox_wand" + if(locked) + . += "cleanerbox_locked" + +/obj/item/borg/cleaner_box/examine(mob/user) + . = ..() + . += span_notice("Alt-Click to [locked ? "unlock" : "lock"] the [src].") + +/obj/item/vacuum_item + name = "janitorial floor cleaner" + desc = "This is the working end of an industrial cleaner that someone unfortinately gave sapience." + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "vacuum-wand" + inhand_icon_state = "vacuum-wand" + righthand_file = 'icons/mob/inhands/items/vacuum_wand_righthand.dmi' + lefthand_file = 'icons/mob/inhands/items/vacuum_wand_lefthand.dmi' + w_class = WEIGHT_CLASS_BULKY + obj_flags = INDESTRUCTIBLE // To prevent fuckery and a broken borg module. + attack_verb_continuous = list("sucked", "vacuumed", "smacked", "forcefully dusted off", "beaten") + attack_verb_simple = list("suck", "vacuum", "smack", "dust off", "beat") + force = 12 + + var/datum/beam/held/vacuum/borg_hose + var/datum/weakref/cleaner_box + var/obj/item/storage/bag/trash/bag + var/cleaning = FALSE + +/obj/item/vacuum_item/Destroy(force) + bag = null + return ..() + +/obj/item/vacuum_item/interact_with_atom(obj/item/thing, mob/living/user, list/modifiers) + . = ..() + if(!istype(thing)) + return NONE + if(!bag && cleaning) + return NONE + if(thing.anchored || thing.w_class >= WEIGHT_CLASS_BULKY) + return NONE + playsound(bag, 'sound/items/vacuum/vacuum_use.ogg', 20, TRUE) + for(var/obj/item/I in get_turf(thing)) + if(!istype(I, thing.type)) + continue + if(!do_after(user, 0.1 SECONDS, user, progress = FALSE)) + break + if(bag.atom_storage.attempt_insert(I, user, FALSE)) + continue + break + +/obj/item/vacuum_item/proc/on_transform(obj/item/source, mob/living/user, active) + SIGNAL_HANDLER + + cleaning = !cleaning + if(!user) + return COMPONENT_NO_DEFAULT_MESSAGE + playsound(src, 'sound/items/vacuum/vacuum_clack.ogg', 30, TRUE) + if(cleaning) //CLEAN_SCRUB because if you get a borg to help you clean up a crime, you deserve to win. + balloon_alert(user, "cleaning") + AddComponent( \ + /datum/component/cleaner, \ + base_cleaning_duration = 1 SECONDS, \ + pre_clean_callback = CALLBACK(src, PROC_REF(clean_sound)), \ + ) + else + balloon_alert(user, "vacuuming") + qdel(GetComponent(/datum/component/cleaner)) + return COMPONENT_NO_DEFAULT_MESSAGE + +/obj/item/vacuum_item/proc/clean_sound() + playsound(src, 'sound/items/vacuum/vacuum_steam.ogg', 10, TRUE) + return CLEAN_ALLOWED + +/obj/item/vacuum_item/proc/retract_hose() + var/obj/item/borg/cleaner_box/cleaner_resolved = cleaner_box?.resolve() + if(!cleaner_resolved) + CRASH("Somehow [src] doesn't have a source to return to!") + if(loc == cleaner_resolved) + return + do_pickup_animation(cleaner_resolved, get_turf(src)) + forceMove(cleaner_resolved) + playsound(cleaner_resolved, 'sound/items/vacuum/vacuum_ploop.ogg', 100) + if(!isnull(borg_hose) && !QDELING(borg_hose)) + balloon_alert_to_hearers("snap") + QDEL_NULL(borg_hose) + bag = null + cleaner_resolved.deployed = FALSE + UnregisterSignal(src, COMSIG_ITEM_DROPPED) + cleaner_resolved.update_icon(UPDATE_OVERLAYS) + +/obj/item/vacuum_item/proc/generate_hose(mob/living/offerer, mob/living/taker) + var/datum/beam/held/vacuum/generated_borg_hose = new(taker, offerer, icon_state = "hosebeam", max_distance = 7, emissive = FALSE, beam_layer = BELOW_MOB_LAYER) + var/index = taker.get_held_index_of_item(src) + generated_borg_hose.lefthand = IS_LEFT_INDEX(index) + INVOKE_ASYNC(generated_borg_hose, TYPE_PROC_REF(/datum/beam, Start)) + RegisterSignal(generated_borg_hose, COMSIG_QDELETING, PROC_REF(retract_hose)) + RegisterSignal(generated_borg_hose, COMSIG_BEAM_BEFORE_DRAW, PROC_REF(on_update)) + return generated_borg_hose + +/obj/item/vacuum_item/examine(mob/user) + . = ..() + . += span_notice("Interact to switch to [cleaning ? "vacuum" : "cleaning"] mode.") +/obj/item/vacuum_item/proc/on_update() + SIGNAL_HANDLER + var/mob/living/mob = borg_hose.origin + if(istype(mob)) + var/index = mob.is_holding(src) + borg_hose.lefthand = IS_LEFT_INDEX(index) + if(prob(10)) + playsound(src, 'sound/items/vacuum/vacuum_hose.ogg', 50, TRUE) + +/obj/item/vacuum_item/proc/on_drop(obj/item/vacuum, mob/living/user) + SIGNAL_HANDLER + if(user == loc) + return + retract_hose() + +/datum/beam/held/vacuum + righthand_s_px = -7 + righthand_s_py = -3 + + righthand_e_px = 0 + righthand_e_py = -6 + + righthand_w_px = -3 + righthand_w_py = -6 + + righthand_n_px = 8 + righthand_n_py = -6 + + lefthand_s_px = 7 + lefthand_s_py = -3 + + lefthand_e_px = 3 + lefthand_e_py = -6 + + lefthand_w_px = 0 + lefthand_w_py = -6 + + lefthand_n_px = -8 + lefthand_n_py = -6 + + + diff --git a/code/game/objects/items/robot/items/storage.dm b/code/game/objects/items/robot/items/storage.dm index 759638b6b4e8..cc945ce70fd3 100644 --- a/code/game/objects/items/robot/items/storage.dm +++ b/code/game/objects/items/robot/items/storage.dm @@ -32,8 +32,7 @@ return ..() ///A right-click verb, for those not using hotkey mode. -/obj/item/borg/apparatus/verb/verb_dropHeld() - set name = "Drop" +GAME_VERB(/obj/item/borg/apparatus, verb_dropHeld, "Drop", null) if(usr != loc || !stored) return @@ -91,11 +90,11 @@ update_appearance() return NONE -/obj/item/borg/apparatus/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(stored) - item.melee_attack_chain(user, stored, modifiers) - return - return ..() +/obj/item/borg/apparatus/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!stored) + return NONE + tool.melee_attack_chain(user, stored, modifiers) + return ITEM_INTERACT_SUCCESS /obj/item/borg/apparatus/beaker name = "beaker storage apparatus" diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm index 351949715451..0060a502cef7 100644 --- a/code/game/objects/items/robot/items/tools.dm +++ b/code/game/objects/items/robot/items/tools.dm @@ -191,16 +191,8 @@ if (!issilicon(user)) return - var/mob/living/silicon/robot/as_cyborg = user - if (!(src in as_cyborg.held_items)) - context[SCREENTIP_CONTEXT_RMB] = "Select Tool" - return CONTEXTUAL_SCREENTIP_SET - -/obj/item/borg/cyborg_omnitool/examine(mob/user) - . = ..() - if(reference) - var/obj/item/tool = get_proxy_attacker_for(src, usr) - . += tool.examine(user) + context[SCREENTIP_CONTEXT_RMB] = "Select Tool" + return CONTEXTUAL_SCREENTIP_SET /** * Sets the new internal tool to be used @@ -209,6 +201,8 @@ * * obj/item/ref - typepath for the new internal omnitool */ /obj/item/borg/cyborg_omnitool/proc/set_internal_tool(obj/item/tool) + SHOULD_NOT_OVERRIDE(TRUE) + for(var/obj/item/internal_tool as anything in omni_toolkit) if(internal_tool == tool) reference = internal_tool @@ -247,6 +241,8 @@ //the internal tool is considered part of the tool itself, so don't let it be dropped. tool.item_flags |= ABSTRACT ADD_TRAIT(tool, TRAIT_NODROP, INNATE_TRAIT) + //assign the upgraded toolspeed, if any. + tool.toolspeed = initial(tool.toolspeed) - upgraded * 0.3 //store tool for future use atoms[reference] = tool @@ -256,17 +252,19 @@ //build the radial menu options var/list/radial_menu_options = list() var/list/tool_map = list() - for(var/obj/item as anything in omni_toolkit) - var/tool_name = initial(item.name) - radial_menu_options[tool_name] = image(icon = initial(item.icon), icon_state = initial(item.icon_state)) - tool_map[tool_name] = item + for(var/obj/item/tool as anything in omni_toolkit) + if(initial(tool.tool_behaviour) == tool_behaviour) + continue + var/tool_name = initial(tool.name) + radial_menu_options[tool_name] = image(icon = initial(tool.icon), icon_state = initial(tool.icon_state)) + tool_map[tool_name] = tool //assign the new tool behaviour var/internal_tool_name = show_radial_menu(user, src, radial_menu_options, require_near = TRUE, tooltips = TRUE) if(!internal_tool_name) return - //set the reference & update icons + //set the reference and update appearance set_internal_tool(tool_map[internal_tool_name]) update_appearance(UPDATE_ICON_STATE) playsound(src, 'sound/items/tools/change_jaws.ogg', 50, TRUE) @@ -276,8 +274,7 @@ if(!LAZYACCESS(modifiers, RIGHT_CLICK) || !iscyborg(usr)) return ..() var/mob/living/silicon/robot/user = usr - if (!(src in user.held_items)) - attack_self(user, modifiers) + attack_self(user, modifiers) return ..() /obj/item/borg/cyborg_omnitool/update_icon_state() @@ -301,7 +298,6 @@ /obj/item/borg/cyborg_omnitool/medical name = "surgical omni-toolset" desc = "A set of surgical tools used by cyborgs to operate on various surgical operations." - omni_toolkit = list( /obj/item/surgical_drapes/cyborg, /obj/item/scalpel/cyborg, @@ -319,74 +315,26 @@ desc = "A set of engineering tools used by cyborgs to conduct various engineering tasks." icon = 'icons/obj/items_cyborg.dmi' icon_state = "toolkit_engiborg" - omni_toolkit = list( /obj/item/wrench/cyborg, /obj/item/wirecutters/cyborg, /obj/item/screwdriver/cyborg, /obj/item/crowbar/cyborg, /obj/item/multitool/cyborg, - /obj/item/weldingtool/largetank/cyborg, ) -/obj/item/borg/cyborg_omnitool/engineering/Initialize(mapload) - . = ..() - RegisterSignal(src, COMSIG_SILICON_MODULE_ACTIVATION, PROC_REF(welder_toggle)) - -/obj/item/borg/cyborg_omnitool/engineering/update_overlays() +/obj/item/borg/cyborg_omnitool/engineering/examine(mob/user) . = ..() - if(tool_behaviour == TOOL_WELDER) - var/obj/item/weldingtool/tool = atoms[/obj/item/weldingtool/largetank/cyborg] - if(tool?.welding) - . |= tool.update_overlays() - -/obj/item/borg/cyborg_omnitool/engineering/attack_self(mob/user, modifiers) - if(tool_behaviour == TOOL_WELDER && LAZYACCESS(modifiers, LEFT_CLICK)) - welder_toggle(src, null, user) - - return NONE - - return ..() - -/obj/item/borg/cyborg_omnitool/engineering/set_internal_tool(obj/item/tool) - if(tool_behaviour == TOOL_WELDER) - welder_toggle(src, FALSE) - - return ..() - -///Reflects internal welder icon onto the omnitool -/obj/item/borg/cyborg_omnitool/engineering/proc/welder_update(source) - PRIVATE_PROC(TRUE) - SIGNAL_HANDLER - - update_appearance(UPDATE_OVERLAYS) - -///Toggles welder on/off when module slot is selected/deselected -/obj/item/borg/cyborg_omnitool/engineering/proc/welder_toggle(datum/omnitool, state, mob/self_user) - PRIVATE_PROC(TRUE) - SIGNAL_HANDLER - - if(tool_behaviour == TOOL_WELDER) - var/obj/item/weldingtool/tool = get_proxy_attacker_for(src, usr) - if(isnull(state)) - state = !tool.welding - if(state == tool.welding) - return - - if(state) - RegisterSignal(tool, COMSIG_ATOM_UPDATE_APPEARANCE, PROC_REF(welder_update), override = TRUE) - if(self_user) - tool.switched_on(self_user) - else - tool.switched_off() - UnregisterSignal(tool, COMSIG_ATOM_UPDATE_APPEARANCE) + if(tool_behaviour == TOOL_MULTITOOL) + var/obj/item/multitool/tool = atoms[/obj/item/multitool/cyborg] + if(tool?.buffer) + . += span_notice("Multitool buffer contains [tool.buffer].") /obj/item/borg/cyborg_omnitool/botany name = "botanical omni-toolset" desc = "A set of botanical tools used by cyborgs to do gardening." icon = 'icons/obj/items_cyborg.dmi' icon_state = "sili" - omni_toolkit = list( /obj/item/secateurs/cyborg, /obj/item/cultivator/cyborg, @@ -394,6 +342,5 @@ /obj/item/shovel/spade/cyborg, ) - #undef PKBORG_DAMPEN_CYCLE_DELAY #undef POWER_RECHARGE_CYBORG_DRAIN_MULTIPLIER diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 5264bca98bdf..eb183f1e8d4f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -1,5 +1,3 @@ - - //The robot bodyparts have been moved to code/module/surgery/bodyparts/robot_bodyparts.dm /obj/item/robot_suit @@ -7,6 +5,7 @@ desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors." icon = 'icons/mob/augmentation/augments.dmi' icon_state = "robo_suit" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) /// Left arm part of the endoskeleton var/obj/item/bodypart/arm/left/robot/l_arm = null /// Right arm part of the endoskeleton @@ -165,217 +164,235 @@ chest.cell = temp_cell return TRUE -//ADD -/obj/item/robot_suit/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/stack/sheet/iron)) - var/obj/item/stack/sheet/iron/M = W - if(!l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) - if (!M.use(1)) - to_chat(user, span_warning("You need one sheet of iron to start building ED-209!")) - return - var/obj/item/bot_assembly/ed209/assembly = new(drop_location()) - to_chat(user, span_notice("You arm the robot frame.")) - var/held_index = user.is_holding(src) - qdel(src) - if (held_index) - user.put_in_hand(assembly, held_index) - - else if(istype(W, /obj/item/bodypart/leg/left/robot)) +//ADD <-- what is the purpose of this code comment? is it an abbreviation? +/obj/item/robot_suit/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/sheet/iron)) + var/obj/item/stack/sheet/iron/iron_sheet = tool + if(l_arm || r_arm || l_leg || r_leg || chest || head) + return ITEM_INTERACT_BLOCKING + if (!iron_sheet.use(1)) + to_chat(user, span_warning("You need one sheet of iron to start building ED-209!")) + return ITEM_INTERACT_BLOCKING + var/obj/item/bot_assembly/ed209/assembly = new(drop_location()) + to_chat(user, span_notice("You arm the robot frame.")) + var/held_index = user.is_holding(src) + qdel(src) + if (held_index) + user.put_in_hand(assembly, held_index) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/bodypart/leg/left/robot)) if(l_leg) - return - if(!user.transferItemToLoc(W, src)) - return - W.icon_state = initial(W.icon_state) - W.cut_overlays() - l_leg = W + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + tool.icon_state = initial(tool.icon_state) + tool.cut_overlays() + l_leg = tool update_appearance() - - else if(istype(W, /obj/item/bodypart/leg/right/robot)) - if(src.r_leg) - return - if(!user.transferItemToLoc(W, src)) - return - W.icon_state = initial(W.icon_state) - W.cut_overlays() - r_leg = W + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/bodypart/leg/right/robot)) + if(r_leg) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + tool.icon_state = initial(tool.icon_state) + tool.cut_overlays() + r_leg = tool update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(W, /obj/item/bodypart/arm/left/robot)) + if(istype(tool, /obj/item/bodypart/arm/left/robot)) if(l_arm) - return - if(!user.transferItemToLoc(W, src)) - return - W.icon_state = initial(W.icon_state) - W.cut_overlays() - l_arm = W + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + tool.icon_state = initial(tool.icon_state) + tool.cut_overlays() + l_arm = tool update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(W, /obj/item/bodypart/arm/right/robot)) + if(istype(tool, /obj/item/bodypart/arm/right/robot)) if(r_arm) - return - if(!user.transferItemToLoc(W, src)) - return - W.icon_state = initial(W.icon_state)//in case it is a dismembered robotic limb - W.cut_overlays() - r_arm = W + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + tool.icon_state = initial(tool.icon_state)//in case it is a dismembered robotic limb + tool.cut_overlays() + r_arm = tool update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(W, /obj/item/bodypart/chest/robot)) - var/obj/item/bodypart/chest/robot/CH = W + if(istype(tool, /obj/item/bodypart/chest/robot)) + var/obj/item/bodypart/chest/robot/new_chestpiece = tool if(chest) - return - if(CH.wired && CH.cell) - if(!user.transferItemToLoc(CH, src)) - return - CH.icon_state = initial(CH.icon_state) //in case it is a dismembered robotic limb - CH.cut_overlays() - chest = CH - update_appearance() - else if(!CH.wired) + return ITEM_INTERACT_BLOCKING + + if(!new_chestpiece.wired) to_chat(user, span_warning("You need to attach wires to it first!")) - else + return ITEM_INTERACT_BLOCKING + + if(!new_chestpiece.cell) to_chat(user, span_warning("You need to attach a cell to it first!")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(new_chestpiece, src)) + return ITEM_INTERACT_BLOCKING - else if(istype(W, /obj/item/bodypart/head/robot)) - var/obj/item/bodypart/head/robot/HD = W - if(locate(/obj/item/organ) in HD) - to_chat(user, span_warning("There are organs inside [HD]!")) - return + new_chestpiece.icon_state = initial(new_chestpiece.icon_state) //in case it is a dismembered robotic limb + new_chestpiece.cut_overlays() + chest = new_chestpiece + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/bodypart/head/robot)) + var/obj/item/bodypart/head/robot/new_headpiece = tool + if(locate(/obj/item/organ) in new_headpiece) + to_chat(user, span_warning("There are organs inside [new_headpiece]!")) + return ITEM_INTERACT_BLOCKING if(head) - return - if(HD.flash2 && HD.flash1) - if(!user.transferItemToLoc(HD, src)) - return - HD.icon_state = initial(HD.icon_state)//in case it is a dismembered robotic limb - HD.cut_overlays() - head = HD - update_appearance() - else + return ITEM_INTERACT_BLOCKING + if(!new_headpiece.flash2 || !new_headpiece.flash1) to_chat(user, span_warning("You need to attach a flash to it first!")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(new_headpiece, src)) + return ITEM_INTERACT_BLOCKING + new_headpiece.icon_state = initial(new_headpiece.icon_state)//in case it is a dismembered robotic limb + new_headpiece.cut_overlays() + head = new_headpiece + update_appearance() + return ITEM_INTERACT_SUCCESS - else if (W.tool_behaviour == TOOL_MULTITOOL) - if(check_completion()) - ui_interact(user) + if(istype(tool, /obj/item/mmi)) + var/obj/item/mmi/potential_brain = tool + if(!check_completion()) + to_chat(user, span_warning("The MMI must go in after everything else!")) + return ITEM_INTERACT_BLOCKING + if(!chest.cell) + to_chat(user, span_warning("The endoskeleton still needs a power cell!")) + return ITEM_INTERACT_BLOCKING + if(!isturf(loc)) + to_chat(user, span_warning("You can't put [potential_brain] in, the frame has to be standing on the ground to be perfectly precise!")) + return ITEM_INTERACT_BLOCKING + if(!potential_brain.brain_check(user)) + return ITEM_INTERACT_BLOCKING + + var/mob/living/brain/brainmob = potential_brain.brainmob + if(is_banned_from(brainmob.ckey, JOB_CYBORG) || QDELETED(src) || QDELETED(brainmob) || QDELETED(user) || QDELETED(potential_brain) || !Adjacent(user)) + if(!QDELETED(potential_brain)) + to_chat(user, span_warning("This [potential_brain.name] does not seem to fit!")) + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + + var/mob/living/silicon/robot/final_product = new /mob/living/silicon/robot/nocell(get_turf(loc), user) + if(!final_product) + return ITEM_INTERACT_BLOCKING + if(potential_brain.laws && potential_brain.laws.id != DEFAULT_AI_LAWID) + aisync = FALSE + lawsync = FALSE + final_product.laws = potential_brain.laws + potential_brain.laws.associate(final_product) + + final_product.SetInvisibility(INVISIBILITY_NONE) + //Transfer debug settings to new mob + final_product.custom_name = created_name + final_product.locked = panel_locked + if(!aisync) + lawsync = FALSE + final_product.set_connected_ai(null) else - to_chat(user, span_warning("The endoskeleton must be assembled before debugging can begin!")) - - else if(istype(W, /obj/item/mmi)) - var/obj/item/mmi/M = W - if(check_completion()) - if(!chest.cell) - to_chat(user, span_warning("The endoskeleton still needs a power cell!")) - return - if(!isturf(loc)) - to_chat(user, span_warning("You can't put [M] in, the frame has to be standing on the ground to be perfectly precise!")) - return - if(!M.brain_check(user)) - return - - var/mob/living/brain/brainmob = M.brainmob - if(is_banned_from(brainmob.ckey, JOB_CYBORG) || QDELETED(src) || QDELETED(brainmob) || QDELETED(user) || QDELETED(M) || !Adjacent(user)) - if(!QDELETED(M)) - to_chat(user, span_warning("This [M.name] does not seem to fit!")) - return - if(!user.temporarilyRemoveItemFromInventory(W)) - return - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot/nocell(get_turf(loc), user) - if(!O) - return - if(M.laws && M.laws.id != DEFAULT_AI_LAWID) - aisync = FALSE - lawsync = FALSE - O.laws = M.laws - M.laws.associate(O) - - O.SetInvisibility(INVISIBILITY_NONE) - //Transfer debug settings to new mob - O.custom_name = created_name - O.locked = panel_locked - if(!aisync) - lawsync = FALSE - O.set_connected_ai(null) - else - O.notify_ai(AI_NOTIFICATION_NEW_BORG) - if(forced_ai) - O.set_connected_ai(forced_ai) - if(!lawsync) - O.lawupdate = FALSE - if(M.laws.id == DEFAULT_AI_LAWID) - O.make_laws() - O.log_current_laws() - - brainmob.mind?.remove_antags_for_borging() - O.job = JOB_CYBORG - - O.cell = chest.cell - chest.cell.forceMove(O) - - W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. - QDEL_NULL(O.mmi) //we delete the mmi created by robot/New() - O.mmi = W //and give the real mmi to the borg. - O.updatename(brainmob.client) - // This canonizes that MMI'd cyborgs have memories of their previous life - brainmob.add_mob_memory(/datum/memory/was_cyborged, protagonist = brainmob.mind, deuteragonist = user) - brainmob.mind.transfer_to(O) - playsound(O.loc, 'sound/mobs/non-humanoids/cyborg/liveagain.ogg', 75, TRUE) - - if(O.is_antag()) - to_chat(O, span_userdanger("You have been robotized!")) - to_chat(O, span_danger("You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")) - - SSblackbox.record_feedback("amount", "cyborg_birth", 1) - forceMove(O) - O.robot_suit = src - - user.log_message("put the MMI/posibrain of [key_name(M.brainmob)] into a cyborg shell", LOG_GAME) - M.brainmob.log_message("was put into a cyborg shell by [key_name(user)]", LOG_GAME, log_globally = FALSE) - - if(!locomotion) - O.set_lockcharge(TRUE) - to_chat(O, span_warning("Error: Servo motors unresponsive.")) - + final_product.notify_ai(AI_NOTIFICATION_NEW_BORG) + if(forced_ai) + final_product.set_connected_ai(forced_ai) + if(!lawsync) + final_product.lawupdate = FALSE + if(potential_brain.laws.id == DEFAULT_AI_LAWID) + final_product.make_laws() + final_product.log_current_laws() + + brainmob.mind?.remove_antags_for_borging() + final_product.job = JOB_CYBORG + + final_product.cell = chest.cell + chest.cell.forceMove(final_product) + + tool.forceMove(final_product)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. + QDEL_NULL(final_product.mmi) //we delete the mmi created by robot/New() + final_product.mmi = tool //and give the real mmi to the borg. + final_product.updatename(brainmob.client) + // This canonizes that MMI'd cyborgs have memories of their previous life + brainmob.add_mob_memory(/datum/memory/was_cyborged, protagonist = brainmob.mind, deuteragonist = user) + brainmob.mind.transfer_to(final_product) + playsound(final_product.loc, 'sound/mobs/non-humanoids/cyborg/liveagain.ogg', 75, TRUE) + + if(final_product.is_antag()) + to_chat(final_product, span_userdanger("You have been robotized!")) + to_chat(final_product, span_danger("You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")) + + SSblackbox.record_feedback("amount", "cyborg_birth", 1) + forceMove(final_product) + final_product.robot_suit = src + + user.log_message("put the MMI/posibrain of [key_name(brainmob)] into a cyborg shell", LOG_GAME) + brainmob.log_message("was put into a cyborg shell by [key_name(user)]", LOG_GAME, log_globally = FALSE) + + if(!locomotion) + final_product.set_lockcharge(TRUE) + to_chat(final_product, span_warning("Error: Servo motors unresponsive.")) + return ITEM_INTERACT_SUCCESS + + + if(istype(tool, /obj/item/borg/upgrade/ai)) + var/obj/item/borg/upgrade/ai/boris_module = tool + if(!check_completion()) + return ITEM_INTERACT_BLOCKING + if(!isturf(loc)) + to_chat(user, span_warning("You cannot install [boris_module], the frame has to be standing on the ground to be perfectly precise!")) + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(boris_module)) + to_chat(user, span_warning("[boris_module] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + qdel(boris_module) + var/mob/living/silicon/robot/final_product = new /mob/living/silicon/robot/shell(get_turf(src)) + + if(!aisync) + lawsync = FALSE + final_product.set_connected_ai(null) else - to_chat(user, span_warning("The MMI must go in after everything else!")) - - else if(istype(W, /obj/item/borg/upgrade/ai)) - var/obj/item/borg/upgrade/ai/M = W - if(check_completion()) - if(!isturf(loc)) - to_chat(user, span_warning("You cannot install [M], the frame has to be standing on the ground to be perfectly precise!")) - return - if(!user.temporarilyRemoveItemFromInventory(M)) - to_chat(user, span_warning("[M] is stuck to your hand!")) - return - qdel(M) - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot/shell(get_turf(src)) - - if(!aisync) - lawsync = FALSE - O.set_connected_ai(null) - else - if(forced_ai) - O.set_connected_ai(forced_ai) - O.notify_ai(AI_NOTIFICATION_AI_SHELL) - if(!lawsync) - O.lawupdate = FALSE - O.make_laws() - O.log_current_laws() - - O.cell = chest.cell - chest.cell.forceMove(O) - - O.locked = panel_locked - O.job = JOB_CYBORG - forceMove(O) - O.robot_suit = src - if(!locomotion) - O.set_lockcharge(TRUE) - - else if(IS_WRITING_UTENSIL(W)) + if(forced_ai) + final_product.set_connected_ai(forced_ai) + final_product.notify_ai(AI_NOTIFICATION_AI_SHELL) + if(!lawsync) + final_product.lawupdate = FALSE + final_product.make_laws() + final_product.log_current_laws() + + final_product.cell = chest.cell + chest.cell.forceMove(final_product) + + final_product.locked = panel_locked + final_product.job = JOB_CYBORG + forceMove(final_product) + final_product.robot_suit = src + if(!locomotion) + final_product.set_lockcharge(TRUE) + return ITEM_INTERACT_SUCCESS + + if(IS_WRITING_UTENSIL(tool)) to_chat(user, span_warning("You need to use a multitool to name [src]!")) - else - return ..() + return ITEM_INTERACT_BLOCKING + + return NONE + +/obj/item/robot_suit/multitool_act(mob/living/user, obj/item/tool) + if(!check_completion()) + to_chat(user, span_warning("The endoskeleton must be assembled before debugging can begin!")) + return ITEM_INTERACT_SKIP_TO_ATTACK + ui_interact(user) + return ITEM_INTERACT_SUCCESS /obj/item/robot_suit/ui_status(mob/user, datum/ui_state/state) if(isobserver(user)) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 3d9e29418a10..dcd503e02381 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -75,8 +75,9 @@ desc = "Used to rename a cyborg." icon = 'icons/obj/devices/circuitry_n_data.dmi' icon_state = "cyborg_upgrade1" - var/heldname = "" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) one_use = TRUE + var/heldname = "" /obj/item/borg/upgrade/rename/attack_self(mob/user) var/new_heldname = sanitize_name(tgui_input_text(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN), allow_numbers = TRUE) @@ -106,6 +107,7 @@ model_flags = BORG_MODEL_SECURITY // We handle this in a custom way allow_duplicates = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT) /obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -136,6 +138,7 @@ name = "ion thruster upgrade" desc = "An energy-operated thruster system for cyborgs." icon_state = "module_general" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/borg/upgrade/thrusters/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -161,6 +164,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/miner) model_flags = BORG_MODEL_MINER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT) items_to_add = list(/obj/item/pickaxe/drill/diamonddrill) items_to_remove = list(/obj/item/pickaxe/drill, /obj/item/shovel) @@ -172,6 +176,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/miner) model_flags = BORG_MODEL_MINER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/storage/bag/ore/holding) items_to_remove = list(/obj/item/storage/bag/ore/cyborg) @@ -183,6 +188,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/storage/bag/trash/bluespace/cyborg) items_to_remove = list(/obj/item/storage/bag/trash) @@ -194,6 +200,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT) items_to_add = list(/obj/item/mop/advanced) items_to_remove = list(/obj/item/mop) @@ -205,6 +212,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.7) items_to_add = list(/obj/item/cautery/prt) @@ -215,6 +223,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.7) items_to_add = list(/obj/item/plunger) @@ -225,6 +234,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 7.5) items_to_add = list (/obj/item/lightreplacer/advanced) items_to_remove = list(/obj/item/lightreplacer) @@ -234,6 +244,7 @@ desc = "Unlocks the hidden, deadlier functions of a cyborg." icon_state = "module_illegal" require_model = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5) /obj/item/borg/upgrade/syndicate/Initialize(mapload) . = ..() @@ -266,6 +277,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/miner) model_flags = BORG_MODEL_MINER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2) /obj/item/borg/upgrade/lavaproof/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -284,6 +296,7 @@ desc = "This module will repair the cyborg over time." icon_state = "module_general" require_model = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5) var/repair_amount = -1 /// world.time of next repair var/next_repair = 0 @@ -406,12 +419,14 @@ name = "medical cyborg expanded hypospray" desc = "An upgrade to the Medical model's hypospray, allowing it \ to treat a wider range of conditions and problems." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 4, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4) /obj/item/borg/upgrade/piercing_hypospray name = "cyborg piercing hypospray" desc = "An upgrade to a cyborg's hypospray, allowing it to \ pierce armor and thick material." icon_state = "module_medical" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 1.5) /obj/item/borg/upgrade/piercing_hypospray/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -450,6 +465,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) items_to_add = list(/obj/item/healthanalyzer/advanced) items_to_remove = list(/obj/item/healthanalyzer) @@ -478,6 +494,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2) /obj/item/borg/upgrade/engineering_omnitool/action(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() @@ -485,6 +502,8 @@ return for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool in cyborg.model.modules) omnitool.set_upgraded(TRUE) + for(var/obj/item/weldingtool/largetank/cyborg/welder in cyborg.model.modules) + welder.toolspeed = initial(welder.toolspeed) - 0.3 /obj/item/borg/upgrade/engineering_omnitool/deactivate(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() @@ -492,6 +511,8 @@ return for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool in cyborg.model.modules) omnitool.set_upgraded(FALSE) + for(var/obj/item/weldingtool/largetank/cyborg/welder in cyborg.model.modules) + welder.toolspeed = initial(welder.toolspeed) /obj/item/borg/upgrade/defib name = "medical cyborg defibrillator" @@ -501,6 +522,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5) items_to_add = list(/obj/item/shockpaddles/cyborg) @@ -550,6 +572,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) items_to_add = list(/obj/item/surgical_processor) @@ -558,6 +581,7 @@ desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI." icon = 'icons/obj/devices/circuitry_n_data.dmi' icon_state = "boris" + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 6, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2) /obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -581,6 +605,7 @@ name = "borg expander" desc = "A cyborg resizer, it makes a cyborg huge." icon_state = "module_general" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 100, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/borg, mob/living/user = usr) . = ..() @@ -628,6 +653,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25) items_to_add = list(/obj/item/storage/part_replacer/cyborg) @@ -660,6 +686,7 @@ model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING items_to_add = list(/obj/item/inducer/cyborg) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/borg/upgrade/pinpointer name = "medical cyborg crew pinpointer" @@ -668,6 +695,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/pinpointer/crew) var/datum/action/crew_monitor @@ -714,6 +742,7 @@ desc = "Allows you to turn a cyborg into a clown, honk." icon_state = "module_honk" new_model = /obj/item/robot_model/clown + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SMALL_MATERIAL_AMOUNT * 5) /obj/item/borg/upgrade/engineering_app name = "engineering manipulation apparatus" @@ -722,6 +751,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/borg/apparatus/engineering) @@ -732,6 +762,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/iron = SHEET_MATERIAL_AMOUNT) items_to_add = list(/obj/item/borg/apparatus/beaker/extra) @@ -742,6 +773,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/medical) model_flags = BORG_MODEL_MEDICAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/reagent_containers/syringe/bluespace) items_to_remove = list(/obj/item/reagent_containers/syringe) @@ -753,6 +785,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/borg/apparatus/beaker/drink) @@ -763,6 +796,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/janitor) model_flags = BORG_MODEL_JANITOR + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/pushbroom) @@ -773,6 +807,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 3) items_to_add = list(/obj/item/reagent_containers/borghypo/condiment_synthesizer) @@ -783,6 +818,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/knife/kitchen/silicon) @@ -793,6 +829,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) items_to_add = list(/obj/item/borg/apparatus/service) @@ -803,6 +840,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 7.5) items_to_add = list(/obj/item/rolling_table_dock) @@ -813,6 +851,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5) items_to_add = list(/obj/item/borg/cookbook) @@ -823,6 +862,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/service) model_flags = BORG_MODEL_SERVICE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 13, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2) items_to_add = list(/obj/item/storage/bag/plants/cyborg, /obj/item/borg/cyborg_omnitool/botany, /obj/item/plant_analyzer) @@ -833,6 +873,7 @@ require_model = TRUE model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) items_to_add = list(/obj/item/shuttle_blueprints/borg) @@ -845,6 +886,7 @@ w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/devices/circuitry_n_data.dmi' icon_state = "cyborg_upgrade1" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/borg_restart_board/pre_attack(mob/living/silicon/robot/borgo, mob/living/user, list/modifiers, list/attack_modifiers) if(!istype(borgo)) diff --git a/code/game/objects/items/secret_documents.dm b/code/game/objects/items/secret_documents.dm index 91a2a8934e4f..e893e126235e 100644 --- a/code/game/objects/items/secret_documents.dm +++ b/code/game/objects/items/secret_documents.dm @@ -66,14 +66,17 @@ var/obj/item/documents/photocopy/C = copy copy_type = C.copy_type -/obj/item/documents/photocopy/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(istype(O, /obj/item/toy/crayon/red) || istype(O, /obj/item/toy/crayon/blue)) - if (forgedseal) - to_chat(user, span_warning("You have already forged a seal on [src]!")) - else - var/obj/item/toy/crayon/C = O - name = "[C.crayon_color] secret documents" - icon_state = "docs_[C.crayon_color]" - forgedseal = C.crayon_color - to_chat(user, span_notice("You forge the official seal with a [C.crayon_color] crayon. No one will notice... right?")) - update_appearance() +/obj/item/documents/photocopy/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/crayon/red) && !istype(tool, /obj/item/toy/crayon/blue)) + return NONE + if (forgedseal) + to_chat(user, span_warning("You have already forged a seal on [src]!")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/toy/crayon/C = tool + name = "[C.crayon_color] secret documents" + icon_state = "docs_[C.crayon_color]" + forgedseal = C.crayon_color + to_chat(user, span_notice("You forge the official seal with a [C.crayon_color] crayon. No one will notice... right?")) + update_appearance() + return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm index f01ca917f8c9..1da204615af5 100644 --- a/code/game/objects/items/sharpener.dm +++ b/code/game/objects/items/sharpener.dm @@ -23,45 +23,46 @@ ///If TRUE, the whetstone will only sharpen already sharp items var/requires_sharpness = TRUE -/obj/item/sharpener/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/sharpener/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(uses == 0) to_chat(user, span_warning("The sharpening block is too worn to use again!")) - return - if(I.force >= max || I.throwforce >= max) //So the whetstone never reduces force or throw_force - to_chat(user, span_warning("[I] is much too powerful to sharpen further!")) - return - if(requires_sharpness && !I.get_sharpness()) + return ITEM_INTERACT_BLOCKING + if(tool.force >= max || tool.throwforce >= max) //So the whetstone never reduces force or throw_force + to_chat(user, span_warning("[tool] is much too powerful to sharpen further!")) + return ITEM_INTERACT_BLOCKING + if(requires_sharpness && !tool.get_sharpness()) to_chat(user, span_warning("You can only sharpen items that are already sharp, such as knives!")) - return - if(is_type_in_list(I, list(/obj/item/melee/energy, /obj/item/dualsaber))) //You can't sharpen the photons in energy meelee weapons - to_chat(user, span_warning("You don't think \the [I] will be the thing getting modified if you use it on \the [src]!")) - return + return ITEM_INTERACT_BLOCKING + if(is_type_in_list(tool, list(/obj/item/melee/energy, /obj/item/dualsaber))) //You can't sharpen the photons in energy meelee weapons + to_chat(user, span_warning("You don't think \the [tool] will be the thing getting modified if you use it on \the [src]!")) + return ITEM_INTERACT_BLOCKING //This block is used to check more things if the item has a relevant component. - var/signal_out = SEND_SIGNAL(I, COMSIG_ITEM_SHARPEN_ACT, increment, max) //Stores the bitflags returned by SEND_SIGNAL + var/signal_out = SEND_SIGNAL(tool, COMSIG_ITEM_SHARPEN_ACT, increment, max) //Stores the bitflags returned by SEND_SIGNAL if(signal_out & COMPONENT_BLOCK_SHARPEN_MAXED) //If the item's components enforce more limits on maximum power from sharpening, we fail - to_chat(user, span_warning("[I] is much too powerful to sharpen further!")) - return + to_chat(user, span_warning("[tool] is much too powerful to sharpen further!")) + return ITEM_INTERACT_BLOCKING if(signal_out & COMPONENT_BLOCK_SHARPEN_BLOCKED) - to_chat(user, span_warning("[I] is not able to be sharpened right now!")) - return - if((signal_out & COMPONENT_BLOCK_SHARPEN_ALREADY) || (I.force > initial(I.force) && !signal_out)) //No sharpening stuff twice - to_chat(user, span_warning("[I] has already been refined before. It cannot be sharpened further!")) - return + to_chat(user, span_warning("[tool] is not able to be sharpened right now!")) + return ITEM_INTERACT_BLOCKING + if((signal_out & COMPONENT_BLOCK_SHARPEN_ALREADY) || (tool.force > initial(tool.force) && !signal_out)) //No sharpening stuff twice + to_chat(user, span_warning("[tool] has already been refined before. It cannot be sharpened further!")) + return ITEM_INTERACT_BLOCKING if(!(signal_out & COMPONENT_BLOCK_SHARPEN_APPLIED)) //If the item has a relevant component and COMPONENT_BLOCK_SHARPEN_APPLIED is returned, the item only gets the throw force increase - I.force = clamp(I.force + increment, 0, max) - I.wound_bonus = I.wound_bonus + increment //wound_bonus has no cap - user.visible_message(span_notice("[user] sharpens [I] with [src]!"), span_notice("You sharpen [I], making it much more deadly than before.")) + tool.force = clamp(tool.force + increment, 0, max) + tool.wound_bonus = tool.wound_bonus + increment //wound_bonus has no cap + user.visible_message(span_notice("[user] sharpens [tool] with [src]!"), span_notice("You sharpen [tool], making it much more deadly than before.")) playsound(src, 'sound/items/unsheath.ogg', 25, TRUE) if(!(signal_out & COMPONENT_BLOCK_SHARPEN_SHARPNESS)) - I.sharpness = SHARP_EDGED //When you whetstone something, it becomes an edged weapon, even if it was previously dull or pointy - I.throwforce = clamp(I.throwforce + increment, 0, max) - I.name = "[prefix] [I.name]" //This adds a prefix and a space to the item's name regardless of what the prefix is + tool.sharpness = SHARP_EDGED //When you whetstone something, it becomes an edged weapon, even if it was previously dull or pointy + tool.throwforce = clamp(tool.throwforce + increment, 0, max) + tool.name = "[prefix] [tool.name]" //This adds a prefix and a space to the item's name regardless of what the prefix is desc = "[desc] At least, it used to." uses-- //this doesn't cause issues because we check if uses == 0 earlier in this proc if(uses == 0) name = "worn out [name]" //whetstone becomes used whetstone update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/sharpener/update_name() name = "[!uses ? "worn out " : null][initial(name)]" diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 6de443f9e476..e504b5789ea7 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -80,7 +80,7 @@ icon_state = "polycrystal" inhand_icon_state = null material_flags = MATERIAL_NO_DESCRIPTORS - gulag_valid = TRUE + gulag_value = 100 mats_per_unit = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT) attack_verb_continuous = list("bluespace polybashes", "bluespace polybatters", "bluespace polybludgeons", "bluespace polythrashes", "bluespace polysmashes") attack_verb_simple = list("bluespace polybash", "bluespace polybatter", "bluespace polybludgeon", "bluespace polythrash", "bluespace polysmash") diff --git a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm index fe44c1eef416..308d9b71ebac 100644 --- a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm +++ b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm @@ -123,7 +123,12 @@ /// Body part overlays applied by golem status effects /datum/bodypart_overlay/simple/golem_overlay icon = 'icons/mob/human/species/golems.dmi' - layers = ALL_EXTERNAL_OVERLAYS + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER, + EXTERNAL_ADJACENT = BODY_ADJ_LAYER, + ) + offset_location = ENTIRE_BODY ///The bodypart that the overlay is currently applied to var/datum/weakref/attached_bodypart @@ -133,10 +138,8 @@ part.add_bodypart_overlay(src, update = FALSE) /datum/bodypart_overlay/simple/golem_overlay/Destroy(force) - var/obj/item/bodypart/referenced_bodypart = attached_bodypart.resolve() - if(!referenced_bodypart) - return ..() - referenced_bodypart.remove_bodypart_overlay(src) + var/obj/item/bodypart/referenced_bodypart = attached_bodypart?.resolve() + referenced_bodypart?.remove_bodypart_overlay(src) return ..() /// Freezes hunger for the duration diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index e0909db86b05..91ab0f16a4b6 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ /datum/embedding/rods embed_chance = 50 -/obj/item/stack/rods/suicide_act(mob/living/carbon/user) +/obj/item/stack/rods/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to stuff \the [src] down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide!"))//it looks like theyre ur mum return BRUTELOSS diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 52d8f2fefbd9..62f38407145b 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -38,7 +38,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ fire = 50 acid = 100 -/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user) +/obj/item/stack/sheet/glass/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -49,37 +49,42 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ . = ..() . += GLOB.glass_recipes -/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/stack/sheet/glass/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(istype(W, /obj/item/lightreplacer)) - var/obj/item/lightreplacer/lightreplacer = W - lightreplacer.attackby(src, user) - if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/CC = W - if (get_amount() < 1 || CC.get_amount() < 5) + if(istype(tool, /obj/item/lightreplacer)) + var/obj/item/lightreplacer/lightreplacer = tool + lightreplacer.item_interaction(user, src, modifiers) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = tool + if (get_amount() < 1 || coil.get_amount() < 5) to_chat(user, span_warning("You need five lengths of coil and one sheet of glass to make wired glass!")) - return - CC.use(5) + return ITEM_INTERACT_BLOCKING + coil.use(5) use(1) to_chat(user, span_notice("You attach wire to \the [src].")) var/obj/item/stack/light_w/new_tile = new(user.loc) if (!QDELETED(new_tile)) new_tile.add_fingerprint(user) - return - if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/V = W - if (V.get_amount() >= 1 && get_amount() >= 1) - var/obj/item/stack/sheet/rglass/RG = new (get_turf(user)) - if(!QDELETED(RG)) - RG.add_fingerprint(user) - var/replace = user.get_inactive_held_item() == src - V.use(1) - use(1) - if(QDELETED(src) && replace && !QDELETED(RG)) - user.put_in_hands(RG) - else + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/rods)) + var/obj/item/stack/rods/rods = tool + if (rods.get_amount() < 1 || get_amount() < 1) // the hell kind of check is this, how would this happen to_chat(user, span_warning("You need one rod and one sheet of glass to make reinforced glass!")) - return + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/rglass/new_glass = new (get_turf(user)) + if(!QDELETED(new_glass)) + new_glass.add_fingerprint(user) + var/replace = user.get_inactive_held_item() == src + rods.use(1) + use(1) + if(QDELETED(src) && replace && !QDELETED(new_glass)) + user.put_in_hands(new_glass) + return ITEM_INTERACT_SUCCESS + return ..() /* // DARKPACK EDIT REMOVAL GLOBAL_LIST_INIT(pglass_recipes, list ( \ @@ -116,26 +121,28 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ . = ..() . += GLOB.pglass_recipes */ -/obj/item/stack/sheet/plasmaglass/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/stack/sheet/plasmaglass/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - - if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/V = W - if (V.get_amount() >= 1 && get_amount() >= 1) - var/obj/item/stack/sheet/plasmarglass/RG = new (get_turf(user)) - if (!QDELETED(RG)) - RG.add_fingerprint(user) - var/replace = user.get_inactive_held_item() == src - V.use(1) - use(1) - if(QDELETED(src) && replace) - user.put_in_hands(RG) - else - to_chat(user, span_warning("You need one rod and one sheet of plasma glass to make reinforced plasma glass!")) - return - else + if(!istype(tool, /obj/item/stack/rods)) return ..() + var/obj/item/stack/rods/rods = tool + if (rods.get_amount() < 1 || get_amount() < 1) + to_chat(user, span_warning("You need one rod and one sheet of plasma glass to make reinforced plasma glass!")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/plasmarglass/RG = new (get_turf(user)) + if (!QDELETED(RG)) + RG.add_fingerprint(user) + var/replace = user.get_inactive_held_item() == src + rods.use(1) + use(1) + if(QDELETED(src) && replace) + user.put_in_hands(RG) + return ITEM_INTERACT_SUCCESS + + + /* * Reinforced glass sheets */ @@ -174,9 +181,9 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ fire = 70 acid = 100 -/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/stack/sheet/rglass/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - ..() + . = ..() /obj/item/stack/sheet/rglass/get_main_recipes() . = ..() @@ -201,7 +208,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ resistance_flags = ACID_PROOF material_flags = NONE merge_type = /obj/item/stack/sheet/plasmarglass - gulag_valid = TRUE + gulag_value = 5 matter_amount = 8 table_type = /obj/structure/table/reinforced/plasmarglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' @@ -371,24 +378,27 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( to_chat(user, span_warning("[src] cuts into your hand!")) jab.apply_damage(force * 0.5, BRUTE, user.get_active_hand(), attacking_item = src) -/obj/item/shard/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/lightreplacer)) - var/obj/item/lightreplacer/lightreplacer = item +/obj/item/shard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/lightreplacer)) + var/obj/item/lightreplacer/lightreplacer = tool lightreplacer.attackby(src, user) - else if(istype(item, /obj/item/stack/sheet/cloth)) - var/obj/item/stack/sheet/cloth/cloth = item - to_chat(user, span_notice("You begin to wrap the [cloth] around the [src]...")) - if(do_after(user, craft_time, target = src)) - var/obj/item/knife/shiv/shiv = new shiv_type - shiv.set_custom_materials(custom_materials) - cloth.use(1) - to_chat(user, span_notice("You wrap the [cloth] around the [src], forming a makeshift weapon.")) - remove_item_from_storage(src, user) - qdel(src) - user.put_in_hands(shiv) - - else - return ..() + return ITEM_INTERACT_SUCCESS + + if(!istype(tool, /obj/item/stack/sheet/cloth)) + return NONE + + var/obj/item/stack/sheet/cloth/cloth = tool + to_chat(user, span_notice("You begin to wrap the [cloth] around the [src]...")) + if(!do_after(user, craft_time, target = src)) + return ITEM_INTERACT_FAILURE + + var/obj/item/knife/shiv/shiv = new shiv_type + shiv.set_custom_materials(custom_materials) + cloth.use(1) + to_chat(user, span_notice("You wrap the [cloth] around the [src], forming a makeshift weapon.")) + qdel(src) + user.put_in_hands(shiv) + return ITEM_INTERACT_SUCCESS /obj/item/shard/welder_act(mob/living/user, obj/item/I) if(I.use_tool(src, user, 0, volume=50)) diff --git a/code/game/objects/items/stacks/sheets/hot_ice.dm b/code/game/objects/items/stacks/sheets/hot_ice.dm index ab7ee22a8ca9..415dde153227 100644 --- a/code/game/objects/items/stacks/sheets/hot_ice.dm +++ b/code/game/objects/items/stacks/sheets/hot_ice.dm @@ -8,6 +8,6 @@ material_type = /datum/material/hot_ice merge_type = /obj/item/stack/sheet/hot_ice -/obj/item/stack/sheet/hot_ice/suicide_act(mob/living/carbon/user) +/obj/item/stack/sheet/hot_ice/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return FIRELOSS//dont you kids know that stuff is toxic? diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 5318e95b839f..fba6c491a4fb 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -287,27 +287,52 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ drop_sound = 'sound/effects/meatslap.ogg' pickup_sound = 'sound/effects/meatslap.ogg' resistance_flags = FIRE_PROOF | LAVA_PROOF +/* // DARKPACK EDIT REMOVAL + /// Trophy crafting recipe for this type of sinew + var/trophy_type = /datum/crafting_recipe/crusher_trophy/watcher_wing /obj/item/stack/sheet/sinew/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt) . = ..() - // As bone and sinew have just a little too many recipes for this, we'll just split them up. // Sinew slapcrafting will mostly-sinew recipes, and bones will have mostly-bones recipes. -/* // DARKPACK EDIT REMOVAL - var/static/list/slapcraft_recipe_list = list(\ - /datum/crafting_recipe/goliathcloak, /datum/crafting_recipe/skilt, /datum/crafting_recipe/drakecloak,\ - ) + var/list/slapcraft_recipe_list = list( + /datum/crafting_recipe/goliathcloak, + /datum/crafting_recipe/skilt, + /datum/crafting_recipe/drakecloak, + ) + if (trophy_type) + slapcraft_recipe_list += trophy_type AddElement( /datum/element/slapcrafting,\ - slapcraft_recipes = slapcraft_recipe_list,\ + slapcraft_recipes = string_list(slapcraft_recipe_list),\ ) - */ +*/ + +/obj/item/stack/sheet/sinew/icewing + name = "icewing watcher sinew" + desc = "Ice-cold filaments which presumably came from an icewing watcher's wings." + singular_name = "icewing watcher sinew" + icon_state = "sinew_icewing" + novariants = TRUE + merge_type = /obj/item/stack/sheet/sinew/icewing + // trophy_type = /datum/crafting_recipe/crusher_trophy/icewing_watcher_wing // DARKPACK EDIT REMOVAL + +/obj/item/stack/sheet/sinew/magmawing + name = "magmawing watcher sinew" + desc = "Fiery filaments which presumably came from a magmawing watcher's wings." + singular_name = "magmawing watcher sinew" + icon_state = "sinew_magmawing" + novariants = TRUE + merge_type = /obj/item/stack/sheet/sinew/magmawing + // trophy_type = /datum/crafting_recipe/crusher_trophy/magmawing_watcher_wing // DARKPACK EDIT REMOVAL + /obj/item/stack/sheet/sinew/wolf name = "wolf sinew" desc = "Long stringy filaments which came from the insides of a wolf." singular_name = "wolf sinew" merge_type = /obj/item/stack/sheet/sinew/wolf + // trophy_type = null // DARKPACK EDIT REMOVAL GLOBAL_LIST_INIT(sinew_recipes, list ( \ new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/cable/sinew, 1, crafting_flags = NONE, category = CAT_EQUIPMENT), \ @@ -317,7 +342,6 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ . = ..() . += GLOB.sinew_recipes - /*Plates*/ /obj/item/stack/sheet/animalhide/goliath_hide name = "goliath hide plates" @@ -381,17 +405,17 @@ GLOBAL_LIST_INIT(bear_pelt_recipes, list ( \ . += GLOB.bear_pelt_recipes //Step one - dehairing. - -/obj/item/stack/sheet/animalhide/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.get_sharpness()) - playsound(loc, 'sound/items/weapons/slice.ogg', 50, TRUE, -1) - user.visible_message(span_notice("[user] starts cutting hair off \the [src]."), span_notice("You start cutting the hair off \the [src]..."), span_hear("You hear the sound of a knife rubbing against flesh.")) - if(do_after(user, 5 SECONDS, target = src)) - to_chat(user, span_notice("You cut the hair from [src.name].")) - new /obj/item/stack/sheet/hairlesshide(user.drop_location(), amount) - use(amount) - else +/obj/item/stack/sheet/animalhide/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.get_sharpness()) return ..() + playsound(loc, 'sound/items/weapons/slice.ogg', 50, TRUE, -1) + user.visible_message(span_notice("[user] starts cutting hair off \the [src]."), span_notice("You start cutting the hair off \the [src]..."), span_hear("You hear the sound of a knife rubbing against flesh.")) + if(!do_after(user, 5 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You cut the hair from [src.name].")) + new /obj/item/stack/sheet/hairlesshide(user.drop_location(), amount) + use(amount) + return ITEM_INTERACT_SUCCESS /obj/item/stack/sheet/animalhide/examine(mob/user) . = ..() diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 4d06e8fb3d16..7f4e589f0340 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -21,19 +21,20 @@ . = ..() . += span_warning("\The [src] looks unfinished, add iron to complete it.") -/obj/item/stack/light_w/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(istype(O, /obj/item/stack/sheet/iron)) - var/obj/item/stack/sheet/iron/M = O - if (M.use(1)) - var/obj/item/L = new /obj/item/stack/tile/light(user.drop_location()) - to_chat(user, span_notice("You make a light tile.")) - if (!QDELETED(L)) - L.add_fingerprint(user) - use(1) - else - to_chat(user, span_warning("You need one iron sheet to finish the light tile!")) - else +/obj/item/stack/light_w/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/sheet/iron)) return ..() + var/obj/item/stack/sheet/iron/steel = tool + if(!steel.use(1)) + to_chat(user, span_warning("You need one iron sheet to finish the light tile!")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/tile/light/finished_tiles = new(user.drop_location()) + to_chat(user, span_notice("You make a light tile.")) + if(!QDELETED(finished_tiles)) + finished_tiles.add_fingerprint(user) + use(1) + return ITEM_INTERACT_SUCCESS /obj/item/stack/light_w/wirecutter_act(mob/living/user, obj/item/I) . = ..() diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 878b0830a9a9..eca7b71359c3 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -85,17 +85,17 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ icon_state = "sandbag" w_class = WEIGHT_CLASS_TINY -/obj/item/emptysandbag/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/stack/ore/glass)) - var/obj/item/stack/ore/glass/G = W - to_chat(user, span_notice("You fill the sandbag.")) - var/obj/item/stack/sheet/mineral/sandbags/I = new (drop_location()) - qdel(src) - if (Adjacent(user) && !issilicon(user)) - user.put_in_hands(I) - G.use(1) - else - return ..() +/obj/item/emptysandbag/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/ore/glass)) + return NONE + var/obj/item/stack/ore/glass/sand = tool + to_chat(user, span_notice("You fill the sandbag.")) + var/obj/item/stack/sheet/mineral/sandbags/filled_bag = new (drop_location()) + qdel(src) + if(Adjacent(user) && !issilicon(user)) + user.put_in_hands(filled_bag) + sand.use(1) + return ITEM_INTERACT_SUCCESS /* * Diamond @@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ singular_name = "diamond" construction_path_type = "diamond" mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 100 merge_type = /obj/item/stack/sheet/mineral/diamond material_type = /datum/material/diamond walltype = /turf/closed/wall/mineral/diamond @@ -139,7 +139,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ singular_name = "uranium sheet" construction_path_type = "uranium" mats_per_unit = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 50 merge_type = /obj/item/stack/sheet/mineral/uranium material_type = /datum/material/uranium walltype = /turf/closed/wall/mineral/uranium @@ -177,12 +177,12 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ resistance_flags = FLAMMABLE max_integrity = 100 mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 5 merge_type = /obj/item/stack/sheet/mineral/plasma material_type = /datum/material/plasma walltype = /turf/closed/wall/mineral/plasma -/obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/carbon/user) +/obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS//dont you kids know that stuff is toxic? @@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ singular_name = "gold bar" construction_path_type = "gold" mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold material_type = /datum/material/gold walltype = /turf/closed/wall/mineral/gold @@ -245,7 +245,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ singular_name = "silver bar" construction_path_type = "silver" mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 10 merge_type = /obj/item/stack/sheet/mineral/silver material_type = /datum/material/silver table_type = /obj/structure/table/optable @@ -276,7 +276,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ singular_name = "bananium sheet" construction_path_type = "bananium" mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = -5 merge_type = /obj/item/stack/sheet/mineral/bananium material_type = /datum/material/bananium walltype = /turf/closed/wall/mineral/bananium @@ -308,7 +308,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \ throw_range = 3 construction_path_type = "titanium" mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 10 merge_type = /obj/item/stack/sheet/mineral/titanium material_type = /datum/material/titanium walltype = /turf/closed/wall/mineral/titanium @@ -323,26 +323,30 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ /obj/item/stack/sheet/mineral/titanium/get_main_recipes() . = ..() . += GLOB.titanium_recipes - */ -/obj/item/stack/sheet/mineral/titanium/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +*/ + +/obj/item/stack/sheet/mineral/titanium/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/old_rods = W - if(old_rods.merge_type != /obj/item/stack/rods) - to_chat(user, span_warning("You can't craft shuttle frame rods with this type of rod!")) - if (old_rods.get_amount() >= 5 && get_amount() >= 1) - var/obj/item/stack/rods/shuttle/five/new_rods = new (get_turf(user)) - if(!QDELETED(new_rods)) - new_rods.add_fingerprint(user) - var/replace = user.get_inactive_held_item() == src - old_rods.use(5) - use(1) - if(QDELETED(src) && replace && !QDELETED(new_rods)) - user.put_in_hands(new_rods) - else - to_chat(user, span_warning("You need five rods and one sheet of titanium to make shuttle frame rods!")) - return - return ..() + if(!istype(tool, /obj/item/stack/rods)) + return ..() + var/obj/item/stack/rods/old_rods = tool + if(old_rods.merge_type != /obj/item/stack/rods) + to_chat(user, span_warning("You can't craft shuttle frame rods with this type of rod!")) + return ITEM_INTERACT_BLOCKING + + if (old_rods.get_amount() < 5 && get_amount() < 1) + to_chat(user, span_warning("You need five rods and one sheet of titanium to make shuttle frame rods!")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/rods/shuttle/five/new_rods = new (get_turf(user)) + if(!QDELETED(new_rods)) + new_rods.add_fingerprint(user) + var/replace = user.get_inactive_held_item() == src + old_rods.use(5) + use(1) + if(QDELETED(src) && replace && !QDELETED(new_rods)) + user.put_in_hands(new_rods) + return ITEM_INTERACT_SUCCESS /obj/item/stack/sheet/mineral/titanium/fifty amount = 50 @@ -362,7 +366,7 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ throw_range = 3 construction_path_type = "plastitanium" mats_per_unit = list(/datum/material/alloy/plastitanium=SHEET_MATERIAL_AMOUNT) - gulag_valid = TRUE + gulag_value = 20 material_type = /datum/material/alloy/plastitanium merge_type = /obj/item/stack/sheet/mineral/plastitanium material_flags = NONE @@ -505,15 +509,15 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ /obj/item/stack/sheet/mineral/coal/grind_results() return list(/datum/reagent/carbon = 20) -/obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) //If the temperature of the object is hot enough to start a fire, then ignite - var/turf/T = get_turf(src) - message_admins("Coal ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") - user.log_message("ignited coal", LOG_GAME) - fire_act(W.get_temperature()) - return TRUE - else +/obj/item/stack/sheet/mineral/coal/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.get_temperature() < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) //If the temperature of the object is hot enough to start a fire, then ignite return ..() + var/turf/jumpturf = get_turf(src) + message_admins("Coal ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(jumpturf)]") + user.log_message("ignited coal", LOG_GAME) + fire_act(tool.get_temperature()) + return ITEM_INTERACT_SUCCESS + /obj/item/stack/sheet/mineral/coal/fire_act(exposed_temperature, exposed_volume) atmos_spawn_air("[GAS_CO2]=[amount*10];[TURF_TEMPERATURE(exposed_temperature)]") @@ -541,7 +545,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list( singular_name = "metal hydrogen sheet" w_class = WEIGHT_CLASS_NORMAL resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | BOMB_PROOF - gulag_valid = TRUE + gulag_value = 100 mats_per_unit = list(/datum/material/metalhydrogen = SHEET_MATERIAL_AMOUNT) material_type = /datum/material/metalhydrogen merge_type = /obj/item/stack/sheet/mineral/metal_hydrogen @@ -577,7 +581,7 @@ GLOBAL_LIST_INIT(zaukerite_recipes, list( inhand_icon_state = "sheet-zaukerite" singular_name = "zaukerite crystal" w_class = WEIGHT_CLASS_NORMAL - gulag_valid = TRUE + gulag_value = 100 mats_per_unit = list(/datum/material/zaukerite = SHEET_MATERIAL_AMOUNT) merge_type = /obj/item/stack/sheet/mineral/zaukerite material_type = /datum/material/zaukerite diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index c2a8ad3a4dd7..0c82f267de6e 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -129,7 +129,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/iron - gulag_valid = TRUE + gulag_value = 5 table_type = /obj/structure/table material_type = /datum/material/iron matter_amount = 4 @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ . = ..() . += GLOB.metal_recipes -/obj/item/stack/sheet/iron/suicide_act(mob/living/carbon/user) +/obj/item/stack/sheet/iron/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins whacking [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -275,7 +275,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ armor_type = /datum/armor/sheet_plasteel resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel - gulag_valid = TRUE + gulag_value = 10 table_type = /obj/structure/table/reinforced material_flags = NONE matter_amount = 12 @@ -690,22 +690,25 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ /obj/item/stack/sheet/cardboard/fifty amount = 50 -/obj/item/stack/sheet/cardboard/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage)) +/obj/item/stack/sheet/cardboard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage)) var/atom/droploc = drop_location() - if(use(1)) - playsound(I, 'sound/items/bikehorn.ogg', 50, TRUE, -1) - to_chat(user, span_notice("You stamp the cardboard! It's a clown box! Honk!")) - if (amount >= 0) - new/obj/item/storage/box/clown(droploc) //bugfix - if(istype(I, /obj/item/stamp/chameleon) && !istype(loc, /obj/item/storage)) + if(!use(1)) + return ITEM_INTERACT_BLOCKING + playsound(tool, 'sound/items/bikehorn.ogg', 50, TRUE, -1) + to_chat(user, span_notice("You stamp the cardboard! It's a clown box! Honk!")) + new /obj/item/storage/box/clown(droploc) //bugfix + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stamp/chameleon) && !istype(loc, /obj/item/storage)) var/atom/droploc = drop_location() - if(use(1)) - to_chat(user, span_notice("You stamp the cardboard in a sinister way.")) - if (amount >= 0) - new/obj/item/storage/box/syndie_kit(droploc) - else - . = ..() + if(!use(1)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You stamp the cardboard in a sinister way.")) + new /obj/item/storage/box/syndie_kit(droploc) + return ITEM_INTERACT_SUCCESS + + return ..() /* * Bronze @@ -826,7 +829,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list( new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/large/empty, 3, crafting_flags = NONE, category = CAT_CONTAINERS), \ new /datum/stack_recipe("colo cups", /obj/item/reagent_containers/cup/glass/colocup, 1, crafting_flags = NONE, category = CAT_CONTAINERS, removed_mats = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)), \ new /datum/stack_recipe("mannequin", /obj/structure/mannequin/plastic, 25, time = 5 SECONDS, crafting_flags = CRAFT_ONE_PER_TURF, category = CAT_ENTERTAINMENT), \ - new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ + new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, crafting_flags = CRAFT_SKIP_MATERIALS_PARITY, category = CAT_EQUIPMENT), \ new /datum/stack_recipe("warning cone", /obj/item/clothing/head/cone, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ new /datum/stack_recipe("blank wall sign", /obj/item/sign, 1, crafting_flags = NONE, category = CAT_FURNITURE), \ new /datum/stack_recipe("liquid cooler jug", /obj/item/reagent_containers/cooler_jug, 4, time = 5 SECONDS, crafting_flags = NONE, category = CAT_CONTAINERS), \ diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 3d2b1f52030f..4e7612ecc370 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -22,7 +22,7 @@ /// text string used to find typepaths used in door and wall (false and tram too) construction for door assemblies and girders respectively var/construction_path_type = null ///If true, this is worth points in the gulag labour stacker - var/gulag_valid = FALSE + var/gulag_value = 0 ///Set to true if this is vended from a material storage var/manufactured = FALSE /// whether this sheet can be sniffed by the material sniffer @@ -42,7 +42,7 @@ /obj/item/stack/sheet/examine(mob/user) . = ..() - if (manufactured && gulag_valid) + if (manufactured && gulag_value) . += span_notice("It has been embossed with a manufacturer's mark of guaranteed quality.") var/datum/material/material = get_master_material() diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 8d617c291178..79255f8eec33 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -154,6 +154,11 @@ other_stack = find_other_stack(already_found, TRUE) return TRUE +/obj/item/stack/apply_material_effects(list/materials) + . = ..() + if(amount) + mats_per_unit = SSmaterials.get_material_set_cache(materials, 1/amount) + /obj/item/stack/blend_requirements(atom/movable/grinder, mob/living/user) if(!is_cyborg) return TRUE @@ -475,12 +480,13 @@ if(isstack(created)) var/obj/item/stack/crafted_stack = created - if(recipe.res_amount > 0 && recipe.req_amount != recipe.res_amount) - var/scale = recipe.req_amount / recipe.res_amount - for(var/mat in result_mats) - result_mats[mat] *= scale - crafted_stack.mats_per_unit = SSmaterials.get_material_set_cache(result_mats) - crafted_stack.update_custom_materials() + if(crafted_stack.amount) // If our stack's been emptied, it means another stack's already eaten it, and that stack'll deal with materials + if(recipe.res_amount > 0 && recipe.req_amount != recipe.res_amount) + var/scale = recipe.req_amount / recipe.res_amount + for(var/mat in result_mats) + result_mats[mat] *= scale + crafted_stack.mats_per_unit = SSmaterials.get_material_set_cache(result_mats) + crafted_stack.update_custom_materials() else created.set_custom_materials(result_mats, recipe.req_amount * multiplier) @@ -791,13 +797,14 @@ user.put_in_hands(new_stack, merge_stacks = FALSE) return new_stack -/obj/item/stack/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(can_merge(W, inhand = TRUE)) - var/obj/item/stack/S = W - if(merge(S)) - to_chat(user, span_notice("Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.")) - else - . = ..() +/obj/item/stack/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!can_merge(tool, inhand = TRUE)) + return NONE + var/obj/item/stack/overtaking_stack = tool + if(!merge(overtaking_stack)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("Your [overtaking_stack.name] stack now contains [overtaking_stack.get_amount()] [overtaking_stack.singular_name]\s.")) + return ITEM_INTERACT_SUCCESS /obj/item/stack/proc/copy_evidences(obj/item/stack/from) add_blood_DNA(GET_ATOM_BLOOD_DNA(from)) diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm index 45ac5f382402..94099acacb6e 100644 --- a/code/game/objects/items/stacks/tape.dm +++ b/code/game/objects/items/stacks/tape.dm @@ -18,6 +18,7 @@ apply_verb = "taping" heal_begin_sound = 'sound/items/duct_tape/duct_tape_rip.ogg' heal_end_sound = 'sound/items/duct_tape/duct_tape_rip.ogg' + mats_per_unit = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT) /// Prefix applied to the target when wrapped with this tape. var/prefix = "sticky" @@ -101,6 +102,7 @@ merge_type = /obj/item/stack/medical/wrap/sticky_tape/super greyscale_colors = "#4D4D4D#75433F" tape_gag = /obj/item/clothing/mask/muzzle/tape/super + mats_per_unit = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3) /datum/embedding/sticky_tape/super embed_chance = 100 @@ -119,6 +121,7 @@ greyscale_config = /datum/greyscale_config/tape/spikes greyscale_colors = "#E64539#808080#AD2F45" tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy + mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) /datum/embedding/pointy_tape ignore_throwspeed_threshold = TRUE @@ -132,6 +135,7 @@ merge_type = /obj/item/stack/medical/wrap/sticky_tape/pointy/super greyscale_colors = "#8C0A00#4F4F4F#300008" tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy/super + mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) /datum/embedding/pointy_tape/super embed_chance = 100 diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index 651cf36ac1a3..56b0a0653a88 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -11,15 +11,14 @@ mats_per_unit = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.05) var/state = 0 -/obj/item/stack/tile/light/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(O.tool_behaviour == TOOL_CROWBAR) - new/obj/item/stack/sheet/iron(user.loc) - amount-- - new/obj/item/stack/light_w(user.loc) - if(amount <= 0) - qdel(src) - else - return ..() +/obj/item/stack/tile/light/crowbar_act(mob/living/user, obj/item/tool) + new/obj/item/stack/sheet/iron(user.loc) + amount-- + new/obj/item/stack/light_w(user.loc) + if(amount <= 0) + qdel(src) + return ITEM_INTERACT_SUCCESS + /obj/item/stack/tile/light/place_tile(turf/open/target_plating, mob/user) . = ..() diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index 67a905b4334f..6650528d012a 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -2,27 +2,26 @@ /// Determines what stack is gotten out of us when welded. var/mineralType = null -/obj/item/stack/tile/mineral/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_WELDER) - if(get_amount() < 4) - to_chat(user, span_warning("You need at least four tiles to do this!")) - return - if(!mineralType) - to_chat(user, span_warning("You can not reform this!")) - stack_trace("A mineral tile of type [type] doesn't have its mineralType set.") - return - if(W.use_tool(src, user, 0, volume=40)) - var/sheet_type = text2path("/obj/item/stack/sheet/mineral/[mineralType]") - var/obj/item/stack/sheet/mineral/new_item = new sheet_type(user.loc) - user.visible_message(span_notice("[user] shaped [src] into [new_item] with [W]."), \ - span_notice("You shaped [src] into [new_item] with [W]."), \ - span_hear("You hear welding.")) - var/holding = user.is_holding(src) - use(4) - if(holding && QDELETED(src)) - user.put_in_hands(new_item) - else - return ..() +/obj/item/stack/tile/mineral/welder_act(mob/living/user, obj/item/tool) + if(get_amount() < 4) + to_chat(user, span_warning("You need at least four tiles to do this!")) + return ITEM_INTERACT_BLOCKING + if(!mineralType) + to_chat(user, span_warning("You can not reform this!")) + stack_trace("A mineral tile of type [type] doesn't have its mineralType set.") + return ITEM_INTERACT_BLOCKING + if(!tool.use_tool(src, user, 0, volume=40)) + return ITEM_INTERACT_BLOCKING + var/sheet_type = text2path("/obj/item/stack/sheet/mineral/[mineralType]") + var/obj/item/stack/sheet/mineral/new_item = new sheet_type(user.loc) + user.visible_message(span_notice("[user] shaped [src] into [new_item] with [tool]."), \ + span_notice("You shaped [src] into [new_item] with [tool]."), \ + span_hear("You hear welding.")) + var/holding = user.is_holding(src) + use(4) + if(holding && QDELETED(src)) + user.put_in_hands(new_item) + return ITEM_INTERACT_SUCCESS /obj/item/stack/tile/mineral/plasma name = "plasma tile" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index c8f2c59d7c32..eb4ae72db327 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -421,7 +421,7 @@ . += neon_overlay . += emissive_appearance(neon_icon || icon, neon_icon_state || icon_state, src, alpha = emissive_alpha) -/obj/item/stack/tile/carpet/neon/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/stack/tile/carpet/neon/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands || !neon_inhand_icon_state) return @@ -1162,9 +1162,11 @@ merge_type = /obj/item/stack/tile/material /obj/item/stack/tile/material/place_tile(turf/open/target_plating, mob/user) + // Save refernce to the materials for the case when we place last tile in the stack + var/list/saved_mats_per_unit = mats_per_unit . = ..() var/turf/open/floor/material/floor = . - floor?.set_custom_materials(mats_per_unit) + floor?.set_custom_materials(saved_mats_per_unit) /obj/item/stack/tile/eighties name = "retro tile" @@ -1238,7 +1240,7 @@ . = ..() . += emissive_appearance(icon, icon_state, src, alpha = alpha) -/obj/item/stack/tile/emissive_test/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/stack/tile/emissive_test/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() . += emissive_appearance(standing.icon, standing.icon_state, src, alpha = standing.alpha) diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index 47f58f11030d..6869f635955a 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -94,6 +94,7 @@ max_amount = 25 resistance_flags = FLAMMABLE merge_type = /obj/item/stack/package_wrap + mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1) /obj/item/stack/package_wrap/grind_results() return list(/datum/reagent/cellulose = 5) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index ea60130b4fb7..9789f63e77f1 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -48,6 +48,8 @@ w_class = WEIGHT_CLASS_BULKY resistance_flags = FIRE_PROOF item_flags = NO_MAT_REDEMPTION + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5) + /* // DARKPACK EDIT REMOVAL /obj/item/bag_of_holding_inert/Initialize(mapload) . = ..() @@ -65,6 +67,7 @@ storage_type = /datum/storage/bag_of_holding pickup_sound = null drop_sound = null + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5) /datum/armor/backpack_holding fire = 60 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index ed63a3e01446..7b9467bc1e3b 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -34,6 +34,7 @@ lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' storage_type = /datum/storage/bag/trash + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) ///If true, can be inserted into the janitor cart var/insertable = TRUE custom_price = 20 // DARKPACK EDIT ADD - ECONOMY @@ -89,6 +90,7 @@ inhand_icon_state = "bluetrashbag" item_flags = NO_MAT_REDEMPTION storage_type = /datum/storage/bag/trash/bluespace + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/storage/bag/trash/bluespace/cyborg insertable = FALSE @@ -244,6 +246,7 @@ desc = "A revolution in convenience, this satchel allows for huge amounts of ore storage. It's been outfitted with anti-malfunction safety measures." icon_state = "satchel_bspace" storage_type = /datum/storage/bag/ore/holding + custom_materials = list(/datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/storage/bag/plants name = "plant bag" @@ -257,6 +260,7 @@ name = "portable seed extractor" desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." icon_state = "portaseeder" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) /obj/item/storage/bag/plants/portaseeder/Initialize(mapload) . = ..() @@ -517,13 +521,41 @@ slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE|ITEM_SLOT_NECK resistance_flags = FLAMMABLE storage_type = /datum/storage/bag/rebar_quiver - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) + actions_types = list(/datum/action/item_action/reload_rebar) + + +/obj/item/storage/bag/rebar_quiver/Initialize(mapload) + . = ..() + update_appearance(UPDATE_OVERLAYS) + +/obj/item/storage/bag/rebar_quiver/ui_action_click(mob/user, actiontype) + if(istype(actiontype, /datum/action/item_action/reload_rebar)) + reload_held_rebar(user) + +/obj/item/storage/bag/rebar_quiver/proc/reload_held_rebar(mob/user) + if(!contents.len) + user.balloon_alert(user, "no bolts left!") + return + var/obj/held_item = user.get_active_held_item() + if(!held_item || !istype(held_item, /obj/item/gun/ballistic/rifle/rebarxbow)) + user.balloon_alert(user, "no held crossbow!") + return + var/obj/item/gun/ballistic/rifle/rebarxbow/held_crossbow = held_item + if(held_crossbow.magazine.contents.len >= held_crossbow.magazine.max_ammo) + user.balloon_alert(user, "no more room!") + return + if(!do_after(user, held_crossbow.reload_time, user,timed_action_flags = held_crossbow.doafter_flags)) + return + + var/obj/item/ammo_casing/rebar/ammo_to_load = contents[1] + held_crossbow.item_interaction(user, ammo_to_load) /obj/item/storage/bag/rebar_quiver/syndicate icon_state = "syndie_quiver_0" worn_icon_state = "syndie_quiver_0" inhand_icon_state = "holyquiver" - desc = "A specialized quiver meant to hold any kind of bolts intended for use with the rebar crossbow. \ + desc = "A specialized quiver meant to hold any kind of bolts intended for use with the rebar crossbow. Allows moving while reloading.\ Clearly a better design than a cut up oxygen tank..." slot_flags = ITEM_SLOT_NECK w_class = WEIGHT_CLASS_NORMAL @@ -531,10 +563,6 @@ actions_types = list(/datum/action/item_action/reload_rebar) storage_type = /datum/storage/bag/rebar_quiver/syndicate -/obj/item/storage/bag/rebar_quiver/syndicate/Initialize(mapload) - . = ..() - update_appearance(UPDATE_OVERLAYS) - /obj/item/storage/bag/rebar_quiver/syndicate/PopulateContents() for(var/to_fill in 1 to 20) new /obj/item/ammo_casing/rebar/syndie(src) @@ -551,28 +579,6 @@ if(14 to 20) icon_state = "syndie_quiver_3" -/obj/item/storage/bag/rebar_quiver/syndicate/ui_action_click(mob/user, actiontype) - if(istype(actiontype, /datum/action/item_action/reload_rebar)) - reload_held_rebar(user) - -/obj/item/storage/bag/rebar_quiver/syndicate/proc/reload_held_rebar(mob/user) - if(!contents.len) - user.balloon_alert(user, "no bolts left!") - return - var/obj/held_item = user.get_active_held_item() - if(!held_item || !istype(held_item, /obj/item/gun/ballistic/rifle/rebarxbow)) - user.balloon_alert(user, "no held crossbow!") - return - var/obj/item/gun/ballistic/rifle/rebarxbow/held_crossbow = held_item - if(held_crossbow.magazine.contents.len >= held_crossbow.magazine.max_ammo) - user.balloon_alert(user, "no more room!") - return - if(!do_after(user, 1.2 SECONDS, user)) - return - - var/obj/item/ammo_casing/rebar/ammo_to_load = contents[1] - held_crossbow.item_interaction(user, ammo_to_load) - /obj/item/storage/bag/quiver name = "quiver" desc = "Holds arrows for your bow. Good, because while pocketing arrows is possible, it surely can't be pleasant." diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 020a7bbe1182..09af11ce7260 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -16,7 +16,7 @@ w_class = WEIGHT_CLASS_BULKY var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding -/obj/item/storage/belt/suicide_act(mob/living/carbon/user) +/obj/item/storage/belt/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins belting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS diff --git a/code/game/objects/items/storage/boxes/_boxes.dm b/code/game/objects/items/storage/boxes/_boxes.dm index d0a1002c9c22..0374fcaa457b 100644 --- a/code/game/objects/items/storage/boxes/_boxes.dm +++ b/code/game/objects/items/storage/boxes/_boxes.dm @@ -23,7 +23,7 @@ set_custom_materials(list(/datum/material/cardboard = SHEET_MATERIAL_AMOUNT)) update_appearance() -/obj/item/storage/box/suicide_act(mob/living/carbon/user) +/obj/item/storage/box/suicide_act(mob/living/user) var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) if(myhead) user.visible_message(span_suicide("[user] puts [user.p_their()] head into \the [src] and begins closing it! It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/game/objects/items/storage/boxes/engineering_boxes.dm b/code/game/objects/items/storage/boxes/engineering_boxes.dm index f2f0d43d6208..eb981784584f 100644 --- a/code/game/objects/items/storage/boxes/engineering_boxes.dm +++ b/code/game/objects/items/storage/boxes/engineering_boxes.dm @@ -30,7 +30,7 @@ /obj/item/disk/tech_disk/debug=1, /obj/item/flashlight/emp/debug=1, /obj/item/geiger_counter=1, - /obj/item/healthanalyzer/advanced=1, + /obj/item/healthanalyzer/super=1, /obj/item/modular_computer/pda/heads/captain=1, /obj/item/pipe_dispenser=1, /obj/item/stack/spacecash/c1000=50, diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm index 68337585ef12..eb44ed2f3bdb 100644 --- a/code/game/objects/items/storage/boxes/food_boxes.dm +++ b/code/game/objects/items/storage/boxes/food_boxes.dm @@ -177,7 +177,7 @@ /obj/item/food/grown/apple, /obj/item/food/grown/banana, /obj/item/food/grown/cabbage, - /obj/item/food/grown/carrot, + /obj/item/food/grown/carrotlike/carrot, /obj/item/food/grown/cherries, /obj/item/food/grown/chili, /obj/item/food/grown/corn, @@ -215,7 +215,7 @@ /obj/item/storage/box/ingredients/vegetarian/PopulateContents() for(var/i in 1 to 2) - new /obj/item/food/grown/carrot(src) + new /obj/item/food/grown/carrotlike/carrot(src) new /obj/item/food/grown/apple(src) new /obj/item/food/grown/corn(src) new /obj/item/food/grown/eggplant(src) @@ -241,7 +241,7 @@ new /obj/item/food/grown/citrus/orange(src) new /obj/item/food/grown/citrus/lemon(src) new /obj/item/food/grown/citrus/lime(src) - new /obj/item/food/grown/watermelon(src) + new /obj/item/food/grown/melonlike/watermelon(src) /obj/item/storage/box/ingredients/sweets theme_name = "sweets" @@ -313,7 +313,7 @@ /obj/item/storage/box/ingredients/salads/PopulateContents() new /obj/item/food/grown/cabbage(src) - new /obj/item/food/grown/carrot(src) + new /obj/item/food/grown/carrotlike/carrot(src) new /obj/item/food/grown/olive(src) new /obj/item/food/grown/onion/red(src) new /obj/item/food/grown/onion/red(src) @@ -593,3 +593,15 @@ name = "robusta beans" desc = "A bag containing fresh, dry coffee robusta beans. Ethically sourced and packaged by Waffle Corp." beantype = /obj/item/food/grown/coffee/robusta + +/obj/item/storage/box/ramen_beef + name = "beef space ramen" + desc = "A box containing a brick of dehydrated ramen and a beef flavour sachet." + icon_state = "ramen_box" + illustration = null + storage_type = /datum/storage/box/ramen_beef + w_class = WEIGHT_CLASS_SMALL //it's meant to come in packs of five and the box can only hold two items, beef flavour or dry ramen + +/obj/item/storage/box/ramen_beef/PopulateContents() + new /obj/item/reagent_containers/condiment/pack/beef_flavour(src) + new /obj/item/food/spaghetti/ramen_dry(src) diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index 14dad15fa7b1..a9160f607c9f 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -35,7 +35,7 @@ icon_state = "medkit" desc = "A first aid kit with the ability to heal common types of injuries." -/obj/item/storage/medkit/regular/suicide_act(mob/living/carbon/user) +/obj/item/storage/medkit/regular/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins giving [user.p_them()]self aids with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -150,7 +150,7 @@ /obj/item/storage/medkit/fire/get_medbot_skin() return "burn" -/obj/item/storage/medkit/fire/suicide_act(mob/living/carbon/user) +/obj/item/storage/medkit/fire/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins rubbing \the [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to start a fire!")) return FIRELOSS @@ -174,7 +174,7 @@ /obj/item/storage/medkit/toxin/get_medbot_skin() return "tox" -/obj/item/storage/medkit/toxin/suicide_act(mob/living/carbon/user) +/obj/item/storage/medkit/toxin/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins licking the lead paint off \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS @@ -201,7 +201,7 @@ /obj/item/storage/medkit/o2/get_medbot_skin() return "oxy" -/obj/item/storage/medkit/o2/suicide_act(mob/living/carbon/user) +/obj/item/storage/medkit/o2/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins hitting [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return OXYLOSS @@ -225,7 +225,7 @@ /obj/item/storage/medkit/brute/get_medbot_skin() return "brute" -/obj/item/storage/medkit/brute/suicide_act(mob/living/carbon/user) +/obj/item/storage/medkit/brute/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins beating [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -466,7 +466,7 @@ return ITEM_INTERACT_SUCCESS return ..() -/obj/item/storage/organbox/suicide_act(mob/living/carbon/user) +/obj/item/storage/organbox/suicide_act(mob/living/user) if(HAS_TRAIT(user, TRAIT_RESISTCOLD)) //if they're immune to cold, just do the box suicide var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) if(myhead) diff --git a/code/game/objects/items/storage/pillbottles.dm b/code/game/objects/items/storage/pillbottles.dm index 67244ab7328e..385b085b9b50 100644 --- a/code/game/objects/items/storage/pillbottles.dm +++ b/code/game/objects/items/storage/pillbottles.dm @@ -15,6 +15,7 @@ pickup_sound = 'sound/items/handling/pill_bottle_pickup.ogg' drop_sound = 'sound/items/handling/pill_bottle_place.ogg' storage_type = /datum/storage/pillbottle + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.2) ///Number of pills to spawn VAR_PROTECTED/spawn_count @@ -205,3 +206,9 @@ A warning label reads: Take in moderation." spawn_count = 7 spawn_type = /obj/item/reagent_containers/applicator/pill/prescription_stimulant + +/obj/item/storage/pill_bottle/sepsisillin + name = "bottle of sepsisillin pills" + desc = "Contains immune system suppressants, for assisting virology research. Do not confuse with spaceacillin." + spawn_count = 7 + spawn_type = /obj/item/reagent_containers/applicator/pill/sepsisillin diff --git a/code/game/objects/items/storage/sixpack.dm b/code/game/objects/items/storage/sixpack.dm index 773327cd87f8..f441fa47c433 100644 --- a/code/game/objects/items/storage/sixpack.dm +++ b/code/game/objects/items/storage/sixpack.dm @@ -10,7 +10,7 @@ max_integrity = 500 storage_type = /datum/storage/sixcan -/obj/item/storage/cans/suicide_act(mob/living/carbon/user) +/obj/item/storage/cans/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins popping open a final cold one with the boys! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS diff --git a/code/game/objects/items/storage/toolboxes/_toolbox.dm b/code/game/objects/items/storage/toolboxes/_toolbox.dm index 7601e3264250..959c3f1ede9f 100644 --- a/code/game/objects/items/storage/toolboxes/_toolbox.dm +++ b/code/game/objects/items/storage/toolboxes/_toolbox.dm @@ -13,7 +13,7 @@ throw_range = 7 demolition_mod = 1.25 w_class = WEIGHT_CLASS_BULKY - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.5) attack_verb_continuous = list("robusts") attack_verb_simple = list("robust") hitsound = 'sound/items/weapons/smash.ogg' diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index aff0ccc4e800..cd4baf7f1c99 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -764,6 +764,8 @@ new /obj/item/book/manual/nuclear(src) // Very important // The most important part of the kit, the implant that gives them the syndicate faction. new /obj/item/implanter/induction_implant(src) + // Tactical map implant so they can see the minimap with the rest of the team. + new /obj/item/implanter/tacmap/nuclear(src) // All in all, 6+3+3+2+5+2+4 = ~25 TC of 'miscellaneous' items. // This is a lot of value for 10 TC, but you have to keep in mind that you NEED someone to get this stuff station-side. // Pretty much all of it is a bad deal for reinforcements or yourself as they already have similar or good-enough alternatives. diff --git a/code/game/objects/items/syndie_spraycan.dm b/code/game/objects/items/syndie_spraycan.dm index 13ae3097ebfc..1a7ccaf50f9c 100644 --- a/code/game/objects/items/syndie_spraycan.dm +++ b/code/game/objects/items/syndie_spraycan.dm @@ -143,7 +143,7 @@ user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!")) user.say("WITNESS ME!!", forced="spraycan suicide") playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) - suicider.AddComponent(/datum/component/face_decal, "spray", EXTERNAL_ADJACENT, paint_color) + suicider.AddComponent(/datum/component/face_decal, "spray", list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER), paint_color) return OXYLOSS ///Checks if the user is still adjacent to the target (used for do_after extra_checks) diff --git a/code/game/objects/items/tail_pin.dm b/code/game/objects/items/tail_pin.dm index 8b6aa245b3cb..32a4d164bdc4 100644 --- a/code/game/objects/items/tail_pin.dm +++ b/code/game/objects/items/tail_pin.dm @@ -35,16 +35,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/party_game, 32) -/obj/structure/sign/poster/party_game/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(!istype(attacking_item, /obj/item/tail_pin))//We're using the same trick that tables use for placing objects x and y onto the click location. - return +/obj/structure/sign/poster/party_game/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/tail_pin))//We're using the same trick that tables use for placing objects x and y onto the click location. + return NONE var/x_offset = 0 var/y_offset = 0 if(LAZYACCESS(modifiers, ICON_X) && LAZYACCESS(modifiers, ICON_Y)) x_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(ICON_SIZE_X/2), ICON_SIZE_X/2) y_offset = clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(ICON_SIZE_Y/2), ICON_SIZE_Y/2) - if(!user.transfer_item_to_turf(attacking_item, drop_location(), x_offset, y_offset, silent = FALSE)) - return - return TRUE + if(!user.transfer_item_to_turf(tool, drop_location(), x_offset, y_offset, silent = FALSE)) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 74557295dac4..b8ee955aefa8 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -184,7 +184,7 @@ gas_type = null //it starts empty full_speed = FALSE drift_force = 1 NEWTONS - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) /obj/item/tank/jetpack/improvised/allow_thrust(num) if(!ismob(loc)) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 11ce2b694799..a1f15cc681e4 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -101,18 +101,18 @@ /obj/item/tank/internals/plasma/populate_gas() air_contents.set_gas(/datum/gas/plasma, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) -/obj/item/tank/internals/plasma/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/flamethrower)) - var/obj/item/flamethrower/F = W - if ((!F.status) || (F.ptank)) - return - if(!user.transferItemToLoc(src, F)) - return - src.master = F - F.ptank = src - F.update_appearance() - else +/obj/item/tank/internals/plasma/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/flamethrower)) return ..() + var/obj/item/flamethrower/spewer = tool + if (spewer.status || spewer.ptank) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(src, spewer)) + return ITEM_INTERACT_BLOCKING + master = spewer // does master even do anything anymore? + spewer.ptank = src + spewer.update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/tank/internals/plasma/full/populate_gas() air_contents.set_gas(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) @@ -150,6 +150,7 @@ force = 5 volume = 6 //same size as the engineering ones but plasmamen have special lungs that consume less plasma per breath w_class = WEIGHT_CLASS_SMALL //thanks i forgot this + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8) /obj/item/tank/internals/plasmaman/belt/full/populate_gas() air_contents.set_gas(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) @@ -176,7 +177,7 @@ force = 4 distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) - + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/tank/internals/emergency_oxygen/populate_gas() air_contents.set_gas(/datum/gas/oxygen, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) @@ -193,6 +194,7 @@ tank_holder_icon_state = "holder_emergency_engi" worn_icon = null volume = 6 // should last 24 minutes if full + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/tank/internals/emergency_oxygen/engi/empty/populate_gas() return @@ -203,6 +205,7 @@ worn_icon_state = "emergency_engi" tank_holder_icon_state = "holder_emergency_engi" volume = 12 //If it's double of the above, shouldn't it be double the volume?? + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) /obj/item/tank/internals/emergency_oxygen/double/empty/populate_gas() return @@ -219,6 +222,7 @@ distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE force = 10 dog_fashion = /datum/dog_fashion/back + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/tank/internals/generic/populate_gas() return diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index a878e89e9753..724d3cb37db2 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -32,7 +32,7 @@ throw_speed = 1 throw_range = 4 demolition_mod = 1.25 - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) actions_types = list(/datum/action/item_action/set_internals) action_slots = ALL armor_type = /datum/armor/item_tank @@ -199,15 +199,15 @@ to_chat(user, span_warning("There isn't enough pressure in [src] to commit suicide with...")) return SHAME -/obj/item/tank/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/tank/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(istype(attacking_item, /obj/item/assembly_holder)) - if(tank_assembly) - balloon_alert(user, "something already attached!") - return ITEM_INTERACT_BLOCKING - bomb_assemble(attacking_item, user) - return ITEM_INTERACT_SUCCESS - return ..() + if(!istype(tool, /obj/item/assembly_holder)) + return NONE + if(tank_assembly) + balloon_alert(user, "something already attached!") + return ITEM_INTERACT_BLOCKING + bomb_assemble(tool, user) + return ITEM_INTERACT_SUCCESS /obj/item/tank/wrench_act(mob/living/user, obj/item/tool) if(tank_assembly) @@ -509,7 +509,7 @@ var/datum/gas_mixture/our_mix = return_air() our_mix.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) - var/fuel_moles = our_mix.gases[/datum/gas/plasma][MOLES] + our_mix.gases[/datum/gas/oxygen][MOLES]/6 + var/fuel_moles = our_mix.moles[/datum/gas/plasma] + our_mix.moles[/datum/gas/oxygen]/6 our_mix.garbage_collect() var/datum/gas_mixture/bomb_mixture = our_mix.copy() var/strength = 1 diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 23b13ccfef41..a08a5faf3eb8 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -59,8 +59,7 @@ //Remove from their hands and put back "into" the tank remove_noz() -/obj/item/watertank/verb/toggle_mister_verb() - set name = "Toggle Mister" +GAME_VERB(/obj/item/watertank, toggle_mister_verb, "Toggle Mister", null) toggle_mister(usr) /obj/item/watertank/proc/make_noz() @@ -90,12 +89,11 @@ else return ..() -/obj/item/watertank/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(attacking_item == noz) - remove_noz() - return TRUE - else - return ..() +/obj/item/watertank/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool != noz) + return NONE + remove_noz() + return ITEM_INTERACT_SUCCESS /obj/item/watertank/dropped(mob/user) ..() @@ -235,6 +233,7 @@ w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT // don't put in storage chem = null //holds no chems of its own, it takes from the tank. + custom_materials = null var/obj/item/tank var/nozzle_mode = 0 var/metal_synthesis_cooldown = 0 @@ -409,7 +408,7 @@ turn_on() //Todo : cache these. -/obj/item/reagent_containers/chemtank/worn_overlays(mutable_appearance/standing, isinhands = FALSE) //apply chemcolor and level +/obj/item/reagent_containers/chemtank/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) //apply chemcolor and level . = ..() //inhands + reagent_filling if(isinhands || !reagents.total_volume) diff --git a/code/game/objects/items/tcg/tcg.dm b/code/game/objects/items/tcg/tcg.dm index bf4408062c8d..32bc132bb23d 100644 --- a/code/game/objects/items/tcg/tcg.dm +++ b/code/game/objects/items/tcg/tcg.dm @@ -128,25 +128,29 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) icon_state = template.icon_state return ..() -/obj/item/tcgcard/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/tcgcard)) - var/obj/item/tcgcard/second_card = item +/obj/item/tcgcard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/tcgcard)) + var/obj/item/tcgcard/second_card = tool var/obj/item/tcgcard_deck/new_deck = new /obj/item/tcgcard_deck(drop_location()) new_deck.flipped = flipped user.transferItemToLoc(second_card, new_deck)//Start a new pile with both cards, in the order of card placement. user.transferItemToLoc(src, new_deck) new_deck.update_icon_state() user.put_in_hands(new_deck) - if(istype(item, /obj/item/tcgcard_deck)) - var/obj/item/tcgcard_deck/old_deck = item + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/tcgcard_deck)) + var/obj/item/tcgcard_deck/old_deck = tool if(length(old_deck.contents) >= 30) to_chat(user, span_notice("This pile has too many cards for a regular deck!")) - return + return ITEM_INTERACT_BLOCKING user.transferItemToLoc(src, old_deck) flipped = old_deck.flipped old_deck.update_appearance() update_appearance() - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/tcgcard/proc/check_menu(mob/living/user) if(!istype(user)) @@ -254,16 +258,16 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices) return FALSE return TRUE -/obj/item/tcgcard_deck/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() - if(istype(item, /obj/item/tcgcard)) - if(contents.len >= 30) - to_chat(user, span_notice("This pile has too many cards for a regular deck!")) - return FALSE - var/obj/item/tcgcard/new_card = item - new_card.flipped = flipped - new_card.forceMove(src) - +/obj/item/tcgcard_deck/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/tcgcard)) + return NONE + if(contents.len >= 30) + to_chat(user, span_notice("This pile has too many cards for a regular deck!")) + return ITEM_INTERACT_BLOCKING + var/obj/item/tcgcard/new_card = tool + new_card.flipped = flipped + new_card.forceMove(src) + return ITEM_INTERACT_SUCCESS /obj/item/tcgcard_deck/attack_self(mob/living/carbon/user) shuffle_deck(user) diff --git a/code/game/objects/items/tcg/tcg_machines.dm b/code/game/objects/items/tcg/tcg_machines.dm index 7a55e2e9554f..f188747b9d35 100644 --- a/code/game/objects/items/tcg/tcg_machines.dm +++ b/code/game/objects/items/tcg/tcg_machines.dm @@ -24,27 +24,28 @@ var/summon_offset_x = 0 var/summon_offset_y = 1 -/obj/machinery/trading_card_holder/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/tcgcard) && current_summon == null) - current_card = I - card_template = current_card.extract_datum() - if(card_template.cardtype == "Creature") - if(!user.transferItemToLoc(current_card, src)) - return - to_chat(user, span_notice("You put the [current_card] card in [src].")) - icon_state = "card_holder_active" - update_appearance() - current_summon = new(locate(x + summon_offset_x, y + summon_offset_y, z)) - current_summon.template = card_template - current_summon.card_ref = current_card - current_summon.team_color = team_color - current_summon.load_model() - else - to_chat(user, span_notice("The [src] smartly rejects the non-creature card.")) - current_card = null - return ..() - else - return ..() +/obj/machinery/trading_card_holder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/tcgcard) || current_summon) + return NONE + current_card = tool + card_template = current_card.extract_datum() + if(card_template.cardtype != "Creature") + to_chat(user, span_notice("The [src] smartly rejects the non-creature card.")) + current_card = null + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(current_card, src)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You put the [current_card] card in [src].")) + icon_state = "card_holder_active" + update_appearance() + current_summon = new(locate(x + summon_offset_x, y + summon_offset_y, z)) + current_summon.template = card_template + current_summon.card_ref = current_card + current_summon.team_color = team_color + current_summon.load_model() + return ITEM_INTERACT_SUCCESS GLOBAL_LIST_EMPTY(tcgcard_machine_radial_choices) @@ -176,7 +177,7 @@ GLOBAL_LIST_EMPTY(tcgcard_machine_radial_choices) desc = template.desc summon_power = template.power summon_resolve = template.resolve - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/structure/trading_card_summon/get_name_chaser(mob/user, list/name_chaser = list()) name_chaser += "Faction: [template.faction]" @@ -240,7 +241,7 @@ GLOBAL_LIST_EMPTY(tcgcard_machine_radial_choices) resolve_color = DEFAULT_RESOLVE_COLOR else resolve_color = modified_color - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/structure/trading_card_summon/Destroy() if(hologram) @@ -263,7 +264,7 @@ GLOBAL_LIST_EMPTY(tcgcard_machine_radial_choices) hologram.name = name hologram.alpha = 170 hologram.add_atom_colour(team_color, FIXED_COLOUR_PRIORITY) - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/structure/trading_card_summon/blank/get_name_chaser(mob/user, list/name_chaser) name_chaser += "Power/Resolve: [summon_power]/[summon_resolve]" @@ -272,7 +273,7 @@ GLOBAL_LIST_EMPTY(tcgcard_machine_radial_choices) /obj/structure/trading_card_summon/blank/modify_stats(mob/living/user) summon_power = num2text(tgui_input_number(user, "Please input power value", "Stat Modification", text2num(summon_power), 25)) summon_resolve = num2text(tgui_input_number(user, "Please input resolve value", "Stat Modification", text2num(summon_resolve), 25)) - update_overlays() + update_appearance(UPDATE_OVERLAYS) #undef STAT_Y #undef POWER_X diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 6c33c1d2ed0a..931e7c6a66ae 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -23,7 +23,7 @@ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' throw_speed = 3 throw_range = 7 - custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 4) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) var/tracking_range = 35 /obj/item/locator/ui_interact(mob/user, datum/tgui/ui) @@ -234,7 +234,7 @@ if (!can_teleport_notifies(user)) return - var/list/obj/effect/portal/created = create_portal_pair(get_turf(user), get_teleport_turf(get_turf(teleport_target)), 300, 1, null) + var/list/obj/effect/portal/created = create_portal_pair(get_turf(user), get_turf(teleport_target), 300, 1, null) if(LAZYLEN(created) != 2) return diff --git a/code/game/objects/items/tools/engineering/crowbar.dm b/code/game/objects/items/tools/engineering/crowbar.dm index 411989719766..4f846e23aedc 100644 --- a/code/game/objects/items/tools/engineering/crowbar.dm +++ b/code/game/objects/items/tools/engineering/crowbar.dm @@ -303,8 +303,8 @@ ) custom_materials = list( /datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.75, - /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.50, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 1.75, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, ) radio_alert = TRUE diff --git a/code/game/objects/items/tools/engineering/painter/airlock_painter.dm b/code/game/objects/items/tools/engineering/painter/airlock_painter.dm index 246ab1704656..87541da51086 100644 --- a/code/game/objects/items/tools/engineering/painter/airlock_painter.dm +++ b/code/game/objects/items/tools/engineering/painter/airlock_painter.dm @@ -131,18 +131,21 @@ ink_level = "dangerously high" . += span_notice("Its ink levels look [ink_level].") -/obj/item/airlock_painter/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/toner)) - if(ink) - to_chat(user, span_warning("[src] already contains \a [ink]!")) - return - if(!user.transferItemToLoc(W, src)) - return - to_chat(user, span_notice("You install [W] into [src].")) - ink = W - playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - else - return ..() +/obj/item/airlock_painter/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toner)) + return NONE + + if(ink) + to_chat(user, span_warning("[src] already contains \a [ink]!")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You install [tool] into [src].")) + ink = tool + playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) + return ITEM_INTERACT_SUCCESS /obj/item/airlock_painter/click_alt(mob/user) if(!ink) diff --git a/code/game/objects/items/tools/engineering/weldingtool.dm b/code/game/objects/items/tools/engineering/weldingtool.dm index d75700a4cee8..0e70b9424bb7 100644 --- a/code/game/objects/items/tools/engineering/weldingtool.dm +++ b/code/game/objects/items/tools/engineering/weldingtool.dm @@ -30,7 +30,7 @@ toolspeed = 1 wound_bonus = 10 exposed_wound_bonus = 15 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.7, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.3) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2) /// Whether the welding tool is on or off. var/welding = FALSE /// Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) @@ -123,12 +123,12 @@ flamethrower_screwdriver(tool, user) return ITEM_INTERACT_SUCCESS -/obj/item/weldingtool/attackby(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) - if(istype(tool, /obj/item/stack/rods)) - flamethrower_rods(tool, user) - else - . = ..() +/obj/item/weldingtool/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/rods)) + return NONE + flamethrower_rods(tool, user) update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/weldingtool/cyborg_unequip(mob/user) if(!isOn()) @@ -345,7 +345,7 @@ icon_state = "indwelder" inhand_icon_state = "indwelder" max_fuel = 40 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/weldingtool/largetank/flamethrower_screwdriver() return diff --git a/code/game/objects/items/tools/engineering/wirebrush.dm b/code/game/objects/items/tools/engineering/wirebrush.dm index 830470e68a50..f60c0b8119c3 100644 --- a/code/game/objects/items/tools/engineering/wirebrush.dm +++ b/code/game/objects/items/tools/engineering/wirebrush.dm @@ -9,3 +9,4 @@ icon_state = "wirebrush" tool_behaviour = TOOL_RUSTSCRAPER toolspeed = 1 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) diff --git a/code/game/objects/items/tools/engineering/wrench.dm b/code/game/objects/items/tools/engineering/wrench.dm index 28ba97dfcec3..0112a3b0f6be 100644 --- a/code/game/objects/items/tools/engineering/wrench.dm +++ b/code/game/objects/items/tools/engineering/wrench.dm @@ -139,3 +139,4 @@ inhand_icon_state = "bolter_wrench" icon_angle = -90 w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) diff --git a/code/game/objects/items/tools/extinguisher.dm b/code/game/objects/items/tools/extinguisher.dm index 5fb3d6984479..b36875d4a51e 100644 --- a/code/game/objects/items/tools/extinguisher.dm +++ b/code/game/objects/items/tools/extinguisher.dm @@ -16,7 +16,7 @@ throw_range = 7 force = 13 demolition_mod = 1.25 - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.9) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) attack_verb_continuous = list("slams", "whacks", "bashes", "thunks", "batters", "bludgeons", "thrashes") attack_verb_simple = list("slam", "whack", "bash", "thunk", "batter", "bludgeon", "thrash") dog_fashion = /datum/dog_fashion/back @@ -168,6 +168,7 @@ dog_fashion = null cooling_power = 1.5 power = 3 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /obj/item/extinguisher/crafted/attack_self(mob/user) safety = !safety @@ -207,11 +208,12 @@ ) sprite_name = "foam_extinguisher" precision = TRUE + custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/extinguisher/advanced/empty starting_water = FALSE -/obj/item/extinguisher/suicide_act(mob/living/carbon/user) +/obj/item/extinguisher/suicide_act(mob/living/user) if (!safety && (reagents.total_volume >= 1)) user.visible_message(span_suicide("[user] puts the nozzle to [user.p_their()] mouth. It looks like [user.p_theyre()] trying to extinguish the spark of life!")) interact_with_atom(user, user) diff --git a/code/game/objects/items/tools/inducer.dm b/code/game/objects/items/tools/inducer.dm index 27ea7e73bfbb..03e5ce7da314 100644 --- a/code/game/objects/items/tools/inducer.dm +++ b/code/game/objects/items/tools/inducer.dm @@ -7,6 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' force = 7 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// Multiplier that determines the speed at which this inducer works at. var/power_transfer_multiplier = 1 diff --git a/code/game/objects/items/tools/janitorial/broom.dm b/code/game/objects/items/tools/janitorial/broom.dm index 1456913b6125..3717a84c6655 100644 --- a/code/game/objects/items/tools/janitorial/broom.dm +++ b/code/game/objects/items/tools/janitorial/broom.dm @@ -19,6 +19,7 @@ attack_verb_simple = list("sweep", "brush off", "bludgeon", "whack") resistance_flags = FLAMMABLE custom_price = 20 // DARKPACK EDIT ADD - ECONOMY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) /obj/item/pushbroom/Initialize(mapload) . = ..() @@ -30,6 +31,7 @@ wield_callback = CALLBACK(src, PROC_REF(on_wield)), \ unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), \ ) + AddComponent(/datum/component/walking_aid) /obj/item/pushbroom/update_icon_state() icon_state = "[base_icon_state]0" diff --git a/code/game/objects/items/tools/janitorial/janitor_key.dm b/code/game/objects/items/tools/janitorial/janitor_key.dm index d18ac7bd20db..294054bc4ce0 100644 --- a/code/game/objects/items/tools/janitorial/janitor_key.dm +++ b/code/game/objects/items/tools/janitorial/janitor_key.dm @@ -47,7 +47,7 @@ */ /obj/item/access_key/proc/attempt_open_door(mob/living/user, obj/machinery/door/airlock) if(DOING_INTERACTION_WITH_TARGET(user, airlock)) - return + return FALSE user.balloon_alert_to_viewers("fumbles with keys...", "finding key...") user.playsound_local(src, 'sound/items/rattling_keys.ogg', 25, TRUE) if(!do_after(user, 3 SECONDS, airlock)) diff --git a/code/game/objects/items/tools/medical/bodybag.dm b/code/game/objects/items/tools/medical/bodybag.dm index 9ca7d370ab9c..fedbbc16d7e4 100644 --- a/code/game/objects/items/tools/medical/bodybag.dm +++ b/code/game/objects/items/tools/medical/bodybag.dm @@ -59,6 +59,7 @@ unfoldedbag_path = /obj/structure/closet/body_bag/bluespace w_class = WEIGHT_CLASS_SMALL item_flags = NO_MAT_REDEMPTION + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/bodybag/bluespace/examine(mob/user) . = ..() @@ -145,6 +146,7 @@ icon = 'icons/obj/medical/bodybag.dmi' icon_state = "stasis_bag_folded" unfoldedbag_path = /obj/structure/closet/body_bag/environmental/stasis + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/bodybag/stasis/deploy_bodybag(mob/user, atom/location) var/obj/structure/closet/body_bag/environmental/stasis/bag = ..() diff --git a/code/game/objects/items/tools/medical/cane.dm b/code/game/objects/items/tools/medical/cane.dm index 01945568187f..99d1a0adddc4 100644 --- a/code/game/objects/items/tools/medical/cane.dm +++ b/code/game/objects/items/tools/medical/cane.dm @@ -14,32 +14,18 @@ attack_verb_continuous = list("bludgeons", "whacks", "disciplines", "thrashes") attack_verb_simple = list("bludgeon", "whack", "discipline", "thrash") custom_price = 50 // DARKPACK EDIT ADD - ECONOMY + /// The amount of slowdown to reduce for a limbless leg + var/limbless_slowdown_modifier = 0.6 // reduces slowdown by 40% + /// Does this cause waddling when held + var/causes_waddling = FALSE -/obj/item/cane/examine(mob/user, thats) +/obj/item/cane/Initialize(mapload) . = ..() - . += span_notice("This item can be used to support your weight, preventing limping from any broken bones on your legs you may have.") + AddComponent(/datum/component/walking_aid, limbless_slowdown_modifier, get_walking_aid_required_trait(), causes_waddling) -/obj/item/cane/equipped(mob/living/user, slot, initial) - ..() - if(!(slot & ITEM_SLOT_HANDS)) - return - movement_support_add(user) - -/obj/item/cane/dropped(mob/living/user, silent = FALSE) - . = ..() - movement_support_del(user) - -/obj/item/cane/proc/movement_support_add(mob/living/user) - RegisterSignal(user, COMSIG_CARBON_LIMPING, PROC_REF(handle_limping)) - return TRUE - -/obj/item/cane/proc/movement_support_del(mob/living/user) - UnregisterSignal(user, list(COMSIG_CARBON_LIMPING)) - return TRUE - -/obj/item/cane/proc/handle_limping(mob/living/user) - SIGNAL_HANDLER - return COMPONENT_CANCEL_LIMP +/// Determines if a trait is required to be used as a walking aid (ex. foldable canes) +/obj/item/cane/proc/get_walking_aid_required_trait() + return null /obj/item/cane/crutch name = "medical crutch" @@ -56,42 +42,13 @@ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) attack_verb_continuous = list("bludgeons", "whacks", "thrashes") attack_verb_simple = list("bludgeon", "whack", "thrash") + limbless_slowdown_modifier = 0.4 // reduces slowdown by 60% + causes_waddling = TRUE /obj/item/cane/crutch/Initialize(mapload) . = ..() AddElement(/datum/element/cuffable_item) -/obj/item/cane/crutch/examine(mob/user, thats) - . = ..() - // tacked on after the cane string - . += span_notice("As a crutch, it can also help lessen the slowdown incurred by missing a leg.") - -/obj/item/cane/crutch/movement_support_add(mob/living/user) - . = ..() - if(!.) - return - RegisterSignal(user, COMSIG_LIVING_LIMBLESS_SLOWDOWN, PROC_REF(handle_slowdown)) - user.update_usable_leg_status() - user.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling) - -/obj/item/cane/crutch/movement_support_del(mob/living/user) - . = ..() - if(!.) - return - UnregisterSignal(user, list(COMSIG_LIVING_LIMBLESS_SLOWDOWN, COMSIG_CARBON_LIMPING)) - user.update_usable_leg_status() - REMOVE_TRAIT(user, TRAIT_WADDLING, REF(src)) - -/obj/item/cane/crutch/proc/handle_slowdown(mob/living/user, limbless_slowdown, list/slowdown_mods) - SIGNAL_HANDLER - var/leg_amount = user.usable_legs - // Don't do anything if the number is equal (or higher) to the usual. - if(leg_amount >= user.default_num_legs) - return - // If we have at least one leg and it's less than the default, reduce slowdown by 60%. - if(leg_amount && (leg_amount < user.default_num_legs)) - slowdown_mods += 0.4 - /obj/item/cane/crutch/wood name = "wooden crutch" desc = "A handmade crutch. Also makes a decent bludgeon if you need it." @@ -125,15 +82,16 @@ ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) -/obj/item/cane/white/handle_limping(mob/living/user) - return HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) ? COMPONENT_CANCEL_LIMP : NONE +// White canes only provide support while extended +/obj/item/cane/white/get_walking_aid_required_trait() + return TRAIT_TRANSFORM_ACTIVE /* * Signal proc for [COMSIG_TRANSFORMING_ON_TRANSFORM]. * * Gives feedback to the user and makes it show up inhand. */ -/obj/item/cane/white/proc/on_transform(obj/item/source, mob/user, active) +/obj/item/cane/white/proc/on_transform(obj/item/source, mob/living/user, active) SIGNAL_HANDLER if(user) diff --git a/code/game/objects/items/tools/theft_tools.dm b/code/game/objects/items/tools/theft_tools.dm index fae7befdff13..52b96d3b103e 100644 --- a/code/game/objects/items/tools/theft_tools.dm +++ b/code/game/objects/items/tools/theft_tools.dm @@ -23,11 +23,11 @@ STOP_PROCESSING(SSobj, src) return ..() -/obj/item/nuke_core/attackby(obj/item/nuke_core_container/container, mob/user) - if(istype(container)) - container.load(src, user) - else - return ..() +/obj/item/nuke_core/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/nuke_core_container)) + return NONE + astype(tool, /obj/item/nuke_core_container).load(src, user) + return ITEM_INTERACT_SUCCESS /obj/item/nuke_core/process() if(cooldown < world.time - 60) @@ -72,15 +72,17 @@ if(ismob(loc)) to_chat(loc, span_warning("[src] is sealed, [core]'s radiation is contained.")) -/obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user) - if(istype(core)) - if(!user.temporarilyRemoveItemFromInventory(core)) - to_chat(user, span_warning("The [core] is stuck to your hand!")) - return - else - load(core, user) - else - return ..() +/obj/item/nuke_core_container/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/nuke_core)) + return NONE + + if(!user.temporarilyRemoveItemFromInventory(tool)) + to_chat(user, span_warning("The [tool] is stuck to your hand!")) + return ITEM_INTERACT_BLOCKING + + load(tool, user) + return ITEM_INTERACT_SUCCESS + //snowflake screwdriver, works as a key to start nuke theft, traitor only /obj/item/screwdriver/nuke @@ -177,24 +179,27 @@ /obj/item/nuke_core/supermatter_sliver/can_be_pulled(user, force) // no drag memes return FALSE -/obj/item/nuke_core/supermatter_sliver/attackby(obj/item/W, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/hemostat/supermatter)) - var/obj/item/hemostat/supermatter/tongs = W +/obj/item/nuke_core/supermatter_sliver/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/hemostat/supermatter)) + var/obj/item/hemostat/supermatter/tongs = tool if (tongs.sliver) to_chat(user, span_warning("\The [tongs] is already holding a supermatter sliver!")) - return FALSE + return ITEM_INTERACT_BLOCKING forceMove(tongs) tongs.sliver = src tongs.update_appearance() to_chat(user, span_notice("You carefully pick up [src] with [tongs].")) - else if(istype(W, /obj/item/scalpel/supermatter) || istype(W, /obj/item/nuke_core_container/supermatter/)) // we don't want it to dust - return - else - to_chat(user, span_notice("As it touches \the [src], both \the [src] and \the [W] burst into dust!")) - radiation_pulse(user, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) - playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE) - qdel(W) - qdel(src) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/scalpel/supermatter) || istype(tool, /obj/item/nuke_core_container/supermatter/)) // we don't want it to dust + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("As it touches \the [src], both \the [src] and \the [tool] burst into dust!")) + radiation_pulse(user, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) + playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE) + qdel(tool) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/item/nuke_core/supermatter_sliver/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!isliving(hit_atom)) diff --git a/code/game/objects/items/toy_mechs.dm b/code/game/objects/items/toy_mechs.dm index cf8b1f341289..5436a87d2c92 100644 --- a/code/game/objects/items/toy_mechs.dm +++ b/code/game/objects/items/toy_mechs.dm @@ -144,12 +144,12 @@ /** * If you attack a mech with a mech, initiate combat between them */ -/obj/item/toy/mecha/attackby(obj/item/user_toy, mob/living/user) - if(istype(user_toy, /obj/item/toy/mecha)) - var/obj/item/toy/mecha/P = user_toy - if(check_battle_start(user, P)) - mecha_brawl(P, user) - ..() +/obj/item/toy/mecha/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/mecha)) + return NONE + var/obj/item/toy/mecha/challenger = tool + if(check_battle_start(user, challenger)) + mecha_brawl(challenger, user) /** * Attack is called from the user's toy, aimed at target(another human), checking for target's toy. @@ -212,7 +212,7 @@ /** * Starts a battle, toy mech vs player. Player... doesn't win. */ -/obj/item/toy/mecha/suicide_act(mob/living/carbon/user) +/obj/item/toy/mecha/suicide_act(mob/living/user) if(in_combat) to_chat(user, span_notice("[src] is in battle, let it finish first.")) return diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 1a67911a03a1..82cc691fc84b 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -53,6 +53,7 @@ icon = 'icons/obj/toys/balloons.dmi' icon_state = "balloon_red-e" inhand_icon_state = "balloon-empty" + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/toy/waterballoon/Initialize(mapload) . = ..() @@ -78,22 +79,27 @@ return ITEM_INTERACT_SUCCESS return ITEM_INTERACT_BLOCKING -/obj/item/toy/waterballoon/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/reagent_containers/cup)) - if(I.reagents) - if(I.reagents.total_volume <= 0) - to_chat(user, span_warning("[I] is empty.")) - else if(reagents.total_volume >= 10) - to_chat(user, span_warning("[src] is full.")) - else - 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 [I].")) - I.reagents.trans_to(src, 10, transferred_by = user) - update_appearance() - else if(I.get_sharpness()) +/obj/item/toy/waterballoon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/reagent_containers/cup) && tool.reagents) + if(tool.reagents.total_volume <= 0) + to_chat(user, span_warning("[tool] is empty.")) + return ITEM_INTERACT_BLOCKING + + if(reagents.total_volume >= 10) + to_chat(user, span_warning("[src] is full.")) + return ITEM_INTERACT_BLOCKING + + 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 [tool].")) + tool.reagents.trans_to(src, 10, transferred_by = user) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(tool.get_sharpness()) balloon_burst() - else - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/toy/waterballoon/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(!..()) //was it caught by a mob? @@ -137,6 +143,7 @@ throw_speed = 3 throw_range = 7 force = 0 + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.6) var/random_color = TRUE /// the string describing the name of balloon's current colour. var/current_color @@ -167,17 +174,18 @@ ) -/obj/item/toy/balloon/long/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(!istype(attacking_item, /obj/item/toy/balloon/long) || !HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) +/obj/item/toy/balloon/long/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/balloon/long) || !HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) return ..() - var/obj/item/toy/balloon/long/hit_by = attacking_item + var/obj/item/toy/balloon/long/hit_by = tool if(hit_by.current_color == current_color) to_chat(user, span_warning("You must use balloons of different colours to do that!")) - return ..() - visible_message( + return ITEM_INTERACT_BLOCKING + user.visible_message( span_notice("[user.name] starts contorting up a balloon animal!"), - blind_message = span_hear("You hear balloons being contorted."), + span_notice("You start twisting together a balloon animal!"), + span_hear("You hear balloons being contorted."), vision_distance = 3, ignored_mobs = user, ) @@ -188,13 +196,13 @@ break qdel(hit_by) qdel(src) - return TRUE + return ITEM_INTERACT_SUCCESS -/obj/item/toy/balloon/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/ammo_casing/foam_dart) && ismonkey(user)) - pop_balloon(monkey_pop = TRUE) - else - return ..() +/obj/item/toy/balloon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/ammo_casing/foam_dart) || !ismonkey(user)) + return NONE + pop_balloon(monkey_pop = TRUE) + return ITEM_INTERACT_SUCCESS /obj/item/toy/balloon/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) var/mob/thrower = throwingdatum?.get_thrower() @@ -436,7 +444,11 @@ icon_state = "singularity_s1" item_flags = NO_PIXEL_RANDOM_DROP -/obj/item/toy/spinningtoy/suicide_act(mob/living/carbon/human/user) +/obj/item/toy/spinningtoy/suicide_act(mob/living/user) + if (!iscarbon(user)) + user.visible_message(span_suicide("[user] consumes [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + user.spin(8 SECONDS, 1) + return BRUTELOSS var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) if(!myhead) user.visible_message(span_suicide("[user] tries consuming [src]... but [user.p_they()] [user.p_have()] no mouth!")) // and i must scream @@ -506,7 +518,7 @@ obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1) + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT) attack_verb_continuous = list("strikes", "pistol whips", "hits", "bashes") attack_verb_simple = list("strike", "pistol whip", "hit", "bash") var/bullets = 7 @@ -515,39 +527,39 @@ . = ..() . += "There [bullets == 1 ? "is" : "are"] [bullets] cap\s left." -/obj/item/toy/gun/attackby(obj/item/toy/ammo/gun/A, mob/user, list/modifiers, list/attack_modifiers) - - if(istype(A, /obj/item/toy/ammo/gun)) - if (src.bullets >= 7) - to_chat(user, span_warning("It's already fully loaded!")) - return 1 - if (A.amount_left <= 0) - to_chat(user, span_warning("There are no more caps!")) - return 1 - if (A.amount_left < (7 - src.bullets)) - src.bullets += A.amount_left - to_chat(user, span_notice("You reload [A.amount_left] cap\s.")) - A.amount_left = 0 - else - to_chat(user, span_notice("You reload [7 - src.bullets] cap\s.")) - A.amount_left -= 7 - src.bullets - src.bullets = 7 - A.update_appearance() - return 1 +/obj/item/toy/gun/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + + if(!istype(tool, /obj/item/toy/ammo/gun)) + return NONE + var/obj/item/toy/ammo/gun/ammunition = tool + if (bullets >= 7) + to_chat(user, span_warning("It's already fully loaded!")) + return ITEM_INTERACT_BLOCKING + if (ammunition.amount_left <= 0) + to_chat(user, span_warning("There are no more caps!")) + return ITEM_INTERACT_BLOCKING + if (ammunition.amount_left < (7 - bullets)) + bullets += ammunition.amount_left + to_chat(user, span_notice("You reload [ammunition.amount_left] cap\s.")) + ammunition.amount_left = 0 else - return ..() + to_chat(user, span_notice("You reload [7 - bullets] cap\s.")) + ammunition.amount_left -= 7 - bullets + bullets = 7 + tool.update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/toy/gun/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!ISADVANCEDTOOLUSER(user)) to_chat(user, span_warning("You don't have the dexterity to do this!")) return ITEM_INTERACT_BLOCKING - src.add_fingerprint(user) - if (src.bullets < 1) + add_fingerprint(user) + if (bullets < 1) user.show_message(span_warning("*click*"), MSG_AUDIBLE) playsound(src, 'sound/items/weapons/gun/revolver/dry_fire.ogg', 30, TRUE) return ITEM_INTERACT_SUCCESS playsound(user, 'sound/items/weapons/gun/revolver/shot.ogg', 100, TRUE) - src.bullets-- + bullets-- user.visible_message(span_danger("[user] fires [src] at [interacting_with]!"), \ span_danger("You fire [src] at [interacting_with]!"), \ span_hear("You hear a gunshot!")) @@ -562,7 +574,7 @@ icon = 'icons/obj/weapons/guns/ammo.dmi' icon_state = "357OLD-7" w_class = WEIGHT_CLASS_TINY - custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1) + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3) var/amount_left = 7 /obj/item/toy/ammo/gun/update_icon_state() @@ -668,28 +680,26 @@ to_chat(user, span_warning("RNBW_ENGAGE")) update_appearance(UPDATE_ICON) +/obj/item/toy/sword/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/sword)) + return NONE + var/obj/item/toy/sword/attatched_sword = tool + if(HAS_TRAIT(tool, TRAIT_NODROP)) + to_chat(user, span_warning("[tool] is stuck to your hand, you can't attach it to [src]!")) + return ITEM_INTERACT_BLOCKING + if(HAS_TRAIT(src, TRAIT_NODROP)) + to_chat(user, span_warning("[src] is stuck to your hand, you can't attach it to [tool]!")) + return ITEM_INTERACT_BLOCKING -// Copied from /obj/item/melee/energy/sword/attackby -/obj/item/toy/sword/attackby(obj/item/weapon, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/toy/sword)) - var/obj/item/toy/sword/attatched_sword = weapon - if(HAS_TRAIT(weapon, TRAIT_NODROP)) - to_chat(user, span_warning("[weapon] is stuck to your hand, you can't attach it to [src]!")) - return - else if(HAS_TRAIT(src, TRAIT_NODROP)) - to_chat(user, span_warning("[src] is stuck to your hand, you can't attach it to [weapon]!")) - return - else - to_chat(user, span_notice("You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.")) - var/obj/item/dualsaber/toy/new_saber = new /obj/item/dualsaber/toy(user.loc) - if(attatched_sword.hacked || hacked) - new_saber.hacked = TRUE - new_saber.saber_color = "rainbow" - qdel(weapon) - qdel(src) - user.put_in_hands(new_saber) - else - return ..() + to_chat(user, span_notice("You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.")) + var/obj/item/dualsaber/toy/new_saber = new /obj/item/dualsaber/toy(user.loc) + if(attatched_sword.hacked || hacked) + new_saber.hacked = TRUE + new_saber.saber_color = "rainbow" + qdel(tool) + qdel(src) + user.put_in_hands(new_saber) + return ITEM_INTERACT_SUCCESS /* * Foam armblade @@ -707,6 +717,7 @@ attack_verb_simple = list("prick", "absorb", "gore") w_class = WEIGHT_CLASS_SMALL resistance_flags = FLAMMABLE + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) /obj/item/toy/windup_toolbox name = "windup toolbox" @@ -809,6 +820,7 @@ attack_verb_continuous = list("attacks", "slashes", "slices") attack_verb_simple = list("attack", "slash", "slice") hitsound = 'sound/items/weapons/bladeslice.ogg' + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) var/list/alt_continuous = list("stabs", "pierces", "impales") var/list/alt_simple = list("stab", "pierce", "impale") @@ -1834,7 +1846,7 @@ GLOBAL_LIST_EMPTY(intento_players) */ /obj/item/toy/foam_runic_scepter name = "foam scepter" - desc = "A foam replica of the scepters Wizards us on Vendormancy Soccer." + desc = "A foam replica of the scepters Wizards use on Vendormancy Soccer." icon_state = "vendor_staff" worn_icon_state = "vendor_staff" //For the back inhand_icon_state = "vendor_staff" @@ -1858,6 +1870,7 @@ GLOBAL_LIST_EMPTY(intento_players) force = 0 throwforce = 5 reach = 2 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) var/min_reach = 2 /obj/item/extendohand/acme diff --git a/code/game/objects/items/v8_engine.dm b/code/game/objects/items/v8_engine.dm index 5b5e934bb25e..145fcf41d886 100644 --- a/code/game/objects/items/v8_engine.dm +++ b/code/game/objects/items/v8_engine.dm @@ -66,7 +66,7 @@ throw_speed = 1 armour_penetration = 15 hitsound = 'sound/items/car_engine_start.ogg' - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14.1, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) /// The number of charges the house edge has accrued through 2-handed hits, to charge a more powerful charge attack. var/fire_charges = 0 ///Sound played when wielded. diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm index 6d11220251a3..74c27056f48f 100644 --- a/code/game/objects/items/vending_items.dm +++ b/code/game/objects/items/vending_items.dm @@ -16,6 +16,7 @@ throw_range = 7 w_class = WEIGHT_CLASS_BULKY armor_type = /datum/armor/item_vending_refill + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) ///Name of the vending machine this canister is associated with var/machine_name = "Generic" diff --git a/code/game/objects/items/weaponry/melee/baseball_bat.dm b/code/game/objects/items/weaponry/melee/baseball_bat.dm index 8d12e7724362..5bc6ca014be4 100644 --- a/code/game/objects/items/weaponry/melee/baseball_bat.dm +++ b/code/game/objects/items/weaponry/melee/baseball_bat.dm @@ -3,19 +3,21 @@ desc = "There ain't a skull in the league that can withstand a swatter." icon = 'icons/obj/weapons/bat.dmi' icon_state = "baseball_bat" + worn_icon_state="bostaff0" inhand_icon_state = "baseball_bat" icon_angle = -45 lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 12 + force = 13 wound_bonus = -10 - throwforce = 12 + throwforce = 13 demolition_mod = 1.25 attack_verb_continuous = list("beats", "smacks") attack_verb_simple = list("beat", "smack") custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 3.5) resistance_flags = FLAMMABLE w_class = WEIGHT_CLASS_HUGE + slot_flags = ITEM_SLOT_BACK /// Are we able to do a homerun? var/homerun_able = FALSE /// Are we ready to do a homerun? diff --git a/code/game/objects/items/weaponry/melee/baton.dm b/code/game/objects/items/weaponry/melee/baton.dm index a4ceccaa4ebb..5769503f6bc3 100644 --- a/code/game/objects/items/weaponry/melee/baton.dm +++ b/code/game/objects/items/weaponry/melee/baton.dm @@ -596,22 +596,24 @@ tool.play_tool_sound(src) return TRUE -/obj/item/melee/baton/security/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/stock_parts/power_store/cell)) - var/obj/item/stock_parts/power_store/cell/active_cell = item - if(cell) - to_chat(user, span_warning("[src] already has a cell!")) - else - if(active_cell.maxcharge < cell_hit_cost) - to_chat(user, span_notice("[src] requires a higher capacity cell.")) - return - if(!user.transferItemToLoc(item, src)) - return - cell = item - to_chat(user, span_notice("You install a cell in [src].")) - update_appearance() - else - return ..() +/obj/item/melee/baton/security/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stock_parts/power_store/cell)) + return NONE + if(cell) + to_chat(user, span_warning("[src] already has a cell!")) + return ITEM_INTERACT_BLOCKING + + if(astype(tool, /obj/item/stock_parts/power_store/cell).maxcharge < cell_hit_cost) + to_chat(user, span_notice("[src] requires a higher capacity cell.")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + cell = tool + to_chat(user, span_notice("You install a cell in [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/melee/baton/security/proc/tryremovecell(mob/user) if(cell && can_remove_cell) @@ -837,37 +839,38 @@ /obj/item/melee/baton/security/cattleprod/add_deep_lore() return -/obj/item/melee/baton/security/cattleprod/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers)//handles sticking a crystal onto a stunprod to make an improved cattleprod - if(!istype(item, /obj/item/stack)) +/obj/item/melee/baton/security/cattleprod/item_interaction(mob/living/user, obj/item/tool, list/modifiers)//handles sticking a crystal onto a stunprod to make an improved cattleprod + if(!istype(tool, /obj/item/stack)) return ..() if(!can_upgrade) user.visible_message(span_warning("This prod is already improved!")) - return ..() + return ITEM_INTERACT_BLOCKING if(cell) user.visible_message(span_warning("You can't put the crystal onto the stunprod while it has a power cell installed!")) - return ..() + return ITEM_INTERACT_BLOCKING var/our_prod - if(istype(item, /obj/item/stack/ore/bluespace_crystal)) - var/obj/item/stack/ore/bluespace_crystal/our_crystal = item + if(istype(tool, /obj/item/stack/ore/bluespace_crystal)) + var/obj/item/stack/ore/bluespace_crystal/our_crystal = tool our_crystal.use(1) our_prod = /obj/item/melee/baton/security/cattleprod/teleprod - else if(istype(item, /obj/item/stack/telecrystal)) - var/obj/item/stack/telecrystal/our_crystal = item + else if(istype(tool, /obj/item/stack/telecrystal)) + var/obj/item/stack/telecrystal/our_crystal = tool our_crystal.use(1) our_prod = /obj/item/melee/baton/security/cattleprod/telecrystalprod else - to_chat(user, span_notice("You don't think \the [item] will do anything to improve \the [src].")) - return ..() + to_chat(user, span_notice("You don't think \the [tool] will do anything to improve \the [src].")) + return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("You place \the [item] firmly into \the [sparkler].")) + to_chat(user, span_notice("You place \the [tool] firmly into \the [sparkler].")) remove_item_from_storage(user) qdel(src) var/obj/item/melee/baton/security/cattleprod/brand_new_prod = new our_prod(user.loc) user.put_in_hands(brand_new_prod) + return ITEM_INTERACT_SUCCESS /obj/item/melee/baton/security/cattleprod/try_stun(mob/living/target, mob/living/user, harmbatonning) return ..() && sparkler.activate() diff --git a/code/game/objects/items/weaponry/melee/chainsaw.dm b/code/game/objects/items/weaponry/melee/chainsaw.dm index cbbbe2c814ee..55e30d63d157 100644 --- a/code/game/objects/items/weaponry/melee/chainsaw.dm +++ b/code/game/objects/items/weaponry/melee/chainsaw.dm @@ -85,12 +85,16 @@ /obj/item/chainsaw/get_demolition_modifier(obj/target) return HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) ? demolition_mod : 0.8 -/obj/item/chainsaw/suicide_act(mob/living/carbon/user) +/obj/item/chainsaw/suicide_act(mob/living/user) if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE) return BRUTELOSS + if (!iscarbon(user)) + user.visible_message(span_suicide("[user] begins to shred [user.p_themselves()] with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + return BRUTELOSS + user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) if(!myhead) @@ -107,6 +111,9 @@ return BRUTELOSS /obj/item/chainsaw/attack(mob/living/target_mob, mob/living/user, list/modifiers, list/attack_modifiers) + if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) + return ..() + if (target_mob.stat != DEAD) return ..() @@ -114,17 +121,19 @@ return ..() var/obj/item/bodypart/head = target_mob.get_bodypart(BODY_ZONE_HEAD) - if (!head?.can_dismember()) + if (!head) return ..() - playsound(user, 'sound/items/weapons/slice.ogg', vol = 80, vary = TRUE) - + playsound(src, 'sound/items/weapons/chainsawhit.ogg', vol = 100, vary = TRUE) target_mob.balloon_alert(user, "cutting off head...") + if (!do_after(user, behead_time, target_mob, extra_checks = CALLBACK(src, PROC_REF(has_same_head), target_mob, head))) return TRUE if (head.dismember(silent = FALSE)) - user.put_in_hands(head) + playsound(src, 'sound/items/weapons/chainsawhit.ogg', vol = 100, vary = TRUE) + else + to_chat(user, span_warning("[target_mob]'s head is attached too firmly to cut off!")) return TRUE diff --git a/code/game/objects/items/weaponry/melee/dualsaber.dm b/code/game/objects/items/weaponry/melee/dualsaber.dm index 3f2aea409c75..762cd43269c6 100644 --- a/code/game/objects/items/weaponry/melee/dualsaber.dm +++ b/code/game/objects/items/weaponry/melee/dualsaber.dm @@ -85,13 +85,15 @@ icon_state = inhand_icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color][HAS_TRAIT(src, TRAIT_WIELDED)]" : "dualsaber0" return ..() -/obj/item/dualsaber/suicide_act(mob/living/carbon/user) +/obj/item/dualsaber/suicide_act(mob/living/user) if(HAS_TRAIT(src, TRAIT_WIELDED)) user.visible_message(span_suicide("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code - var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN) - B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea + var/obj/item/organ/brain/mybrain = user.get_organ_slot(ORGAN_SLOT_BRAIN) + if (mybrain) + mybrain.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea + var/randdir for(var/i in 1 to 24)//like a headless chicken! if(user.is_holding(src)) @@ -190,10 +192,8 @@ if(!HAS_TRAIT(src, TRAIT_WIELDED)) return "" var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.wear_mask) - in_mouth = ", barely missing [user.p_their()] nose" + if(iscarbon(user) && user.get_item_by_slot(ITEM_SLOT_MASK)) + in_mouth = ", barely missing [user.p_their()] nose" . = span_rose("[user] swings [user.p_their()] [name][in_mouth]. [user.p_They()] light[user.p_s()] [A.loc == user ? "[user.p_their()] [A.name]" : A] in the process.") playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) add_fingerprint(user) @@ -212,14 +212,13 @@ /obj/item/dualsaber/purple possible_colors = list("purple") -/obj/item/dualsaber/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!hacked) - hacked = TRUE - to_chat(user, span_warning("2XRNBW_ENGAGE")) - saber_color = "rainbow" - update_appearance() - else - to_chat(user, span_warning("It's starting to look like a triple rainbow - no, nevermind.")) - else - return ..() +/obj/item/dualsaber/multitool_act(mob/living/user, obj/item/tool) + if(hacked) + to_chat(user, span_warning("It's starting to look like a triple rainbow - no, nevermind.")) + return ITEM_INTERACT_BLOCKING + hacked = TRUE + to_chat(user, span_warning("2XRNBW_ENGAGE")) + saber_color = "rainbow" + update_appearance() + return ITEM_INTERACT_SUCCESS + diff --git a/code/game/objects/items/weaponry/melee/energy.dm b/code/game/objects/items/weaponry/melee/energy.dm index 93571d4d710a..5aa8c7eb8ce5 100644 --- a/code/game/objects/items/weaponry/melee/energy.dm +++ b/code/game/objects/items/weaponry/melee/energy.dm @@ -87,10 +87,8 @@ return "" var/in_mouth = "" - if(iscarbon(user)) - var/mob/living/carbon/carbon_user = user - if(carbon_user.wear_mask) - in_mouth = ", barely missing [carbon_user.p_their()] nose" + if(ishuman(user) && user.get_item_by_slot(ITEM_SLOT_MASK)) + in_mouth = ", barely missing [user.p_their()] nose" . = span_rose("[user] swings [user.p_their()] [name][in_mouth]. [user.p_They()] light[user.p_s()] [user.p_their()] [atom.name] in the process.") playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) add_fingerprint(user) @@ -125,7 +123,6 @@ else heat = initial(heat) STOP_PROCESSING(SSobj, src) - tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal! if(user) balloon_alert(user, "[name] [active ? "enabled":"disabled"]") @@ -410,6 +407,9 @@ alt_sharpness = NONE alt_force_mod = -12 alt_hitsound = SFX_SWING_HIT + worn_icon_state = "energysurplus" + slot_flags = ITEM_SLOT_BELT + light_color = LIGHT_COLOR_LIGHT_CYAN /// Battery used to determine how many hits we can make before our sword switches off and can't be turned back on without a do_after. var/charge = 20 /// Our battery maximum. @@ -548,6 +548,13 @@ COOLDOWN_START(src, jiggle_cooldown, 1 SECONDS) return TRUE +/obj/item/melee/energy/sword/surplus/on_transform(obj/item/source, mob/user, active) + . = ..() + if(active) + slot_flags &= ~ITEM_SLOT_BELT + else + slot_flags |= ITEM_SLOT_BELT + // Null rod variants /obj/item/melee/energy/sword/nullrod diff --git a/code/game/objects/items/weaponry/melee/knives.dm b/code/game/objects/items/weaponry/melee/knives.dm index c26f460871ba..69daa64e80cc 100644 --- a/code/game/objects/items/weaponry/melee/knives.dm +++ b/code/game/objects/items/weaponry/melee/knives.dm @@ -119,7 +119,7 @@ obj_flags = CONDUCTS_ELECTRICITY force = 15 throwforce = 10 - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 9) attack_verb_continuous = list("slices", "dices", "chops", "cubes", "minces", "juliennes", "chiffonades", "batonnets") attack_verb_simple = list("slice", "dice", "chop", "cube", "mince", "julienne", "chiffonade", "batonnet") w_class = WEIGHT_CLASS_NORMAL @@ -326,7 +326,7 @@ icon_angle = -45 custom_materials = null -/obj/item/knife/shiv/carrot/suicide_act(mob/living/carbon/user) +/obj/item/knife/shiv/carrot/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -429,6 +429,7 @@ w_class = WEIGHT_CLASS_SMALL resistance_flags = FIRE_PROOF force = 0 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /// Used on Initialize, how much time to cut cable restraints and zipties. var/snap_time_weak_handcuffs = 0 SECONDS /// Used on Initialize, how much time to cut real handcuffs. Null means it can't. diff --git a/code/game/objects/items/weaponry/melee/misc.dm b/code/game/objects/items/weaponry/melee/misc.dm index b4297882ec55..16f7cc286243 100644 --- a/code/game/objects/items/weaponry/melee/misc.dm +++ b/code/game/objects/items/weaponry/melee/misc.dm @@ -109,6 +109,7 @@ force = 0 attack_verb_continuous = list("hits", "pokes") attack_verb_simple = list("hit", "poke") + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 2.5) /// The sausage attatched to our stick. var/obj/item/food/sausage/held_sausage /// Static list of things our roasting stick can interact with. @@ -155,20 +156,25 @@ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE) return COMPONENT_NO_DEFAULT_MESSAGE -/obj/item/melee/roastingstick/attackby(atom/target, mob/user) - ..() - if (istype(target, /obj/item/food/sausage)) - if (!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) - to_chat(user, span_warning("You must extend [src] to attach anything to it!")) - return - if (held_sausage) - to_chat(user, span_warning("[held_sausage] is already attached to [src]!")) - return - if (user.transferItemToLoc(target, src)) - held_sausage = target - else - to_chat(user, span_warning("[target] doesn't seem to want to get on [src]!")) +/obj/item/melee/roastingstick/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (!istype(tool, /obj/item/food/sausage)) + return NONE + + if (!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) + to_chat(user, span_warning("You must extend [src] to attach anything to it!")) + return ITEM_INTERACT_BLOCKING + + if (held_sausage) + to_chat(user, span_warning("[held_sausage] is already attached to [src]!")) + return ITEM_INTERACT_BLOCKING + + if (!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("[tool] doesn't seem to want to get on [src]!")) + return ITEM_INTERACT_BLOCKING + + held_sausage = tool update_appearance() + return ITEM_INTERACT_SKIP_TO_ATTACK /obj/item/melee/roastingstick/attack_hand(mob/user, list/modifiers) ..() @@ -386,6 +392,7 @@ force_unwielded = 10, \ force_wielded = 14, \ ) + AddComponent(/datum/component/walking_aid) /obj/item/bambostaff/update_icon_state() icon_state = inhand_icon_state = "[base_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]" @@ -414,6 +421,10 @@ attack_verb_simple = list("bludgeon", "whack", "discipline") resistance_flags = FLAMMABLE +/obj/item/staff/Initialize(mapload) + . = ..() + AddComponent(/datum/component/walking_aid) + /obj/item/staff/broom name = "broom" desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." diff --git a/code/game/objects/items/weaponry/melee/powerfist.dm b/code/game/objects/items/weaponry/melee/powerfist.dm index 172806476bd4..853d9db0bdfa 100644 --- a/code/game/objects/items/weaponry/melee/powerfist.dm +++ b/code/game/objects/items/weaponry/melee/powerfist.dm @@ -72,17 +72,20 @@ update_tank(tank, TANK_REMOVING, user) return TRUE -/obj/item/melee/powerfist/attackby(obj/item/item_to_insert, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(item_to_insert, /obj/item/tank/internals)) - return ..() +/obj/item/melee/powerfist/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/tank/internals)) + return NONE + if(tank) to_chat(user, span_notice("A tank is already present, remove it with a screwdriver first.")) - return - var/obj/item/tank/internals/tank_to_insert = item_to_insert - if(tank_to_insert.volume <= 3) - to_chat(user, span_warning("\The [tank_to_insert] is too small for \the [src].")) - return - update_tank(item_to_insert, TANK_INSERTING, user) + return ITEM_INTERACT_BLOCKING + + if(astype(tool, /obj/item/tank/internals).volume <= 3) + to_chat(user, span_warning("\The [tool] is too small for \the [src].")) + return ITEM_INTERACT_BLOCKING + + update_tank(tool, TANK_INSERTING, user) + return ITEM_INTERACT_SUCCESS /obj/item/melee/powerfist/proc/update_tank(obj/item/tank/internals/the_tank, removing = TANK_INSERTING, mob/living/carbon/human/user) if(removing) diff --git a/code/game/objects/items/weaponry/melee/soulscythe.dm b/code/game/objects/items/weaponry/melee/soulscythe.dm index 596166d14e02..c7dabc9d44df 100644 --- a/code/game/objects/items/weaponry/melee/soulscythe.dm +++ b/code/game/objects/items/weaponry/melee/soulscythe.dm @@ -39,6 +39,7 @@ RegisterSignal(soul, COMSIG_MOB_ATTACK_RANGED_SECONDARY, PROC_REF(on_secondary_attack)) RegisterSignal(src, COMSIG_ATOM_INTEGRITY_CHANGED, PROC_REF(on_integrity_change)) AddComponent(/datum/component/bane, affected_biotypes = MOB_PLANT, damage_multiplier = 1.5) + AddComponent(/datum/component/walking_aid) /obj/item/soulscythe/examine(mob/user) . = ..() diff --git a/code/game/objects/items/weaponry/melee/spear.dm b/code/game/objects/items/weaponry/melee/spear.dm index 39ca04c50173..a5b26d6ddecb 100644 --- a/code/game/objects/items/weaponry/melee/spear.dm +++ b/code/game/objects/items/weaponry/melee/spear.dm @@ -70,6 +70,7 @@ wield_callback = CALLBACK(src, PROC_REF(on_wield)), \ unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), \ ) + AddComponent(/datum/component/walking_aid) add_headpike_component() update_appearance() @@ -90,7 +91,7 @@ worn_icon_state = null return ..() -/obj/item/spear/suicide_act(mob/living/carbon/user) +/obj/item/spear/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) if (!do_after(user, 4 SECONDS, target = src)) return SHAME @@ -160,7 +161,7 @@ tip_overlay.color = tip_material.color . += tip_overlay -/obj/item/spear/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/spear/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) . = ..() if (icon_prefix != SPEAR_CUSTOM_TIP_PREFIX || !isinhands) return @@ -339,7 +340,7 @@ set_explosive(nade) return ..() -/obj/item/spear/explosive/suicide_act(mob/living/carbon/user) +/obj/item/spear/explosive/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) user.say("[war_cry]", forced="spear warcry") explosive.forceMove(user) diff --git a/code/game/objects/items/weaponry/ranged/flamethrower.dm b/code/game/objects/items/weaponry/ranged/flamethrower.dm index 3a8a302d858e..e131ec7f69c2 100644 --- a/code/game/objects/items/weaponry/ranged/flamethrower.dm +++ b/code/game/objects/items/weaponry/ranged/flamethrower.dm @@ -12,7 +12,7 @@ throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) resistance_flags = FIRE_PROOF trigger_guard = TRIGGER_GUARD_NORMAL light_system = OVERLAY_LIGHT @@ -230,8 +230,8 @@ var/datum/gas_mixture/tank_mix = ptank.return_air() var/datum/gas_mixture/air_transfer = tank_mix.remove_ratio(release_amount) - if(air_transfer.gases[/datum/gas/plasma]) - var/moles = air_transfer.gases[/datum/gas/plasma][MOLES] * 5 //Suffering + if(air_transfer.moles[/datum/gas/plasma]) + var/moles = air_transfer.moles[/datum/gas/plasma] * 5 //Suffering air_transfer.set_gas(/datum/gas/plasma, moles) target.assume_air(air_transfer) //Burn it based on transferred gas @@ -263,6 +263,7 @@ /obj/item/flamethrower/full create_full = TRUE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/flamethrower/full/tank create_with_tank = TRUE diff --git a/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm b/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm index 508bb2d3f725..49846e8ee718 100644 --- a/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm +++ b/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm @@ -24,7 +24,7 @@ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' armor_type = /datum/armor/item_pneumatic_cannon - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) /// The max weight of items that can fit into the cannon var/maxWeightClass = 20 /// The weight of items currently in the cannon @@ -132,25 +132,36 @@ balloon_alert(user, "output level set to [pressure_setting_to_text(pressure_setting)]") return TRUE -/obj/item/pneumatic_cannon/attackby(obj/item/W, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/item/pneumatic_cannon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(user.combat_mode) - return ..() - if(istype(W, /obj/item/tank/internals)) + return NONE + if(!isitem(tool)) + return NONE + + if(istype(tool, /obj/item/tank/internals)) if(needs_air == FALSE) - return - if(!tank) - var/obj/item/tank/internals/IT = W - if(IT.volume <= 3) - to_chat(user, span_warning("\The [IT] is too small for \the [src].")) - return - updateTank(W, 0, user) - else if(W.type == type) + return ITEM_INTERACT_BLOCKING + + if(tank) + return ITEM_INTERACT_BLOCKING + + if(astype(tool, /obj/item/tank/internals).volume <= 3) + to_chat(user, span_warning("\The [tool] is too small for \the [src].")) + return ITEM_INTERACT_BLOCKING + + updateTank(tool, FALSE, user) + return ITEM_INTERACT_SUCCESS + + if(tool.type == type) to_chat(user, span_warning("You're fairly certain that putting a pneumatic cannon inside another pneumatic cannon would cause a spacetime disruption.")) - else if(loadedWeightClass >= maxWeightClass) + return ITEM_INTERACT_BLOCKING + + if(loadedWeightClass >= maxWeightClass) to_chat(user, span_warning("\The [src] can't hold any more items!")) - else if(isitem(W)) - var/obj/item/IW = W - load_item(IW, user) + return ITEM_INTERACT_BLOCKING + + load_item(tool, user) + return ITEM_INTERACT_SUCCESS /obj/item/pneumatic_cannon/proc/can_load_item(obj/item/I, mob/user) if(!istype(I)) //Players can't load non items, this allows for admin varedit inserts. diff --git a/code/game/objects/items/weaponry/shields.dm b/code/game/objects/items/weaponry/shields.dm index 68c848f3fc2b..193c14ea5ed0 100644 --- a/code/game/objects/items/weaponry/shields.dm +++ b/code/game/objects/items/weaponry/shields.dm @@ -17,6 +17,7 @@ attack_verb_simple = list("shove", "bash") armor_type = /datum/armor/item_shield block_sound = 'sound/items/weapons/block_shield.ogg' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4.8) /// makes beam projectiles pass through the shield var/transparent = FALSE /// if the shield will break by sustaining damage @@ -186,17 +187,19 @@ slapcraft_recipes = slapcraft_recipe_list,\ ) */ -/obj/item/shield/riot/attackby(obj/item/attackby_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attackby_item, /obj/item/stack/sheet/mineral/titanium)) - if (atom_integrity >= max_integrity) - to_chat(user, span_warning("[src] is already in perfect condition.")) - return - var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = attackby_item - titanium_sheet.use(1) - atom_integrity = max_integrity - to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) - return - return ..() +/obj/item/shield/riot/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/sheet/mineral/titanium)) + return NONE + + if (atom_integrity >= max_integrity) + to_chat(user, span_warning("[src] is already in perfect condition.")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = tool + titanium_sheet.use(1) + atom_integrity = max_integrity + to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) + return ITEM_INTERACT_SUCCESS /obj/item/shield/riot/flash name = "strobe shield" @@ -204,7 +207,7 @@ icon_state = "flashshield" inhand_icon_state = "flashshield" var/obj/item/assembly/flash/handheld/embedded_flash = /obj/item/assembly/flash/handheld - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.1, /datum/material/glass= SHEET_MATERIAL_AMOUNT * 4.35) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4.8) /obj/item/shield/riot/flash/Initialize(mapload) . = ..() @@ -262,22 +265,26 @@ owner?.update_held_items() addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 0.5 SECONDS, (TIMER_UNIQUE|TIMER_OVERRIDE)) //.5 second delay so the inhands sprite finishes its anim since inhands don't support flick(). -/obj/item/shield/riot/flash/attackby(obj/item/attackby_item, mob/user) - if(istype(attackby_item, /obj/item/assembly/flash/handheld)) - var/obj/item/assembly/flash/handheld/flash = attackby_item - if(flash.burnt_out) - to_chat(user, span_warning("No sense replacing it with a broken bulb!")) - return - else - to_chat(user, span_notice("You begin to replace the bulb...")) - if(do_after(user, 2 SECONDS, target = user)) - if(QDELETED(flash) || flash.burnt_out) - return - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - qdel(embedded_flash) - flash.forceMove(src) - return - return ..() +/obj/item/shield/riot/flash/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/assembly/flash/handheld)) + return ..() + + var/obj/item/assembly/flash/handheld/flash = tool + if(flash.burnt_out) + to_chat(user, span_warning("No sense replacing it with a broken bulb!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You begin to replace the bulb...")) + if(!do_after(user, 2 SECONDS, target = user)) + return ITEM_INTERACT_BLOCKING + + if(QDELETED(flash) || flash.burnt_out) + return ITEM_INTERACT_BLOCKING + + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + qdel(embedded_flash) + flash.forceMove(src) + return ITEM_INTERACT_SUCCESS /obj/item/shield/riot/flash/emp_act(severity) . = ..() @@ -393,7 +400,7 @@ icon_state = "teleriot" inhand_icon_state = "teleriot" worn_icon_state = "teleriot" - custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT * 3.6, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2.7, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 1.8) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2) slot_flags = null force = 3 throwforce = 3 @@ -459,17 +466,19 @@ shield_break_leftover = /obj/item/stack/rods/ten armor_type = /datum/armor/item_shield/ballistic -/obj/item/shield/ballistic/attackby(obj/item/attackby_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attackby_item, /obj/item/stack/sheet/mineral/titanium)) - if (atom_integrity >= max_integrity) - to_chat(user, span_warning("[src] is already in perfect condition.")) - return - var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = attackby_item - titanium_sheet.use(1) - atom_integrity = max_integrity - to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) - return - return ..() +/obj/item/shield/ballistic/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/sheet/mineral/titanium)) + return NONE + + if (atom_integrity >= max_integrity) + to_chat(user, span_warning("[src] is already in perfect condition.")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = tool + titanium_sheet.use(1) + atom_integrity = max_integrity + to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) + return ITEM_INTERACT_SUCCESS /datum/armor/item_shield/improvised melee = 40 @@ -481,7 +490,7 @@ desc = "A crude shield made out of several sheets of iron taped together, not very durable." icon_state = "improvised" inhand_icon_state = "improvised" - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) max_integrity = 35 shield_break_leftover = /obj/item/stack/rods/two armor_type = /datum/armor/item_shield/improvised diff --git a/code/game/objects/items/wind_turbine.dm b/code/game/objects/items/wind_turbine.dm index b713c3acd5ee..cdbba2cbba08 100644 --- a/code/game/objects/items/wind_turbine.dm +++ b/code/game/objects/items/wind_turbine.dm @@ -243,31 +243,33 @@ update_appearance() return ..() -/obj/item/portable_wind_turbine/attackby(obj/item/attacking_item, mob/user, params) - if(istype(attacking_item, /obj/item/stock_parts/capacitor)) +/obj/item/portable_wind_turbine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stock_parts/capacitor)) if (cap) balloon_alert(user, "already has a capacitor!") - return TRUE - user.transferItemToLoc(attacking_item, src) - cap = attacking_item - balloon_alert(user, "inserted the [attacking_item]") - return TRUE - if(!is_type_in_typecache(attacking_item, allowed_devices)) - return ..() + return ITEM_INTERACT_BLOCKING + user.transferItemToLoc(tool, src) + cap = tool + balloon_alert(user, "inserted the [tool]") + return ITEM_INTERACT_SUCCESS + + if(!is_type_in_typecache(tool, allowed_devices)) + return NONE + if(isnull(cap)) balloon_alert(user, "no capacitor inserted!") - return TRUE + return ITEM_INTERACT_BLOCKING if(charging) balloon_alert(user, "already charging something!") - return TRUE - if(istype(attacking_item, /obj/item/gun/energy)) - var/obj/item/gun/energy/energy_gun = attacking_item + return ITEM_INTERACT_BLOCKING + if(istype(tool, /obj/item/gun/energy)) + var/obj/item/gun/energy/energy_gun = tool if(!energy_gun.can_charge) balloon_alert(user, "not rechargable!") - return TRUE - user.transferItemToLoc(attacking_item, src) - charging = attacking_item - return TRUE + return ITEM_INTERACT_BLOCKING + user.transferItemToLoc(tool, src) + charging = tool + return ITEM_INTERACT_SUCCESS /obj/item/portable_wind_turbine/attack_hand(mob/user, list/modifiers) if(loc == user || (istype(loc, /turf) && !isnull(charging))) @@ -345,7 +347,7 @@ if (istype(charging, /obj/item/melee/baton/security/)) . += mutable_appearance(icon, "baton") -/obj/item/portable_wind_turbine/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/portable_wind_turbine/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if (isinhands) return diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 3db7bc1c0791..6cc35616c2ac 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -46,6 +46,8 @@ /// The sound this obj makes when something is unbuckled from it var/unbuckle_sound = null + var/generate_map_preview = FALSE + uses_integrity = TRUE /obj/vv_edit_var(vname, vval) diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 930e1f61994c..09a765dee11c 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -429,11 +429,11 @@ // TECHNICALLY you could put non-facehuggers in the child var if(istype(child)) if(kill) - child.Die() + child.die() else for(var/mob/M in range(1,src)) if(CanHug(M)) - child.Leap(M) + child.leap_to(M) break /obj/structure/alien/egg/Exited(atom/movable/gone, direction) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index c286b7fa2c8d..423cf31e8aa9 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -127,6 +127,7 @@ elevation = 0 buckle_sound = SFX_SEATBELT_BUCKLE unbuckle_sound = SFX_SEATBELT_UNBUCKLE + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.7, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.7) /// The item it spawns when it's folded up. var/foldable_type @@ -208,26 +209,28 @@ . += mutable_appearance(icon, "brakes_down") . += emissive_appearance(icon, "brakes_down", src, alpha = src.alpha) -/obj/structure/bed/medical/emergency/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/emergency_bed/silicon)) - var/obj/item/emergency_bed/silicon/silicon_bed = item - if(silicon_bed.loaded) - to_chat(user, span_warning("You already have a medical bed docked!")) - return +/obj/structure/bed/medical/emergency/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/emergency_bed/silicon)) + return NONE + var/obj/item/emergency_bed/silicon/silicon_bed = tool + if(silicon_bed.loaded) + to_chat(user, span_warning("You already have a medical bed docked!")) + return ITEM_INTERACT_BLOCKING - if(has_buckled_mobs()) - if(buckled_mobs.len > 1) - unbuckle_all_mobs() - user.visible_message(span_notice("[user] unbuckles all creatures from [src].")) - else - user_unbuckle_mob(buckled_mobs[1],user) - else - silicon_bed.loaded = src - forceMove(silicon_bed) - user.visible_message(span_notice("[user] collects [src]."), span_notice("You collect [src].")) - return TRUE - else - return ..() + if(has_buckled_mobs()) + if(buckled_mobs.len == 1) + user_unbuckle_mob(buckled_mobs[1],user) + return ITEM_INTERACT_SUCCESS + + unbuckle_all_mobs() + user.visible_message(span_notice("[user] unbuckles all creatures from [src].")) + return ITEM_INTERACT_SUCCESS + + + silicon_bed.loaded = src + forceMove(silicon_bed) + user.visible_message(span_notice("[user] collects [src]."), span_notice("You collect [src].")) + return ITEM_INTERACT_SUCCESS /obj/structure/bed/medical/emergency/attack_hand_secondary(mob/user, list/modifiers) . = ..() @@ -253,21 +256,22 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' w_class = WEIGHT_CLASS_NORMAL // No more excuses, stop getting blood everywhere + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.7, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.7) -/obj/item/emergency_bed/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/emergency_bed/silicon)) - var/obj/item/emergency_bed/silicon/silicon_bed = item - if(silicon_bed.loaded) - to_chat(user, span_warning("[silicon_bed] already has a roller bed loaded!")) - return +/obj/item/emergency_bed/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/emergency_bed/silicon)) + return NONE - user.visible_message(span_notice("[user] loads [src]."), span_notice("You load [src] into [silicon_bed].")) - silicon_bed.loaded = new/obj/structure/bed/medical/emergency(silicon_bed) - qdel(src) //"Load" - return + var/obj/item/emergency_bed/silicon/silicon_bed = tool + if(silicon_bed.loaded) + to_chat(user, span_warning("[silicon_bed] already has a roller bed loaded!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] loads [src]."), span_notice("You load [src] into [silicon_bed].")) + silicon_bed.loaded = new/obj/structure/bed/medical/emergency(silicon_bed) + qdel(src) //"Load" + return ITEM_INTERACT_SUCCESS - else - return ..() /obj/item/emergency_bed/attack_self(mob/user) deploy_bed(user, user.loc) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 9c667f89a0ac..aa43e3c5bae6 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -418,7 +418,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) . = ..() AddElement(/datum/element/cuffable_item) -/obj/item/chair/suicide_act(mob/living/carbon/user) +/obj/item/chair/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins hitting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src,hitsound,50,TRUE) return BRUTELOSS diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 58196a173da6..7f6c04cda708 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -393,7 +393,7 @@ LINEN BINS add_overlay(gondola_mouth) add_overlay(gondola_eyes) -/obj/item/bedsheet/gondola/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/bedsheet/gondola/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += mutable_appearance(icon_file, gondola_mouth) diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm index 669ece6f35cf..47d49acaab64 100644 --- a/code/game/objects/structures/bonfire.dm +++ b/code/game/objects/structures/bonfire.dm @@ -41,12 +41,12 @@ QDEL_NULL(burning_loop) . = ..() -/obj/structure/bonfire/attackby(obj/item/used_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(used_item, /obj/item/stack/rods) && !can_buckle && !grill) - var/obj/item/stack/rods/rods = used_item +/obj/structure/bonfire/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/rods) && !can_buckle && !grill) + var/obj/item/stack/rods/rods = tool var/choice = tgui_alert(user, "What would you like to construct?", "Bonfire", list("Stake","Grill")) if(isnull(choice)) - return + return ITEM_INTERACT_BLOCKING rods.use(1) switch(choice) if("Stake") @@ -56,28 +56,36 @@ var/mutable_appearance/rod_underlay = mutable_appearance('icons/obj/service/hydroponics/equipment.dmi', "bonfire_rod") rod_underlay.pixel_z = 16 underlays += rod_underlay + return ITEM_INTERACT_SUCCESS + if("Grill") grill = TRUE to_chat(user, span_notice("You add a grill to \the [src].")) add_overlay("bonfire_grill") - else - return ..() - if(used_item.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + return ITEM_INTERACT_SUCCESS + + + if(tool.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) start_burning() + return ITEM_INTERACT_SUCCESS + if(grill) - if(istype(used_item, /obj/item/melee/roastingstick)) - return FALSE - if(!user.combat_mode && !(used_item.item_flags & ABSTRACT)) - if(user.temporarilyRemoveItemFromInventory(used_item)) - used_item.forceMove(get_turf(src)) - //Center the icon where the user clicked. - if(!LAZYACCESS(modifiers, ICON_X) || !LAZYACCESS(modifiers, ICON_Y)) - return - //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - used_item.pixel_x = used_item.base_pixel_x + clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(ICON_SIZE_X/2), ICON_SIZE_X/2) - used_item.pixel_y = used_item.base_pixel_y + clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(ICON_SIZE_Y/2), ICON_SIZE_Y/2) - else - return ..() + if(istype(tool, /obj/item/melee/roastingstick)) + return ITEM_INTERACT_BLOCKING + if(user.combat_mode || (tool.item_flags & ABSTRACT)) + return NONE + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + tool.forceMove(get_turf(src)) + //Center the icon where the user clicked. + if(!LAZYACCESS(modifiers, ICON_X) || !LAZYACCESS(modifiers, ICON_Y)) + return ITEM_INTERACT_SUCCESS + //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) + tool.pixel_x = tool.base_pixel_x + clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(ICON_SIZE_X/2), ICON_SIZE_X/2) + tool.pixel_y = tool.base_pixel_y + clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(ICON_SIZE_Y/2), ICON_SIZE_Y/2) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/bonfire/attack_hand(mob/user, list/modifiers) . = ..() @@ -99,10 +107,8 @@ /obj/structure/bonfire/proc/check_oxygen() if(isopenturf(loc)) var/turf/open/bonfire_turf = loc - if(bonfire_turf.air) - var/loc_gases = bonfire_turf.air.gases - if(loc_gases[/datum/gas/oxygen] && loc_gases[/datum/gas/oxygen][MOLES] >= 5) - return TRUE + if(bonfire_turf.air?.moles[/datum/gas/oxygen] >= 5) + return TRUE return FALSE /obj/structure/bonfire/proc/start_burning() diff --git a/code/game/objects/structures/cannons/cannon.dm b/code/game/objects/structures/cannons/cannon.dm index 383e35172093..a276bb022f78 100644 --- a/code/game/objects/structures/cannons/cannon.dm +++ b/code/game/objects/structures/cannons/cannon.dm @@ -54,62 +54,70 @@ default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS -/obj/structure/cannon/attackby(obj/item/used_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/cannon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(charge_ignited) balloon_alert(user, "it's gonna fire!") - return - var/ignition_message = used_item.ignition_effect(src, user) + return ITEM_INTERACT_BLOCKING - if(istype(used_item, /obj/item/stack/cannonball)) + if(istype(tool, /obj/item/stack/cannonball)) if(loaded_cannonball) balloon_alert(user, "already loaded!") - else - var/obj/item/stack/cannonball/cannoneers_balls = used_item - loaded_cannonball = new cannoneers_balls.type(src, 1) - loaded_cannonball.copy_evidences(cannoneers_balls) - balloon_alert(user, "loaded a [cannoneers_balls.singular_name]") - cannoneers_balls.use(1, transfer = TRUE) - return + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/cannonball/cannoneers_balls = tool + loaded_cannonball = new cannoneers_balls.type(src, 1) + loaded_cannonball.copy_evidences(cannoneers_balls) + balloon_alert(user, "loaded a [cannoneers_balls.singular_name]") + cannoneers_balls.use(1, transfer = TRUE) + return ITEM_INTERACT_SUCCESS - else if(ignition_message) + var/ignition_message = tool.ignition_effect(src, user) + + if(ignition_message) if(!reagents.has_reagent(/datum/reagent/gunpowder,charge_size) && !reagents.has_reagent(/datum/reagent/fuel,charge_size)) balloon_alert(user, "needs [reagents.maximum_volume]u of charge!") - return + return ITEM_INTERACT_BLOCKING + visible_message(ignition_message) user.log_message("fired a cannon", LOG_ATTACK) log_game("[key_name(user)] fired a cannon in [AREACOORD(src)]") addtimer(CALLBACK(src, PROC_REF(fire)), fire_delay) charge_ignited = TRUE - return + return ITEM_INTERACT_SUCCESS - else if(is_reagent_container(used_item)) - var/obj/item/reagent_containers/powder_keg = used_item + if(is_reagent_container(tool)) + var/obj/item/reagent_containers/powder_keg = tool if(!powder_keg.is_open_container()) - return ..() + return NONE // reagent containers transfer elsewhere in the chain, be free + if(istype(powder_keg, /obj/item/rag)) - return ..() + return NONE if(!powder_keg.reagents.total_volume) balloon_alert(user, "[powder_keg] is empty!") - return + return ITEM_INTERACT_BLOCKING + if(reagents.total_volume == reagents.maximum_volume) balloon_alert(user, "[src] is full!") - return + return ITEM_INTERACT_BLOCKING + var/has_enough_gunpowder = powder_keg.reagents.has_reagent(/datum/reagent/gunpowder, charge_size) var/has_enough_alt_fuel = powder_keg.reagents.has_reagent(/datum/reagent/fuel, charge_size) if(!has_enough_gunpowder && !has_enough_alt_fuel) balloon_alert(user, "[powder_keg] needs 15u of charge to load!") to_chat(user, span_warning("[powder_keg] doesn't have at least 15u of gunpowder to fill [src]!")) - return + return ITEM_INTERACT_BLOCKING + if(has_enough_gunpowder) powder_keg.reagents.trans_to(src, charge_size, target_id = /datum/reagent/gunpowder) balloon_alert(user, "[src] loaded with gunpowder") - return - if(has_enough_alt_fuel) - powder_keg.reagents.trans_to(src, charge_size, target_id = /datum/reagent/fuel) - balloon_alert(user, "[src] loaded with welding fuel") - return - ..() + return ITEM_INTERACT_SUCCESS + + //if(has_enough_alt_fuel) but we already know it does if we're here + powder_keg.reagents.trans_to(src, charge_size, target_id = /datum/reagent/fuel) + balloon_alert(user, "[src] loaded with welding fuel") + return ITEM_INTERACT_SUCCESS + return NONE /obj/structure/cannon/trash name = "trash cannon" @@ -117,7 +125,7 @@ icon_state = "garbagegun" anchored = FALSE anchorable_cannon = FALSE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11.65, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) var/fires_before_deconstruction = 5 /obj/structure/cannon/trash/fire() diff --git a/code/game/objects/structures/cannons/cannonballs.dm b/code/game/objects/structures/cannons/cannonballs.dm index fca8eb7e901d..a9808de5c497 100644 --- a/code/game/objects/structures/cannons/cannonballs.dm +++ b/code/game/objects/structures/cannons/cannonballs.dm @@ -71,7 +71,7 @@ base_icon_state = "trashballs" merge_type = /obj/item/stack/cannonball/trashball projectile_type = /obj/projectile/bullet/cannonball/trashball - custom_materials = list(/datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/stack/cannonball/trashball/four amount = 4 diff --git a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm index c128511fff27..09f9c06f707f 100644 --- a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm +++ b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm @@ -282,11 +282,7 @@ fire_delay = 1 shot_delay = 2 firing_shakes_camera = FALSE - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.25, - /datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.29 - ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45) debris = list( /obj/item/stack/cable_coil = 4, /obj/item/stock_parts/micro_laser = 1, diff --git a/code/game/objects/structures/construction_console/construction_console.dm b/code/game/objects/structures/construction_console/construction_console.dm index 249860c99b62..16b070f2d9f7 100644 --- a/code/game/objects/structures/construction_console/construction_console.dm +++ b/code/game/objects/structures/construction_console/construction_console.dm @@ -14,6 +14,7 @@ circuit = /obj/item/circuitboard/computer/base_construction off_action = /datum/action/innate/camera_off/base_construction jump_action = null + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/base_construction") icon_screen = "mining" icon_keyboard = "rd_key" light_color = LIGHT_COLOR_PINK @@ -65,12 +66,12 @@ eyeobj = new /mob/eye/camera/remote/base_construction(spawn_spot, src) return TRUE -/obj/machinery/computer/camera_advanced/base_construction/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/computer/camera_advanced/base_construction/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //If we have an internal RCD, we can refill it by slapping the console with some materials - if(internal_rcd && (istype(W, /obj/item/rcd_ammo) || istype(W, /obj/item/stack/sheet))) - internal_rcd.attackby(W, user, modifiers) - else - return ..() + if(!internal_rcd || (!istype(tool, /obj/item/rcd_ammo) && !istype(tool, /obj/item/stack/sheet))) + return NONE + internal_rcd.item_interaction(user, tool, modifiers) + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/camera_advanced/base_construction/Destroy() qdel(internal_rcd) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 0c27b6f3767a..c02dd25fbe7f 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -695,13 +695,123 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) req_access = accesses req_one_access = null -/obj/structure/closet/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(user in src) - return - if(src.tool_interact(W,user)) - return 1 // No afterattack - else - return ..() +/obj/structure/closet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user in contents) + return ITEM_INTERACT_BLOCKING // can't even attack it from inside + + if(!opened && istype(tool, /obj/item/airlock_painter)) + if(!length(paint_jobs)) + return ITEM_INTERACT_BLOCKING + + var/choice = tgui_input_list(user, "Set Closet Paintjob", "Paintjob", paint_jobs) + if(isnull(choice)) + return ITEM_INTERACT_BLOCKING + + var/obj/item/airlock_painter/painter = tool + if(!painter.use_paint(user)) + return ITEM_INTERACT_BLOCKING + + var/list/paint_job = paint_jobs[choice] + icon_state = paint_job["icon_state"] + base_icon_state = icon_state + icon_door = paint_job["icon_door"] + + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/electronics/airlock) && can_install_airlock_electronics(user)) + user.visible_message(span_notice("[user] installs the electronics into the [src]."),\ + span_notice("You start to install electronics into the [src]...")) + + if(!do_after(user, 4 SECONDS, target = src, extra_checks = CALLBACK(src, PROC_REF(can_install_airlock_electronics), user))) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + inherit_airlock_electronics_access(tool) + qdel(tool) + secure = TRUE + balloon_alert(user, "electronics installed") + + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stock_parts/card_reader) && can_install_card_reader(user)) + user.visible_message(span_notice("[user] is installing a card reader."), + span_notice("You begin installing the card reader.")) + + if(!do_after(user, 4 SECONDS, target = src, extra_checks = CALLBACK(src, PROC_REF(can_install_card_reader), user))) + return ITEM_INTERACT_BLOCKING + + qdel(tool) + card_reader_installed = TRUE + + balloon_alert(user, "card reader installed") + return ITEM_INTERACT_SUCCESS + + var/obj/item/card/id/card = tool.GetID() + + if(secure && !broken && card_reader_installed && !locked && !opened && !access_locked && card) + var/num_choices = length(access_choices) + if(!num_choices) + return ITEM_INTERACT_BLOCKING + + var/choice + if(num_choices == 1) + choice = access_choices[1] + else + choice = tgui_input_list(user, "Set Access Type", "Access Type", access_choices) + if(isnull(choice)) + return ITEM_INTERACT_BLOCKING + + id_card = null + switch(choice) + if("Personal") //only the player who swiped their id has access. + id_card = WEAKREF(card) + name = "[card.registered_name]'s locker" + desc += " It has been ID locked to [card.registered_name]." + if("Job") //anyone who has the same access permissions as this id has access. Does NOT apply to the whole department. + name = "[card.assignment]'s locker" + desc += " It has been access locked to [card.assignment]s." + set_access(card.GetAccess()) + if("None") //free for all + name = initial(name) + desc = initial(desc) + req_access = list() + req_one_access = null + set_access(list()) + + if(!isnull(id_card)) + balloon_alert(user, "now owned by [card.registered_name]") + else + balloon_alert(user, "set to [choice]") + return ITEM_INTERACT_SUCCESS + + if(opened) + if(istype(tool, cutting_tool) && tool.tool_behaviour != TOOL_WELDER) // for example cardboard box is cut with wirecutters + user.visible_message(span_notice("[user] cut apart \the [src]."), \ + span_notice("You cut \the [src] apart with \the [tool].")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + + if (user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!user.transfer_item_to_turf(tool, drop_location())) // so we put in unlit welder too + return ITEM_INTERACT_BLOCKING + + return ITEM_INTERACT_SUCCESS + + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + if(!card) + return NONE + if(opened) + return ITEM_INTERACT_BLOCKING + togglelock(user) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/closet/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) if (attack_hand(user, modifiers)) @@ -766,172 +876,96 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) return TRUE -/// returns TRUE if attackBy call shouldn't be continued (because tool was used/closet was of wrong type), FALSE if otherwise -/obj/structure/closet/proc/tool_interact(obj/item/weapon, mob/living/user) - . = TRUE - var/obj/item/card/id/id = null - if(!opened && istype(weapon, /obj/item/airlock_painter)) - if(!length(paint_jobs)) - return - var/choice = tgui_input_list(user, "Set Closet Paintjob", "Paintjob", paint_jobs) - if(isnull(choice)) - return - - var/obj/item/airlock_painter/painter = weapon - if(!painter.use_paint(user)) - return - var/list/paint_job = paint_jobs[choice] - icon_state = paint_job["icon_state"] - base_icon_state = icon_state - icon_door = paint_job["icon_door"] - - update_appearance() - - else if(istype(weapon, /obj/item/electronics/airlock) && can_install_airlock_electronics(user)) - user.visible_message(span_notice("[user] installs the electronics into the [src]."),\ - span_notice("You start to install electronics into the [src]...")) +/obj/structure/closet/screwdriver_act(mob/living/user, obj/item/tool) + if(user in contents) + return ITEM_INTERACT_BLOCKING - if(!do_after(user, 4 SECONDS, target = src, extra_checks = CALLBACK(src, PROC_REF(can_install_airlock_electronics), user))) - return - if(!user.transferItemToLoc(weapon, src)) - return + if(!can_unscrew_airlock_electronics(user)) + return NONE - inherit_airlock_electronics_access(weapon) - qdel(weapon) - secure = TRUE - balloon_alert(user, "electronics installed") + user.visible_message(span_notice("[user] begins to remove the electronics from the [src]."),\ + span_notice("You begin to remove the electronics from the [src]...")) - update_appearance() + if (!tool.use_tool(src, user, 4 SECONDS, volume = 50, extra_checks = CALLBACK(src, PROC_REF(can_unscrew_airlock_electronics), user))) + return ITEM_INTERACT_BLOCKING - else if(weapon.tool_behaviour == TOOL_SCREWDRIVER && can_unscrew_airlock_electronics(user)) - user.visible_message(span_notice("[user] begins to remove the electronics from the [src]."),\ - span_notice("You begin to remove the electronics from the [src]...")) + var/obj/item/electronics/airlock/airlock_electronics = new(drop_location()) + if(length(req_one_access)) + airlock_electronics.one_access = TRUE + airlock_electronics.accesses = req_one_access + else + airlock_electronics.accesses = req_access - if (!weapon.use_tool(src, user, 40, volume = 50, extra_checks = CALLBACK(src, PROC_REF(can_unscrew_airlock_electronics), user))) - return + req_access = list() + req_one_access = null + id_card = null + secure = FALSE + balloon_alert(user, "electronics removed") - var/obj/item/electronics/airlock/airlock_electronics = new(drop_location()) - if(length(req_one_access)) - airlock_electronics.one_access = TRUE - airlock_electronics.accesses = req_one_access - else - airlock_electronics.accesses = req_access + update_appearance() + return ITEM_INTERACT_SUCCESS - req_access = list() - req_one_access = null - id_card = null - secure = FALSE - balloon_alert(user, "electronics removed") +/obj/structure/closet/crowbar_act(mob/living/user, obj/item/tool) + if(user in contents) + return ITEM_INTERACT_BLOCKING - update_appearance() + if(!can_pryout_card_reader(user)) + return NONE - else if(istype(weapon, /obj/item/stock_parts/card_reader) && can_install_card_reader(user)) - user.visible_message(span_notice("[user] is installing a card reader."), - span_notice("You begin installing the card reader.")) + user.visible_message(span_notice("[user] begins to pry the card reader out from [src]."),\ + span_notice("You begin to pry the card reader out from [src]...")) - if(!do_after(user, 4 SECONDS, target = src, extra_checks = CALLBACK(src, PROC_REF(can_install_card_reader), user))) - return + if(!tool.use_tool(src, user, 4 SECONDS, extra_checks = CALLBACK(src, PROC_REF(can_pryout_card_reader), user))) + return ITEM_INTERACT_BLOCKING - qdel(weapon) - card_reader_installed = TRUE + new /obj/item/stock_parts/card_reader(drop_location()) + card_reader_installed = FALSE - balloon_alert(user, "card reader installed") + balloon_alert(user, "card reader removed") + return ITEM_INTERACT_SUCCESS - else if(weapon.tool_behaviour == TOOL_CROWBAR && can_pryout_card_reader(user)) - user.visible_message(span_notice("[user] begins to pry the card reader out from [src]."),\ - span_notice("You begin to pry the card reader out from [src]...")) +/obj/structure/closet/welder_act(mob/living/user, obj/item/tool) + if(user in contents) + return ITEM_INTERACT_BLOCKING - if(!weapon.use_tool(src, user, 4 SECONDS, extra_checks = CALLBACK(src, PROC_REF(can_pryout_card_reader), user))) - return + if(opened && istype(tool, cutting_tool)) // not all of them take welders + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING - new /obj/item/stock_parts/card_reader(drop_location()) - card_reader_installed = FALSE + to_chat(user, span_notice("You begin cutting \the [src] apart...")) + if(!tool.use_tool(src, user, 4 SECONDS, volume=50)) + return ITEM_INTERACT_BLOCKING - balloon_alert(user, "card reader removed") + if(!opened) + return ITEM_INTERACT_BLOCKING - else if(secure && !broken && card_reader_installed && !locked && !opened && !access_locked && !isnull((id = weapon.GetID()))) - var/num_choices = length(access_choices) - if(!num_choices) - return + user.visible_message(span_notice("[user] slices apart \the [src]."), + span_notice("You cut \the [src] apart with \the [tool]."), + span_hear("You hear welding.")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS - var/choice - if(num_choices == 1) - choice = access_choices[1] - else - choice = tgui_input_list(user, "Set Access Type", "Access Type", access_choices) - if(isnull(choice)) - return + if(!can_weld_shut) + return NONE - id_card = null - switch(choice) - if("Personal") //only the player who swiped their id has access. - id_card = WEAKREF(id) - name = "[id.registered_name]'s locker" - desc += " It has been ID locked to [id.registered_name]." - if("Job") //anyone who has the same access permissions as this id has access. Does NOT apply to the whole department. - name = "[id.assignment]'s locker" - desc += " It has been access locked to [id.assignment]s." - set_access(id.GetAccess()) - if("None") //free for all - name = initial(name) - desc = initial(desc) - req_access = list() - req_one_access = null - set_access(list()) - - if(!isnull(id_card)) - balloon_alert(user, "now owned by [id.registered_name]") - else - balloon_alert(user, "set to [choice]") + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING - else if(opened) - if(istype(weapon, cutting_tool)) - if(weapon.tool_behaviour == TOOL_WELDER) - if(!weapon.tool_start_check(user, amount=1)) - return - - to_chat(user, span_notice("You begin cutting \the [src] apart...")) - if(weapon.use_tool(src, user, 40, volume=50)) - if(!opened) - return - user.visible_message(span_notice("[user] slices apart \the [src]."), - span_notice("You cut \the [src] apart with \the [weapon]."), - span_hear("You hear welding.")) - deconstruct(TRUE) - return - else // for example cardboard box is cut with wirecutters - user.visible_message(span_notice("[user] cut apart \the [src]."), \ - span_notice("You cut \the [src] apart with \the [weapon].")) - deconstruct(TRUE) - return - if (user.combat_mode) - return - if(user.transfer_item_to_turf(weapon, drop_location())) // so we put in unlit welder too - return + if(!tool.use_tool(src, user, 4 SECONDS, volume=50)) + return ITEM_INTERACT_BLOCKING - else if(weapon.tool_behaviour == TOOL_WELDER && can_weld_shut) - if(!weapon.tool_start_check(user, amount=1)) - return + if(opened) + return ITEM_INTERACT_BLOCKING - if(weapon.use_tool(src, user, 40, volume=50)) - if(opened) - return - welded = !welded - after_weld(welded) - user.visible_message(span_notice("[user] [welded ? "welds shut" : "unwelded"] \the [src]."), - span_notice("You [welded ? "weld" : "unwelded"] \the [src] with \the [weapon]."), - span_hear("You hear welding.")) - user.log_message("[welded ? "welded":"unwelded"] closet [src] with [weapon]", LOG_GAME) - update_appearance() + welded = !welded + after_weld(welded) + user.visible_message(span_notice("[user] [welded ? "welds shut" : "unwelded"] \the [src]."), + span_notice("You [welded ? "weld" : "unwelded"] \the [src] with \the [tool]."), + span_hear("You hear welding.")) + user.log_message("[welded ? "welded":"unwelded"] closet [src] with [tool]", LOG_GAME) + update_appearance() + return ITEM_INTERACT_SUCCESS - else if(!user.combat_mode || (weapon.item_flags & NOBLUDGEON)) - var/item_is_id = weapon.GetID() - if(!item_is_id) - return FALSE - if((item_is_id || !toggle(user)) && !opened) - togglelock(user) - else - return FALSE /obj/structure/closet/wrench_act_secondary(mob/living/user, obj/item/tool) if(!anchorable) @@ -1027,9 +1061,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) if(attack_hand(user)) return ITEM_INTERACT_BLOCKING -/obj/structure/closet/verb/verb_toggleopen() - set name = "Toggle Open" - set src in view(1) +GAME_VERB_SRC(/obj/structure/closet, verb_toggleopen, view(1), "Toggle Open", null) if(!usr.can_perform_action(src) || !isturf(loc)) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 64628e508b5a..fd1985cff6a2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -68,6 +68,7 @@ new /obj/item/reagent_containers/condiment/flour(src) new /obj/item/reagent_containers/condiment/rice(src) new /obj/item/reagent_containers/condiment/sugar(src) + new /obj/effect/spawner/holiday/powdered_ingredient(src) /obj/structure/closet/secure_closet/freezer/kitchen/all_access req_access = null @@ -84,6 +85,7 @@ new /obj/item/reagent_containers/condiment/soymilk(src) for(var/i in 1 to 2) new /obj/item/storage/fancy/egg_box(src) + new /obj/effect/spawner/holiday/liquid_ingredient(src) /obj/structure/closet/secure_closet/freezer/kitchen/mining req_access = null @@ -92,10 +94,16 @@ name = "meat fridge" req_access = list(ACCESS_KITCHEN) +/obj/structure/closet/secure_closet/freezer/meat/update_name() + name = check_holidays(VEGAN_DAY) ? "vegan fridge" : "meat fridge" + return ..() + /obj/structure/closet/secure_closet/freezer/meat/PopulateContents() ..() - for(var/i in 1 to 4) - new /obj/item/food/meat/slab/monkey(src) + if(!check_holidays(VEGAN_DAY)) + for(var/i in 1 to 4) + new /obj/item/food/meat/slab/monkey(src) + new /obj/effect/spawner/holiday/meat_ingredient(src) //this contains holiday specials (and vegan day stuff) /obj/structure/closet/secure_closet/freezer/meat/open locked = FALSE @@ -123,6 +131,7 @@ new /obj/item/reagent_containers/condiment/soymilk(src) for(var/i in 1 to 2) new /obj/item/storage/fancy/egg_box(src) + new /obj/effect/spawner/holiday/liquid_ingredient(src) /obj/structure/closet/secure_closet/freezer/fridge/all_access req_access = null 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 56c61bb39c56..f1fd3166e434 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -202,14 +202,25 @@ . = ..() . += span_notice("Right-click with a Security-level ID to reset [src]'s registered ID.") -/obj/structure/closet/secure_closet/brig/genpop/attackby(obj/item/card/id/advanced/prisoner/user_id, mob/user, list/modifiers, list/attack_modifiers) - if(!secure || !istype(user_id)) +/obj/structure/closet/secure_closet/brig/genpop/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!secure || !istype(tool, /obj/item/card/id)) return ..() - if(isnull(id_card)) - say("Prisoner ID linked to locker.") - id_card = WEAKREF(user_id) - name = "genpop storage locker - [user_id.registered_name]" + if(!isnull(id_card)) + return ITEM_INTERACT_BLOCKING + + say("Prisoner ID linked to locker.") + id_card = WEAKREF(tool) + name = "genpop storage locker - [astype(tool, /obj/item/card/id/advanced/prisoner).registered_name]" + return ITEM_INTERACT_SUCCESS + +/obj/structure/closet/secure_closet/brig/genpop/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + var/list/id_access = astype(tool, /obj/item/card/id).GetAccess() + if(!id_card || !(ACCESS_BRIG in id_access)) + return NONE + + clear_access() + return ITEM_INTERACT_SUCCESS /obj/structure/closet/secure_closet/brig/genpop/proc/clear_access() say("Authorized ID detected. Unlocking locker and resetting ID.") @@ -218,16 +229,6 @@ name = initial(name) update_appearance() -/obj/structure/closet/secure_closet/brig/genpop/attackby_secondary(obj/item/card/id/advanced/used_id, mob/user, list/modifiers, list/attack_modifiers) - if(!secure || !istype(used_id)) - return ..() - - var/list/id_access = used_id.GetAccess() - if(!isnull(id_card) && (ACCESS_BRIG in id_access)) - clear_access() - - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - /obj/structure/closet/secure_closet/evidence anchored = TRUE name = "secure evidence closet" diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 1135e1ec449c..a7c5a929581b 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -236,11 +236,17 @@ base_icon_state = "medicalcrate" /obj/structure/closet/crate/deforest - name = "deforest medical crate" + name = "\improper DeForest Medical crate" desc = "A DeForest brand crate of medical supplies." icon_state = "deforest" base_icon_state = "deforest" +/obj/structure/closet/crate/interdyne_normal + name = "\improper Interdyne Pharmaceutics crate" + desc = "An Interdyne Pharmaceutics brand crate. Probably contains helpful chemicals? Hopefully contains helpful chemicals." + icon_state = "interdynecrate" + base_icon_state = "interdynecrate" + /obj/structure/closet/crate/medical/department icon_state = "medical" base_icon_state = "medical" @@ -444,13 +450,13 @@ icon_state = "gold" base_icon_state = "gold" -/obj/structure/closet/crate/goldcrate/PopulateContents() +//subtype that comes with roundstart items. +/obj/structure/closet/crate/goldcrate/stocked/PopulateContents() ..() new /obj/item/storage/belt/champion(src) -/obj/structure/closet/crate/goldcrate/populate_contents_immediate() +/obj/structure/closet/crate/goldcrate/stocked/populate_contents_immediate() . = ..() - for(var/i in 1 to 3) new /obj/item/stack/sheet/mineral/gold(src, 1, FALSE) diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index 18f2aaf82194..8e2885de1e0f 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -36,17 +36,15 @@ . += base_icon_state + "_some" */ -/obj/structure/closet/crate/bin/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/storage/bag/trash) && !opened) - var/obj/item/storage/bag/trash/T = W - to_chat(user, span_notice("You fill the bag.")) - for(var/obj/item/O in src) - T.atom_storage?.attempt_insert(O, user, TRUE) - T.update_appearance() - do_animate() - return TRUE - else +/obj/structure/closet/crate/bin/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/storage/bag/trash) || !opened) return ..() + var/obj/item/storage/bag/trash/garbage_bag = tool + to_chat(user, span_notice("You fill the bag.")) + for(var/obj/item/garbage in src) + garbage_bag.atom_storage?.attempt_insert(garbage, user, TRUE) + do_animate() + return ITEM_INTERACT_SUCCESS /obj/structure/closet/crate/bin/proc/do_animate() playsound(loc, open_sound, 15, TRUE, -3) diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm index 052ca9cffb63..34738509dbbc 100644 --- a/code/game/objects/structures/crates_lockers/crates/critter.dm +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -58,3 +58,24 @@ return tank.return_analyzable_air() else return null + +/obj/structure/closet/crate/critter/stasis + name = "stasis critter crate" + desc = "A crate designed for safe transport of specific animals in stasis to prevent them from aging or starving." + var/stasis_sealed = TRUE + +/obj/structure/closet/crate/critter/stasis/Exited(atom/movable/gone, direction) + . = ..() + if(HAS_TRAIT(gone, TRAIT_STASIS)) + remove_stasis(gone) + +/obj/structure/closet/crate/critter/stasis/proc/remove_stasis(mob/living/target) + target.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_CRATE_EFFECT) + +/obj/structure/closet/crate/critter/stasis/after_open(mob/living/user, force) + . = ..() + if(!stasis_sealed) + return + stasis_sealed = FALSE + do_sparks(3, FALSE, src) + to_chat(user, span_warning("[src] one-use stasis mechanism has been triggered! It will not work again.")) diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm index 24e5a6acbe1f..508b8d714b6c 100644 --- a/code/game/objects/structures/crates_lockers/crates/large.dm +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -32,32 +32,31 @@ else to_chat(user, span_warning("You need a crowbar to pry this open!")) -/obj/structure/closet/crate/large/attackby(obj/item/W, mob/living/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_CROWBAR) - if(manifest) - tear_manifest(user) - if(!open(user)) - return FALSE - user.visible_message(span_notice("[user] pries \the [src] open."), \ - span_notice("You pry open \the [src]."), \ - span_hear("You hear splitting wood.")) - playsound(src.loc, 'sound/items/weapons/slashmiss.ogg', 75, TRUE) +/obj/structure/closet/crate/large/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK //Stops it from opening and turning invisible when items are used on it. - var/turf/T = get_turf(src) - for(var/i in 1 to material_drop_amount) - new material_drop(src) - for(var/atom/movable/AM in contents) - AM.forceMove(T) - qdel(src) + to_chat(user, span_warning("You need a crowbar to pry this open!")) + return ITEM_INTERACT_BLOCKING //Just stop. Do nothing. Don't turn into an invisible sprite. Don't open like a locker. + //The large crate has no non-attack interactions other than the crowbar, anyway. - else - if(user.combat_mode) //Only return ..() if intent is harm, otherwise return 0 or just end it. - return ..() //Stops it from opening and turning invisible when items are used on it. +/obj/structure/closet/crate/large/crowbar_act(mob/living/user, obj/item/tool) + if(manifest) + tear_manifest(user) + if(!open(user)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] pries \the [src] open."), \ + span_notice("You pry open \the [src]."), \ + span_hear("You hear splitting wood.")) + playsound(src.loc, 'sound/items/weapons/slashmiss.ogg', 75, TRUE) - else - to_chat(user, span_warning("You need a crowbar to pry this open!")) - return FALSE //Just stop. Do nothing. Don't turn into an invisible sprite. Don't open like a locker. - //The large crate has no non-attack interactions other than the crowbar, anyway. + var/turf/dump = get_turf(src) + for(var/i in 1 to material_drop_amount) + new material_drop(src) + for(var/atom/movable/stuff in contents) + stuff.forceMove(dump) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/closet/crate/large/hats/PopulateContents() ..() diff --git a/code/game/objects/structures/crates_lockers/crates/syndicrate.dm b/code/game/objects/structures/crates_lockers/crates/syndicrate.dm index 45ffc987a0e0..f1f6ce6863e4 100644 --- a/code/game/objects/structures/crates_lockers/crates/syndicrate.dm +++ b/code/game/objects/structures/crates_lockers/crates/syndicrate.dm @@ -43,17 +43,18 @@ qdel(src) ///ensures that the syndicrate can only be unlocked by opening it with a syndicrate_key -/obj/structure/closet/crate/secure/syndicrate/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(item, /obj/item/syndicrate_key) || created_items) +/obj/structure/closet/crate/secure/syndicrate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/syndicrate_key) || created_items) return ..() created_items = TRUE for(var/item_path in unlock_contents) new item_path(src) unlock_contents = list() - qdel(item) + qdel(tool) to_chat(user, span_notice("You twist the key into both locks at once, opening the crate.")) playsound(src, 'sound/machines/airlock/boltsup.ogg', 50, vary = FALSE) togglelock(user) + return ITEM_INTERACT_SUCCESS /obj/structure/closet/crate/secure/syndicrate/togglelock(mob/living/user, silent) if(broken || !created_items) @@ -67,8 +68,8 @@ ) update_appearance() -/obj/structure/closet/crate/secure/syndicrate/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +/obj/structure/closet/crate/secure/syndicrate/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + return ITEM_INTERACT_BLOCKING /obj/item/syndicrate_key name = "syndicrate key" diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index ec864ca5a86f..fea411efac0e 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -42,11 +42,11 @@ icon_state = "[icon_type]-[open ? "open" : "closed"]" return ..() -/obj/structure/curtain/attackby(obj/item/W, mob/user) - if (istype(W, /obj/item/toy/crayon)) - color = tgui_color_picker(user, "", "Choose Color", color) - else - return ..() +/obj/structure/curtain/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/toy/crayon)) + return NONE + color = tgui_color_picker(user, "", "Choose Color", color) + return ITEM_INTERACT_SUCCESS /obj/structure/curtain/wrench_act(mob/living/user, obj/item/tool) . = ..() diff --git a/code/game/objects/structures/decorations.dm b/code/game/objects/structures/decorations.dm new file mode 100644 index 000000000000..fb05b6478e2a --- /dev/null +++ b/code/game/objects/structures/decorations.dm @@ -0,0 +1,609 @@ +/obj/structure/decoration + name = "plastic decoration" + desc = "A cheap plastic imitation of nature. At least it doesn't need watering." + icon = 'icons/obj/fluff/flora/ausflora.dmi' + resistance_flags = FLAMMABLE + max_integrity = 20 + anchored = TRUE + alpha = 210 + /// No material refund on deconstruction, it's cheap plastic + custom_materials = null + +/obj/structure/decoration/Initialize(mapload) + . = ..() + +/obj/structure/decoration/atom_deconstruct(disassembled = TRUE) + if(!disassembled) + new /obj/effect/decal/cleanable/plastic(loc) + return + +/obj/structure/decoration/examine(mob/user) + . = ..() + . += span_notice("It's made of cheap, hollow plastic.") + +/obj/structure/decoration/grass + name = "plastic grass patch" + desc = "Fake grass. Feels like a brillo pad." + icon = /obj/structure/flora/grass/green::icon + icon_state = /obj/structure/flora/grass/green::icon_state + +/obj/structure/decoration/grass/first + // inherits from parent + +/obj/structure/decoration/grass/second + icon_state = /obj/structure/flora/grass/green/style_2::icon_state + +/obj/structure/decoration/grass/third + icon_state = /obj/structure/flora/grass/green/style_3::icon_state + +/obj/structure/decoration/grass/style_random/Initialize(mapload) + . = ..() + icon_state = "snowgrass[rand(1, 3)]gb" + update_appearance() + +/obj/structure/decoration/grass/brown + icon = /obj/structure/flora/grass/brown::icon + icon_state = /obj/structure/flora/grass/brown::icon_state + +/obj/structure/decoration/grass/brown/first + +/obj/structure/decoration/grass/brown/second + icon_state = /obj/structure/flora/grass/brown/style_2::icon_state + +/obj/structure/decoration/grass/brown/third + icon_state = /obj/structure/flora/grass/brown/style_3::icon_state + +/obj/structure/decoration/grass/brown/style_random/Initialize(mapload) + . = ..() + icon_state = "snowgrass[rand(1, 3)]bb" + update_appearance() + +/obj/structure/decoration/jungle_grass + name = "plastic jungle grass" + desc = "Plastic alien-looking grass. The jungle vibe without the jungle bugs." + icon = /obj/structure/flora/grass/jungle::icon + icon_state = /obj/structure/flora/grass/jungle::icon_state + +/obj/structure/decoration/jungle_grass/first + +/obj/structure/decoration/jungle_grass/second + icon_state = /obj/structure/flora/grass/jungle/a/style_2::icon_state + +/obj/structure/decoration/jungle_grass/third + icon_state = /obj/structure/flora/grass/jungle/a/style_3::icon_state + +/obj/structure/decoration/jungle_grass/fourth + icon_state = /obj/structure/flora/grass/jungle/a/style_4::icon_state + +/obj/structure/decoration/jungle_grass/fifth + icon_state = /obj/structure/flora/grass/jungle/a/style_5::icon_state + +/obj/structure/decoration/jungle_grass/style_random/Initialize(mapload) + . = ..() + icon_state = "grassa[rand(1, 5)]" + update_appearance() + +/obj/structure/decoration/jungle_grass/b + icon = /obj/structure/flora/grass/jungle/b::icon + icon_state = /obj/structure/flora/grass/jungle/b::icon_state + +/obj/structure/decoration/jungle_grass/b/first + +/obj/structure/decoration/jungle_grass/b/second + icon_state = /obj/structure/flora/grass/jungle/b/style_2::icon_state + +/obj/structure/decoration/jungle_grass/b/third + icon_state = /obj/structure/flora/grass/jungle/b/style_3::icon_state + +/obj/structure/decoration/jungle_grass/b/fourth + icon_state = /obj/structure/flora/grass/jungle/b/style_4::icon_state + +/obj/structure/decoration/jungle_grass/b/fifth + icon_state = /obj/structure/flora/grass/jungle/b/style_5::icon_state + +/obj/structure/decoration/jungle_grass/b/style_random/Initialize(mapload) + . = ..() + icon_state = "grassb[rand(1, 5)]" + update_appearance() + +/obj/structure/decoration/bush + name = "plastic bush" + desc = "A plastic shrub. Bristly to the touch and slightly off-color." + icon = /obj/structure/flora/bush::icon + icon_state = /obj/structure/flora/bush::icon_state + +/obj/structure/decoration/bush/first + +/obj/structure/decoration/bush/second + icon_state = /obj/structure/flora/bush/style_2::icon_state + +/obj/structure/decoration/bush/third + icon_state = /obj/structure/flora/bush/style_3::icon_state + +/obj/structure/decoration/bush/fourth + icon_state = /obj/structure/flora/bush/style_4::icon_state + +/obj/structure/decoration/bush/style_random/Initialize(mapload) + . = ..() + icon_state = "firstbush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/reed + name = "plastic reeds" + icon = /obj/structure/flora/bush/reed::icon + icon_state = /obj/structure/flora/bush/reed::icon_state + +/obj/structure/decoration/bush/reed/first + +/obj/structure/decoration/bush/reed/second + icon_state = /obj/structure/flora/bush/reed/style_2::icon_state + +/obj/structure/decoration/bush/reed/third + icon_state = /obj/structure/flora/bush/reed/style_3::icon_state + +/obj/structure/decoration/bush/reed/fourth + icon_state = /obj/structure/flora/bush/reed/style_4::icon_state + +/obj/structure/decoration/bush/reed/style_random/Initialize(mapload) + . = ..() + icon_state = "reedbush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/leafy + name = "plastic leafy bush" + icon = /obj/structure/flora/bush/leafy::icon + icon_state = /obj/structure/flora/bush/leafy::icon_state + +/obj/structure/decoration/bush/leafy/first + +/obj/structure/decoration/bush/leafy/second + icon_state = /obj/structure/flora/bush/leavy/style_2::icon_state + +/obj/structure/decoration/bush/leafy/third + icon_state = /obj/structure/flora/bush/leavy/style_3::icon_state + +/obj/structure/decoration/bush/leafy/style_random/Initialize(mapload) + . = ..() + icon_state = "leafybush_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/pale + name = "plastic pale bush" + icon = /obj/structure/flora/bush/pale::icon + icon_state = /obj/structure/flora/bush/pale::icon_state + +/obj/structure/decoration/bush/pale/first + +/obj/structure/decoration/bush/pale/second + icon_state = /obj/structure/flora/bush/pale/style_2::icon_state + +/obj/structure/decoration/bush/pale/third + icon_state = /obj/structure/flora/bush/pale/style_3::icon_state + +/obj/structure/decoration/bush/pale/fourth + icon_state = /obj/structure/flora/bush/pale/style_4::icon_state + +/obj/structure/decoration/bush/pale/style_random/Initialize(mapload) + . = ..() + icon_state = "palebush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/stalky + name = "plastic stalky bush" + icon = /obj/structure/flora/bush/stalky::icon + icon_state = /obj/structure/flora/bush/stalky::icon_state + +/obj/structure/decoration/bush/stalky/first + +/obj/structure/decoration/bush/stalky/second + icon_state = /obj/structure/flora/bush/stalky/style_2::icon_state + +/obj/structure/decoration/bush/stalky/third + icon_state = /obj/structure/flora/bush/stalky/style_3::icon_state + +/obj/structure/decoration/bush/stalky/style_random/Initialize(mapload) + . = ..() + icon_state = "stalkybush_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/grassy + name = "plastic grassy bush" + icon = /obj/structure/flora/bush/grassy::icon + icon_state = /obj/structure/flora/bush/grassy::icon_state + +/obj/structure/decoration/bush/grassy/first + +/obj/structure/decoration/bush/grassy/second + icon_state = /obj/structure/flora/bush/grassy/style_2::icon_state + +/obj/structure/decoration/bush/grassy/third + icon_state = /obj/structure/flora/bush/grassy/style_3::icon_state + +/obj/structure/decoration/bush/grassy/fourth + icon_state = /obj/structure/flora/bush/grassy/style_4::icon_state + +/obj/structure/decoration/bush/grassy/style_random/Initialize(mapload) + . = ..() + icon_state = "grassybush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/sparsegrass + name = "plastic sparse grass" + icon = /obj/structure/flora/bush/sparsegrass::icon + icon_state = /obj/structure/flora/bush/sparsegrass::icon_state + +/obj/structure/decoration/bush/sparsegrass/first + +/obj/structure/decoration/bush/sparsegrass/second + icon_state = /obj/structure/flora/bush/sparsegrass/style_2::icon_state + +/obj/structure/decoration/bush/sparsegrass/third + icon_state = /obj/structure/flora/bush/sparsegrass/style_3::icon_state + +/obj/structure/decoration/bush/sparsegrass/style_random/Initialize(mapload) + . = ..() + icon_state = "sparsegrass_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/fullgrass + name = "plastic full grass" + icon = /obj/structure/flora/bush/fullgrass::icon + icon_state = /obj/structure/flora/bush/fullgrass::icon_state + +/obj/structure/decoration/bush/fullgrass/first + +/obj/structure/decoration/bush/fullgrass/second + icon_state = /obj/structure/flora/bush/fullgrass/style_2::icon_state + +/obj/structure/decoration/bush/fullgrass/third + icon_state = /obj/structure/flora/bush/fullgrass/style_3::icon_state + +/obj/structure/decoration/bush/fullgrass/style_random/Initialize(mapload) + . = ..() + icon_state = "fullgrass_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/ferny + name = "plastic ferny bush" + icon = /obj/structure/flora/bush/ferny::icon + icon_state = /obj/structure/flora/bush/ferny::icon_state + +/obj/structure/decoration/bush/ferny/first + +/obj/structure/decoration/bush/ferny/second + icon_state = /obj/structure/flora/bush/ferny/style_2::icon_state + +/obj/structure/decoration/bush/ferny/third + icon_state = /obj/structure/flora/bush/ferny/style_3::icon_state + +/obj/structure/decoration/bush/ferny/style_random/Initialize(mapload) + . = ..() + icon_state = "fernybush_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/sunny + name = "plastic sunny bush" + icon = /obj/structure/flora/bush/sunny::icon + icon_state = /obj/structure/flora/bush/sunny::icon_state + +/obj/structure/decoration/bush/sunny/first + +/obj/structure/decoration/bush/sunny/second + icon_state = /obj/structure/flora/bush/sunny/style_2::icon_state + +/obj/structure/decoration/bush/sunny/third + icon_state = /obj/structure/flora/bush/sunny/style_3::icon_state + +/obj/structure/decoration/bush/sunny/style_random/Initialize(mapload) + . = ..() + icon_state = "sunnybush_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/generic + name = "plastic generic bush" + icon = /obj/structure/flora/bush/generic::icon + icon_state = /obj/structure/flora/bush/generic::icon_state + +/obj/structure/decoration/bush/generic/first + +/obj/structure/decoration/bush/generic/second + icon_state = /obj/structure/flora/bush/generic/style_2::icon_state + +/obj/structure/decoration/bush/generic/third + icon_state = /obj/structure/flora/bush/generic/style_3::icon_state + +/obj/structure/decoration/bush/generic/fourth + icon_state = /obj/structure/flora/bush/generic/style_4::icon_state + +/obj/structure/decoration/bush/generic/style_random/Initialize(mapload) + . = ..() + icon_state = "genericbush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/pointy + name = "plastic pointy bush" + icon = /obj/structure/flora/bush/pointy::icon + icon_state = /obj/structure/flora/bush/pointy::icon_state + +/obj/structure/decoration/bush/pointy/first + +/obj/structure/decoration/bush/pointy/second + icon_state = /obj/structure/flora/bush/pointy/style_2::icon_state + +/obj/structure/decoration/bush/pointy/third + icon_state = /obj/structure/flora/bush/pointy/style_3::icon_state + +/obj/structure/decoration/bush/pointy/fourth + icon_state = /obj/structure/flora/bush/pointy/style_4::icon_state + +/obj/structure/decoration/bush/pointy/style_random/Initialize(mapload) + . = ..() + icon_state = "pointybush_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/lavendergrass + name = "plastic lavender grass" + icon = /obj/structure/flora/bush/lavendergrass::icon + icon_state = /obj/structure/flora/bush/lavendergrass::icon_state + +/obj/structure/decoration/bush/lavendergrass/first + +/obj/structure/decoration/bush/lavendergrass/second + icon_state = /obj/structure/flora/bush/lavendergrass/style_2::icon_state + +/obj/structure/decoration/bush/lavendergrass/third + icon_state = /obj/structure/flora/bush/lavendergrass/style_3::icon_state + +/obj/structure/decoration/bush/lavendergrass/fourth + icon_state = /obj/structure/flora/bush/lavendergrass/style_4::icon_state + +/obj/structure/decoration/bush/lavendergrass/style_random/Initialize(mapload) + . = ..() + icon_state = "lavendergrass_[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/bush/flowers_yw + name = "plastic yellow-white flowers" + icon = /obj/structure/flora/bush/flowers_yw::icon + icon_state = /obj/structure/flora/bush/flowers_yw::icon_state + +/obj/structure/decoration/bush/flowers_yw/first + +/obj/structure/decoration/bush/flowers_yw/second + icon_state = /obj/structure/flora/bush/flowers_yw/style_2::icon_state + +/obj/structure/decoration/bush/flowers_yw/third + icon_state = /obj/structure/flora/bush/flowers_yw/style_3::icon_state + +/obj/structure/decoration/bush/flowers_yw/style_random/Initialize(mapload) + . = ..() + icon_state = "ywflowers_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/flowers_br + name = "plastic blue-red flowers" + icon = /obj/structure/flora/bush/flowers_br::icon + icon_state = /obj/structure/flora/bush/flowers_br::icon_state + +/obj/structure/decoration/bush/flowers_br/first + +/obj/structure/decoration/bush/flowers_br/second + icon_state = /obj/structure/flora/bush/flowers_br/style_2::icon_state + +/obj/structure/decoration/bush/flowers_br/third + icon_state = /obj/structure/flora/bush/flowers_br/style_3::icon_state + +/obj/structure/decoration/bush/flowers_br/style_random/Initialize(mapload) + . = ..() + icon_state = "brflowers_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/flowers_pp + name = "plastic purple flowers" + icon = /obj/structure/flora/bush/flowers_pp::icon + icon_state = /obj/structure/flora/bush/flowers_pp::icon_state + +/obj/structure/decoration/bush/flowers_pp/first + +/obj/structure/decoration/bush/flowers_pp/second + icon_state = /obj/structure/flora/bush/flowers_pp/style_2::icon_state + +/obj/structure/decoration/bush/flowers_pp/third + icon_state = /obj/structure/flora/bush/flowers_pp/style_3::icon_state + +/obj/structure/decoration/bush/flowers_pp/style_random/Initialize(mapload) + . = ..() + icon_state = "ppflowers_[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/snow + name = "plastic snowy bush" + desc = "A plastic bush dusted with fake snow. Year-round winter cheer." + icon = /obj/structure/flora/bush/snow::icon + icon_state = /obj/structure/flora/bush/snow::icon_state + +/obj/structure/decoration/bush/snow/first + +/obj/structure/decoration/bush/snow/second + icon_state = /obj/structure/flora/bush/snow/style_2::icon_state + +/obj/structure/decoration/bush/snow/third + icon_state = /obj/structure/flora/bush/snow/style_3::icon_state + +/obj/structure/decoration/bush/snow/fourth + icon_state = /obj/structure/flora/bush/snow/style_4::icon_state + +/obj/structure/decoration/bush/snow/fifth + icon_state = /obj/structure/flora/bush/snow/style_5::icon_state + +/obj/structure/decoration/bush/snow/sixth + icon_state = /obj/structure/flora/bush/snow/style_6::icon_state + +/obj/structure/decoration/bush/snow/style_random/Initialize(mapload) + . = ..() + icon_state = "snowbush[rand(1, 6)]" + update_appearance() + +/obj/structure/decoration/bush/jungle + name = "plastic jungle bush" + desc = "Plastic jungle foliage. All the looks, none of the allergens." + icon = /obj/structure/flora/bush/jungle::icon + icon_state = /obj/structure/flora/bush/jungle::icon_state + +/obj/structure/decoration/bush/jungle/first + +/obj/structure/decoration/bush/jungle/second + icon_state = /obj/structure/flora/bush/jungle/a/style_2::icon_state + +/obj/structure/decoration/bush/jungle/third + icon_state = /obj/structure/flora/bush/jungle/a/style_3::icon_state + +/obj/structure/decoration/bush/jungle/style_random/Initialize(mapload) + . = ..() + icon_state = "busha[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/jungle/b + icon = /obj/structure/flora/bush/jungle/b::icon + icon_state = /obj/structure/flora/bush/jungle/b::icon_state + +/obj/structure/decoration/bush/jungle/b/first + +/obj/structure/decoration/bush/jungle/b/second + icon_state = /obj/structure/flora/bush/jungle/b/style_2::icon_state + +/obj/structure/decoration/bush/jungle/b/third + icon_state = /obj/structure/flora/bush/jungle/b/style_3::icon_state + +/obj/structure/decoration/bush/jungle/b/style_random/Initialize(mapload) + . = ..() + icon_state = "bushb[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/jungle/c + icon = /obj/structure/flora/bush/jungle/c::icon + icon_state = /obj/structure/flora/bush/jungle/c::icon_state + +/obj/structure/decoration/bush/jungle/c/first + +/obj/structure/decoration/bush/jungle/c/second + icon_state = /obj/structure/flora/bush/jungle/c/style_2::icon_state + +/obj/structure/decoration/bush/jungle/c/third + icon_state = /obj/structure/flora/bush/jungle/c/style_3::icon_state + +/obj/structure/decoration/bush/jungle/c/style_random/Initialize(mapload) + . = ..() + icon_state = "bushc[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/bush/large + name = "large plastic bush" + desc = "A large plastic bush. Dominates the room with its hollow presence." + icon = /obj/structure/flora/bush/large::icon + icon_state = /obj/structure/flora/bush/large::icon_state + pixel_x = /obj/structure/flora/bush/large::pixel_x + pixel_y = /obj/structure/flora/bush/large::pixel_y + layer = /obj/structure/flora/bush/large::layer + plane = /obj/structure/flora/bush/large::plane + density = /obj/structure/flora/bush/large::density + +/obj/structure/decoration/bush/large/first + +/obj/structure/decoration/bush/large/second + icon_state = /obj/structure/flora/bush/large/style_2::icon_state + +/obj/structure/decoration/bush/large/third + icon_state = /obj/structure/flora/bush/large/style_3::icon_state + +/obj/structure/decoration/bush/large/style_random/Initialize(mapload) + . = ..() + icon_state = "bush[rand(1, 3)]" + update_appearance() + +/obj/structure/decoration/rock + name = "plastic rock" + desc = "A hollow plastic boulder. Surprisingly convincing from a distance." + icon = /obj/structure/flora/rock::icon + icon_state = /obj/structure/flora/rock::icon_state + +/obj/structure/decoration/rock/first + +/obj/structure/decoration/rock/second + icon_state = /obj/structure/flora/rock/style_2::icon_state + +/obj/structure/decoration/rock/third + icon_state = /obj/structure/flora/rock/style_3::icon_state + +/obj/structure/decoration/rock/fourth + icon_state = /obj/structure/flora/rock/style_4::icon_state + +/obj/structure/decoration/rock/style_random/Initialize(mapload) + . = ..() + icon_state = "basalt[rand(1, 4)]" + update_appearance() + +/obj/structure/decoration/rock/pile + name = "plastic rock pile" + desc = "A pile of hollow plastic rocks. Light enough to kick over." + icon = /obj/structure/flora/rock/pile::icon + icon_state = /obj/structure/flora/rock/pile::icon_state + +/obj/structure/decoration/rock/pile/first + +/obj/structure/decoration/rock/pile/second + icon_state = /obj/structure/flora/rock/pile/style_2::icon_state + +/obj/structure/decoration/rock/pile/third + icon_state = /obj/structure/flora/rock/pile/style_3::icon_state + +/obj/structure/decoration/rock/pile/style_random/Initialize(mapload) + . = ..() + icon_state = "lavarocks[pick(3;1,3;2,1;3)]" + update_appearance() + +/obj/structure/decoration/rock/pile/jungle + name = "plastic jungle rocks" + desc = "Fake rocks with a jungle theme. No actual geological history." + icon = /obj/structure/flora/rock/pile/jungle::icon + icon_state = /obj/structure/flora/rock/pile/jungle::icon_state + +/obj/structure/decoration/rock/pile/jungle/first + +/obj/structure/decoration/rock/pile/jungle/second + icon_state = /obj/structure/flora/rock/pile/jungle/style_2::icon_state + +/obj/structure/decoration/rock/pile/jungle/third + icon_state = /obj/structure/flora/rock/pile/jungle/style_3::icon_state + +/obj/structure/decoration/rock/pile/jungle/fourth + icon_state = /obj/structure/flora/rock/pile/jungle/style_4::icon_state + +/obj/structure/decoration/rock/pile/jungle/fifth + icon_state = /obj/structure/flora/rock/pile/jungle/style_5::icon_state + +/obj/structure/decoration/rock/pile/jungle/style_random/Initialize(mapload) + . = ..() + icon_state = "rock[rand(1, 5)]" + update_appearance() + +/obj/structure/decoration/rock/pile/jungle/large + name = "plastic large rocks" + desc = "A pile of large fake jungle rocks. Surprisingly light." + icon = /obj/structure/flora/rock/pile/jungle/large::icon + icon_state = /obj/structure/flora/rock/pile/jungle/large::icon_state + pixel_x = /obj/structure/flora/rock/pile/jungle/large::pixel_x + pixel_y = /obj/structure/flora/rock/pile/jungle/large::pixel_y + +/obj/structure/decoration/rock/pile/jungle/large/first + +/obj/structure/decoration/rock/pile/jungle/large/second + icon_state = /obj/structure/flora/rock/pile/jungle/large/style_2::icon_state + +/obj/structure/decoration/rock/pile/jungle/large/third + icon_state = /obj/structure/flora/rock/pile/jungle/large/style_3::icon_state + +/obj/structure/decoration/rock/pile/jungle/large/style_random/Initialize(mapload) + . = ..() + icon_state = "rocks[rand(1, 3)]" + update_appearance() diff --git a/code/game/objects/structures/detectiveboard.dm b/code/game/objects/structures/detectiveboard.dm index 91df15cc4436..f49266993b03 100644 --- a/code/game/objects/structures/detectiveboard.dm +++ b/code/game/objects/structures/detectiveboard.dm @@ -40,34 +40,36 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/detectiveboard, 32) /// Attaching evidences: photo and papers -/obj/structure/detectiveboard/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/paper) || istype(item, /obj/item/photo)) - if(!cases.len) - to_chat(user, "There are no cases!") - return - - if(attaching_evidence) - to_chat(user, "You already attaching evidence!") - return - attaching_evidence = TRUE - var/name = tgui_input_text(user, "Please enter the evidence name", "Detective's Board", max_length = MAX_NAME_LEN) - if(!name) - name = item.name - var/desc = tgui_input_text(user, "Please enter the evidence description", "Detective's Board", max_length = MAX_DESC_LEN) - if(!desc) - desc = item.desc - - if(!user.transferItemToLoc(item, src)) - attaching_evidence = FALSE - return - cases[current_case].notices++ - var/datum/evidence/evidence = new (name, desc, item) - cases[current_case].evidences += evidence - to_chat(user, span_notice("You pin the [item] to the detective board.")) +/obj/structure/detectiveboard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/paper) && !istype(tool, /obj/item/photo)) + return NONE + if(!cases.len) + to_chat(user, "There are no cases!") + return ITEM_INTERACT_BLOCKING + + if(attaching_evidence) + to_chat(user, "You already attaching evidence!") + return ITEM_INTERACT_BLOCKING + + attaching_evidence = TRUE + var/name = tgui_input_text(user, "Please enter the evidence name", "Detective's Board", max_length = MAX_NAME_LEN) + if(!name) + name = tool.name + var/desc = tgui_input_text(user, "Please enter the evidence description", "Detective's Board", max_length = MAX_DESC_LEN) + if(!desc) + desc = tool.desc + + if(!user.transferItemToLoc(tool, src)) attaching_evidence = FALSE - update_appearance(UPDATE_ICON) - return - return ..() + return ITEM_INTERACT_BLOCKING + + cases[current_case].notices++ + var/datum/evidence/evidence = new (name, desc, tool) + cases[current_case].evidences += evidence + to_chat(user, span_notice("You pin the [tool] to the detective board.")) + attaching_evidence = FALSE + update_appearance(UPDATE_ICON) + return ITEM_INTERACT_SUCCESS /obj/structure/detectiveboard/wrench_act_secondary(mob/living/user, obj/item/tool) . = ..() diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index efc44e195dd6..096f1122022f 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -125,54 +125,80 @@ . += "[initial(icon_state)]_closed" return -/obj/structure/displaycase/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(attacking_item.GetID() && !broken) - if(allowed(user)) - to_chat(user, span_notice("You [open ? "close":"open"] [src].")) - toggle_lock(user) - else +/obj/structure/displaycase/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.GetID() && !broken) + if(!allowed(user)) to_chat(user, span_alert("Access denied.")) - else if(attacking_item.tool_behaviour == TOOL_WELDER && !user.combat_mode && !broken) - if(atom_integrity < max_integrity) - if(!attacking_item.tool_start_check(user, amount=1)) - return + return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("You begin repairing [src]...")) - if(attacking_item.use_tool(src, user, 40, volume=50)) - atom_integrity = max_integrity - update_appearance() - to_chat(user, span_notice("You repair [src].")) - else - to_chat(user, span_warning("[src] is already in good condition!")) - return - else if(!alert && attacking_item.tool_behaviour == TOOL_CROWBAR) //Only applies to the lab cage and player made display cases - if(broken) - if(showpiece) - to_chat(user, span_warning("Remove the displayed object first!")) - else - to_chat(user, span_notice("You remove the destroyed case.")) - qdel(src) - else - to_chat(user, span_notice("You start to [open ? "close":"open"] [src]...")) - if(attacking_item.use_tool(src, user, 20)) - to_chat(user, span_notice("You [open ? "close":"open"] [src].")) - toggle_lock(user) - else if(open && !showpiece) - insert_showpiece(attacking_item, user) - return TRUE //cancel the attack chain, whether we successfully placed an item or not - else if(glass_fix && broken && istype(attacking_item, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/glass_sheet = attacking_item + to_chat(user, span_notice("You [open ? "close":"open"] [src].")) + toggle_lock(user) + return ITEM_INTERACT_SUCCESS + + + if(open && !showpiece) + insert_showpiece(tool, user) + return ITEM_INTERACT_SUCCESS //cancel the attack chain, whether we successfully placed an item or not + + if(glass_fix && broken && istype(tool, /obj/item/stack/sheet/glass)) + var/obj/item/stack/sheet/glass/glass_sheet = tool if(glass_sheet.get_amount() < 2) to_chat(user, span_warning("You need two glass sheets to fix the case!")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start fixing [src]...")) - if(do_after(user, 2 SECONDS, target = src)) - glass_sheet.use(2) - broken = FALSE - atom_integrity = max_integrity - update_appearance() - else - return ..() + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + glass_sheet.use(2) + broken = FALSE + atom_integrity = max_integrity + update_appearance() + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/structure/displaycase/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode || broken) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(atom_integrity == max_integrity) + to_chat(user, span_warning("[src] is already in good condition!")) + return ITEM_INTERACT_BLOCKING + + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You begin repairing [src]...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + + atom_integrity = max_integrity + update_appearance() + to_chat(user, span_notice("You repair [src].")) + return ITEM_INTERACT_SUCCESS + +/obj/structure/displaycase/crowbar_act(mob/living/user, obj/item/tool) + if(alert) //Only applies to the lab cage and player made display cases + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(broken) + if(showpiece) + to_chat(user, span_warning("Remove the displayed object first!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You remove the destroyed case.")) + qdel(src) + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("You start to [open ? "close":"open"] [src]...")) + if(!tool.use_tool(src, user, 20)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You [open ? "close":"open"] [src].")) + toggle_lock(user) + return ITEM_INTERACT_SUCCESS + ///Handles placing an item into the display case. Returns TRUE if the item failed to be placed inside the container, useful for descendants /obj/structure/displaycase/proc/insert_showpiece(obj/item/new_showpiece, mob/user) @@ -273,33 +299,40 @@ qdel(src) return ITEM_INTERACT_SUCCESS -/obj/structure/displaycase_chassis/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/electronics/airlock)) +/obj/structure/displaycase_chassis/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/electronics/airlock)) balloon_alert(user, "installing electronics...") - if(do_after(user, 3 SECONDS, target = src) && user.transferItemToLoc(attacking_item, src)) - electronics = attacking_item - balloon_alert(user, "electronics installed") - return + if(!do_after(user, 3 SECONDS, target = src) || !user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - if(istype(attacking_item, /obj/item/stock_parts/card_reader)) - var/obj/item/stock_parts/card_reader/card_reader = attacking_item - balloon_alert(user, "adding [card_reader]...") - if(do_after(user, 2 SECONDS, target = src)) - qdel(card_reader) - make_final_result(display_type = /obj/structure/displaycase/forsale) - return + electronics = tool + balloon_alert(user, "electronics installed") + return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/glass_sheets = attacking_item + if(istype(tool, /obj/item/stock_parts/card_reader)) + balloon_alert(user, "adding [tool]...") + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + qdel(tool) + make_final_result(display_type = /obj/structure/displaycase/forsale) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/sheet/glass)) + var/obj/item/stack/sheet/glass/glass_sheets = tool if(glass_sheets.get_amount() < 10) balloon_alert(user, "need 10 sheets!") - return + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "adding glass...") - if(do_after(user, 2 SECONDS, target = src)) - glass_sheets.use(10) - make_final_result(display_type = /obj/structure/displaycase/noalert) - return - return ..() + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + glass_sheets.use(10) + make_final_result(display_type = /obj/structure/displaycase/noalert) + return ITEM_INTERACT_SUCCESS + + return NONE ///Makes the final result of the chassis, then deletes itself. /obj/structure/displaycase_chassis/proc/make_final_result(obj/structure/displaycase/display_type) @@ -360,11 +393,11 @@ holographic_showpiece = TRUE update_appearance() -/obj/structure/displaycase/trophy/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/key/displaycase)) - toggle_historian_mode(user) - return - return ..() +/obj/structure/displaycase/trophy/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/key/displaycase)) + return ..() + toggle_historian_mode(user) + return ITEM_INTERACT_SUCCESS /obj/structure/displaycase/trophy/dump() if (showpiece) @@ -610,20 +643,25 @@ return TRUE . = TRUE -/obj/structure/displaycase/forsale/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(isidcard(attacking_item)) +/obj/structure/displaycase/forsale/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(isidcard(tool)) //Card Registration - var/obj/item/card/id/potential_acc = attacking_item + var/obj/item/card/id/potential_acc = tool if(!potential_acc.registered_account) to_chat(user, span_warning("This ID card has no account registered!")) - return - if(payments_acc == potential_acc.registered_account) - toggle_lock() - return - if(istype(attacking_item, /obj/item/modular_computer)) - return TRUE + return ITEM_INTERACT_BLOCKING + + if(payments_acc != potential_acc.registered_account) + return ITEM_INTERACT_BLOCKING + + toggle_lock() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/modular_computer)) + return ITEM_INTERACT_BLOCKING + SStgui.update_uis(src) - return ..() + return ITEM_INTERACT_SUCCESS /obj/structure/displaycase/forsale/multitool_act(mob/living/user, obj/item/I) . = ..() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 90a97bd7d10e..e606729fbfae 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -56,7 +56,7 @@ /obj/structure/door_assembly/multi_tile/Initialize(mapload) . = ..() set_bounds() - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/structure/door_assembly/multi_tile/Move() . = ..() @@ -83,176 +83,99 @@ if(created_name) . += span_notice("There is a small paper placard on the assembly, written on it is '[created_name]'.") -/obj/structure/door_assembly/attackby(obj/item/tool, mob/living/user, list/modifiers, list/attack_modifiers) - if((tool.tool_behaviour == TOOL_WELDER) && (mineral || glass || !anchored )) +/obj/structure/door_assembly/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(anchored && state == AIRLOCK_ASSEMBLY_NEEDS_WIRES && istype(tool, /obj/item/stack/cable_coil)) if(!tool.tool_start_check(user, amount=1)) - return - - if(mineral) - var/obj/item/stack/sheet/mineral/mineral_path = text2path("/obj/item/stack/sheet/mineral/[mineral]") - user.visible_message(span_notice("[user] welds the [mineral] plating off the airlock assembly."), span_notice("You start to weld the [mineral] plating off the airlock assembly...")) - if(tool.use_tool(src, user, 40, volume=50)) - to_chat(user, span_notice("You weld the [mineral] plating off.")) - new mineral_path(loc, 2) - var/obj/structure/door_assembly/PA = new previous_assembly(loc) - transfer_assembly_vars(src, PA) - - else if(glass) - user.visible_message(span_notice("[user] welds the glass panel out of the airlock assembly."), span_notice("You start to weld the glass panel out of the airlock assembly...")) - if(tool.use_tool(src, user, 40, volume=50)) - to_chat(user, span_notice("You weld the glass panel out.")) - if(heat_proof_finished) - new /obj/item/stack/sheet/rglass(get_turf(src)) - heat_proof_finished = FALSE - else - new /obj/item/stack/sheet/glass(get_turf(src)) - glass = 0 - else if(!anchored) - user.visible_message(span_warning("[user] disassembles the airlock assembly."), \ - span_notice("You start to disassemble the airlock assembly...")) - if(tool.use_tool(src, user, 40, volume=50)) - to_chat(user, span_notice("You disassemble the airlock assembly.")) - deconstruct(TRUE) - - else if(tool.tool_behaviour == TOOL_WRENCH) - if(!anchored ) - var/door_check = 1 - for(var/obj/machinery/door/D in loc) - if(!D.sub_door) - door_check = 0 - break - - if(door_check) - user.visible_message(span_notice("[user] secures the airlock assembly to the floor."), \ - span_notice("You start to secure the airlock assembly to the floor..."), \ - span_hear("You hear wrenching.")) - - if(tool.use_tool(src, user, 40, volume=100)) - if(anchored) - return - to_chat(user, span_notice("You secure the airlock assembly.")) - name = "secured airlock assembly" - set_anchored(TRUE) - else - to_chat(user, "There is another door here!") - - else - user.visible_message(span_notice("[user] unsecures the airlock assembly from the floor."), \ - span_notice("You start to unsecure the airlock assembly from the floor..."), \ - span_hear("You hear wrenching.")) - if(tool.use_tool(src, user, 40, volume=100)) - if(!anchored) - return - to_chat(user, span_notice("You unsecure the airlock assembly.")) - name = "airlock assembly" - set_anchored(FALSE) - - else if(istype(tool, /obj/item/stack/cable_coil) && state == AIRLOCK_ASSEMBLY_NEEDS_WIRES && anchored ) - if(!tool.tool_start_check(user, amount=1)) - return + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] wires the airlock assembly."), \ span_notice("You start to wire the airlock assembly...")) - if(tool.use_tool(src, user, 40, amount=1)) - if(state != AIRLOCK_ASSEMBLY_NEEDS_WIRES) - return - state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS - to_chat(user, span_notice("You wire the airlock assembly.")) - name = "wired airlock assembly" - - else if((tool.tool_behaviour == TOOL_WIRECUTTER) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS ) - user.visible_message(span_notice("[user] cuts the wires from the airlock assembly."), \ - span_notice("You start to cut the wires from the airlock assembly...")) - - if(tool.use_tool(src, user, 40, volume=100)) - if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) - return - to_chat(user, span_notice("You cut the wires from the airlock assembly.")) - new/obj/item/stack/cable_coil(get_turf(user), 1) - state = AIRLOCK_ASSEMBLY_NEEDS_WIRES - name = "secured airlock assembly" - - else if(istype(tool, /obj/item/electronics/airlock) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS ) + if(!tool.use_tool(src, user, 40, amount=1)) + return ITEM_INTERACT_BLOCKING + + if(state != AIRLOCK_ASSEMBLY_NEEDS_WIRES) + return ITEM_INTERACT_BLOCKING + + state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS + to_chat(user, span_notice("You wire the airlock assembly.")) + name = "wired airlock assembly" + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS && istype(tool, /obj/item/electronics/airlock)) tool.play_tool_sound(src, 100) user.visible_message(span_notice("[user] installs the electronics into the airlock assembly."), \ span_notice("You start to install electronics into the airlock assembly...")) - if(do_after(user, 4 SECONDS, target = src)) - if( state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS ) - return - if(!user.transferItemToLoc(tool, src)) - return - - to_chat(user, span_notice("You install the airlock electronics.")) - state = AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER - name = "near finished airlock assembly" - electronics = tool - - - else if((tool.tool_behaviour == TOOL_CROWBAR) && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER ) - user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), \ - span_notice("You start to remove electronics from the airlock assembly...")) - - if(tool.use_tool(src, user, 40, volume=100)) - if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - return - to_chat(user, span_notice("You remove the airlock electronics.")) - state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS - name = "wired airlock assembly" - var/obj/item/electronics/airlock/ae - if (!electronics) - ae = new/obj/item/electronics/airlock( loc ) - else - ae = electronics - electronics = null - ae.forceMove(src.loc) + if(!do_after(user, 4 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) + return ITEM_INTERACT_BLOCKING - else if(istype(tool, /obj/item/stack/sheet)) + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You install the airlock electronics.")) + state = AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER + name = "near finished airlock assembly" + electronics = tool + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/sheet)) var/obj/item/stack/sheet/sheet = tool if(!glass && (istype(sheet, /obj/item/stack/sheet/rglass) || istype(sheet, /obj/item/stack/sheet/glass))) if(noglass) to_chat(user, span_warning("You cannot add [sheet] to [src]!")) - return + return ITEM_INTERACT_BLOCKING playsound(src, 'sound/items/tools/crowbar.ogg', 100, TRUE) user.visible_message(span_notice("[user] adds [sheet.name] to the airlock assembly."), \ span_notice("You start to install [sheet.name] into the airlock assembly...")) - if(do_after(user, 4 SECONDS, target = src)) - if(sheet.get_amount() < 1 || glass) - return - if(sheet.type == /obj/item/stack/sheet/rglass) - to_chat(user, span_notice("You install [sheet.name] windows into the airlock assembly.")) - heat_proof_finished = 1 //reinforced glass makes the airlock heat-proof - name = "near finished heat-proofed window airlock assembly" - else - to_chat(user, span_notice("You install regular glass windows into the airlock assembly.")) - name = "near finished window airlock assembly" - sheet.use(1) - glass = TRUE - return + if(!do_after(user, 4 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + if(sheet.get_amount() < 1 || glass) + return ITEM_INTERACT_BLOCKING + if(sheet.type == /obj/item/stack/sheet/rglass) + to_chat(user, span_notice("You install [sheet.name] windows into the airlock assembly.")) + heat_proof_finished = TRUE //reinforced glass makes the airlock heat-proof + name = "near finished heat-proofed window airlock assembly" + else + to_chat(user, span_notice("You install regular glass windows into the airlock assembly.")) + name = "near finished window airlock assembly" + sheet.use(1) + glass = TRUE + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS if(istype(sheet, /obj/item/stack/sheet/mineral) && sheet.construction_path_type) if(nomineral || mineral) to_chat(user, span_warning("You cannot add [sheet] to [src]!")) - return + return ITEM_INTERACT_BLOCKING - var/M = sheet.construction_path_type - var/mineralassembly = text2path("/obj/structure/door_assembly/door_assembly_[M]") + var/type_path_extension = sheet.construction_path_type + var/mineralassembly = text2path("/obj/structure/door_assembly/door_assembly_[type_path_extension]") if(!ispath(mineralassembly)) to_chat(user, span_warning("You cannot add [sheet] to [src]!")) - return + return ITEM_INTERACT_BLOCKING + if(sheet.get_amount() < 2) to_chat(user, span_warning("You need at least two sheets add a mineral cover!")) - return + return ITEM_INTERACT_BLOCKING playsound(src, 'sound/items/tools/crowbar.ogg', 100, TRUE) user.visible_message(span_notice("[user] adds [sheet.name] to the airlock assembly."), \ - span_notice("You start to install [sheet.name] into the airlock assembly...")) + span_notice("You start to install [sheet.name] into the airlock assembly...")) if(!do_after(user, 4 SECONDS, target = src) || sheet.get_amount() < 2 || mineral) - return - to_chat(user, span_notice("You install [M] plating into the airlock assembly.")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You install [type_path_extension] plating into the airlock assembly.")) sheet.use(2) - var/obj/structure/door_assembly/MA = new mineralassembly(loc) + var/obj/structure/door_assembly/replacement_assembly = new mineralassembly(loc) - if(MA.noglass && glass) //in case the new door doesn't support glass. prevents the new one from reverting to a normal airlock after being constructed. + if(replacement_assembly.noglass && glass) //in case the new door doesn't support glass. prevents the new one from reverting to a normal airlock after being constructed. var/obj/item/stack/sheet/dropped_glass if(heat_proof_finished) dropped_glass = new /obj/item/stack/sheet/rglass(drop_location()) @@ -260,22 +183,163 @@ else dropped_glass = new /obj/item/stack/sheet/glass(drop_location()) glass = FALSE - to_chat(user, span_notice("As you finish, a [dropped_glass.singular_name] falls out of [MA]'s frame.")) + to_chat(user, span_notice("As you finish, a [dropped_glass.singular_name] falls out of [replacement_assembly]'s frame.")) - transfer_assembly_vars(src, MA, TRUE) + transfer_assembly_vars(src, replacement_assembly, TRUE) + return ITEM_INTERACT_SUCCESS - else if((tool.tool_behaviour == TOOL_SCREWDRIVER) && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER ) - user.visible_message(span_notice("[user] finishes the airlock."), \ - span_notice("You start finishing the airlock...")) + return NONE - if(tool.use_tool(src, user, 40, volume=100)) - if(loc && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) - to_chat(user, span_notice("You finish the airlock.")) - finish_door() +/obj/structure/door_assembly/welder_act(mob/living/user, obj/item/tool) + if(!mineral && !glass && anchored) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING + + if(mineral) + var/obj/item/stack/sheet/mineral/mineral_path = text2path("/obj/item/stack/sheet/mineral/[mineral]") + user.visible_message(span_notice("[user] welds the [mineral] plating off the airlock assembly."), span_notice("You start to weld the [mineral] plating off the airlock assembly...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You weld the [mineral] plating off.")) + new mineral_path(loc, 2) + var/obj/structure/door_assembly/PA = new previous_assembly(loc) + transfer_assembly_vars(src, PA) + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(glass) + user.visible_message(span_notice("[user] welds the glass panel out of the airlock assembly."), \ + span_notice("You start to weld the glass panel out of the airlock assembly...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You weld the glass panel out.")) + if(heat_proof_finished) + new /obj/item/stack/sheet/rglass(get_turf(src)) + heat_proof_finished = FALSE + else + new /obj/item/stack/sheet/glass(get_turf(src)) + glass = FALSE + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(!anchored) + user.visible_message(span_warning("[user] disassembles the airlock assembly."), \ + span_notice("You start to disassemble the airlock assembly...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You disassemble the airlock assembly.")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + // no return NONE at end because it's not possible we end up here + +/obj/structure/door_assembly/wrench_act(mob/living/user, obj/item/tool) + if(anchored) + user.visible_message(span_notice("[user] unsecures the airlock assembly from the floor."), \ + span_notice("You start to unsecure the airlock assembly from the floor..."), \ + span_hear("You hear wrenching.")) + if(!tool.use_tool(src, user, 40, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(!anchored) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You unsecure the airlock assembly.")) + name = "airlock assembly" + set_anchored(FALSE) + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + + var/door_check = FALSE + for(var/obj/machinery/door/competitor in loc) + if(!competitor.sub_door) + door_check = TRUE + break + + if(door_check) + to_chat(user, "There is another door here!") + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] secures the airlock assembly to the floor."), \ + span_notice("You start to secure the airlock assembly to the floor..."), \ + span_hear("You hear wrenching.")) + + if(!tool.use_tool(src, user, 40, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(anchored) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You secure the airlock assembly.")) + name = "secured airlock assembly" + set_anchored(TRUE) + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/structure/door_assembly/wirecutter_act(mob/living/user, obj/item/tool) + if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) + return ITEM_INTERACT_SKIP_TO_ATTACK + user.visible_message(span_notice("[user] cuts the wires from the airlock assembly."), \ + span_notice("You start to cut the wires from the airlock assembly...")) + + if(!tool.use_tool(src, user, 40, volume=100)) + return ITEM_INTERACT_BLOCKING + if(state != AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You cut the wires from the airlock assembly.")) + new/obj/item/stack/cable_coil(get_turf(user), 1) + state = AIRLOCK_ASSEMBLY_NEEDS_WIRES + name = "secured airlock assembly" + update_name() + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/structure/door_assembly/crowbar_act(mob/living/user, obj/item/tool) + if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + return ITEM_INTERACT_SKIP_TO_ATTACK + user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), \ + span_notice("You start to remove electronics from the airlock assembly...")) + + if(!tool.use_tool(src, user, 40, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You remove the airlock electronics.")) + state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS + name = "wired airlock assembly" + var/obj/item/electronics/airlock/ae + if (!electronics) + ae = new/obj/item/electronics/airlock(loc) else - return ..() + ae = electronics + electronics = null + ae.forceMove(src.loc) update_name() update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/structure/door_assembly/screwdriver_act(mob/living/user, obj/item/tool) + if(state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + return ITEM_INTERACT_SKIP_TO_ATTACK + + user.visible_message(span_notice("[user] finishes the airlock."), \ + span_notice("You start finishing the airlock...")) + if(!tool.use_tool(src, user, 40, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(!loc || state != AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You finish the airlock.")) + finish_door() + return ITEM_INTERACT_SUCCESS /obj/structure/door_assembly/proc/finish_door() var/obj/machinery/door/airlock/door diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index a1a40e4075d4..8364fac1ddd9 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -8,14 +8,14 @@ anchored = TRUE custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 10) -/obj/structure/dresser/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_WRENCH) - to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) - if(I.use_tool(src, user, 20, volume=50)) - to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) - set_anchored(!anchored) - else - return ..() +/obj/structure/dresser/wrench_act(mob/living/user, obj/item/tool) + to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) + if(!tool.use_tool(src, user, 20, volume=50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS /obj/structure/dresser/atom_deconstruct(disassembled = TRUE) new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index ffe4252f6ef3..b6c1cf715b16 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -17,11 +17,9 @@ shock_flags = (SHOCK_NOGLOVES)\ ) -/obj/structure/chair/e_chair/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_WRENCH) - var/obj/structure/chair/C = new /obj/structure/chair(loc) - W.play_tool_sound(src) - C.setDir(dir) - qdel(src) - return - . = ..() +/obj/structure/chair/e_chair/wrench_act(mob/living/user, obj/item/tool) + var/obj/structure/chair/non_electric_chair = new /obj/structure/chair(loc) + tool.play_tool_sound(src) + non_electric_chair.setDir(dir) + qdel(src) + return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index e4f258b13b7c..f6b3e83bb418 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -71,33 +71,36 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/extinguisher_cabinet, 29) stored_extinguisher = null update_appearance(UPDATE_ICON) -/obj/structure/extinguisher_cabinet/attackby(obj/item/used_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(used_item.tool_behaviour == TOOL_WRENCH && !stored_extinguisher) - user.balloon_alert(user, "deconstructing cabinet...") - used_item.play_tool_sound(src) - if(used_item.use_tool(src, user, 60)) - playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) - user.balloon_alert(user, "cabinet deconstructed") - deconstruct(TRUE) - return - +/obj/structure/extinguisher_cabinet/wrench_act(mob/living/user, obj/item/tool) + if(stored_extinguisher) + balloon_alert(user, "must be empty!") + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "deconstructing cabinet...") + tool.play_tool_sound(src) + if(!tool.use_tool(src, user, 6 SECONDS)) + return ITEM_INTERACT_BLOCKING + playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) + user.balloon_alert(user, "cabinet deconstructed") + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + +/obj/structure/extinguisher_cabinet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(iscyborg(user) || isalien(user)) - return - if(istype(used_item, /obj/item/extinguisher)) - if(!stored_extinguisher && opened) - if(!user.transferItemToLoc(used_item, src)) - return - stored_extinguisher = used_item - user.balloon_alert(user, "extinguisher stored") - update_appearance(UPDATE_ICON) - return TRUE - else + return NONE + if(user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK + if(istype(tool, /obj/item/extinguisher)) + if(stored_extinguisher || !opened) toggle_cabinet(user) - else if(!user.combat_mode) - toggle_cabinet(user) - else - return ..() - + return ITEM_INTERACT_SUCCESS + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + stored_extinguisher = tool + balloon_alert(user, "extinguisher stored") + update_appearance(UPDATE_ICON) + return ITEM_INTERACT_SUCCESS + toggle_cabinet(user) + return ITEM_INTERACT_SUCCESS /obj/structure/extinguisher_cabinet/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 358213fd5502..6b66b2e5488a 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -33,9 +33,13 @@ /obj/structure/falsewall/Initialize(mapload) . = ..() - var/obj/item/stack/initialized_mineral = new mineral // Okay this kinda sucks. - set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount) - qdel(initialized_mineral) + // minerals are only applied to fake mineral walls + // ...yes, real iron walls are not actually made of iron + if(ispath(walltype, /turf/closed/wall/mineral)) + var/obj/item/stack/initialized_mineral = new mineral // Okay this kinda sucks. + set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount) + qdel(initialized_mineral) + air_update_turf(TRUE, TRUE) update_appearance() @@ -116,16 +120,16 @@ /obj/structure/falsewall/welder_act(mob/living/user, obj/item/tool) - if(tool.use_tool(src, user, 0 SECONDS, volume=50)) - dismantle(user, TRUE) - return ITEM_INTERACT_SUCCESS - return + if(!tool.use_tool(src, user, 0 SECONDS, volume=50)) + return ITEM_INTERACT_BLOCKING + dismantle(user, TRUE) + return ITEM_INTERACT_SUCCESS -/obj/structure/falsewall/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(!opening) - return ..() - to_chat(user, span_warning("You must wait until the door has stopped moving!")) - return +/obj/structure/falsewall/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(opening) + to_chat(user, span_warning("You must wait until the door has stopped moving!")) + return ITEM_INTERACT_BLOCKING // honest to god no idea what the point of this blocker is, I'm just the messenger + return NONE /obj/structure/falsewall/proc/dismantle(mob/user, disassembled=TRUE, obj/item/tool = null) user.visible_message(span_notice("[user] dismantles the false wall."), span_notice("You dismantle the false wall.")) @@ -145,9 +149,11 @@ /obj/structure/falsewall/get_dumping_location() return null +/obj/structure/falsewall/examine_descriptor(mob/user) + return "wall" + /obj/structure/falsewall/examine_status(mob/user) //So you can't detect falsewalls by examine. - to_chat(user, span_notice("The outer plating is welded firmly in place.")) - return null + return span_notice("The outer plating is welded firmly in place.") /obj/structure/falsewall/mouse_drop_receive(mob/living/dropping, mob/user, params) . = ..() @@ -168,13 +174,14 @@ smoothing_flags = SMOOTH_BITMASK /obj/structure/falsewall/reinforced/examine_status(mob/user) - to_chat(user, span_notice("The outer grille is fully intact.")) - return null + return span_notice("The outer grille is fully intact.") + +/obj/structure/falsewall/reinforced/wirecutter_act(mob/living/user, obj/item/tool) + dismantle(user, TRUE, tool) + return ITEM_INTERACT_SUCCESS -/obj/structure/falsewall/reinforced/attackby(obj/item/tool, mob/user) - ..() - if(tool.tool_behaviour == TOOL_WIRECUTTER) - dismantle(user, TRUE, tool) +/obj/structure/falsewall/reinforced/welder_act(mob/living/user, obj/item/tool) + return NONE /* * Uranium Falsewalls diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index 95c725868ca1..05c0b2984363 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -18,6 +18,7 @@ icon = 'icons/obj/fence.dmi' icon_state = "straight" + tacmap_color = TACMAP_FENCE var/cuttable = TRUE var/hole_size= NO_HOLE @@ -57,37 +58,38 @@ icon_state = "straight_cut3" hole_size = LARGE_HOLE -/obj/structure/fence/attackby(obj/item/W, mob/user) - if(W.tool_behaviour == TOOL_WIRECUTTER) - if(!cuttable) - to_chat(user, span_warning("This section of the fence can't be cut!")) - return - if(invulnerable) - to_chat(user, span_warning("This fence is too strong to cut through!")) - return - var/current_stage = hole_size - if(current_stage >= MAX_HOLE_SIZE) - to_chat(user, span_warning("This fence has too much cut out of it already!")) - return - - user.visible_message(span_danger("\The [user] starts cutting through \the [src] with \the [W]."),\ - span_danger("You start cutting through \the [src] with \the [W].")) - - if(do_after(user, CUT_TIME*W.toolspeed, target = src)) - if(current_stage == hole_size) - switch(++hole_size) - if(MEDIUM_HOLE) - visible_message(span_notice("\The [user] cuts into \the [src] some more.")) - to_chat(user, span_info("You could probably fit yourself through that hole now. Although climbing through would be much faster if you made it even bigger.")) - AddElement(/datum/element/climbable) - if(LARGE_HOLE) - visible_message(span_notice("\The [user] completely cuts through \the [src].")) - to_chat(user, span_info("The hole in \the [src] is now big enough to walk through.")) - RemoveElement(/datum/element/climbable) - - update_cut_status() - - return TRUE +/obj/structure/fence/wirecutter_act(mob/living/user, obj/item/tool) + if(!cuttable) + to_chat(user, span_warning("This section of the fence can't be cut!")) + return ITEM_INTERACT_BLOCKING + + if(invulnerable) + to_chat(user, span_warning("This fence is too strong to cut through!")) + return ITEM_INTERACT_BLOCKING + + var/current_stage = hole_size + if(current_stage >= MAX_HOLE_SIZE) + to_chat(user, span_warning("This fence has too much cut out of it already!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_danger("\The [user] starts cutting through \the [src] with \the [tool]."),\ + span_danger("You start cutting through \the [src] with \the [tool].")) + + if(!tool.use_tool(src, user, CUT_TIME)) + return ITEM_INTERACT_BLOCKING + if(current_stage != hole_size) + return ITEM_INTERACT_BLOCKING + switch(++hole_size) + if(MEDIUM_HOLE) + visible_message(span_notice("\The [user] cuts into \the [src] some more.")) + to_chat(user, span_info("You could probably fit yourself through that hole now. Although climbing through would be much faster if you made it even bigger.")) + AddElement(/datum/element/climbable) + if(LARGE_HOLE) + visible_message(span_notice("\The [user] completely cuts through \the [src].")) + to_chat(user, span_info("The hole in \the [src] is now big enough to walk through.")) + RemoveElement(/datum/element/climbable) + update_cut_status() + return ITEM_INTERACT_SUCCESS /obj/structure/fence/proc/update_cut_status() if(!cuttable) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 44aa56d6088f..af406342726d 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -47,45 +47,66 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) QDEL_NULL(held_item) return ..() -/obj/structure/fireaxecabinet/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(iscyborg(user) || attacking_item.tool_behaviour == unlocking_tool_behavior) +/obj/structure/fireaxecabinet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(iscyborg(user) || tool.tool_behaviour == unlocking_tool_behavior) toggle_lock(user) - else if(attacking_item.tool_behaviour == TOOL_WELDER && !user.combat_mode && !broken) - if(atom_integrity < max_integrity) - if(!attacking_item.tool_start_check(user, amount = 2)) - return - balloon_alert(user, "repairing...") - if(attacking_item.use_tool(src, user, 4 SECONDS, volume= 50, amount = 2)) - repair_damage(max_integrity - get_integrity()) - update_appearance() - balloon_alert(user, "repaired") - else - balloon_alert(user, "already repaired!") - return - else if(istype(attacking_item, /obj/item/stack/sheet/glass) && broken) - var/obj/item/stack/sheet/glass/glass_stack = attacking_item + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/sheet/glass) && broken) + var/obj/item/stack/sheet/glass/glass_stack = tool if(glass_stack.get_amount() < 2) balloon_alert(user, "need more glass!") - return + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "repairing") - if(do_after(user, 2 SECONDS, target = src) && glass_stack.use(2)) - broken = FALSE - repair_damage(max_integrity - get_integrity()) - update_appearance() - else if(open || broken) - if(istype(attacking_item, item_path) && !held_item) - if(HAS_TRAIT(attacking_item, TRAIT_WIELDED)) - balloon_alert(user, "unwield it!") - return - if(!user.transferItemToLoc(attacking_item, src)) - return - held_item = attacking_item - update_appearance() - return - else if(!broken) - toggle_open() - else - return ..() + if(!glass_stack.use_tool(src, user, 2 SECONDS, 2)) + return ITEM_INTERACT_BLOCKING + + broken = FALSE + repair_damage(max_integrity - get_integrity()) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(open || broken) + if(!istype(tool, item_path) || held_item) + if(!broken) + toggle_open() // Unsure why this is desired behaviour + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING + + if(HAS_TRAIT(tool, TRAIT_WIELDED)) + balloon_alert(user, "unwield it!") + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + held_item = tool + update_appearance() + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/structure/fireaxecabinet/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode || broken) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(atom_integrity == max_integrity) + balloon_alert(user, "already repaired!") + return ITEM_INTERACT_BLOCKING + + if(!tool.tool_start_check(user, amount = 2)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "repairing...") + if(!tool.use_tool(src, user, 4 SECONDS, volume= 50, amount = 2)) + return ITEM_INTERACT_BLOCKING + + repair_damage(max_integrity - get_integrity()) + update_appearance() + balloon_alert(user, "repaired") + return ITEM_INTERACT_SUCCESS + /obj/structure/fireaxecabinet/Exited(atom/movable/gone, direction) if(gone == held_item) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 3717ccc637f2..79571231738d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -49,47 +49,50 @@ /// Flags for the flora to determine what kind of sound to play when it gets hit var/flora_flags = NONE -/obj/structure/flora/attackby(obj/item/used_item, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/structure/flora/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(user.combat_mode) - return ..() + return NONE + if(flags_1 & HOLOGRAM_1) balloon_alert(user, "it goes right through!") - return ..() - if(can_uproot && used_item.tool_behaviour == TOOL_SHOVEL) + return ITEM_INTERACT_BLOCKING + + if(can_uproot && tool.tool_behaviour == TOOL_SHOVEL) if(uprooted) user.visible_message(span_notice("[user] starts to replant [src]..."), - span_notice("You start to replant [src]...")) + span_notice("You start to replant [src]...")) else user.visible_message(span_notice("[user] starts to uproot [src]..."), - span_notice("You start to uproot [src]...")) - used_item.play_tool_sound(src, 50) + span_notice("You start to uproot [src]...")) + tool.play_tool_sound(src, 50) if(!do_after(user, harvest_time, src)) - return + return ITEM_INTERACT_BLOCKING if(uprooted) user.visible_message(span_notice("[user] replants [src]."), - span_notice("You replant [src].")) + span_notice("You replant [src].")) replant(user) else user.visible_message(span_notice("[user] uproots [src]."), - span_notice("You uproot [src].")) + span_notice("You uproot [src].")) uproot(user) - used_item.play_tool_sound(src, 50) - return + tool.play_tool_sound(src, 50) + return ITEM_INTERACT_SUCCESS - if(!can_harvest(user, used_item)) - return ..() + if(!can_harvest(user, tool)) + return NONE user.visible_message(span_notice("[user] starts to [harvest_verb] [src]..."), - span_notice("You start to [harvest_verb] [src] with [used_item]...")) - play_attack_sound(used_item.force) - if(!do_after(user, harvest_time * used_item.toolspeed, src)) - return - visible_message(span_notice("[user] [harvest_verb][harvest_verb_suffix] [src]."), - ignored_mobs = list(user)) - play_attack_sound(used_item.force) + span_notice("You start to [harvest_verb] [src] with [tool]...")) + play_attack_sound(tool.force) + if(!do_after(user, harvest_time * tool.toolspeed, src)) + return ITEM_INTERACT_BLOCKING + visible_message(span_notice("[user] [harvest_verb][harvest_verb_suffix] [src]."), + span_notice("You [harvest_verb] [src].")) + play_attack_sound(tool.force) if(harvest(user)) after_harvest(user) + return ITEM_INTERACT_SUCCESS /obj/structure/flora/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index 331643a77f9a..0a27fac98944 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -14,17 +14,19 @@ ///If true, the structure can be deconstructed into a metal sheet with a wrench. var/deconstructible = TRUE -/obj/structure/fluff/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_WRENCH && deconstructible) - user.visible_message(span_notice("[user] starts disassembling [src]..."), span_notice("You start disassembling [src]...")) - I.play_tool_sound(src) - if(I.use_tool(src, user, 50)) - user.visible_message(span_notice("[user] disassembles [src]!"), span_notice("You break down [src] into scrap metal.")) - playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) - new/obj/item/stack/sheet/iron(drop_location()) - qdel(src) - return - ..() +/obj/structure/fluff/wrench_act(mob/living/user, obj/item/tool) + if(!deconstructible) + return ITEM_INTERACT_SKIP_TO_ATTACK + user.visible_message(span_notice("[user] starts disassembling [src]..."), \ + span_notice("You start disassembling [src]...")) + tool.play_tool_sound(src) + if(!tool.use_tool(src, user, 50)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] disassembles [src]!"), span_notice("You break down [src] into scrap metal.")) + playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) + new/obj/item/stack/sheet/iron(drop_location()) + qdel(src) + return ITEM_INTERACT_SUCCESS /** * Empty terrariums are created when a preserved terrarium in a lavaland seed vault is activated. diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 77e80e95dc46..84caad3e7802 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -231,69 +231,79 @@ span_notice("You [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor.")) return ITEM_INTERACT_SUCCESS -/obj/structure/grille/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/grille/item_interaction(mob/living/user, obj/item/tool, list/modifiers) user.changeNext_move(CLICK_CD_MELEE) - if(istype(W, /obj/item/stack/rods) && broken && do_after(user, 1 SECONDS, target = src)) + if(istype(tool, /obj/item/stack/rods) && broken) + if(!do_after(user, 1 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING if(shock(user, 90)) - return - var/obj/item/stack/rods/R = W + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/rods/grille_to_be = tool user.visible_message(span_notice("[user] rebuilds the broken grille."), \ - span_notice("You rebuild the broken grille.")) + span_notice("You rebuild the broken grille.")) repair_grille() - R.use(1) - return TRUE + grille_to_be.use(1) + return ITEM_INTERACT_SUCCESS //window placing begin - else if(is_glass_sheet(W) || istype(W, /obj/item/stack/sheet/bronze)) - if (!broken) - var/obj/item/stack/ST = W - if (ST.get_amount() < 2) - to_chat(user, span_warning("You need at least two sheets of glass for that!")) - return - var/dir_to_set = SOUTHWEST - if(!anchored) - to_chat(user, span_warning("[src] needs to be fastened to the floor first!")) - return - for(var/obj/structure/window/WINDOW in loc) - to_chat(user, span_warning("There is already a window there!")) - return - if(!clear_tile(user)) - return - to_chat(user, span_notice("You start placing the window...")) - if(do_after(user,20, target = src)) - if(!src.loc || !anchored) //Grille broken or unanchored while waiting - return - for(var/obj/structure/window/WINDOW in loc) //Another window already installed on grille - return - if(!clear_tile(user)) - return - var/obj/structure/window/WD - if(istype(W, /obj/item/stack/sheet/plasmarglass)) - WD = new/obj/structure/window/reinforced/plasma/fulltile(drop_location()) //reinforced plasma window - else if(istype(W, /obj/item/stack/sheet/plasmaglass)) - WD = new/obj/structure/window/plasma/fulltile(drop_location()) //plasma window - else if(istype(W, /obj/item/stack/sheet/rglass)) - WD = new/obj/structure/window/reinforced/fulltile(drop_location()) //reinforced window - else if(istype(W, /obj/item/stack/sheet/titaniumglass)) - WD = new/obj/structure/window/reinforced/shuttle(drop_location()) - else if(istype(W, /obj/item/stack/sheet/plastitaniumglass)) - WD = new/obj/structure/window/reinforced/plasma/plastitanium(drop_location()) - else if(istype(W, /obj/item/stack/sheet/bronze)) - WD = new/obj/structure/window/bronze/fulltile(drop_location()) - else - WD = new/obj/structure/window/fulltile(drop_location()) //normal window - WD.setDir(dir_to_set) - WD.set_anchored(FALSE) - WD.state = 0 - ST.use(2) - to_chat(user, span_notice("You place [WD] on [src].")) - return + if(!broken && (is_glass_sheet(tool) || istype(tool, /obj/item/stack/sheet/bronze))) + var/obj/item/stack/to_spend = tool + if (to_spend.get_amount() < 2) + to_chat(user, span_warning("You need at least two sheets of glass for that!")) + return ITEM_INTERACT_BLOCKING + + var/dir_to_set = SOUTHWEST + if(!anchored) + to_chat(user, span_warning("[src] needs to be fastened to the floor first!")) + return ITEM_INTERACT_BLOCKING + + for(var/obj/structure/window/competitor in loc) + to_chat(user, span_warning("There is already a window there!")) + return ITEM_INTERACT_BLOCKING + + if(!clear_tile(user)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You start placing the window...")) + if(!do_after(user,20, target = src)) + return ITEM_INTERACT_BLOCKING + + if(!src.loc || !anchored) //Grille broken or unanchored while waiting + return ITEM_INTERACT_BLOCKING + + for(var/obj/structure/window/competitor in loc) //Another window already installed on grille + return ITEM_INTERACT_BLOCKING + + if(!clear_tile(user)) + return ITEM_INTERACT_BLOCKING + + var/obj/structure/window/building_window + if(istype(tool, /obj/item/stack/sheet/plasmarglass)) + building_window = new/obj/structure/window/reinforced/plasma/fulltile(drop_location()) //reinforced plasma window + else if(istype(tool, /obj/item/stack/sheet/plasmaglass)) + building_window = new/obj/structure/window/plasma/fulltile(drop_location()) //plasma window + else if(istype(tool, /obj/item/stack/sheet/rglass)) + building_window = new/obj/structure/window/reinforced/fulltile(drop_location()) //reinforced window + else if(istype(tool, /obj/item/stack/sheet/titaniumglass)) + building_window = new/obj/structure/window/reinforced/shuttle(drop_location()) + else if(istype(tool, /obj/item/stack/sheet/plastitaniumglass)) + building_window = new/obj/structure/window/reinforced/plasma/plastitanium(drop_location()) + else if(istype(tool, /obj/item/stack/sheet/bronze)) + building_window = new/obj/structure/window/bronze/fulltile(drop_location()) + else + building_window = new/obj/structure/window/fulltile(drop_location()) //normal window + building_window.setDir(dir_to_set) + building_window.set_anchored(FALSE) + building_window.state = 0 + to_spend.use(2) + to_chat(user, span_notice("You place [to_spend] on [src].")) + return ITEM_INTERACT_SUCCESS //window placing end - else if((W.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 70)) - return + if((tool.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 70)) + return ITEM_INTERACT_BLOCKING - return ..() + return NONE /obj/structure/grille/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 0615ea579da9..aca4e872be62 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -63,18 +63,48 @@ LAZYINITLIST(buckled_mobs) . = ..() -/obj/structure/guillotine/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/stack/sheet/plasteel)) - to_chat(user, span_notice("You start repairing the guillotine with the plasteel...")) - if(blade_sharpness<10) - if(do_after(user,100,target=user)) - blade_sharpness = min(10,blade_sharpness+3) - I.use(1) - to_chat(user, span_notice("You repair the guillotine with the plasteel.")) - else - to_chat(user, span_notice("You stop repairing the guillotine with the plasteel.")) - else +/obj/structure/guillotine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/sheet/plasteel)) + if(blade_sharpness == GUILLOTINE_BLADE_MAX_SHARP) to_chat(user, span_warning("The guillotine is already fully repaired!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You start repairing the guillotine with the plasteel...")) + if(!do_after(user, 100, target = user)) + to_chat(user, span_notice("You stop repairing the guillotine with the plasteel.")) + return ITEM_INTERACT_BLOCKING + + blade_sharpness = min(GUILLOTINE_BLADE_MAX_SHARP, blade_sharpness+3) + tool.use(1) + to_chat(user, span_notice("You repair the guillotine with the plasteel.")) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/sharpener)) + add_fingerprint(user) + if (blade_status == GUILLOTINE_BLADE_SHARPENING) + return ITEM_INTERACT_BLOCKING + + if (blade_status != GUILLOTINE_BLADE_RAISED) + to_chat(user, span_warning("You need to raise the blade in order to sharpen it!")) + return ITEM_INTERACT_BLOCKING + + if (blade_sharpness == GUILLOTINE_BLADE_MAX_SHARP) + to_chat(user, span_warning("The blade is sharp enough!")) + return ITEM_INTERACT_BLOCKING + + blade_status = GUILLOTINE_BLADE_SHARPENING + if(!do_after(user, 0.7 SECONDS, target = src)) + blade_status = GUILLOTINE_BLADE_RAISED + return ITEM_INTERACT_BLOCKING + + blade_status = GUILLOTINE_BLADE_RAISED + user.visible_message(span_notice("[user] sharpens the large blade of the guillotine."), + span_notice("You sharpen the large blade of the guillotine.")) + blade_sharpness += 1 + playsound(src, 'sound/items/unsheath.ogg', 100, TRUE) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/guillotine/examine(mob/user) . = ..() @@ -189,34 +219,6 @@ blade_status = GUILLOTINE_BLADE_DROPPED icon_state = "guillotine" -/obj/structure/guillotine/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if (istype(W, /obj/item/sharpener)) - add_fingerprint(user) - if (blade_status == GUILLOTINE_BLADE_SHARPENING) - return - - if (blade_status == GUILLOTINE_BLADE_RAISED) - if (blade_sharpness < GUILLOTINE_BLADE_MAX_SHARP) - blade_status = GUILLOTINE_BLADE_SHARPENING - if(do_after(user, 0.7 SECONDS, target = src)) - blade_status = GUILLOTINE_BLADE_RAISED - user.visible_message(span_notice("[user] sharpens the large blade of the guillotine."), - span_notice("You sharpen the large blade of the guillotine.")) - blade_sharpness += 1 - playsound(src, 'sound/items/unsheath.ogg', 100, TRUE) - return - else - blade_status = GUILLOTINE_BLADE_RAISED - return - else - to_chat(user, span_warning("The blade is sharp enough!")) - return - else - to_chat(user, span_warning("You need to raise the blade in order to sharpen it!")) - return - else - return ..() - /obj/structure/guillotine/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) if (!anchored) to_chat(usr, span_warning("[src] needs to be wrenched to the floor!")) diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index f1894b1f7aa9..d33eab136b84 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -31,24 +31,27 @@ . += new /mutable_appearance(gun_overlay) . += "[icon_state]_[open ? "open" : "door"]" -/obj/structure/guncase/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/structure/guncase/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(iscyborg(user) || isalien(user)) - return - if(istype(I, gun_category) && open) - if(LAZYLEN(contents) < capacity) - if(!user.transferItemToLoc(I, src)) - return - to_chat(user, span_notice("You place [I] in [src].")) - update_appearance() - else + return NONE + if(istype(tool, gun_category) && open) + if(LAZYLEN(contents) == capacity) to_chat(user, span_warning("[src] is full.")) - return + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - else if(!user.combat_mode) + to_chat(user, span_notice("You place [tool] in [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(!user.combat_mode) open = !open update_appearance() - else - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/guncase/attack_hand(mob/user, list/modifiers) . = ..() @@ -62,6 +65,13 @@ open = !open update_appearance() +/obj/structure/guncase/attack_hand_secondary(mob/user, list/modifiers) + if(iscyborg(user) || isalien(user)) + return ..() + open = !open + update_appearance() + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + /** * show_menu: Shows a radial menu to a user consisting of an available weaponry for taking * diff --git a/code/game/objects/structures/janitor.dm b/code/game/objects/structures/janitor.dm index b0b194d6f1de..4fef894dfb6f 100644 --- a/code/game/objects/structures/janitor.dm +++ b/code/game/objects/structures/janitor.dm @@ -28,30 +28,22 @@ return . -/obj/structure/mop_bucket/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/reagent_containers)) - update_appearance(UPDATE_OVERLAYS) - return FALSE // skip attack animation when refilling cart - - return ..() - -/obj/structure/mop_bucket/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/mop)) - if(weapon.reagents.total_volume >= weapon.reagents.maximum_volume) +/obj/structure/mop_bucket/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/mop)) + if(tool.reagents.total_volume >= tool.reagents.maximum_volume) balloon_alert(user, "already soaked!") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ITEM_INTERACT_BLOCKING + if(!CART_HAS_MINIMUM_REAGENT_VOLUME) balloon_alert(user, "empty!") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - reagents.trans_to(weapon, weapon.reagents.maximum_volume, transferred_by = user) + return ITEM_INTERACT_BLOCKING + + reagents.trans_to(tool, tool.reagents.maximum_volume, transferred_by = user) balloon_alert(user, "doused mop") playsound(src, 'sound/effects/slosh.ogg', 25, vary = TRUE) + return ITEM_INTERACT_SUCCESS - if(istype(weapon, /obj/item/reagent_containers) || istype(weapon, /obj/item/mop)) - update_appearance(UPDATE_OVERLAYS) - return SECONDARY_ATTACK_CONTINUE_CHAIN // skip attack animations when refilling cart - - return SECONDARY_ATTACK_CONTINUE_CHAIN + return NONE /obj/structure/mop_bucket/update_overlays() . = ..() @@ -182,55 +174,77 @@ return . || NONE -/obj/structure/mop_bucket/janitorialcart/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/mop)) +/obj/structure/mop_bucket/janitorialcart/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/mop)) if(mymop) balloon_alert(user, "already has \a [mymop]!") - else if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "placed [attacking_item]") - return + return ITEM_INTERACT_BLOCKING - if(istype(attacking_item, /obj/item/pushbroom)) + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "placed [tool]") + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/pushbroom)) if(mybroom) balloon_alert(user, "already has \a [mybroom]!") - else if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "placed [attacking_item]") - return + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - if(istype(attacking_item, /obj/item/storage/bag/trash)) + balloon_alert(user, "placed [tool]") + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/storage/bag/trash)) if(mybag) balloon_alert(user, "already has \a [mybag]!") - return + return ITEM_INTERACT_BLOCKING - var/obj/item/storage/bag/trash/insert = attacking_item + var/obj/item/storage/bag/trash/insert = tool if(!insert.insertable) balloon_alert(user, "cannot be inserted!") - return + return ITEM_INTERACT_BLOCKING - if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "attached [attacking_item]") - return + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "attached [tool]") + return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/reagent_containers/spray/cleaner)) + if(istype(tool, /obj/item/reagent_containers/spray/cleaner)) if(myspray) balloon_alert(user, "already has \a [myspray]!") - else if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "placed [attacking_item]") - return + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - if(istype(attacking_item, /obj/item/lightreplacer)) + balloon_alert(user, "placed [tool]") + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/lightreplacer)) if(myreplacer) balloon_alert(user, "already has \a [myreplacer]!") - else if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "placed [attacking_item]") - return + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - else if(istype(attacking_item, /obj/item/clothing/suit/caution)) + balloon_alert(user, "placed [tool]") + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/clothing/suit/caution)) if(held_signs.len >= max_signs) balloon_alert(user, "sign rack is full!") - else if(user.transferItemToLoc(attacking_item, src)) - balloon_alert(user, "placed [attacking_item]") - return + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "placed [tool]") + return ITEM_INTERACT_SUCCESS return ..() @@ -248,19 +262,15 @@ update_appearance(UPDATE_OVERLAYS) return ITEM_INTERACT_SUCCESS -/obj/structure/mop_bucket/janitorialcart/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/mop_bucket/janitorialcart/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) . = ..() - if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - if(istype(weapon, /obj/item/reagent_containers)) - update_appearance(UPDATE_OVERLAYS) - return SECONDARY_ATTACK_CONTINUE_CHAIN //so we can empty the cart via our afterattack without trying to put the item in the bag + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . - if(mybag?.attackby(weapon, user)) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(!mybag?.atom_storage.attempt_insert(tool, user)) + return . - return SECONDARY_ATTACK_CONTINUE_CHAIN + return ITEM_INTERACT_SUCCESS /obj/structure/mop_bucket/janitorialcart/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 2988c564754e..6cbe466f4744 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -51,19 +51,22 @@ default_unfasten_wrench(user, tool) return TRUE -/obj/structure/kitchenspike_frame/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/kitchenspike_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(!istype(attacking_item, /obj/item/stack/rods)) - return ..() - var/obj/item/stack/rods/used_rods = attacking_item - if(used_rods.get_amount() >= MEATSPIKE_IRONROD_REQUIREMENT) - used_rods.use(MEATSPIKE_IRONROD_REQUIREMENT) - balloon_alert(user, "meatspike built") - var/obj/structure/new_meatspike = new /obj/structure/kitchenspike(loc) - transfer_fingerprints_to(new_meatspike) - qdel(src) - return - balloon_alert(user, "[MEATSPIKE_IRONROD_REQUIREMENT] rods needed!") + if(!istype(tool, /obj/item/stack/rods)) + return NONE + + var/obj/item/stack/rods/used_rods = tool + if(used_rods.get_amount() < MEATSPIKE_IRONROD_REQUIREMENT) + balloon_alert(user, "[MEATSPIKE_IRONROD_REQUIREMENT] rods needed!") + return ITEM_INTERACT_BLOCKING + + used_rods.use(MEATSPIKE_IRONROD_REQUIREMENT) + var/obj/structure/new_meatspike = new /obj/structure/kitchenspike(loc) + new_meatspike.balloon_alert(user, "meatspike built") + transfer_fingerprints_to(new_meatspike) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/kitchenspike name = "meat spike" diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 20e21d7113a3..25630c16e2ea 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -171,6 +171,7 @@ down.up = null down.update_appearance(UPDATE_ICON_STATE) + down.update_minimap_blip() down = null update_appearance(UPDATE_ICON_STATE) clear_base_transparency() @@ -194,6 +195,7 @@ up.down = null up.clear_base_transparency() up.update_appearance(UPDATE_ICON_STATE) + up.update_minimap_blip() up = null update_appearance(UPDATE_ICON_STATE) @@ -202,6 +204,11 @@ unlink_down() unlink_up() +/obj/structure/ladder/proc/update_minimap_blip() + remove_minimap_blip(MINIMAP_LADDER_BLIP, src) + if(up || down) + add_minimap_blip(src, MINIMAP_LADDER_BLIP, "ladder") + /obj/structure/ladder/LateInitialize() // By default, discover ladders above and below us vertically var/turf/base = get_turf(src) @@ -223,6 +230,7 @@ if(requires_friend) CRASH("[src] failed to find another ladder to link up with at: [x],[y],[z]") // DARKPACK EDIT ADD END - Manholes + update_minimap_blip() /obj/structure/ladder/update_icon_state() // DARKPACK EDIT CHANGE START - Manholes @@ -404,16 +412,17 @@ use(user, going_up = FALSE) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN -/obj/structure/ladder/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/ladder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return NONE use(user) - return TRUE + return ITEM_INTERACT_SUCCESS -/obj/structure/ladder/attackby_secondary(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) - return +/obj/structure/ladder/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return NONE use(user, going_up = FALSE) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ITEM_INTERACT_SUCCESS /obj/structure/ladder/attack_robot(mob/living/silicon/robot/user) if(user.Adjacent(src)) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b6c959a05ab3..85b25c0db33c 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -66,15 +66,16 @@ /obj/structure/lattice/blob_act(obj/structure/blob/B) return -/obj/structure/lattice/attackby(obj/item/C, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/lattice/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + var/turf/underneath = get_turf(src) + return underneath.item_interaction(user, tool) //hand this off to the turf instead (for building plating, catwalks, etc) + +/obj/structure/lattice/wirecutter_act(mob/living/user, obj/item/tool) if(resistance_flags & INDESTRUCTIBLE) - return - if(C.tool_behaviour == TOOL_WIRECUTTER) - to_chat(user, span_notice("Slicing [name] joints ...")) - deconstruct() - else - var/turf/T = get_turf(src) - return T.attackby(C, user) //hand this off to the turf instead (for building plating, catwalks, etc) + return NONE + to_chat(user, span_notice("Slicing [name] joints ...")) + deconstruct() + return ITEM_INTERACT_SUCCESS /obj/structure/lattice/atom_deconstruct(disassembled = TRUE) if(!isnull(build_material) && number_of_mats >= 1) @@ -158,13 +159,6 @@ desc = "A heavily reinforced catwalk used to build bridges in hostile environments. It doesn't look like anything could make this budge." resistance_flags = INDESTRUCTIBLE -/obj/structure/lattice/catwalk/mining/attackby(obj/item/C, mob/user, list/modifiers, list/attack_modifiers) - // Allow cable placement even though we're indestructible - if(istype(C, /obj/item/stack/cable_coil)) - var/turf/T = get_turf(src) - return T.attackby(C, user) - return ..() - /obj/structure/lattice/catwalk/mining/deconstruction_hints(mob/user) return @@ -181,21 +175,22 @@ /obj/structure/lattice/catwalk/lava/deconstruction_hints(mob/user) return span_notice("The rods look like they could be cut, but the heat treatment will shatter off. There's space for a tile.") -/obj/structure/lattice/catwalk/lava/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(!ismetaltile(attacking_item)) - return - var/obj/item/stack/tile/iron/attacking_tiles = attacking_item +/obj/structure/lattice/catwalk/lava/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!ismetaltile(tool)) + return ..() + var/obj/item/stack/tile/iron/attacking_tiles = tool if(!attacking_tiles.use(1)) to_chat(user, span_warning("You need one floor tile to build atop [src].")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You construct new plating with [src] as support.")) playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE) - var/turf/turf_we_place_on = get_turf(src) - turf_we_place_on.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + var/turf/base = get_turf(src) + base.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/lattice/catwalk/boulder name = "boulder platform" @@ -214,10 +209,10 @@ fast_emissive_blocker(src) AddElement(/datum/element/elevation, pixel_shift = 8) -/obj/structure/lattice/catwalk/boulder/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(ismetaltile(attacking_item)) +/obj/structure/lattice/catwalk/boulder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(ismetaltile(tool)) balloon_alert(user, "too unstable!") - return FALSE + return ITEM_INTERACT_BLOCKING return ..() /obj/structure/lattice/catwalk/boulder/CanAllowThrough(atom/movable/mover, border_dir) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index 5c790457e440..d46ee0144bca 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -62,14 +62,14 @@ RegisterSignal(reagents, COMSIG_REAGENTS_HOLDER_UPDATED, PROC_REF(start_chemming)) return PROCESS_KILL -/obj/structure/geyser/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(item, /obj/item/mining_scanner) && !istype(item, /obj/item/t_scanner/adv_mining_scanner)) +/obj/structure/geyser/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/mining_scanner) && !istype(tool, /obj/item/t_scanner/adv_mining_scanner)) playsound(src, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE) - return ..() //this runs the plunger code + return NONE //this runs the plunger code if(discovered) to_chat(user, span_warning("This geyser has already been discovered!")) - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You discovered the geyser and mark it on the GPS system!")) playsound(src, 'sound/machines/beep/twobeep_high.ogg', 30) @@ -83,13 +83,11 @@ AddComponent(/datum/component/gps, true_name) //put it on the gps so miners can mark it and chemists can profit off of it - if(isliving(user)) - var/mob/living/living = user - - var/obj/item/card/id/card = living.get_idcard() - if(card) - to_chat(user, span_notice("[point_value] mining points have been paid out!")) - card.registered_account.mining_points += point_value + var/obj/item/card/id/card = user.get_idcard() + if(card) + to_chat(user, span_notice("[point_value] mining points have been paid out!")) + card.registered_account.mining_points += point_value + return ITEM_INTERACT_SUCCESS /obj/structure/geyser/wittel reagent_id = /datum/reagent/wittel @@ -135,6 +133,7 @@ icon_state = "plunger" worn_icon_state = "plunger" icon_angle = 90 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5) slot_flags = ITEM_SLOT_MASK flags_inv = HIDESNOUT @@ -163,10 +162,9 @@ if(tt.target_zone != BODY_ZONE_HEAD) return if(iscarbon(hit_atom)) - var/mob/living/carbon/H = hit_atom - if(!H.wear_mask) - H.equip_to_slot_if_possible(src, ITEM_SLOT_MASK) - H.visible_message(span_warning("The plunger slams into [H]'s face!"), span_warning("The plunger suctions to your face!")) + var/mob/living/carbon/victim = hit_atom + if(victim.equip_to_slot_if_possible(src, ITEM_SLOT_MASK, disable_warning = TRUE)) + victim.visible_message(span_warning("The plunger slams into [victim]'s face!"), span_warning("The plunger suctions to your face!")) /obj/item/plunger/attack_self(mob/user) . = ..() diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm index e0298fd3cc50..2300818183dc 100644 --- a/code/game/objects/structures/lavaland/gulag_vent.dm +++ b/code/game/objects/structures/lavaland/gulag_vent.dm @@ -13,7 +13,7 @@ anchored = TRUE density = TRUE /// What kind of rock we got in there? - var/spawned_boulder = /obj/item/boulder/gulag + var/spawned_boulder = /obj/item/boulder/gulag_vent /// Prevents multiple people from hauling at a time var/occupied = FALSE diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index 3ab9542f6301..f70db6870f6b 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -107,17 +107,16 @@ SSore_generation.processed_vents -= src return ..() -/obj/structure/ore_vent/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(.) - return TRUE - if(!is_type_in_list(attacking_item, scanning_equipment)) - return TRUE +/obj/structure/ore_vent/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_type_in_list(tool, scanning_equipment)) + return NONE + if(tapped) balloon_alert_to_viewers("vent tapped!") - return TRUE + return ITEM_INTERACT_BLOCKING + scan_and_confirm(user) - return TRUE + return ITEM_INTERACT_SUCCESS /obj/structure/ore_vent/attack_hand(mob/living/user, list/modifiers) . = ..() @@ -252,20 +251,20 @@ for(var/turf/rock in oview(i)) if(istype(rock, /turf/closed/mineral)) //Solid wall checks: Mine out the wall, but start skipping more as we move farther away. - if(prob(50 + (i * 8))) + if(prob((i * 15) - 25)) continue var/turf/closed/mineral/drillable = rock drillable.gets_drilled(user) - if(prob(50)) + if(prob(15)) new /obj/effect/decal/cleanable/rubble(rock) // Only throw rubble when we actually mine something, and not all the time. continue //skip the rest of the checks - if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // Open rock floors: make rubble decals occasionally. + if(istype(rock, /turf/open/misc/asteroid) && prob(10)) // Open rock floors: make rubble decals occasionally. new /obj/effect/decal/cleanable/rubble(rock) continue if(istype(rock, /turf/open/lava)) // Lava turfs, skip as we get farther away, otherwise produce a boulder and make it a platform, lasting the whole wave. - if(prob(30 + (i * 8))) // We want to skip these less than the mining walls, since lava is more common to deal with. + if(prob((i * 15) - 35)) // We want to skip these less than the mining walls, since lava is more common to deal with. continue var/obj/item/boulder/produced = produce_boulder(FALSE) @@ -555,7 +554,7 @@ Shake(duration = 1.5 SECONDS) //decorate the boulder with materials - var/list/mats_list = list() + var/list/mats_list = new_rock.custom_materials?.Copy() || list() for(var/iteration in 1 to MINERALS_PER_BOULDER) var/datum/material/material = pick_weight(mineral_breakdown) mats_list[material] += ore_quantity_function(iteration) @@ -669,6 +668,10 @@ if(!mapload) vent_size_setup(random = TRUE) // We only do this here specific to random distribution ore vents, and within mapload we handle this manually within SSore_generation. +/obj/structure/ore_vent/random/LateInitialize() + . = ..() + if(!length(mineral_breakdown)) + CRASH("We generated an ore vent, and after init, it had no mineral breakdown!") /obj/structure/ore_vent/random/icebox //The one that shows up on the top level of icebox icon_state = "ore_vent_ice" diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index c6be3348e74f..a23f3cd3c909 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -93,29 +93,35 @@ at the cost of risking a vicious bite.**/ return to_chat(user, span_warning("You find nothing of value...")) -/obj/structure/moisture_trap/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/moisture_trap/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(iscyborg(user) || isalien(user) || !CanReachInside(user)) - return ..() + return NONE + add_fingerprint(user) - if(is_reagent_container(I)) - if(istype(I, /obj/item/food/monkeycube)) - var/obj/item/food/monkeycube/cube = I + if(is_reagent_container(tool)) + if(istype(tool, /obj/item/food/monkeycube)) + var/obj/item/food/monkeycube/cube = tool cube.Expand() - return - var/obj/item/reagent_containers/reagent_container = I + return ITEM_INTERACT_SUCCESS + + var/obj/item/reagent_containers/reagent_container = tool if(reagent_container.is_open_container()) reagent_container.reagents.add_reagent(/datum/reagent/water, min(reagent_container.volume - reagent_container.reagents.total_volume, reagent_container.amount_per_transfer_from_this)) to_chat(user, span_notice("You fill [reagent_container] from [src].")) - return + return ITEM_INTERACT_SUCCESS + if(hidden_item) to_chat(user, span_warning("There is already something inside [src].")) - return - if(!user.transferItemToLoc(I, src)) - to_chat(user, span_warning("\The [I] is stuck to your hand, you cannot put it in [src]!")) - return - hidden_item = I - to_chat(user, span_notice("You hide [I] inside the basin.")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("\The [tool] is stuck to your hand, you cannot put it in [src]!")) + return ITEM_INTERACT_BLOCKING + + hidden_item = tool + to_chat(user, span_notice("You hide [tool] inside the basin.")) playsound(src,'sound/effects/splash.ogg', 55, TRUE) + return ITEM_INTERACT_SUCCESS #define ALTAR_INACTIVE 0 #define ALTAR_STAGEONE 1 @@ -138,11 +144,11 @@ at the cost of risking a vicious bite.**/ /// Stage of the pants making process var/status = ALTAR_INACTIVE -/obj/structure/destructible/cult/pants_altar/attackby(obj/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user) && status) - to_chat(user, span_notice("[src] is creating something, you can't move it!")) - return - return ..() +/obj/structure/destructible/cult/pants_altar/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/melee/cultblade/dagger) || !IS_CULTIST(user) || !status) + return NONE + to_chat(user, span_notice("[src] is creating something, you can't move it!")) + return ITEM_INTERACT_SUCCESS /obj/structure/destructible/cult/pants_altar/attack_hand(mob/living/user, list/modifiers) . = ..() diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 1a194dd0df33..1057b4771c88 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -138,13 +138,14 @@ icon_state = "[initial(icon_state)][door_opened ? "open":""]" return ..() -/obj/structure/mineral_door/attackby(obj/item/I, mob/living/user) - if(pickaxe_door(user, I)) - return - else if(!user.combat_mode) - return attack_hand(user) - else - return ..() +/obj/structure/mineral_door/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(pickaxe_door(user, tool)) + return ITEM_INTERACT_SUCCESS + + if(!user.combat_mode) + return attack_hand(user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_BLOCKING + + return NONE /obj/structure/mineral_door/set_anchored(anchorvalue) //called in default_unfasten_wrench() chain . = ..() @@ -281,10 +282,10 @@ /obj/structure/mineral_door/wood/crowbar_act(mob/living/user, obj/item/I) return crowbar_door(user, I) -/obj/structure/mineral_door/wood/attackby(obj/item/I, mob/living/user) - if(I.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - fire_act(I.get_temperature()) - return +/obj/structure/mineral_door/wood/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + fire_act(tool.get_temperature()) + return ITEM_INTERACT_SUCCESS return ..() @@ -317,18 +318,19 @@ /obj/structure/mineral_door/paperframe/crowbar_act(mob/living/user, obj/item/I) return crowbar_door(user, I) -/obj/structure/mineral_door/paperframe/attackby(obj/item/I, mob/living/user) - if(I.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) //BURN IT ALL DOWN JIM - fire_act(I.get_temperature()) - return +/obj/structure/mineral_door/paperframe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) //BURN IT ALL DOWN JIM + fire_act(tool.get_temperature()) + return ITEM_INTERACT_SUCCESS - if((!user.combat_mode) && istype(I, /obj/item/paper) && (atom_integrity < max_integrity)) + if(!user.combat_mode && istype(tool, /obj/item/paper) && (atom_integrity < max_integrity)) user.visible_message(span_notice("[user] starts to patch the holes in [src]."), span_notice("You start patching some of the holes in [src]!")) - if(do_after(user, 2 SECONDS, src)) - atom_integrity = min(atom_integrity+4,max_integrity) - qdel(I) - user.visible_message(span_notice("[user] patches some of the holes in [src]."), span_notice("You patch some of the holes in [src]!")) - return TRUE + if(!do_after(user, 2 SECONDS, src)) + return ITEM_INTERACT_BLOCKING + atom_integrity = min(atom_integrity+4,max_integrity) + qdel(tool) + user.visible_message(span_notice("[user] patches some of the holes in [src]."), span_notice("You patch some of the holes in [src]!")) + return ITEM_INTERACT_SUCCESS return ..() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index ee4b16dc10d6..03315f2ad4d1 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -225,7 +225,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28) to_chat(race_changer, span_notice("Invalid color. Your color is not bright enough.")) race_changer.update_body(is_creating = TRUE) - race_changer.update_mutations_overlay() // no hulk lizard /// Hook for mirrors to do stuff on species change /obj/structure/mirror/proc/on_species_change(mob/living/carbon/human/race_changer, datum/species/newrace) @@ -261,7 +260,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28) sexy.dna.update_ui_block(/datum/dna_block/identity/gender) sexy.update_body(is_creating = TRUE) // or else physique won't change properly - sexy.update_mutations_overlay() //(hulk male/female) sexy.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing /obj/structure/mirror/proc/change_eyes(mob/living/carbon/human/user) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 3fb3ff29410a..56692c157100 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -566,16 +566,18 @@ GLOBAL_LIST_EMPTY(crematoriums) to_chat(user, span_warning("That's not connected to anything!")) add_fingerprint(user) -/obj/structure/tray/attackby(obj/P, mob/user, list/modifiers, list/attack_modifiers) - if(!istype(P, /obj/item/riding_offhand)) - return ..() +/obj/structure/tray/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/riding_offhand)) + return NONE - var/obj/item/riding_offhand/riding_item = P + var/obj/item/riding_offhand/riding_item = tool var/mob/living/carried_mob = riding_item.rider if(carried_mob == user) //Piggyback user. - return + return ITEM_INTERACT_BLOCKING + user.unbuckle_mob(carried_mob) mouse_drop_receive(carried_mob, user) + return ITEM_INTERACT_SUCCESS /obj/structure/tray/mouse_drop_receive(atom/movable/O as mob|obj, mob/user, params) if(!ismovable(O) || O.anchored || O.loc == user) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index d9b7a4c5c03d..5e33d4ee924f 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -39,21 +39,26 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/noticeboard, 32) find_and_mount_on_atom() //attaching papers!! -/obj/structure/noticeboard/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - 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.transferItemToLoc(O, src)) - return - notices++ - update_appearance(UPDATE_ICON) - to_chat(user, span_notice("You pin the [O] to the noticeboard.")) - else - to_chat(user, span_warning("The notice board is full!")) - else - return ..() +/obj/structure/noticeboard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/paper) && !istype(tool, /obj/item/photo)) + return NONE + + if(!allowed(user)) + to_chat(user, span_warning("You are not authorized to add notices!")) + return ITEM_INTERACT_BLOCKING + + if(notices >= MAX_NOTICES) + to_chat(user, span_warning("The notice board is full!")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + notices++ + update_appearance(UPDATE_ICON) + to_chat(user, span_notice("You pin the [tool] to the noticeboard.")) + return ITEM_INTERACT_SUCCESS + /obj/structure/noticeboard/ui_state(mob/user) return GLOB.physical_state diff --git a/code/game/objects/structures/ore_containers.dm b/code/game/objects/structures/ore_containers.dm index ba8e59cc78a9..047799a22766 100644 --- a/code/game/objects/structures/ore_containers.dm +++ b/code/game/objects/structures/ore_containers.dm @@ -1,11 +1,11 @@ ///structure to contain ores /obj/structure/ore_container -/obj/structure/ore_container/attackby(obj/item/ore, mob/living/carbon/human/user, list/modifiers, list/attack_modifiers) - if(istype(ore, /obj/item/stack/ore) && !user.combat_mode) - ore.forceMove(src) - return - return ..() +/obj/structure/ore_container/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/ore) || user.combat_mode) + return NONE + tool.forceMove(src) + return ITEM_INTERACT_SUCCESS /obj/structure/ore_container/Entered(atom/movable/mover) . = ..() diff --git a/code/game/objects/structures/plaques/_plaques.dm b/code/game/objects/structures/plaques/_plaques.dm index de143b17f9f3..fa0e8ff0db6b 100644 --- a/code/game/objects/structures/plaques/_plaques.dm +++ b/code/game/objects/structures/plaques/_plaques.dm @@ -82,37 +82,45 @@ atom_integrity = max_integrity return TRUE -/obj/structure/plaque/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/pen/fountain)) - if(engraved) - to_chat(user, span_warning("This plaque has already been engraved.")) - return - var/namechoice = tgui_input_text(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization", max_length = MAX_NAME_LEN) - if(!namechoice) - return - var/descriptionchoice = tgui_input_text(user, "Engrave this plaque's text", "Plaque Customization", max_length = MAX_PLAQUE_LEN) - if(!descriptionchoice) - return - if(!Adjacent(user)) //Make sure user is adjacent still - to_chat(user, span_warning("You need to stand next to the plaque to engrave it!")) - return - user.visible_message(span_notice("[user] begins engraving [src]."), \ - span_notice("You begin engraving [src].")) - if(!do_after(user, 4 SECONDS, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. - return - name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. - desc = "The plaque reads: '[descriptionchoice]'" - engraved = TRUE //The plaque now has a name, description, and can't be altered again. - user.visible_message(span_notice("[user] engraves [src]."), \ - span_notice("You engrave [src].")) - return - if(istype(I, /obj/item/pen)) +/obj/structure/plaque/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/pen)) + return NONE + + if(!istype(tool, /obj/item/pen/fountain)) if(engraved) to_chat(user, span_warning("This plaque has already been engraved, and your pen isn't fancy enough to engrave it anyway! Find a fountain pen.")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_warning("Your pen isn't fancy enough to engrave this! Find a fountain pen.")) //Go steal the Curator's. - return - return ..() + return ITEM_INTERACT_BLOCKING + + if(engraved) + to_chat(user, span_warning("This plaque has already been engraved.")) + return ITEM_INTERACT_BLOCKING + + var/namechoice = tgui_input_text(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization", max_length = MAX_NAME_LEN) + if(!namechoice) + return ITEM_INTERACT_BLOCKING + + var/descriptionchoice = tgui_input_text(user, "Engrave this plaque's text", "Plaque Customization", max_length = MAX_PLAQUE_LEN) + if(!descriptionchoice) + return ITEM_INTERACT_BLOCKING + + if(!Adjacent(user)) //Make sure user is adjacent still + to_chat(user, span_warning("You need to stand next to the plaque to engrave it!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] begins engraving [src]."), \ + span_notice("You begin engraving [src].")) + if(!do_after(user, 4 SECONDS, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. + return ITEM_INTERACT_BLOCKING + + name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. + desc = "The plaque reads: '[descriptionchoice]'" + engraved = TRUE //The plaque now has a name, description, and can't be altered again. + user.visible_message(span_notice("[user] engraves [src]."), \ + span_notice("You engrave [src].")) + return ITEM_INTERACT_SUCCESS /obj/item/plaque //The item version of the above. icon = 'icons/obj/signs.dmi' @@ -155,37 +163,45 @@ return TRUE -/obj/item/plaque/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) //Same as part of the above, except for the item in hand instead of the structure. - if(istype(I, /obj/item/pen/fountain)) - if(engraved) - to_chat(user, span_warning("This plaque has already been engraved.")) - return - var/namechoice = tgui_input_text(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization", max_length = MAX_NAME_LEN) - if(!namechoice) - return - var/descriptionchoice = tgui_input_text(user, "Engrave this plaque's text", "Plaque Customization", max_length = MAX_PLAQUE_LEN) - if(!descriptionchoice) - return - if(!Adjacent(user)) //Make sure user is adjacent still - to_chat(user, span_warning("You need to stand next to the plaque to engrave it!")) - return - user.visible_message(span_notice("[user] begins engraving [src]."), \ - span_notice("You begin engraving [src].")) - if(!do_after(user, 4 SECONDS, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. - return - name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. - desc = "The plaque reads: '[descriptionchoice]'" - engraved = TRUE //The plaque now has a name, description, and can't be altered again. - user.visible_message(span_notice("[user] engraves [src]."), \ - span_notice("You engrave [src].")) - return - if(istype(I, /obj/item/pen)) +/obj/item/plaque/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //Same as part of the above, except for the item in hand instead of the structure. + if(!istype(tool, /obj/item/pen)) + return NONE + + if(!istype(tool, /obj/item/pen/fountain)) if(engraved) to_chat(user, span_warning("This plaque has already been engraved, and your pen isn't fancy enough to engrave it anyway! Find a fountain pen.")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_warning("Your pen isn't fancy enough to engrave this! Find a fountain pen.")) //Go steal the Curator's. - return - return ..() + return ITEM_INTERACT_BLOCKING + + if(engraved) + to_chat(user, span_warning("This plaque has already been engraved.")) + return ITEM_INTERACT_BLOCKING + + var/namechoice = tgui_input_text(user, "Title this plaque. (e.g. 'Best HoP Award', 'Great Ashwalker War Memorial')", "Plaque Customization", max_length = MAX_NAME_LEN) + if(!namechoice) + return ITEM_INTERACT_BLOCKING + + var/descriptionchoice = tgui_input_text(user, "Engrave this plaque's text", "Plaque Customization", max_length = MAX_PLAQUE_LEN) + if(!descriptionchoice) + return ITEM_INTERACT_BLOCKING + + if(!Adjacent(user)) //Make sure user is adjacent still + to_chat(user, span_warning("You need to stand next to the plaque to engrave it!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] begins engraving [src]."), \ + span_notice("You begin engraving [src].")) + if(!do_after(user, 4 SECONDS, target = src)) //This spits out a visible message that somebody is engraving a plaque, then has a delay. + return ITEM_INTERACT_BLOCKING + + name = "\improper [namechoice]" //We want improper here so examine doesn't get weird if somebody capitalizes the plaque title. + desc = "The plaque reads: '[descriptionchoice]'" + engraved = TRUE //The plaque now has a name, description, and can't be altered again. + user.visible_message(span_notice("[user] engraves [src]."), \ + span_notice("You engrave [src].")) + return ITEM_INTERACT_SUCCESS /obj/item/plaque/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!iswallturf(interacting_with)) diff --git a/code/game/objects/structures/plaques/static_plaques.dm b/code/game/objects/structures/plaques/static_plaques.dm index 3bb870c2088a..e99b9dc6c630 100644 --- a/code/game/objects/structures/plaques/static_plaques.dm +++ b/code/game/objects/structures/plaques/static_plaques.dm @@ -69,9 +69,9 @@ /obj/structure/plaque/static_plaque/golden/commission/tram desc = "Spinward Sector Station SS-13\n'Tram' Class Outpost\nCommissioned 11/03/2561\n'Making Moves'" -// Wawastation: added Jun 4, 2024 (#82298) -/obj/structure/plaque/static_plaque/golden/commission/wawa - desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 04/06/2564\n'Forever Vertical'" +// Kilostation: added Nov 13, 2019 (#46968), removed, readded Jul 7, 2026 (#96447) +/obj/structure/plaque/static_plaque/golden/commission/kilo + desc = "Spinward Sector Station SS-13\n'Kilo' Class Outpost\nCommissioned 13/11/2559\nDecommissioned\nRecommissioned 7/7/2566'Forever Different'" //Removed stations @@ -111,10 +111,6 @@ /obj/structure/plaque/static_plaque/golden/commission/efficiency desc = "Spinward Sector Station SS-07\n'Efficiency' Class Outpost\nCommissioned 28/01/2556\nDecommissioned 20/12/2556\n'Work Smarter, Not Harder'" -// Kilostation: added Nov 13, 2019 (#46968), removed -/obj/structure/plaque/static_plaque/golden/commission/kilo - desc = "Spinward Sector Station SS-13\n'Kilo' Class Outpost\nCommissioned 13/11/2559\nDecommissioned \n'Forever Different'" - // Ministation: added Jan 29, 2014 (7a76e9456b782e6626bf81e27a912d8232c76b18), removed Dec 27, 2016 (#22453)- 2 years, 10 months, 28 days /obj/structure/plaque/static_plaque/golden/commission/mini desc = "Spinward Sector Station SS-08\n'Mini' Class Outpost\nCommissioned 29/01/2554\nDecommissioned 27/12/2556\n'The Littlest Station'" @@ -135,6 +131,10 @@ /obj/structure/plaque/static_plaque/golden/commission/birdshot desc = "Spinward Sector Station SS-13\n'Birdshot' Class Outpost\nCommissioned 29/04/2563\nDecommissioned 09/07/2565\n'Shooting for the Stars'" +// Wawastation: added Jun 4, 2024 (#82298), removed Jul 7, 2026 (#96447) - 2 years, 1 month, 3 days +/obj/structure/plaque/static_plaque/golden/commission/wawa + desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 04/06/2564\nDecomissioned 9/07/2565\n'Forever Vertical'" + // Other Stations // Space Station 13, Developer Class Outpost, Station Commissioned 30.12.2322, For the Glory of the Workers of the Third Soviet Union diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 0c153c59128e..816418009682 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -224,7 +224,7 @@ else if(isliving(mover)) // You Shall Not Pass! var/mob/living/living_mover = mover - if(istype(living_mover.buckled, /mob/living/simple_animal/bot/mulebot)) // mulebot passenger gets a free pass. + if(istype(living_mover.buckled, /mob/living/basic/bot/mulebot)) // mulebot passenger gets a free pass. return TRUE if(living_mover.body_position == STANDING_UP && living_mover.mob_size != MOB_SIZE_TINY && !(HAS_TRAIT(living_mover, TRAIT_VENTCRAWLER_ALWAYS) || HAS_TRAIT(living_mover, TRAIT_VENTCRAWLER_NUDE))) diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 7fa9a6ccb18d..820057b842b0 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -82,34 +82,40 @@ else . += span_notice("The railing is unbolted from the floor and can be deconstructed with wirecutters.") -/obj/structure/railing/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - ..() +/obj/structure/railing/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) + return ..() - if(I.tool_behaviour == TOOL_WELDER && !user.combat_mode) - if(atom_integrity < max_integrity) - if(!I.tool_start_check(user, amount=1)) - return - - to_chat(user, span_notice("You begin repairing [src]...")) - if(I.use_tool(src, user, 40, volume=50)) - atom_integrity = max_integrity - to_chat(user, span_notice("You repair [src].")) - else - to_chat(user, span_warning("[src] is already in good condition!")) - return +/obj/structure/railing/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return NONE + + add_fingerprint(user) + if(atom_integrity == max_integrity) + to_chat(user, span_warning("[src] is already in good condition!")) + return ITEM_INTERACT_BLOCKING + + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You begin repairing [src]...")) + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING + + atom_integrity = max_integrity + to_chat(user, span_notice("You repair [src].")) + return ITEM_INTERACT_SUCCESS /obj/structure/railing/wirecutter_act(mob/living/user, obj/item/I) - . = ..() if(resistance_flags & INDESTRUCTIBLE) to_chat(user, span_warning("You try to cut apart the railing, but it's too hard!")) I.play_tool_sound(src, 100) - return TRUE + return ITEM_INTERACT_BLOCKING to_chat(user, span_warning("You cut apart the railing.")) I.play_tool_sound(src, 100) deconstruct() - return TRUE + return ITEM_INTERACT_SUCCESS /obj/structure/railing/atom_deconstruct(disassembled) var/rods_to_make = istype(src,/obj/structure/railing/corner) ? 1 : 2 diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index 082a140d6993..9cb9690c20ca 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -131,34 +131,42 @@ return ITEM_INTERACT_SUCCESS -/obj/structure/reflector/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/reflector/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(admin) - return + return ITEM_INTERACT_BLOCKING //Finishing the frame - else if(istype(W, /obj/item/stack/sheet)) - if(finished) - return - var/obj/item/stack/sheet/S = W - if(istype(S, /obj/item/stack/sheet/glass)) - if(S.use(5)) - new /obj/structure/reflector/single(drop_location()) - qdel(src) - else - to_chat(user, span_warning("You need five sheets of glass to create a reflector!")) - return - if(istype(S, /obj/item/stack/sheet/rglass)) - if(S.use(10)) - new /obj/structure/reflector/double(drop_location()) - qdel(src) - else - to_chat(user, span_warning("You need ten sheets of reinforced glass to create a double reflector!")) - return - if(istype(S, /obj/item/stack/sheet/mineral/diamond)) - if(S.use(1)) - new /obj/structure/reflector/box(drop_location()) - qdel(src) - else - return ..() + if(!istype(tool, /obj/item/stack/sheet)) + return NONE + + if(finished) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/using_stack = tool + if(istype(using_stack, /obj/item/stack/sheet/glass)) + if(!using_stack.use(5)) + to_chat(user, span_warning("You need five sheets of glass to create a reflector!")) + return ITEM_INTERACT_BLOCKING + + new /obj/structure/reflector/single(drop_location()) + qdel(src) + return ITEM_INTERACT_SUCCESS + + if(istype(using_stack, /obj/item/stack/sheet/rglass)) + if(!using_stack.use(10)) + to_chat(user, span_warning("You need ten sheets of reinforced glass to create a double reflector!")) + return ITEM_INTERACT_BLOCKING + + new /obj/structure/reflector/double(drop_location()) + qdel(src) + return ITEM_INTERACT_SUCCESS + + if(istype(using_stack, /obj/item/stack/sheet/mineral/diamond)) + if(!using_stack.use(1)) + return ITEM_INTERACT_BLOCKING + + new /obj/structure/reflector/box(drop_location()) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/reflector/proc/rotate(mob/user) if (!can_rotate || admin) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 84dcf0deafcf..6aac9e7cadae 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -118,24 +118,27 @@ FLOOR SAFES balloon_alert(user, "lock set!") return ITEM_INTERACT_SUCCESS -/obj/structure/safe/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(open) - . = TRUE //no afterattack - if(attacking_item.w_class + space <= maxspace) - if(!user.transferItemToLoc(attacking_item, src)) - to_chat(user, span_warning("\The [attacking_item] is stuck to your hand, you cannot put it in the safe!")) - return - space += attacking_item.w_class - to_chat(user, span_notice("You put [attacking_item] in [src].")) - else - to_chat(user, span_warning("[attacking_item] won't fit in [src].")) - else - if(istype(attacking_item, /obj/item/clothing/neck/stethoscope)) - attack_hand(user) - return - else - to_chat(user, span_warning("You can't put [attacking_item] into the safe while it is closed!")) - return +/obj/structure/safe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!open) + if(!istype(tool, /obj/item/clothing/neck/stethoscope)) + to_chat(user, span_warning("You can't put [tool] into the safe while it is closed!")) + return ITEM_INTERACT_BLOCKING + + attack_hand(user) + return ITEM_INTERACT_SUCCESS + + if(tool.w_class + space > maxspace) + to_chat(user, span_warning("[tool] won't fit in [src].")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("\The [tool] is stuck to your hand, you cannot put it in the safe!")) + return ITEM_INTERACT_BLOCKING + + space += tool.w_class + to_chat(user, span_notice("You put [tool] in [src].")) + return ITEM_INTERACT_SUCCESS + /obj/structure/safe/blob_act(obj/structure/blob/B) return diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 4a944034ea01..dfbff670320d 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -138,18 +138,19 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) begin_processing() return TRUE -/obj/machinery/shower/attackby(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) - if(istype(tool, /obj/item/stock_parts/water_recycler)) - if(has_water_reclaimer) - to_chat(user, span_warning("There is already has a water recycler installed.")) - return - - playsound(src, 'sound/machines/click.ogg', 20, TRUE) - qdel(tool) - has_water_reclaimer = TRUE - begin_processing() +/obj/machinery/shower/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stock_parts/water_recycler)) + return NONE - return ..() + if(has_water_reclaimer) + to_chat(user, span_warning("There is already has a water recycler installed.")) + return ITEM_INTERACT_BLOCKING + + playsound(src, 'sound/machines/click.ogg', 20, TRUE) + qdel(tool) + has_water_reclaimer = TRUE + begin_processing() + return ITEM_INTERACT_SUCCESS /obj/machinery/shower/multitool_act(mob/living/user, obj/item/tool) . = ..() @@ -390,14 +391,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) . = ..() AddElement(/datum/element/simple_rotation) -/obj/structure/showerframe/attackby(obj/item/tool, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(tool, /obj/item/stock_parts/water_recycler)) - qdel(tool) - var/obj/machinery/shower/shower = new(loc, REVERSE_DIR(dir), TRUE) - qdel(src) - playsound(shower, 'sound/machines/click.ogg', 20, TRUE) - return - return ..() +/obj/structure/showerframe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stock_parts/water_recycler)) + return NONE + + qdel(tool) + var/obj/machinery/shower/shower = new(loc, REVERSE_DIR(dir), TRUE) + qdel(src) + playsound(shower, 'sound/machines/click.ogg', 20, TRUE) + return ITEM_INTERACT_SUCCESS /obj/structure/showerframe/wrench_act(mob/living/user, obj/item/tool) . = ..() diff --git a/code/game/objects/structures/signboards/holosign.dm b/code/game/objects/structures/signboards/holosign.dm index 2c5c074d1274..1449b371b036 100644 --- a/code/game/objects/structures/signboards/holosign.dm +++ b/code/game/objects/structures/signboards/holosign.dm @@ -11,7 +11,7 @@ light_power = 0.3 light_color = COLOR_CARP_TEAL light_on = FALSE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /// If set, only IDs with this name can (un)lock the sign. var/registered_owner /// The current color of the sign. diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index 7be5596412f1..8e7aaf902f6c 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -81,33 +81,38 @@ atom_integrity = max_integrity return TRUE -/obj/structure/sign/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(is_editable && IS_WRITING_UTENSIL(I)) - if(!length(GLOB.editable_sign_types)) - CRASH("GLOB.editable_sign_types failed to populate") - var/choice = tgui_input_list(user, "Select a sign type", "Sign Customization", GLOB.editable_sign_types) - if(isnull(choice)) - return - if(!Adjacent(user)) //Make sure user is adjacent still. - to_chat(user, span_warning("You need to stand next to the sign to change it!")) - return - user.visible_message(span_notice("[user] begins changing [src]."), \ - span_notice("You begin changing [src].")) - if(!do_after(user, 4 SECONDS, target = src)) //Small delay for changing signs instead of it being instant, so somebody could be shoved or stunned to prevent them from doing so. - return - var/sign_type = GLOB.editable_sign_types[choice] - //It's import to clone the pixel layout information. - //Otherwise signs revert to being on the turf and - //move jarringly. - var/obj/structure/sign/changedsign = new sign_type(get_turf(src)) - changedsign.pixel_x = pixel_x - changedsign.pixel_y = pixel_y - changedsign.atom_integrity = atom_integrity - qdel(src) - user.visible_message(span_notice("[user] finishes changing the sign."), \ - span_notice("You finish changing the sign.")) - return - return ..() +/obj/structure/sign/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_editable || !IS_WRITING_UTENSIL(tool)) + return NONE + + if(!length(GLOB.editable_sign_types)) + CRASH("GLOB.editable_sign_types failed to populate") + + var/choice = tgui_input_list(user, "Select a sign type", "Sign Customization", GLOB.editable_sign_types) + if(isnull(choice)) + return ITEM_INTERACT_BLOCKING + + if(!Adjacent(user)) //Make sure user is adjacent still. + to_chat(user, span_warning("You need to stand next to the sign to change it!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] begins changing [src]."), \ + span_notice("You begin changing [src].")) + if(!do_after(user, 4 SECONDS, target = src)) //Small delay for changing signs instead of it being instant, so somebody could be shoved or stunned to prevent them from doing so. + return ITEM_INTERACT_BLOCKING + + var/sign_type = GLOB.editable_sign_types[choice] + //It's import to clone the pixel layout information. + //Otherwise signs revert to being on the turf and + //move jarringly. + var/obj/structure/sign/changedsign = new sign_type(get_turf(src)) + changedsign.pixel_x = pixel_x + changedsign.pixel_y = pixel_y + changedsign.atom_integrity = atom_integrity + qdel(src) + user.visible_message(span_notice("[user] finishes changing the sign."), \ + span_notice("You finish changing the sign.")) + return ITEM_INTERACT_SUCCESS /obj/structure/sign/atom_deconstruct(disassembled) var/turf/drop_turf = drop_location() diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index bf8d713eb14c..f705d2fc5ce5 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -39,13 +39,11 @@ else . += span_notice("It looks like you could probably scan and tag it with a [scanner_descriptor].") -/obj/structure/spawner/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(.) - return TRUE - if(scanner_taggable && is_type_in_list(item, scanner_types)) +/obj/structure/spawner/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!scanner_taggable || !is_type_in_list(tool, scanner_types)) gps_tag(user) - return TRUE + return ITEM_INTERACT_SUCCESS + return NONE /// Tag the spawner, prefixing its GPS entry with an identifier - or giving it one, if nonexistent. /obj/structure/spawner/proc/gps_tag(mob/user) diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index 61b80bcc4fa8..ea07ec2794b6 100644 --- a/code/game/objects/structures/stairs.dm +++ b/code/game/objects/structures/stairs.dm @@ -4,6 +4,8 @@ /// Range within which stair indicators will appear for approaching mobs #define STAIR_INDICATOR_RANGE 3 +/// Minimum tile spacing between stair minimap blips +#define STAIR_BLIP_MIN_DISTANCE 2 // dir determines the direction of travel to go upwards // stairs require /turf/open/openspace as the tile above them to work, unless your stairs have 'force_open_above' set to TRUE @@ -28,6 +30,8 @@ VAR_FINAL/turf/directly_above /// If TRUE, we have left/middle/right sprites. var/has_merged_sprites = FALSE // DARKPACK EDIT CHANGE + /// Current atoms used as this stair's minimap blip targets. + var/list/minimap_blip_targets /// Lazyassoc list of weakef to mob viewing stair indicators to their images VAR_PRIVATE/list/mob_to_image @@ -64,6 +68,7 @@ force_open_above() build_signal_listener() update_surrounding() + update_minimap_blip() var/static/list/exit_connections = list( COMSIG_ATOM_EXIT = PROC_REF(on_exit_stairs), @@ -79,6 +84,7 @@ /obj/structure/stairs/Destroy() + clear_minimap_blips() if(directly_above) UnregisterSignal(directly_above, COMSIG_TURF_MULTIZ_NEW) directly_above = null @@ -105,6 +111,47 @@ for(var/obj/structure/stairs/stair in get_step(src, turn(dir, -90))) stair.update_appearance() + update_minimap_blip() + +/obj/structure/stairs/proc/update_minimap_blip() + var/bottom_state = isTerminator() ? "stairs_up" : "stairs_down" + var/top_state = (bottom_state == "stairs_up") ? "stairs_down" : "stairs_up" + var/turf/current_turf = get_turf(src) + + clear_minimap_blips() + if(isnull(current_turf)) + return + + add_minimap_blip_if_valid(current_turf, bottom_state) + add_minimap_blip_if_valid(get_step_multiz(current_turf, UP), top_state) + +/obj/structure/stairs/proc/clear_minimap_blips() + if(!islist(minimap_blip_targets)) + return + for(var/atom/target as anything in minimap_blip_targets) + remove_minimap_blip(MINIMAP_STAIR_BLIP, target) + LAZYCLEARLIST(minimap_blip_targets) + +/obj/structure/stairs/proc/add_minimap_blip_if_valid(atom/target, state) + if(isnull(target)) + return + if(!should_place_minimap_blip(target)) + return + + var/atom/movable/screen/minimap_element/blip/blip = get_minimap_blip(MINIMAP_STAIR_BLIP, target) + if(!isnull(blip)) + blip.icon_state = state + else + add_minimap_blip(target, MINIMAP_STAIR_BLIP, state) + LAZYADD(minimap_blip_targets, target) + +/obj/structure/stairs/proc/should_place_minimap_blip(atom/target) + var/turf/target_turf = get_turf(target) + if(isnull(target_turf)) + return FALSE + if(length(get_minimap_blips_in_area(MINIMAP_STAIR_BLIP, target_turf, STAIR_BLIP_MIN_DISTANCE))) + return FALSE + return TRUE /obj/structure/stairs/update_icon_state() . = ..() @@ -375,39 +422,50 @@ /obj/structure/stairs_frame/atom_deconstruct(disassembled = TRUE) new frame_stack(get_turf(src), frame_stack_amount) -/obj/structure/stairs_frame/attackby(obj/item/attacked_by, mob/user, list/modifiers, list/attack_modifiers) - if(!isstack(attacked_by)) - return ..() +/obj/structure/stairs_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isstack(tool)) + return NONE if(!anchored) - user.balloon_alert(user, "secure frame first") - return TRUE - var/obj/item/stack/material = attacked_by + user.balloon_alert(user, "secure the frame first!") + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/material = tool if(material.stairs_type) if(material.get_amount() < 10) to_chat(user, span_warning("You need ten [material.name] sheets to do this!")) - return + return ITEM_INTERACT_BLOCKING + if(locate(/obj/structure/stairs) in loc) to_chat(user, span_warning("There's already stairs built here!")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start adding [material] to [src]...")) if(!do_after(user, 10 SECONDS, target = src) || !material.use(10) || (locate(/obj/structure/table) in loc)) - return + return ITEM_INTERACT_BLOCKING + make_new_stairs(material.stairs_type) - else if(istype(material, /obj/item/stack/sheet)) + return ITEM_INTERACT_SUCCESS + + if(istype(material, /obj/item/stack/sheet)) if(material.get_amount() < 10) to_chat(user, span_warning("You need ten sheets to do this!")) - return + return ITEM_INTERACT_BLOCKING + if(locate(/obj/structure/stairs) in loc) to_chat(user, span_warning("There's already stairs built here!")) - return + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start adding [material] to [src]...")) if(!do_after(user, 10 SECONDS, target = src) || !material.use(10) || (locate(/obj/structure/table) in loc)) - return + return ITEM_INTERACT_BLOCKING + var/list/material_list = list() if(material.material_type) material_list[material.material_type] = SHEET_MATERIAL_AMOUNT * 10 make_new_stairs(/obj/structure/stairs/material, material_list) - return TRUE + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/stairs_frame/proc/make_new_stairs(stairs_type, custom_materials) var/obj/structure/stairs/new_stairs = new stairs_type(loc) @@ -421,3 +479,4 @@ #undef STAIR_TERMINATOR_YES #undef STAIR_INDICATOR_RANGE +#undef STAIR_BLIP_MIN_DISTANCE diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index bd9bf786e183..d2847efaa551 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -23,7 +23,7 @@ pass_flags_self = PASSTABLE | LETPASSTHROW layer = TABLE_LAYER obj_flags = CAN_BE_HIT | IGNORE_DENSITY - custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) max_integrity = 100 integrity_failure = 0.33 smoothing_flags = SMOOTH_BITMASK @@ -455,6 +455,7 @@ canSmoothWith = null icon = 'icons/obj/smooth_structures/rollingtable.dmi' icon_state = "rollingtable" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2) /// Lazylist of the items that we have on our surface. var/list/attached_items = null can_flip = FALSE diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index aa288c06bf70..f915c0d89166 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -59,31 +59,29 @@ default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS -/obj/structure/tank_dispenser/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - var/full - if(istype(I, /obj/item/tank/internals/plasma)) - if(plasmatanks < TANK_DISPENSER_CAPACITY) - plasmatanks++ - else - full = TRUE - else if(istype(I, /obj/item/tank/internals/oxygen)) - if(oxygentanks < TANK_DISPENSER_CAPACITY) - oxygentanks++ - else - full = TRUE - else if(!user.combat_mode || (I.item_flags & NOBLUDGEON)) - balloon_alert(user, "can't insert!") - return +/obj/structure/tank_dispenser/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/tank/internals/plasma)) + if(plasmatanks == TANK_DISPENSER_CAPACITY) + balloon_alert(user, "it is full!") + return ITEM_INTERACT_BLOCKING + plasmatanks++ + else if(istype(tool, /obj/item/tank/internals/oxygen)) + if(oxygentanks == TANK_DISPENSER_CAPACITY) + balloon_alert(user, "it is full!") + return ITEM_INTERACT_BLOCKING + oxygentanks++ else - return ..() - if(full) - balloon_alert(user, "it is full!") - return + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + balloon_alert(user, "can't insert!") + return ITEM_INTERACT_BLOCKING + return NONE + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING - if(!user.transferItemToLoc(I, src)) - return balloon_alert(user, "tank inserted") update_appearance() + return ITEM_INTERACT_SUCCESS /obj/structure/tank_dispenser/atom_deconstruct(disassembled = TRUE) for(var/X in src) diff --git a/code/game/objects/structures/tank_holder.dm b/code/game/objects/structures/tank_holder.dm index 3d0b5e18b754..ce1f428cfd9b 100644 --- a/code/game/objects/structures/tank_holder.dm +++ b/code/game/objects/structures/tank_holder.dm @@ -45,17 +45,27 @@ . += span_notice("It is empty.") . += span_notice("It is held together by some screws.") -/obj/structure/tank_holder/attackby(obj/item/W, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/structure/tank_holder/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(user.combat_mode) - return ..() - if(W.tool_behaviour == TOOL_WRENCH) - to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) - if(W.use_tool(src, user, 20, volume=50)) - to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) - set_anchored(!anchored) - else if(!SEND_SIGNAL(W, COMSIG_CONTAINER_TRY_ATTACH, src, user)) - to_chat(user, span_warning("[W] does not fit in [src].")) - return + return NONE + + if(!SEND_SIGNAL(tool, COMSIG_CONTAINER_TRY_ATTACH, src, user)) + to_chat(user, span_warning("[tool] does not fit in [src].")) + return ITEM_INTERACT_BLOCKING + + return ITEM_INTERACT_SUCCESS + +/obj/structure/tank_holder/wrench_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return NONE + + to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) + if(!tool.use_tool(src, user, 20, volume=50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS /obj/structure/tank_holder/screwdriver_act(mob/living/user, obj/item/I) if(..()) diff --git a/code/game/objects/structures/toiletbong.dm b/code/game/objects/structures/toiletbong.dm index 93e54886e6ef..1182c3d8fd95 100644 --- a/code/game/objects/structures/toiletbong.dm +++ b/code/game/objects/structures/toiletbong.dm @@ -6,7 +6,7 @@ base_icon_state = "toiletbong" density = FALSE anchored = TRUE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) var/smokeradius = 1 var/mutable_appearance/weed_overlay @@ -110,8 +110,3 @@ if (emag_card) to_chat(user, span_boldwarning("The [emag_card] falls into the toilet. You fish it back out. Looks like you broke the toilet.")) return TRUE - -/obj/structure/toiletbong/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/card/emag)) - return - return ..() diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm index f6c12c155f38..c84f630fe514 100644 --- a/code/game/objects/structures/training_machine.dm +++ b/code/game/objects/structures/training_machine.dm @@ -108,17 +108,21 @@ * Meant for attaching an item to the machine, should only be a training toolbox or target. If emagged, the * machine will gain an auto-attached syndicate toolbox, so in that case we shouldn't be able to swap it out */ -/obj/structure/training_machine/attackby(obj/item/target, mob/living/user) +/obj/structure/training_machine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if (user.combat_mode) - return ..() - if (!istype(target, /obj/item/training_toolbox) && !istype(target, /obj/item/target)) - return ..() + return NONE + + if (!istype(tool, /obj/item/training_toolbox) && !istype(tool, /obj/item/target)) + return NONE + if (obj_flags & EMAGGED) to_chat(user, span_warning("The toolbox is somehow stuck on! It won't budge!")) - return - attach_item(target) + return ITEM_INTERACT_BLOCKING + + attach_item(tool) to_chat(user, span_notice("You attach \the [attached_item] to the training device.")) playsound(src, SFX_RUSTLE, 50, TRUE) + return ITEM_INTERACT_SUCCESS /** * Attach an item to the machine diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 213d086bfc36..e35232700a0f 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -93,12 +93,13 @@ break -/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_CROWBAR) - for(var/obj/structure/transit_tube_pod/P in loc) - P.deconstruct(FALSE, user) - else - return ..() +/obj/structure/transit_tube/station/crowbar_act(mob/living/user, obj/item/tool) + var/anything_done = FALSE + for(var/obj/structure/transit_tube_pod/victim in loc) + victim.deconstruct(FALSE, user) + anything_done = TRUE + to_chat(user, span_notice("[anything_done ? "You empty \the [src]." : "\The [src] is already empty!"]")) + return ITEM_INTERACT_SUCCESS /obj/structure/transit_tube/station/proc/open_animation() if(open_status == STATION_TUBE_CLOSED) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 4991eb9df118..5cae9c9b9898 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -32,25 +32,31 @@ if(current_size >= STAGE_FIVE) deconstruct(FALSE) -/obj/structure/transit_tube/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W.tool_behaviour == TOOL_WRENCH) - if(tube_construction) - for(var/obj/structure/transit_tube_pod/pod in src.loc) - to_chat(user, span_warning("Remove the pod first!")) - return - user.visible_message(span_notice("[user] starts to detach \the [src]."), span_notice("You start to detach \the [src]...")) - if(W.use_tool(src, user, 2 SECONDS, volume=50)) - to_chat(user, span_notice("You detach \the [src].")) - var/obj/structure/c_transit_tube/R = new tube_construction(loc) - R.setDir(dir) - transfer_fingerprints_to(R) - R.add_fingerprint(user) - qdel(src) - else if(W.tool_behaviour == TOOL_CROWBAR) - for(var/obj/structure/transit_tube_pod/pod in src.loc) - pod.attackby(W, user) - else - return ..() +/obj/structure/transit_tube/wrench_act(mob/living/user, obj/item/tool) + if(!tube_construction) + return NONE + + for(var/obj/structure/transit_tube_pod/pod in loc) + to_chat(user, span_warning("Remove the pod first!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] starts to detach \the [src]."), \ + span_notice("You start to detach \the [src]...")) + if(!tool.use_tool(src, user, 2 SECONDS, volume=50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You detach \the [src].")) + var/obj/structure/c_transit_tube/husk = new tube_construction(loc) + husk.setDir(dir) + transfer_fingerprints_to(husk) + husk.add_fingerprint(user) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/structure/transit_tube/crowbar_act(mob/living/user, obj/item/tool) + for(var/obj/structure/transit_tube_pod/pod in loc) + pod.item_interaction(user, tool) + return ITEM_INTERACT_SUCCESS // Called to check if a pod should stop upon entering this tube. /obj/structure/transit_tube/proc/should_stop_pod(pod, from_dir) diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 30ea69ff0d40..d9653d94bd89 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -26,17 +26,18 @@ icon_state = contents.len ? occupied_icon_state : initial(icon_state) return ..() -/obj/structure/transit_tube_pod/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_CROWBAR) - if(!moving) - I.play_tool_sound(src) - if(contents.len) - user.visible_message(span_notice("[user] empties \the [src]."), span_notice("You empty \the [src].")) - empty_pod() - else - deconstruct(TRUE) +/obj/structure/transit_tube_pod/crowbar_act(mob/living/user, obj/item/tool) + if(moving) // can you even click on one of these while they're in a tube? + return NONE // for that matter can you click them when they're outside of a tube? + + tool.play_tool_sound(src) + if(contents.len) + user.visible_message(span_notice("[user] empties \the [src]."), \ + span_notice("You empty \the [src].")) + empty_pod() else - return ..() + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS /obj/structure/transit_tube_pod/atom_deconstruct(disassembled = TRUE) var/atom/location = get_turf(src) diff --git a/code/game/objects/structures/tripwire.dm b/code/game/objects/structures/tripwire.dm new file mode 100644 index 000000000000..59360256bacd --- /dev/null +++ b/code/game/objects/structures/tripwire.dm @@ -0,0 +1,346 @@ +/obj/structure/tripwire + name = "tripwire post?" + desc = "This should not be here. Somebody should be told about this." + icon = 'icons/obj/tripwire.dmi' + icon_state = "tripwire_post" + anchored = TRUE + density = TRUE + abstract_type = /obj/structure/tripwire + +/obj/structure/tripwire/post + name = "stanchion" + desc = "A sturdy post made to support one end of a large cable." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5) + /// The post that the other end of this post's tripwire, if any. Also serves as a check for if we have a tripwire. + var/obj/structure/tripwire/post/opposing_post + /// The wire or wires between us and the opposing post. Only one post in the pair will have this list filled. + var/list/obj/structure/tripwire/cable/tripwires = list() + +/obj/structure/tripwire/post/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/structure/tripwire/post/Destroy(force) + clear_wire() + return ..() + +/obj/structure/tripwire/post/proc/clear_wire() + if(opposing_post) + opposing_post.opposing_post = null + opposing_post.clear_wire() + opposing_post = null + for(var/tripwire in tripwires) + UnregisterSignal(tripwire, COMSIG_QDELETING) + qdel(tripwire) + tripwires = list() + update_appearance(UPDATE_ICON) + +/obj/structure/tripwire/post/proc/wire_qdeleted(datum/source) + tripwires -= source + UnregisterSignal(source, COMSIG_QDELETING) + clear_wire() + +/obj/structure/tripwire/post/proc/connect_to_post(obj/structure/tripwire/post/connected_post, new_direction) + dir = new_direction + opposing_post = connected_post + update_appearance(UPDATE_ICON) + +/obj/structure/tripwire/post/update_appearance(updates) + . = ..() + icon_state = "tripwire_post[opposing_post ? "_tied" : ""]" + +/obj/structure/tripwire/post/wirecutter_act(mob/living/user, obj/item/tool) + if(!opposing_post) + return NONE + + visible_message(span_notice("[user] begins cutting through \the [src]'s tripwire..."), \ + span_notice("You begin cutting through \the [src]'s tripwire..."), \ + span_hear("You hear snipping.")) + if(!tool.use_tool(src, user, 5 SECONDS)) + return ITEM_INTERACT_BLOCKING + + if(!opposing_post) + return ITEM_INTERACT_BLOCKING + + visible_message(span_notice("[user] cuts away \the [src]'s tripwire."), \ + span_notice("You finish cutting \the [src]'s tripwire."), \ + span_hear("You hear a final snip.")) + new /obj/item/stack/cable_coil(drop_location(), 20) + clear_wire() + return ITEM_INTERACT_SUCCESS + +/obj/structure/tripwire/post/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/tripwire_cable)) + return NONE + + if(!anchored || opposing_post) + return NONE + + var/obj/item/tripwire_cable/irrelevant_cable = tool + + var/obj/structure/tripwire/post/connecting_post = irrelevant_cable.connecting_post?.resolve() + + var/are_we_tying = FALSE + if(!connecting_post || connecting_post.z != z) + are_we_tying = TRUE + + var/distance_between = get_dist(src, connecting_post) + if(distance_between > 6) + are_we_tying = TRUE + + if(are_we_tying)// if it's on a different z level, or further than would be reasonable, refuse to acknowledge the distance and mulligan. + to_chat(user, span_notice("You tie one end of \the [irrelevant_cable] around \the [src].")) + irrelevant_cable.connecting_post = WEAKREF(src) + return ITEM_INTERACT_SUCCESS + + if(connecting_post == src) + return ITEM_INTERACT_BLOCKING + + if(!connecting_post.anchored) + return ITEM_INTERACT_BLOCKING + + if(distance_between > 4) + to_chat(user, span_notice("The post on the other end is too far away!")) + return ITEM_INTERACT_BLOCKING + + if(distance_between == 0) + to_chat(user, span_notice("No point in connecting them, they're already together.")) + return ITEM_INTERACT_BLOCKING + + if(connecting_post.x != x && connecting_post.y != y) + to_chat(user, span_notice("The wire will be much less effective at an angle.")) + return ITEM_INTERACT_BLOCKING + + var/turf/end_point_turf = get_turf(connecting_post) + + if(!do_after(user, distance_between * 3 SECONDS, src)) + return ITEM_INTERACT_BLOCKING + + if(!anchored || opposing_post || !connecting_post?.anchored || connecting_post.opposing_post || end_point_turf != get_turf(connecting_post)) + return ITEM_INTERACT_BLOCKING + + var/direction_to_extend = get_dir(src, connecting_post) + var/turf/iterating_turf = get_turf(src) + for(var/distance_extended in 1 to distance_between) + iterating_turf = get_step(iterating_turf, direction_to_extend) + if(iterating_turf == end_point_turf) + connect_to_post(connecting_post, direction_to_extend) + connecting_post.connect_to_post(src, REVERSE_DIR(direction_to_extend)) + to_chat(user, span_notice("You successfully wire together the two posts.")) + qdel(irrelevant_cable) + return ITEM_INTERACT_SUCCESS + + if(iterating_turf.is_blocked_turf(TRUE)) + clear_wire() + to_chat(user, span_notice("You can't feed the cable through solid objects.")) + return ITEM_INTERACT_BLOCKING + + var/obj/structure/tripwire/cable/new_wire = new(iterating_turf) + switch(distance_between) + // if(1) we'd have already dropped out at connecting the two posts together, and wouldn't get here + if(2) + new_wire.icon_state = "tripwire_1" // post - wire(1) - post + if(3) + new_wire.icon_state = "tripwire_2" // post - wire(2)(L) - wire(2)(R) - post + if(4) + new_wire.icon_state = "tripwire_[distance_extended == 2 ? "3" : "2"]" // post - wire(2)(L) - wire(3) - wire(2)(R) - post + + new_wire.dir = (distance_extended > (distance_between / 2)) ? direction_to_extend : REVERSE_DIR(direction_to_extend) // Switch directions once we're halfway there + + + RegisterSignal(new_wire, COMSIG_QDELETING, PROC_REF(wire_qdeleted)) + tripwires += new_wire + + // HOW DID WE GET HERE WE SHOULD NEVER GET HERE BURN IT ALL + clear_wire() + return ITEM_INTERACT_BLOCKING + +/obj/structure/tripwire/post/wrench_act(mob/living/user, obj/item/tool) + if(opposing_post) + balloon_alert(user, "unwire first!") + return ITEM_INTERACT_BLOCKING + + if(!tool.use_tool(src, user, 0)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "[anchored ? "un" : ""]anchored") + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS + +/obj/structure/tripwire/post/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + clear_wire() + return ..() + +/obj/structure/tripwire/post/CanAllowThrough(atom/movable/mover, border_dir) + if(!opposing_post) + return TRUE + + return ..() + +/obj/structure/tripwire/post/on_entered(datum/source, atom/movable/entered) + if(!opposing_post) + return + + return ..() + +/obj/structure/tripwire/cable + name = "heavy cable" + desc = "A very thick cable made to withstand great force." + icon_state = "tripwire_1" + +/obj/structure/tripwire/cable/Initialize(mapload) + . = ..() + RegisterSignal(get_turf(src), COMSIG_ATOM_ENTERED, PROC_REF(on_entered)) // No need for connect_loc, we won't be moving. + +/obj/structure/tripwire/cable/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) + if(attacking_item.sharpness) + MODIFY_ATTACK_FORCE_MULTIPLIER(attack_modifiers, 10) + return ..() + +/obj/structure/tripwire/cable/wirecutter_act(mob/living/user, obj/item/tool) + visible_message(span_notice("[user] begins cutting through \the [src]..."), \ + span_notice("You begin cutting through \the [src]..."), \ + span_hear("You hear snipping.")) + + if(!tool.use_tool(src, user, 5 SECONDS)) + return ITEM_INTERACT_BLOCKING + + visible_message(span_notice("[user] cuts away \the [src]."), \ + span_notice("You finish cutting \the [src]."), \ + span_hear("You hear a final snip.")) + new /obj/item/stack/cable_coil(drop_location(), 20) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/structure/tripwire/cable/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if(!QDELING(src)) + qdel(src) + +/obj/structure/tripwire/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + + if(.) + return . + + if(isprojectile(mover)) + return TRUE + + if(mover.dir == dir || mover.dir == REVERSE_DIR(dir)) + return TRUE + + if(!mover.has_gravity()) + return TRUE + + if(mover.movement_type & MOVETYPES_NOT_TOUCHING_GROUND) + return TRUE + + if(iscarbon(mover)) + var/mob/living/carbon/moving_carbon = mover + if(moving_carbon.body_position == LYING_DOWN) // Crawl under it. Bonus of allowing dragging dying people. + return TRUE + + if(moving_carbon.move_intent == MOVE_INTENT_WALK) + return TRUE + + if(ismecha(mover)) + if(istype(mover, /obj/vehicle/sealed/mecha/clarke)) // treads + return FALSE + + return TRUE + + return FALSE + + +/obj/structure/tripwire/proc/on_entered(datum/source, atom/movable/entered) + if(!ismecha(entered)) + return + + var/obj/vehicle/sealed/mecha/falling_down = entered + if(falling_down.toppled) // did you trip directly into a tripwire? We don't want this to chain, however amusing the image might be. + return + + if(astype(falling_down, /obj/vehicle/sealed/mecha/phazon)?.phasing) + return + + if(falling_down.dir == dir || falling_down.dir == REVERSE_DIR(dir)) + return + + var/damage_value = falling_down.max_integrity / 5 + + var/falling_angle + if(falling_down.dir == WEST) + falling_angle = 270 + else if(falling_down.dir == EAST) + falling_angle = 90 + else + falling_angle = pick(90, 270) + + // For disambiguation, damage_value is the mech's health / 5. damage_value is the base for all the rest of the numbers. + // damage_value is applied directly as damage to whoever it falls on. That person is also paralyzed for damage_value / 10 seconds. + // The pilot of the falling mech receives damage_value / 5 as a head trauma. + // The mech itself receives damage_value * 0.15 seconds of immobility(can still attack, but can't rotate). (damage_value / 10 * 1.5) + falling_down.toppled = TRUE + falling_down.forceMove(get_turf(src)) + var/tripped = falling_down.fall_and_crush(get_step(falling_down, falling_down.dir), damage_value, 15, paralyze_time = damage_value, rotation = falling_angle) + addtimer(CALLBACK(falling_down, TYPE_PROC_REF(/obj/vehicle/sealed/mecha, right_self), falling_angle), damage_value * 1.5) + if (!(tripped & SUCCESSFULLY_FELL_OVER)) + falling_down.toppled = FALSE + return // Don't know how it'd be avoided, but if you beat it, you beat it + + var/drivers = falling_down.return_drivers() + + visible_message(span_danger("[falling_down] topples over \the [src]!"), \ + blind_message = span_danger("You hear a deafening CRASH!"), \ + ignored_mobs = drivers) + + for(var/mob/living/driver as anything in drivers) // can any mechs have two drivers? No. Could they? yes. + var/damage = driver.apply_damage(damage_value / 3, BRUTE, BODY_ZONE_HEAD, driver.run_armor_check(BODY_ZONE_HEAD, MELEE), wound_bonus = 30, wound_clothing = FALSE) + var/falling_string + switch(damage) + if(0) + falling_string = "You rapidly fall forward but only lightly hit [falling_down]'s controls. " + if(0 to 10) + falling_string = "You rapidly fall forward and hit your head on [falling_down]'s controls! " + if(10 to INFINITY) + falling_string = "You rapidly fall forward and smash your head against [falling_down]'s controls! " + + falling_string += "When you recover, you [damage_value > 40 ? "slowly" : "quickly"] begin righting [falling_down]." + to_chat(driver, span_danger(falling_string)) + +/obj/item/tripwire_cable + name = "sturdy cable" + desc = "A coil of extremely thick cable that can withstand great force." + icon = 'icons/obj/tripwire.dmi' + icon_state = "tripwire_cable" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + inhand_icon_state = "coil_yellow" + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) + /// The post we're trying to connect at the moment, if any. + var/datum/weakref/connecting_post + +/obj/item/tripwire_cable/attack_self(mob/user, modifiers) + if(!connecting_post.resolve()) + return + to_chat(user, span_notice("You recoil the length of cable until it's all back together again.")) + connecting_post = null + +/obj/item/tripwire_cable/wirecutter_act(mob/living/user, obj/item/tool) + to_chat(user, span_notice("You cut off the cable's excess bulk.")) + new /obj/item/stack/cable_coil(drop_location(), 15) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/datum/crafting_recipe/tripwire_cable + name = "Tripwire Cable" + result = /obj/item/tripwire_cable + reqs = list( + /obj/item/stack/cable_coil = 30, + ) + tool_behaviors = list(TOOL_WIRECUTTER) + time = 10 SECONDS + category = CAT_MISC diff --git a/code/game/objects/structures/votingbox.dm b/code/game/objects/structures/votingbox.dm index 8ab34de74ba5..5451e8d6f731 100644 --- a/code/game/objects/structures/votingbox.dm +++ b/code/game/objects/structures/votingbox.dm @@ -19,18 +19,22 @@ var/list/voted //List of ID's that already voted. COOLDOWN_DECLARE(vote_print_cooldown) -/obj/structure/votebox/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(I,/obj/item/card/id)) - if(!owner) - register_owner(I,user) - return - if(istype(I,/obj/item/paper)) - if(voting_active) - apply_vote(I,user) - else +/obj/structure/votebox/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/card/id)) + if(owner) + return ITEM_INTERACT_BLOCKING + + register_owner(tool ,user) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/paper)) + if(!voting_active) to_chat(user,span_warning("[src] is in maintenance mode. Voting is not possible at the moment.")) - return - return ..() + return ITEM_INTERACT_BLOCKING + apply_vote(tool ,user) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/votebox/interact(mob/user) ..() diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm index e54d8e41cfec..2051c9d4c20b 100644 --- a/code/game/objects/structures/water_structures/toilet.dm +++ b/code/game/objects/structures/water_structures/toilet.dm @@ -417,7 +417,7 @@ desc = "A horrendous mass of fused flesh resembling a standard-issue HT-451 model toilet. How it manages to function as one is beyond you. \ This one seems to be made out of the flesh of a devoted employee of the RnD department." -/obj/structure/toilet/greyscale/flesh/Initialize(mapload, mob/living/carbon/suicide) +/obj/structure/toilet/greyscale/flesh/Initialize(mapload, mob/living/suicide) . = ..() ///The suicide victim's brain that will be placed inside the toilet's cistern var/obj/item/organ/brain/toilet_brain @@ -432,8 +432,9 @@ toilet_brain = new(drop_location()) set_custom_materials(list(/datum/material/meat = SHEET_MATERIAL_AMOUNT)) - toilet_brain.forceMove(src) - add_cistern_item(toilet_brain) + if (toilet_brain) + toilet_brain.forceMove(src) + add_cistern_item(toilet_brain) //this also prevents the toilet from dropping meat sheets. if you want to cheese the meat exepriments, sacrifice more people /obj/structure/toilet/greyscale/flesh/atom_deconstruct(dissambled = TRUE) diff --git a/code/game/objects/structures/water_structures/urinal.dm b/code/game/objects/structures/water_structures/urinal.dm index f81b25de55ad..f0a2034b9804 100644 --- a/code/game/objects/structures/water_structures/urinal.dm +++ b/code/game/objects/structures/water_structures/urinal.dm @@ -51,21 +51,25 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) return return ..() -/obj/structure/urinal/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(exposed) - if(hidden_item) - to_chat(user, span_warning("There is already something in the drain enclosure!")) - return - if(attacking_item.w_class > WEIGHT_CLASS_TINY) - to_chat(user, span_warning("[attacking_item] is too large for the drain enclosure.")) - return - if(!user.transferItemToLoc(attacking_item, src)) - to_chat(user, span_warning("[attacking_item] is stuck to your hand, you cannot put it in the drain enclosure!")) - return - hidden_item = attacking_item - to_chat(user, span_notice("You place [attacking_item] into the drain enclosure.")) - return - return ..() +/obj/structure/urinal/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!exposed) + return NONE + + if(hidden_item) + to_chat(user, span_warning("There is already something in the drain enclosure!")) + return ITEM_INTERACT_BLOCKING + + if(tool.w_class > WEIGHT_CLASS_TINY) + to_chat(user, span_warning("[tool] is too large for the drain enclosure.")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("[tool] is stuck to your hand, you cannot put it in the drain enclosure!")) + return ITEM_INTERACT_BLOCKING + + hidden_item = tool + to_chat(user, span_notice("You place [tool] into the drain enclosure.")) + return ITEM_INTERACT_SUCCESS /obj/structure/urinal/screwdriver_act(mob/living/user, obj/item/I) if(..()) diff --git a/code/game/objects/structures/water_structures/water_source.dm b/code/game/objects/structures/water_structures/water_source.dm index fc5411991fc3..967614f85657 100644 --- a/code/game/objects/structures/water_structures/water_source.dm +++ b/code/game/objects/structures/water_structures/water_source.dm @@ -57,26 +57,28 @@ span_notice("You wash your [washing_face ? "face" : "hands"] using [src]."), ) -/obj/structure/water_source/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/structure/water_source/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(busy) to_chat(user, span_warning("Someone's already washing here!")) - return + return ITEM_INTERACT_BLOCKING - if(attacking_item.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. - return + if(tool.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. + return ITEM_INTERACT_BLOCKING + + if(is_reagent_container(tool)) + var/obj/item/reagent_containers/container = tool + if(container.is_refillable()) // no early return, we want items that cannot perform their unique interactions to wash + if(container.reagents.holder_full()) + to_chat(user, span_notice("\The [container] is full.")) + return ITEM_INTERACT_BLOCKING + + container.reagents.add_reagent(dispensedreagent, min(container.volume - container.reagents.total_volume, container.amount_per_transfer_from_this)) + to_chat(user, span_notice("You fill [container] from [src].")) + return ITEM_INTERACT_SUCCESS - if(is_reagent_container(attacking_item)) - var/obj/item/reagent_containers/container = attacking_item - if(container.is_refillable()) - if(!container.reagents.holder_full()) - container.reagents.add_reagent(dispensedreagent, min(container.volume - container.reagents.total_volume, container.amount_per_transfer_from_this)) - to_chat(user, span_notice("You fill [container] from [src].")) - return TRUE - to_chat(user, span_notice("\The [container] is full.")) - return FALSE - - if(istype(attacking_item, /obj/item/melee/baton/security)) - var/obj/item/melee/baton/security/baton = attacking_item + + if(istype(tool, /obj/item/melee/baton/security)) + var/obj/item/melee/baton/security/baton = tool if(baton.cell?.charge && baton.active) flick("baton_active", src) user.Paralyze(baton.knockdown_time) @@ -86,29 +88,29 @@ span_warning("[user] shocks [user.p_them()]self while attempting to wash the active [baton.name]!"), span_userdanger("You unwisely attempt to wash [baton] while it's still on.")) playsound(src, baton.on_stun_sound, 50, TRUE) - return + return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/mop)) - attacking_item.reagents.add_reagent(dispensedreagent, 5) - to_chat(user, span_notice("You wet [attacking_item] in [src].")) + if(istype(tool, /obj/item/mop)) + tool.reagents.add_reagent(dispensedreagent, 5) + to_chat(user, span_notice("You wet [tool] in [src].")) playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) - return + return ITEM_INTERACT_SUCCESS - if(!user.combat_mode || (attacking_item.item_flags & NOBLUDGEON)) - to_chat(user, span_notice("You start washing [attacking_item]...")) + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + to_chat(user, span_notice("You start washing [tool]...")) busy = TRUE if(!do_after(user, 4 SECONDS, target = src)) busy = FALSE - return TRUE + return ITEM_INTERACT_BLOCKING busy = FALSE - attacking_item.wash(CLEAN_WASH) - reagents.expose(attacking_item, TOUCH, 5 / max(reagents.total_volume, 5)) + tool.wash(CLEAN_WASH) + reagents.expose(tool, TOUCH, 5 / max(reagents.total_volume, 5)) user.visible_message( - span_notice("[user] washes [attacking_item] using [src]."), - span_notice("You wash [attacking_item] using [src].")) - return TRUE + span_notice("[user] washes [tool] using [src]."), + span_notice("You wash [tool] using [src].")) + return ITEM_INTERACT_SUCCESS - return ..() + return NONE /obj/structure/water_source/puddle //splishy splashy ^_^ name = "puddle" @@ -132,7 +134,7 @@ . = ..() icon_state = base_icon_state -/obj/structure/water_source/puddle/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/water_source/puddle/item_interaction(mob/living/user, obj/item/tool, list/modifiers) icon_state = "[base_icon_state]-splash" . = ..() icon_state = base_icon_state diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 68b6ee31c7d5..ee827efaad49 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -1,3 +1,5 @@ +#define WINDOOR_LEFT "l" +#define WINDOOR_RIGHT "r" /obj/structure/windoor_assembly icon = 'icons/obj/doors/windoor.dmi' @@ -20,20 +22,21 @@ //Vars to help with the icon's name ///Does the windoor open to the left or right? - var/facing = "l" + var/facing = WINDOOR_LEFT ///Whether or not this creates a secure windoor var/secure = FALSE /** - * Windoor (window door) assembly -Nodrak - * Step 1: Create a windoor out of rglass - * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) - * Step 3: Rotate or Flip the assembly to face and open the way you want - * Step 4: Wrench the assembly in place - * Step 5: Add cables to the assembly - * Step 6: Set access for the door. - * Step 7: Crowbar the door to complete + * Windoor (window door) assembly -Nodrak ----------- with comments clarifying what's actually happening, and how we know what step we're on + * Step 1: Create a windoor out of rglass -no variables modified. Destroy via welder + * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) -tracked by secure, can be done anytime before cables_added is TRUE. Cannot be undone + * Step 3: Rotate or Flip the assembly to face and open the way you want -tracked by facing, can be done any time before anchoring via wrench right click + * Step 4: Wrench the assembly in place -tracked by anchored, no requisites, undone with wrench as well if cabling not yet inserted + * Step 5: Add cables to the assembly -tracked by cables_added, requires being anchored, undoable with wirecutters with no requisites until full completion + * Step 6: Set access for the door. -tracked by electronics, requires cabling to install electronics, undoable with screwdriver requiring cabling to remain + * Step 7: Crowbar the door to complete -requires cabling & electronics, not undoable. obviously. */ - var/state = "01" + + var/cables_added = FALSE /obj/structure/windoor_assembly/Initialize(mapload, set_dir) @@ -60,7 +63,7 @@ move_update_air(T) /obj/structure/windoor_assembly/update_icon_state() - icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" + icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[cables_added ? "02" : "01"]" return ..() /obj/structure/windoor_assembly/CanAllowThrough(atom/movable/mover, border_dir) @@ -98,199 +101,262 @@ leaving.Bump(src) return COMPONENT_ATOM_BLOCK_EXIT -/obj/structure/windoor_assembly/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/windoor_assembly/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //I really should have spread this out across more states but thin little windoors are hard to sprite. add_fingerprint(user) - switch(state) - if("01") - if(W.tool_behaviour == TOOL_WELDER && !anchored) - if(!W.tool_start_check(user, amount=1)) - return - - user.visible_message(span_notice("[user] disassembles the windoor assembly."), - span_notice("You start to disassemble the windoor assembly...")) - - if(W.use_tool(src, user, 40, volume=50)) - to_chat(user, span_notice("You disassemble the windoor assembly.")) - var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5) - if (!QDELETED(RG)) - RG.add_fingerprint(user) - if(secure) - var/obj/item/stack/rods/R = new (get_turf(src), 4) - if (!QDELETED(R)) - R.add_fingerprint(user) - qdel(src) - return - - //Wrenching an unsecure assembly anchors it in place. Step 4 complete - if(W.tool_behaviour == TOOL_WRENCH && !anchored) - for(var/obj/machinery/door/window/WD in loc) - if(WD.dir == dir) - to_chat(user, span_warning("There is already a windoor in that location!")) - return - user.visible_message(span_notice("[user] secures the windoor assembly to the floor."), - span_notice("You start to secure the windoor assembly to the floor...")) - - if(W.use_tool(src, user, 40, volume=100)) - if(anchored) - return - for(var/obj/machinery/door/window/WD in loc) - if(WD.dir == dir) - to_chat(user, span_warning("There is already a windoor in that location!")) - return - to_chat(user, span_notice("You secure the windoor assembly.")) - set_anchored(TRUE) - if(secure) - name = "secure anchored windoor assembly" - else - name = "anchored windoor assembly" - - //Unwrenching an unsecure assembly un-anchors it. Step 4 undone - else if(W.tool_behaviour == TOOL_WRENCH && anchored) - user.visible_message(span_notice("[user] unsecures the windoor assembly to the floor."), - span_notice("You start to unsecure the windoor assembly to the floor...")) - - if(W.use_tool(src, user, 40, volume=100)) - if(!anchored) - return - to_chat(user, span_notice("You unsecure the windoor assembly.")) - set_anchored(FALSE) - if(secure) - name = "secure windoor assembly" - else - name = "windoor assembly" - - //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. - else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure) - var/obj/item/stack/sheet/plasteel/P = W - if(P.get_amount() < 2) - to_chat(user, span_warning("You need more plasteel to do this!")) - return - to_chat(user, span_notice("You start to reinforce the windoor with plasteel...")) - - if(do_after(user,40, target = src)) - if(!src || secure || P.get_amount() < 2) - return - - P.use(2) - to_chat(user, span_notice("You reinforce the windoor.")) - secure = TRUE - if(anchored) - name = "secure anchored windoor assembly" - else - name = "secure windoor assembly" - - //Adding cable to the assembly. Step 5 complete. - else if(istype(W, /obj/item/stack/cable_coil) && anchored) - user.visible_message(span_notice("[user] wires the windoor assembly."), span_notice("You start to wire the windoor assembly...")) - - if(do_after(user, 4 SECONDS, target = src)) - if(!src || !anchored || src.state != "01") - return - var/obj/item/stack/cable_coil/CC = W - if(!CC.use(1)) - to_chat(user, span_warning("You need more cable to do this!")) - return - to_chat(user, span_notice("You wire the windoor.")) - state = "02" - if(secure) - name = "secure wired windoor assembly" - else - name = "wired windoor assembly" + if(!cables_added) + //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. + if(istype(tool, /obj/item/stack/sheet/plasteel) && !secure) + var/obj/item/stack/sheet/plasteel/reinforcement = tool + if(reinforcement.get_amount() < 2) + to_chat(user, span_warning("You need more plasteel to do this!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You start to reinforce the windoor with plasteel...")) + + if(!do_after(user, 4 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if(!src || secure || reinforcement.get_amount() < 2) + return ITEM_INTERACT_BLOCKING + + reinforcement.use(2) + to_chat(user, span_notice("You reinforce the windoor.")) + secure = TRUE + if(anchored) + name = "secure anchored windoor assembly" else - return ..() - - if("02") - - //Removing wire from the assembly. Step 5 undone. - if(W.tool_behaviour == TOOL_WIRECUTTER) - user.visible_message(span_notice("[user] cuts the wires from the airlock assembly."), span_notice("You start to cut the wires from airlock assembly...")) - - if(W.use_tool(src, user, 40, volume=100)) - if(state != "02") - return - - to_chat(user, span_notice("You cut the windoor wires.")) - new/obj/item/stack/cable_coil(get_turf(user), 1) - state = "01" - if(secure) - name = "secure anchored windoor assembly" - else - name = "anchored windoor assembly" - - //Adding airlock electronics for access. Step 6 complete. - else if(istype(W, /obj/item/electronics/airlock)) - - W.play_tool_sound(src, 100) - user.visible_message(span_notice("[user] installs the electronics into the airlock assembly."), - span_notice("You start to install electronics into the airlock assembly...")) - - if(do_after(user, 4 SECONDS, target = src)) - - if(!user.transferItemToLoc(W, src)) - return - if(!src || electronics) - W.forceMove(drop_location()) - return - to_chat(user, span_notice("You install the airlock electronics.")) - name = "near finished windoor assembly" - electronics = W - - //Screwdriver to remove airlock electronics. Step 6 undone. - else if(W.tool_behaviour == TOOL_SCREWDRIVER) - if(!electronics) - return - - user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), - span_notice("You start to uninstall electronics from the airlock assembly...")) - - if(W.use_tool(src, user, 40, volume=100) && electronics) - to_chat(user, span_notice("You remove the airlock electronics.")) - name = "wired windoor assembly" - var/obj/item/electronics/airlock/ae - ae = electronics - electronics = null - ae.forceMove(drop_location()) - - //Crowbar to complete the assembly, Step 7 complete. - else if(W.tool_behaviour == TOOL_CROWBAR) - if(!electronics) - to_chat(usr, span_warning("The assembly is missing electronics!")) - return - user.visible_message(span_notice("[user] pries the windoor into the frame."), - span_notice("You start prying the windoor into the frame...")) - - if(W.use_tool(src, user, 40, volume=100) && electronics) - set_density(TRUE) //Shouldn't matter but just incase - to_chat(user, span_notice("You finish the windoor.")) - finish_door() + name = "secure windoor assembly" + update_appearance() + return ITEM_INTERACT_SUCCESS + + //Adding cable to the assembly. Step 5 complete. + if(istype(tool, /obj/item/stack/cable_coil) && anchored) + user.visible_message(span_notice("[user] wires the windoor assembly."), span_notice("You start to wire the windoor assembly...")) + + if(!do_after(user, 4 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if(!anchored || cables_added) + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/cable_coil/wiring = tool + if(!wiring.use(1)) + to_chat(user, span_warning("You need more cable to do this!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You wire the windoor.")) + cables_added = TRUE + if(secure) + name = "secure wired windoor assembly" else - return ..() + name = "wired windoor assembly" + update_appearance() + return ITEM_INTERACT_SUCCESS + + return NONE + + //cables_added TRUE beyond this point + + //Adding airlock electronics for access. Step 6 complete. + if(istype(tool, /obj/item/electronics/airlock)) + + tool.play_tool_sound(src, 100) + user.visible_message(span_notice("[user] installs the electronics into the airlock assembly."), + span_notice("You start to install electronics into the airlock assembly...")) + + if(!do_after(user, 4 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + + if(!src || electronics) + tool.forceMove(drop_location()) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You install the airlock electronics.")) + name = "near finished windoor assembly" + electronics = tool + return ITEM_INTERACT_SUCCESS + + return NONE + +//dissasemble entirely unworked assembly +/obj/structure/windoor_assembly/welder_act(mob/living/user, obj/item/tool) + if(cables_added) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!anchored) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] disassembles the windoor assembly."), + span_notice("You start to disassemble the windoor assembly...")) + + if(!tool.use_tool(src, user, 4 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You disassemble the windoor assembly.")) + var/obj/item/stack/sheet/rglass/dropped_glass = new (get_turf(src), 5) + if(!QDELETED(dropped_glass)) + dropped_glass.add_fingerprint(user) + if(secure) + var/obj/item/stack/rods/dropped_rods = new (get_turf(src), 4) + if(!QDELETED(dropped_rods)) + dropped_rods.add_fingerprint(user) + qdel(src) + return ITEM_INTERACT_SUCCESS + +//secure or unsecure unworked assembly +/obj/structure/windoor_assembly/wrench_act(mob/living/user, obj/item/tool) + if(cables_added) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!anchored) + for(var/obj/machinery/door/window/competitor in loc) + if(competitor.dir == dir) + to_chat(user, span_warning("There is already a windoor in that location!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] secures the windoor assembly to the floor."), + span_notice("You start to secure the windoor assembly to the floor...")) + if(!tool.use_tool(src, user, 4 SECONDS, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(anchored) + return ITEM_INTERACT_BLOCKING + + for(var/obj/machinery/door/window/competitor in loc) + if(competitor.dir == dir) + to_chat(user, span_warning("There is already a windoor in that location!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You secure the windoor assembly.")) + set_anchored(TRUE) + if(secure) + name = "secure anchored windoor assembly" + else + name = "anchored windoor assembly" + return ITEM_INTERACT_SUCCESS + + //Unwrenching an unsecure assembly un-anchors it. Step 4 undone + user.visible_message(span_notice("[user] unsecures the windoor assembly to the floor."), + span_notice("You start to unsecure the windoor assembly to the floor...")) + + if(!tool.use_tool(src, user, 4 SECONDS, volume=100)) + return ITEM_INTERACT_BLOCKING + if(!anchored) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You unsecure the windoor assembly.")) + set_anchored(FALSE) + if(secure) + name = "secure windoor assembly" + else + name = "windoor assembly" + return ITEM_INTERACT_SUCCESS + +//Flips the windoor assembly, determines whether the door opens to the left or the right +/obj/structure/windoor_assembly/wrench_act_secondary(mob/living/user, obj/item/tool) + if(anchored) + return NONE + if(facing == WINDOOR_LEFT) + to_chat(usr, span_notice("The windoor will now slide to the right.")) + facing = WINDOOR_RIGHT + else + facing = WINDOOR_LEFT + to_chat(usr, span_notice("The windoor will now slide to the left.")) - //Update to reflect changes(if applicable) update_appearance() + return ITEM_INTERACT_SUCCESS + +//remove cabling +/obj/structure/windoor_assembly/wirecutter_act(mob/living/user, obj/item/tool) + if(!cables_added) + return ITEM_INTERACT_SKIP_TO_ATTACK + + user.visible_message(span_notice("[user] cuts the wires from the airlock assembly."), \ + span_notice("You start to cut the wires from airlock assembly...")) + if(!tool.use_tool(src, user, 4 SECONDS, volume=100)) + return ITEM_INTERACT_BLOCKING + + if(!cables_added) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You cut the windoor wires.")) + new/obj/item/stack/cable_coil(get_turf(user), 1) + cables_added = FALSE + if(secure) + name = "secure anchored windoor assembly" + else + name = "anchored windoor assembly" + update_appearance() + return ITEM_INTERACT_SUCCESS + +//remove airlock electronics +/obj/structure/windoor_assembly/screwdriver_act(mob/living/user, obj/item/tool) + if(!cables_added) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!electronics) + return ITEM_INTERACT_SKIP_TO_ATTACK + + user.visible_message(span_notice("[user] removes the electronics from the airlock assembly."), + span_notice("You start to uninstall electronics from the airlock assembly...")) + + if(!tool.use_tool(src, user, 4 SECONDS, volume=100) && electronics) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You remove the airlock electronics.")) + name = "wired windoor assembly" + var/obj/item/electronics/airlock/scrap + scrap = electronics + electronics = null + scrap.forceMove(drop_location()) + return ITEM_INTERACT_SUCCESS + +//finishes door +/obj/structure/windoor_assembly/crowbar_act(mob/living/user, obj/item/tool) + if(!cables_added) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if(!electronics) + to_chat(usr, span_warning("The assembly is missing electronics!")) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] pries the windoor into the frame."), + span_notice("You start prying the windoor into the frame...")) + + if(!tool.use_tool(src, user, 4 SECONDS, volume=100) || !electronics) + return ITEM_INTERACT_BLOCKING + set_density(TRUE) //Shouldn't matter but just incase <-- in case what? + to_chat(user, span_notice("You finish the windoor.")) + finish_door() + return ITEM_INTERACT_SUCCESS /obj/structure/windoor_assembly/examine(mob/user) . = ..() if(!anchored) . += span_notice("\The [src] can be [span_boldnotice("wrenched")] down.") . += span_notice("\The [src] could also be [span_boldnotice("cut apart")] with a [span_boldnotice("welder")].") - return - switch(state) - if("01") - . += span_notice("\The [src] needs [span_boldnotice("wiring")], or could be [span_boldnotice("un-wrenched")] from the floor.") - if("02") - if(!electronics) - . += span_notice("\The [src] needs [span_boldnotice("airlock electronics")] to continue installation, or [span_boldnotice("wirecutters")] to take apart.") - else - . += span_notice("\The [src] is ready to be [span_boldnotice("levered")] into place with a [span_boldnotice("crowbar")].") + return . + + if(!cables_added) + . += span_notice("\The [src] needs [span_boldnotice("wiring")], or could be [span_boldnotice("un-wrenched")] from the floor.") + return . + + if(!electronics) + . += span_notice("\The [src] needs [span_boldnotice("airlock electronics")] to continue installation, or [span_boldnotice("wirecutters")] to take apart.") + return . + + . += span_notice("\The [src] is ready to be [span_boldnotice("levered")] into place with a [span_boldnotice("crowbar")].") /obj/structure/windoor_assembly/proc/finish_door() var/obj/machinery/door/window/windoor if(secure) windoor = new /obj/machinery/door/window/brigdoor(loc) - if(facing == "l") + if(facing == WINDOOR_LEFT) windoor.icon_state = "leftsecureopen" windoor.base_state = "leftsecure" else @@ -299,7 +365,7 @@ else windoor = new /obj/machinery/door/window(loc) - if(facing == "l") + if(facing == WINDOOR_LEFT) windoor.icon_state = "leftopen" windoor.base_state = "left" else @@ -334,32 +400,12 @@ qdel(src) - -//Flips the windoor assembly, determines whather the door opens to the left or the right -/obj/structure/windoor_assembly/verb/flip() - set name = "Flip Windoor Assembly" - set src in oview(1) - if(usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) - return - - if(isliving(usr)) - var/mob/living/L = usr - if(!(L.mobility_flags & MOBILITY_USE)) - return - - if(facing == "l") - to_chat(usr, span_notice("The windoor will now slide to the right.")) - facing = "r" - else - facing = "l" - to_chat(usr, span_notice("The windoor will now slide to the left.")) - - update_appearance() - return - /obj/structure/windoor_assembly/nameformat(input, user) created_name = input return input /obj/structure/windoor_assembly/rename_reset() created_name = initial(created_name) + +#undef WINDOOR_LEFT +#undef WINDOOR_RIGHT diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3975030ac06f..4925828b66ac 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -18,6 +18,7 @@ flags_ricochet = RICOCHET_HARD receive_ricochet_chance_mod = 0.5 custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) + tacmap_color = TACMAP_WINDOW var/state = WINDOW_OUT_OF_FRAME var/reinf = FALSE var/heat_resistance = 800 @@ -505,6 +506,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0) //2021 AND STILLLL GOING STRONG //2022 BABYYYYY ~lewc //2023 ONE YEAR TO GO! -LT3 +//2026 just a week away - kemble /datum/armor/window_reinforced melee = 80 bomb = 25 @@ -516,79 +518,113 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0) return list("delay" = 3 SECONDS, "cost" = 15) return FALSE -/obj/structure/window/reinforced/attackby_secondary(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/window/reinforced/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) if(resistance_flags & INDESTRUCTIBLE) balloon_alert(user, "too resilient!") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ITEM_INTERACT_BLOCKING + + if(!tool.tool_behaviour) + return NONE + // to have gotten to this point, any tool must be innapropriate for its step switch(state) if(RWINDOW_SECURE) - if(tool.tool_behaviour == TOOL_WELDER) - if(tool.tool_start_check(user, heat_required = HIGH_TEMPERATURE_REQUIRED)) - user.visible_message(span_notice("[user] holds \the [tool] to the security screws on \the [src]..."), - span_notice("You begin heating the security screws on \the [src]...")) - if(tool.use_tool(src, user, 15 SECONDS, volume = 100)) - to_chat(user, span_notice("The security screws are glowing white hot and look ready to be removed.")) - state = RWINDOW_BOLTS_HEATED - addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 30 SECONDS) - else if (tool.tool_behaviour) - to_chat(user, span_warning("The security screws need to be heated first!")) + to_chat(user, span_warning("The security screws need to be heated first!")) if(RWINDOW_BOLTS_HEATED) - if(tool.tool_behaviour == TOOL_SCREWDRIVER) - user.visible_message(span_notice("[user] digs into the heated security screws and starts removing them..."), - span_notice("You dig into the heated screws hard and they start turning...")) - if(tool.use_tool(src, user, 50, volume = 50)) - state = RWINDOW_BOLTS_OUT - to_chat(user, span_notice("The screws come out, and a gap forms around the edge of the pane.")) - else if (tool.tool_behaviour) - to_chat(user, span_warning("The security screws need to be removed first!")) + to_chat(user, span_warning("The security screws need to be removed first!")) if(RWINDOW_BOLTS_OUT) - if(tool.tool_behaviour == TOOL_CROWBAR) - user.visible_message(span_notice("[user] wedges \the [tool] into the gap in the frame and starts prying..."), - span_notice("You wedge \the [tool] into the gap in the frame and start prying...")) - if(tool.use_tool(src, user, 40, volume = 50)) - state = RWINDOW_POPPED - to_chat(user, span_notice("The panel pops out of the frame, exposing some thin metal bars that looks like they can be cut.")) - else if (tool.tool_behaviour) - to_chat(user, span_warning("The gap needs to be pried first!")) + to_chat(user, span_warning("The gap needs to be pried first!")) if(RWINDOW_POPPED) - if(tool.tool_behaviour == TOOL_WIRECUTTER) - user.visible_message(span_notice("[user] starts cutting the exposed bars on \the [src]..."), - span_notice("You start cutting the exposed bars on \the [src]")) - if(tool.use_tool(src, user, 20, volume = 50)) - state = RWINDOW_BARS_CUT - to_chat(user, span_notice("The panels falls out of the way exposing the frame bolts.")) - else if (tool.tool_behaviour) - to_chat(user, span_warning("The bars need to be cut first!")) + to_chat(user, span_warning("The bars need to be cut first!")) if(RWINDOW_BARS_CUT) - if(tool.tool_behaviour == TOOL_WRENCH) - user.visible_message(span_notice("[user] starts unfastening \the [src] from the frame..."), - span_notice("You start unfastening the bolts from the frame...")) - if(tool.use_tool(src, user, 40, volume = 50)) - to_chat(user, span_notice("You unscrew the bolts from the frame and the window pops loose.")) - state = WINDOW_OUT_OF_FRAME - set_anchored(FALSE) - else if (tool.tool_behaviour) - to_chat(user, span_warning("The bolts need to be loosened first!")) + to_chat(user, span_warning("The bolts need to be loosened first!")) - - if (tool.tool_behaviour) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - return ..() + return ITEM_INTERACT_BLOCKING /obj/structure/window/reinforced/crowbar_act(mob/living/user, obj/item/tool) if(!anchored) - return FALSE + return NONE if(state != WINDOW_OUT_OF_FRAME) - return FALSE + return NONE to_chat(user, span_notice("You begin to lever the window back into the frame...")) - if(tool.use_tool(src, user, 10 SECONDS, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored))) - state = RWINDOW_SECURE - to_chat(user, span_notice("You pry the window back into the frame.")) + if(!tool.use_tool(src, user, 10 SECONDS, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored))) + return ITEM_INTERACT_BLOCKING + + state = RWINDOW_SECURE + to_chat(user, span_notice("You pry the window back into the frame.")) + return ITEM_INTERACT_SUCCESS + +/obj/structure/window/reinforced/welder_act_secondary(mob/living/user, obj/item/tool) + if(state != RWINDOW_SECURE) + return NONE // we got all that messaging for innapropriate tools, no skip to attack + + if(!tool.tool_start_check(user, heat_required = HIGH_TEMPERATURE_REQUIRED)) + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] holds \the [tool] to the security screws on \the [src]..."), + span_notice("You begin heating the security screws on \the [src]...")) + if(!tool.use_tool(src, user, 15 SECONDS, volume = 100)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("The security screws are glowing white hot and look ready to be removed.")) + state = RWINDOW_BOLTS_HEATED + addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 30 SECONDS) + return ITEM_INTERACT_SUCCESS + +/obj/structure/window/reinforced/screwdriver_act_secondary(mob/living/user, obj/item/tool) + if(state != RWINDOW_BOLTS_HEATED) + return NONE + + user.visible_message(span_notice("[user] digs into the heated security screws and starts removing them..."), + span_notice("You dig into the heated screws hard and they start turning...")) + if(!tool.use_tool(src, user, 5 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + state = RWINDOW_BOLTS_OUT + to_chat(user, span_notice("The screws come out, and a gap forms around the edge of the pane.")) + return ITEM_INTERACT_SUCCESS + +/obj/structure/window/reinforced/crowbar_act_secondary(mob/living/user, obj/item/tool) + if(state != RWINDOW_BOLTS_OUT) + return NONE + + user.visible_message(span_notice("[user] wedges \the [tool] into the gap in the frame and starts prying..."), + span_notice("You wedge \the [tool] into the gap in the frame and start prying...")) + if(!tool.use_tool(src, user, 4 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + state = RWINDOW_POPPED + to_chat(user, span_notice("The panel pops out of the frame, exposing some thin metal bars that looks like they can be cut.")) + return ITEM_INTERACT_SUCCESS + +/obj/structure/window/reinforced/wirecutter_act_secondary(mob/living/user, obj/item/tool) + if(state != RWINDOW_POPPED) + return NONE + + user.visible_message(span_notice("[user] starts cutting the exposed bars on \the [src]..."), + span_notice("You start cutting the exposed bars on \the [src]")) + if(!tool.use_tool(src, user, 2 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + state = RWINDOW_BARS_CUT + to_chat(user, span_notice("The panels falls out of the way exposing the frame bolts.")) + return ITEM_INTERACT_SUCCESS + +/obj/structure/window/reinforced/wrench_act_secondary(mob/living/user, obj/item/tool) + if(state != RWINDOW_BARS_CUT) + return NONE + + user.visible_message(span_notice("[user] starts unfastening \the [src] from the frame..."), + span_notice("You start unfastening the bolts from the frame...")) + if(!tool.use_tool(src, user, 4 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You unscrew the bolts from the frame and the window pops loose.")) + state = WINDOW_OUT_OF_FRAME + set_anchored(FALSE) return ITEM_INTERACT_SUCCESS /obj/structure/window/proc/cool_bolts() @@ -979,25 +1015,27 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw . = ..() . += (atom_integrity < max_integrity) ? torn : paper -/obj/structure/window/paperframe/attackby(obj/item/W, mob/living/user) - if(W.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - fire_act(W.get_temperature()) - return +/obj/structure/window/paperframe/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.get_temperature() >= FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + fire_act(tool.get_temperature()) + return ITEM_INTERACT_SUCCESS if(user.combat_mode) - return ..() - - if(istype(W, /obj/item/paper) && atom_integrity < max_integrity) - user.visible_message(span_notice("[user] starts to patch the holes in \the [src].")) - if(do_after(user, 2 SECONDS, target = src)) - atom_integrity = min(atom_integrity+4,max_integrity) - qdel(W) - user.visible_message(span_notice("[user] patches some of the holes in \the [src].")) - if(atom_integrity == max_integrity) - update_appearance() - return - ..() - update_appearance() + return NONE + + if(!istype(tool, /obj/item/paper) || atom_integrity == max_integrity) + return NONE + + user.visible_message(span_notice("[user] starts to patch the holes in \the [src].")) + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + atom_integrity = min(atom_integrity+4,max_integrity) + qdel(tool) + user.visible_message(span_notice("[user] patches some of the holes in \the [src].")) + if(atom_integrity == max_integrity) + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/structure/window/bronze name = "brass window" diff --git a/code/game/say.dm b/code/game/say.dm index 739e95f9c1ed..33c024a83e99 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_INIT(freqtospan, list( /// Returns TRUE if the message was received and understood. /atom/movable/proc/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0, source) // DARKPACK EDIT CHANGE - ORIGINAL: /atom/movable/proc/Hear(atom/movable/speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), message_range=0) SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, args) - return TRUE + return HEAR_HEARD | HEAR_UNDERSTOOD /** @@ -119,18 +119,27 @@ GLOBAL_LIST_INIT(freqtospan, list( SHOULD_BE_PURE(TRUE) return !HAS_TRAIT(src, TRAIT_MUTE) +/atom/movable/proc/do_tts_message(message, language, message_mods, list/tts_filter, list/hearers) + set waitfor = FALSE + + if(!SStts.tts_enabled || !voice || HAS_TRAIT(src, TRAIT_SIGN_LANG) || HAS_TRAIT(src, TRAIT_UNKNOWN_VOICE) || message_mods[MODE_CUSTOM_SAY_ERASE_INPUT]) + return + + var/list/filter = list() + if(length(voice_filter) > 0) + filter += voice_filter + + if(length(tts_filter) > 0) + filter += tts_filter.Join(",") + var/list/special_filter = list() + INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), src, html_decode(message), language, get_tts_voice(filter, special_filter), filter.Join(","), hearers, message_range = 7, pitch = pitch, special_filters = special_filter.Join("|"), blip_base = blip_base, blip_number = blip_number, identifier = message_mods[MODE_TTS_IDENTIFIER]) + +/atom/movable/proc/get_tts_voice(list/filter, list/special_filter) + . = voice + /atom/movable/proc/send_speech(message, range = 7, obj/source = src, bubble_type, list/spans, datum/language/message_language, list/message_mods = list(), forced = FALSE, tts_message, list/tts_filter) - var/found_client = FALSE var/list/listeners = get_hearers_in_view(range, source) var/list/listened = list() - for(var/atom/movable/hearing_movable as anything in listeners) - if(!hearing_movable)//theoretically this should use as anything because it shouldnt be able to get nulls but there are reports that it does. - stack_trace("somehow theres a null returned from get_hearers_in_view() in send_speech!") - continue - if(hearing_movable.Hear(src, message_language, message, null, null, null, spans, message_mods, range)) - listened += hearing_movable - if(!found_client && length(hearing_movable.client_mobs_in_contents)) - found_client = TRUE var/tts_message_to_use = tts_message if(!tts_message_to_use) @@ -143,9 +152,17 @@ GLOBAL_LIST_INIT(freqtospan, list( if(length(tts_filter) > 0) filter += tts_filter.Join(",") - if(voice && found_client) - if (!CONFIG_GET(flag/tts_no_whisper) || (CONFIG_GET(flag/tts_no_whisper) && !message_mods[WHISPER_MODE])) - INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), src, html_decode(tts_message_to_use), message_language, voice, filter.Join(","), listened, message_range = range, pitch = pitch) + var/shell_scrubbed_input = tts_speech_filter(html_decode(tts_message_to_use)) + var/identifier = "[sha1(voice + filter.Join(",") + num2text(pitch) + shell_scrubbed_input + blip_base + num2text(blip_number))].[world.time]" + message_mods[MODE_TTS_IDENTIFIER] = identifier + for(var/atom/movable/hearing_movable as anything in listeners) + if(!hearing_movable)//theoretically this should use as anything because it shouldnt be able to get nulls but there are reports that it does. + stack_trace("somehow theres a null returned from get_hearers_in_view() in send_speech!") + continue + if(hearing_movable.Hear(src, message_language, message, null, null, null, spans, message_mods, range) & HEAR_HEARD) + listened += hearing_movable + + do_tts_message(tts_message_to_use, message_language, message_mods, tts_filter, listened) /atom/movable/proc/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), visible_name = FALSE, source) // DARKPACK EDIT CHANGE - ORIGINAL: /atom/movable/proc/compose_message(atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, list/spans, list/message_mods = list(), visible_name = FALSE) //This proc uses [] because it is faster than continually appending strings. Thanks BYOND. @@ -187,8 +204,10 @@ GLOBAL_LIST_INIT(freqtospan, list( var/languageicon = "" if(!message_mods[MODE_CUSTOM_SAY_ERASE_INPUT]) var/datum/language/dialect = GLOB.language_datum_instances[message_language] - if(istype(dialect) && dialect.display_icon(src)) - languageicon = "[dialect.get_icon()] " + var/dialect_icon_type = dialect?.display_icon_type(src, message_mods) || DISPLAY_LANGUAGE_ICON_NONE + if(dialect_icon_type != DISPLAY_LANGUAGE_ICON_NONE) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) + languageicon = sheet.icon_tag("language-[dialect.icon_state][dialect_icon_type == DISPLAY_LANGUAGE_ICON_PARTIAL ? "-partial" : ""]") + " " // The actual message part. var/messagepart = speaker.generate_messagepart(raw_message, spans, message_mods) @@ -277,7 +296,8 @@ GLOBAL_LIST_INIT(freqtospan, list( ENCODE_HTML_EMPHASIS(input, "\\|", "i", italics) ENCODE_HTML_EMPHASIS(input, "\\+", "b", bold) ENCODE_HTML_EMPHASIS(input, "\\_", "u", underline) - var/static/regex/remove_escape_backlashes = regex("\\\\(\\_|\\+|\\|)", "g") // Removes backslashes used to escape text modification. + ENCODE_HTML_EMPHASIS(input, "\\^", "small", small) + var/static/regex/remove_escape_backlashes = regex("\\\\(\\_|\\+|\\||\\^)", "g") // Removes backslashes used to escape text modification. input = remove_escape_backlashes.Replace_char(input, "$1") return input diff --git a/code/game/sound/sound.dm b/code/game/sound/sound.dm index 122b29f8ae17..d53f2213821a 100644 --- a/code/game/sound/sound.dm +++ b/code/game/sound/sound.dm @@ -81,7 +81,10 @@ listeners += listening_ghost for(var/mob/listening_mob in listeners)//had nulls sneak in here, hence the typecheck - if(get_dist_euclidean(listening_mob, turf_source) <= maxdistance) + var/turf/mob_turf = get_turf(listening_mob) + if(!mob_turf) + continue + if(get_dist_euclidean(mob_turf, turf_source) <= maxdistance) listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb, volume_preference) return listeners @@ -228,3 +231,12 @@ return soundin var/datum/sound_effect/sfx = GLOB.sfx_datum_by_key[soundin] return sfx?.return_sfx() || soundin + + +/** + * Creates a soundtoken datum (a sound that updates for movement). + * allowed_listeners is an optional list of mobs that are the only ones that can hear this sound ever. + * sound_length is an optional length of the sound. Things like TTS need to pass this since we can't dynamically grab the length in that case. + */ +/proc/playsoundtoken(atom/source, soundin, volume, range, falloff_exponent = SOUND_FALLOFF_EXPONENT, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, allowed_listeners, sound_length) + return new /datum/sound_token(source, soundin, range, volume, falloff_exponent, falloff_distance, allowed_listeners, sound_length, _delete_on_end = TRUE) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 33afb7c7b291..944899bc6692 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -25,6 +25,8 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( copy_to_turf.icon_state = icon_state if(copy_to_turf.icon != icon) copy_to_turf.icon = icon + if(length(custom_materials)) + copy_to_turf.set_custom_materials(custom_materials) if(LAZYLEN(atom_colours)) copy_to_turf.atom_colours = atom_colours.Copy() copy_to_turf.update_atom_colour() @@ -266,7 +268,6 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( return var/datum/gas_mixture/total = new//Holders to assimilate air from nearby turfs - var/list/total_gases = total.gases //Stolen blatently from self_breakdown var/list/turf_list = atmos_adjacent_turfs + src var/turflen = turf_list.len @@ -282,14 +283,13 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( energy += mix.temperature * capacity heat_cap += capacity - var/list/giver_gases = mix.gases - for(var/giver_id in giver_gases) - ASSERT_GAS_IN_LIST(giver_id, total_gases) - total.adjust_gas(giver_id, giver_gases[giver_id][MOLES]) + for(var/giver_id, amount in mix.moles) + total.adjust_gas(giver_id, amount) total.temperature = energy / heat_cap - for(var/id in total_gases) - total_gases[id][MOLES] /= turflen + var/list/cached_total_moles = total.moles + for(var/id in cached_total_moles) + cached_total_moles[id] /= turflen for(var/turf/open/turf in turf_list) turf.air.copy_from(total) diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index c29772afc5b4..67c5d64ac48d 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -9,6 +9,7 @@ init_air = FALSE rad_insulation = RAD_MEDIUM_INSULATION pass_flags_self = PASSCLOSEDTURF + tacmap_color = TACMAP_BLACK /turf/closed/AfterChange() . = ..() @@ -19,3 +20,19 @@ /turf/closed/examine_descriptor(mob/user) return "wall" + +/** + * Some turfs (mineral) are big, so they need to be on the game plane at a high layer + * But they're also turfs, so we need to cut them out from the light mask plane + * So we draw them as if they were on the game plane, and then overlay a copy onto + * The wall plane (so emissives/light masks behave) + * I am so sorry + */ +/turf/closed/proc/add_large_wall_overlay(wall_icon, wall_state) + var/static/list/mutable_appearance/wall_overlays = list() + var/mutable_appearance/wall_overlay = wall_overlays["[wall_icon]-[wall_state]"] + if (!wall_overlay) + wall_overlay = mutable_appearance('icons/turf/mining.dmi', wall_state, appearance_flags = RESET_TRANSFORM) + wall_overlays["[wall_icon]-[wall_state]"] = wall_overlay + wall_overlay.plane = MUTATE_PLANE(WALL_PLANE, src) + overlays += wall_overlay diff --git a/code/game/turfs/closed/indestructible.dm b/code/game/turfs/closed/indestructible.dm index 75532f983901..b89e1c627521 100644 --- a/code/game/turfs/closed/indestructible.dm +++ b/code/game/turfs/closed/indestructible.dm @@ -239,34 +239,59 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) /turf/closed/indestructible/fakedoor/engineering icon = 'icons/obj/doors/airlocks/station/engineering.dmi' +///These should look like normal rocks, however they cannot be mined /turf/closed/indestructible/rock name = "dense rock" desc = "An extremely densely-packed rock, most mining tools or explosives would never get through this." - icon = 'icons/turf/mining.dmi' - icon_state = "rock" + icon = MAP_SWITCH('icons/turf/smoothrocks.dmi', 'icons/turf/mining.dmi') + icon_state = "rock_indestructible" + base_icon_state = "smoothrocks" + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_MINERAL_WALLS + canSmoothWith = SMOOTH_GROUP_MINERAL_WALLS + smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER + + // We're a BIG wall, larger then 32x32, so we need to be on the game plane + // Otherwise we'll draw under shit in weird ways + plane = GAME_PLANE + layer = EDGED_TURF_LAYER + + // This is static + // Done like this to avoid needing to make it dynamic and save cpu time + // 4 to the left, 4 down + transform = MAP_SWITCH(TRANSLATE_MATRIX(-4, -4), matrix()) + + /// Wall plane overlay icon state + var/wall_icon_state = "rock" + +/turf/closed/indestructible/rock/Initialize(mapload) + . = ..() + add_large_wall_overlay('icons/turf/mining.dmi', wall_icon_state) /turf/closed/indestructible/rock/snow - name = "mountainside" - desc = "An extremely densely-packed rock, sheeted over with centuries worth of ice and snow." - icon = 'icons/turf/walls.dmi' - icon_state = "snowrock" + name = "mountain bedrock" + icon = MAP_SWITCH('icons/turf/walls/mountain_wall.dmi', 'icons/turf/mining.dmi') + icon_state = "mountainrock_indestructible" + base_icon_state = "mountain_wall" + wall_icon_state = "mountainrock" + canSmoothWith = SMOOTH_GROUP_CLOSED_TURFS bullet_sizzle = TRUE bullet_bounce_sound = null -/turf/closed/indestructible/rock/snow/ice - name = "iced rock" +/turf/closed/indestructible/rock/snow/ore + name = "iced_rock" desc = "Extremely densely-packed sheets of ice and rock, forged over the years of the harsh cold." - icon = 'icons/turf/walls.dmi' - icon_state = "icerock" - -/turf/closed/indestructible/rock/snow/ice/ore - icon = 'icons/turf/walls/icerock_wall.dmi' - icon_state = "icerock_wall-0" + icon = MAP_SWITCH('icons/turf/walls/icerock_wall.dmi', 'icons/turf/mining.dmi') + icon_state = "icerock_indestructible" base_icon_state = "icerock_wall" + wall_icon_state = "icerock" smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER canSmoothWith = SMOOTH_GROUP_CLOSED_TURFS - pixel_x = -4 - pixel_y = -4 + +/turf/closed/indestructible/ice + name = "permafrost" + desc = "Extremely densely-packed, never-melting sheets of ice, somehow impervious to most mining tools." + icon = 'icons/turf/mining.dmi' + icon_state = "permafrost" /turf/closed/indestructible/paper name = "thick paper wall" diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 37575ccffa85..b16e8b45bdf4 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -52,18 +52,7 @@ /turf/closed/mineral/Initialize(mapload) . = ..() - // Mineral turfs are big, so they need to be on the game plane at a high layer - // But they're also turfs, so we need to cut them out from the light mask plane - // So we draw them as if they were on the game plane, and then overlay a copy onto - // The wall plane (so emissives/light masks behave) - // I am so sorry - var/static/list/mutable_appearance/wall_overlays = list() - var/mutable_appearance/wall_overlay = wall_overlays[wall_icon_state] - if (!wall_overlay) - wall_overlay = mutable_appearance('icons/turf/mining.dmi', wall_icon_state, appearance_flags = RESET_TRANSFORM) - wall_overlays[wall_icon_state] = wall_overlay - wall_overlay.plane = MUTATE_PLANE(WALL_PLANE, src) - overlays += wall_overlay + add_large_wall_overlay('icons/turf/mining.dmi', wall_icon_state) // Inlined version of the bump click element. way faster this way, the element's nice but it's too much overhead /turf/closed/mineral/Bumped(atom/movable/bumped_atom) @@ -80,7 +69,7 @@ if(!held_item) INVOKE_ASYNC(bumping, TYPE_PROC_REF(/mob, ClickOn), src) else if(held_item.tool_behaviour == TOOL_MINING) - attackby(held_item, bumping) + item_interaction(bumping, held_item) /turf/closed/mineral/proc/spread_vein(ore_type) if(!ispath(ore_type, /obj/item/stack/ore)) @@ -111,7 +100,7 @@ switch (ore_path::vein_type) if (ORE_VEIN_CLUSTER) for (var/turf/closed/mineral/rock in range(vein_size, src)) - if (rock.mineral_type) + if (rock.mineral_type || istype(rock, /turf/closed/mineral/gibtonite)) continue var/spread_prob = 100 @@ -127,7 +116,7 @@ for (var/turf/closed/mineral/rock in range(vein_size, src)) if (rock.base_icon_state != base_icon_state && prob(50)) continue - if (!rock.mineral_type) + if (!rock.mineral_type && !istype(rock, /turf/closed/mineral/gibtonite)) rocks += rock for (var/i in 1 to rand(min_vein_size ** 2, max_vein_size ** 2)) @@ -141,7 +130,7 @@ for (var/turf/closed/mineral/rock in range(vein_size, src)) if (rock.base_icon_state != base_icon_state && prob(50)) continue - if (!rock.mineral_type) + if (!rock.mineral_type && !istype(rock, /turf/closed/mineral/gibtonite)) rocks += rock if (!length(rocks)) @@ -176,7 +165,7 @@ for (var/turf/closed/mineral/rock in range(vein_size, src)) if (rock.base_icon_state != base_icon_state && prob(50)) continue - if (!rock.mineral_type) + if (!rock.mineral_type && !istype(rock, /turf/closed/mineral/gibtonite)) rocks += rock if (!length(rocks)) @@ -189,7 +178,7 @@ /turf/closed/mineral/proc/change_ore(ore_type, random = TRUE) if (ispath(ore_type, /obj/item/boulder)) scan_state = "rock_boulder" // Yes even the lowly boulder has a scan state - spawned_boulder = /obj/item/boulder/gulag_expanded + spawned_boulder = /obj/item/boulder/gulag return if (random) @@ -222,29 +211,35 @@ return TRUE return ..() -/turf/closed/mineral/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers, exp_multiplier = 1) - if (!ISADVANCEDTOOLUSER(user)) - to_chat(usr, span_warning("You don't have the dexterity to do this!")) - return +/turf/closed/mineral/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.tool_behaviour != TOOL_MINING) + return ..() - if(I.tool_behaviour != TOOL_MINING) - return + return manual_mine(user, tool) - var/turf/T = user.loc - if (!isturf(T)) - return +///Mining manually with a hand tool or something masquerading as one +/turf/closed/mineral/proc/manual_mine(mob/living/user, obj/item/tool, exp_multiplier = 1) + if (!ISADVANCEDTOOLUSER(user)) + to_chat(user, span_warning("You don't have the dexterity to do this!")) + return ITEM_INTERACT_BLOCKING + + if (!isturf(user.loc)) + return ITEM_INTERACT_BLOCKING if(TIMER_COOLDOWN_RUNNING(src, REF(user))) //prevents mining turfs in progress - return + return ITEM_INTERACT_BLOCKING TIMER_COOLDOWN_START(src, REF(user), tool_mine_speed) - if(!I.use_tool(src, user, tool_mine_speed, volume=50)) + if(!tool.use_tool(src, user, tool_mine_speed, volume = 50)) TIMER_COOLDOWN_END(src, REF(user)) //if we fail we can start again immediately - return + return ITEM_INTERACT_BLOCKING - if(ismineralturf(src)) - gets_drilled(user, exp_multiplier) - SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type) + if(!ismineralturf(src)) + return ITEM_INTERACT_BLOCKING + + gets_drilled(user, exp_multiplier) + SSblackbox.record_feedback("tally", "pick_used_mining", 1, tool.type) + return ITEM_INTERACT_SUCCESS /turf/closed/mineral/attack_hand(mob/user) var/mining_arms = HAS_TRAIT(user, TRAIT_FIST_MINING) @@ -429,8 +424,8 @@ color = COLOR_BLUE else color = BlendRGB(COLOR_GREEN, COLOR_RED, clamp((open_turf_distance - 1) / 5, 0, 0.99)) - maptext_x = 4 - maptext_y = 4 + maptext_x = -transform.c + maptext_y = -transform.f maptext = MAPTEXT_TINY_UNICODE("[open_turf_distance]") #endif @@ -673,6 +668,7 @@ initial_gas_mix = ICEMOON_DEFAULT_ATMOS weak_turf = TRUE exposure_based = TRUE + wall_icon_state = "mountainrock" /turf/closed/mineral/random/snow/change_ore(ore_type, random = TRUE) . = ..() @@ -680,7 +676,6 @@ icon = 'icons/turf/walls/icerock_wall.dmi' icon_state = "icerock_wall-0" base_icon_state = "icerock_wall" - smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER /turf/closed/mineral/random/snow/mineral_chances() return list( @@ -692,7 +687,7 @@ /obj/item/stack/ore/silver = 8, /obj/item/stack/ore/titanium = 11, /obj/item/stack/ore/uranium = 5, - /turf/closed/mineral/gibtonite/ice/icemoon = 4, + /turf/closed/mineral/gibtonite/ice/icemoon = 2, ) /// Near exact same subtype as parent, just used in ruins to prevent other ruins/chasms from spawning on top of it. @@ -702,7 +697,6 @@ turf_flags = NO_RUINS /turf/closed/mineral/random/snow/underground - baseturfs = /turf/open/misc/asteroid/snow/icemoon // abundant ore mineral_chance = 11 @@ -717,7 +711,7 @@ /obj/item/stack/ore/silver = 24, /obj/item/stack/ore/titanium = 22, /obj/item/stack/ore/uranium = 10, - /turf/closed/mineral/gibtonite/ice/icemoon = 8, + /turf/closed/mineral/gibtonite/ice/icemoon = 2, ) /turf/closed/mineral/random/snow/high_chance @@ -739,8 +733,12 @@ /turf/closed/mineral/random/labormineral/mineral_chances() return list( - /obj/item/boulder/gulag = 165, - /turf/closed/mineral/gibtonite = 2, + /obj/item/boulder/gulag = 30, + /obj/item/stack/ore/gold = 10, + /obj/item/stack/ore/iron = 25, + /obj/item/stack/ore/plasma = 20, + /obj/item/stack/ore/silver = 20, + /turf/closed/mineral/gibtonite/volcanic = 2, ) /turf/closed/mineral/random/labormineral/volcanic @@ -750,12 +748,6 @@ initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE -/turf/closed/mineral/random/labormineral/volcanic/mineral_chances() - return list( - /obj/item/boulder/gulag_expanded = 166, - /turf/closed/mineral/gibtonite/volcanic = 2, - ) - // Subtypes for mappers placing ores manually. /turf/closed/mineral/random/labormineral/ice name = "snowy mountainside" @@ -772,7 +764,11 @@ /turf/closed/mineral/random/labormineral/ice/mineral_chances() return list( - /obj/item/boulder/gulag = 168, + /obj/item/boulder/gulag = 30, + /obj/item/stack/ore/gold = 10, + /obj/item/stack/ore/iron = 25, + /obj/item/stack/ore/plasma = 20, + /obj/item/stack/ore/silver = 20, /turf/closed/mineral/gibtonite/ice/icemoon = 2, ) @@ -1076,19 +1072,19 @@ det_time = rand(8,10) //So you don't know exactly when the hot potato will explode . = ..() -/turf/closed/mineral/gibtonite/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers, exp_multiplier = 1) +/turf/closed/mineral/gibtonite/item_interaction(mob/living/user, obj/item/tool, list/modifiers) var/previous_stage = stage - if(istype(attacking_item, /obj/item/goliath_infuser_hammer) && stage == GIBTONITE_ACTIVE) - user.visible_message(span_notice("[user] digs [attacking_item] to [src]..."), span_notice("Your tendril hammer instictively digs and wraps around [src] to stop it...")) + if(istype(tool, /obj/item/goliath_infuser_hammer) && stage == GIBTONITE_ACTIVE) + user.visible_message(span_notice("[user] digs [tool] to [src]..."), span_notice("Your tendril hammer instictively digs and wraps around [src] to stop it...")) defuse(user) - else if(istype(attacking_item, /obj/item/mining_scanner) || istype(attacking_item, /obj/item/t_scanner/adv_mining_scanner) && stage == GIBTONITE_ACTIVE) - user.visible_message(span_notice("[user] holds [attacking_item] to [src]..."), span_notice("You use [attacking_item] to locate where to cut off the chain reaction and attempt to stop it...")) + else if(istype(tool, /obj/item/mining_scanner) || istype(tool, /obj/item/t_scanner/adv_mining_scanner) && stage == GIBTONITE_ACTIVE) + user.visible_message(span_notice("[user] holds [tool] to [src]..."), span_notice("You use [tool] to locate where to cut off the chain reaction and attempt to stop it...")) defuse(user) . = ..() - if(istype(attacking_item, /obj/item/clothing/gloves/gauntlets) && previous_stage == GIBTONITE_UNSTRUCK && stage == GIBTONITE_ACTIVE && istype(user)) + if(istype(tool, /obj/item/clothing/gloves/gauntlets) && previous_stage == GIBTONITE_UNSTRUCK && stage == GIBTONITE_ACTIVE && istype(user)) user.Immobilize(0.5 SECONDS) user.throw_at(get_ranged_target_turf(src, get_dir(src, user), 5), range = 5, speed = 3, spin = FALSE) - user.visible_message(span_danger("[user] hit gibtonite with [attacking_item.name], launching [user.p_them()] back!"), span_danger("You've struck gibtonite! Your [attacking_item.name] launched you back!")) + user.visible_message(span_danger("[user] hit gibtonite with [tool.name], launching [user.p_them()] back!"), span_danger("You've struck gibtonite! Your [tool.name] launched you back!")) /turf/closed/mineral/gibtonite/proc/explosive_reaction(mob/user = null) if(stage != GIBTONITE_UNSTRUCK) @@ -1234,15 +1230,16 @@ base_icon_state = "rock_wall" smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER -/turf/closed/mineral/strong/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers, exp_multiplier = 1) +/turf/closed/mineral/strong/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!ishuman(user)) to_chat(usr, span_warning("Only a more advanced species could break a rock such as this one!")) - return FALSE - if(user.mind?.get_skill_level(/datum/skill/mining) >= SKILL_LEVEL_MASTER) - . = ..() - else + return ITEM_INTERACT_BLOCKING + + if(!user.mind?.get_skill_level(/datum/skill/mining) >= SKILL_LEVEL_MASTER) to_chat(usr, span_warning("The rock seems to be too strong to destroy. Maybe I can break it once I become a master miner.")) + return ITEM_INTERACT_BLOCKING + return ..() /turf/closed/mineral/strong/gets_drilled(mob/user, exp_multiplier = 0) if(istype(user)) diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 02e40a4054ec..23700a6c9495 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -173,15 +173,18 @@ custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT*2) rust_resistance = RUST_RESISTANCE_BASIC -/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user) - if(W.get_sharpness() && W.force) - var/duration = ((4.8 SECONDS)/W.force) * 2 //In seconds, for now. - if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe)) - duration /= 4 //Much better with hatchets and axes. - if(do_after(user, duration * (1 SECONDS), target=src)) //Into deciseconds. - dismantle_wall(FALSE,FALSE) - return - return ..() +/turf/closed/wall/mineral/wood/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.get_sharpness() || !tool.force) + return ..() + + var/duration = (4.8 SECONDS / tool.force) * 2 //In seconds, for now. + if(istype(tool, /obj/item/hatchet) || istype(tool, /obj/item/fireaxe)) + duration /= 4 //Much better with hatchets and axes. + if(!do_after(user, duration * 1 SECONDS, target = src)) //Into deciseconds. + return ITEM_INTERACT_BLOCKING + + dismantle_wall(FALSE,FALSE) + return ITEM_INTERACT_SUCCESS /turf/closed/wall/mineral/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 0) return ..() //No recoil damage, wood is weak diff --git a/code/game/turfs/open/asteroid.dm b/code/game/turfs/open/asteroid.dm index c441871caa82..35d6e8cdbb75 100644 --- a/code/game/turfs/open/asteroid.dm +++ b/code/game/turfs/open/asteroid.dm @@ -62,29 +62,36 @@ /turf/open/misc/asteroid/ex_act(severity, target) return FALSE -/turf/open/misc/asteroid/attackby(obj/item/attack_item, mob/user, list/modifiers) +/turf/open/misc/asteroid/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = ..() - if(.) - return TRUE + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . - if(attack_item.tool_behaviour == TOOL_SHOVEL || attack_item.tool_behaviour == TOOL_MINING) - if(!can_dig(user)) - return TRUE + if(istype(tool, /obj/item/storage/bag/ore)) + for(var/obj/item/stack/ore/dropped_ore in src) + SEND_SIGNAL(tool, COMSIG_ATOM_ATTACKBY, dropped_ore) + return ITEM_INTERACT_SUCCESS - if(!isturf(user.loc)) - return + if(tool.tool_behaviour != TOOL_SHOVEL && tool.tool_behaviour != TOOL_MINING) + return . // it still could be SKIP_TO_ATTACK and we don't want to step on that - balloon_alert(user, "digging...") + if(!can_dig(user)) + return ITEM_INTERACT_BLOCKING - if(attack_item.use_tool(src, user, 4 SECONDS, volume = 50)) - if(!can_dig(user)) - return TRUE - getDug() - SSblackbox.record_feedback("tally", "pick_used_mining", 1, attack_item.type) - return TRUE - else if(istype(attack_item, /obj/item/storage/bag/ore)) - for(var/obj/item/stack/ore/dropped_ore in src) - SEND_SIGNAL(attack_item, COMSIG_ATOM_ATTACKBY, dropped_ore) + if(!isturf(user.loc)) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "digging...") + + if(!tool.use_tool(src, user, 4 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + + if(!can_dig(user)) + return ITEM_INTERACT_BLOCKING + + getDug() + SSblackbox.record_feedback("tally", "pick_used_mining", 1, tool.type) + return ITEM_INTERACT_SUCCESS /// Drops itemstack when dug and changes icon /turf/open/misc/asteroid/proc/getDug() @@ -182,6 +189,7 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) initial_gas_mix = LAVALAND_DEFAULT_ATMOS planetary_atmos = TRUE baseturfs = /turf/open/lava/smooth/lava_land_surface + skip_minimap_rendering = TRUE /// Used for the lavaland icemoon ruin. /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins @@ -216,6 +224,10 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) if(cur_flags & NO_RUINS) new_turf.turf_flags |= NO_RUINS +/turf/open/misc/asteroid/basalt/lava_land_surface/biome_replace/normal_atmos + initial_gas_mix = OPENTURF_DEFAULT_ATMOS + planetary_atmos = FALSE + /turf/open/misc/asteroid/lowpressure initial_gas_mix = OPENTURF_LOW_PRESSURE baseturfs = /turf/open/misc/asteroid/lowpressure @@ -232,6 +244,8 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) layer = MID_TURF_LAYER floor_variance = 0 transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smooth_broken = TRUE + has_floor_variance = FALSE /// DMI used by unsmoothed turfs for variance var/variant_dmi = null /// Amount of variants this turf has @@ -258,6 +272,12 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) return underlay_appearance.transform = transform +/turf/open/misc/asteroid/basalt/smooth/refill_dug() + dug = FALSE + broken = FALSE + set_smoothed_icon_state(smoothing_junction) + update_appearance() + /turf/open/misc/asteroid/basalt/smooth/siderite name = "siderite floor" baseturfs = /turf/open/misc/asteroid/basalt/smooth/siderite @@ -393,6 +413,7 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) baseturfs = /turf/open/openspace/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS slowdown = 0 + skip_minimap_rendering = TRUE /// Exact subtype as parent, just used in ruins to prevent other ruins/chasms from spawning on top of it. /turf/open/misc/asteroid/snow/icemoon/do_not_chasm @@ -469,6 +490,7 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) base_icon_state = "moon" floor_variance = 40 dig_result = /obj/item/stack/ore/glass/basalt + initial_gas_mix = MOONBASE19_ATMOS /turf/open/misc/asteroid/moon/dug //When you want one of these to be already dug. dug = TRUE diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm index 47c425da544b..dd7e01ed2243 100644 --- a/code/game/turfs/open/chasm.dm +++ b/code/game/turfs/open/chasm.dm @@ -55,26 +55,18 @@ underlay_appearance.icon_state = /turf/open/misc/asteroid/basalt::icon_state return TRUE -/turf/open/chasm/attackby(obj/item/C, mob/user, params, area/area_restriction) +/turf/open/chasm/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = ..() - if(ismetaltile(C)) - build_with_floor_tiles(C, user) - return - - if(!istype(C, /obj/item/stack/rods)) - return - - var/obj/item/stack/rods/R = C - var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) - if(L) - return - if(!R.use(1)) - to_chat(user, span_warning("You need one rod to build a lattice.")) - return - to_chat(user, span_notice("You construct a lattice.")) - playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE) - // Create a lattice, without reverting to our baseturf - new /obj/structure/lattice(src) + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + + if(istype(tool, /obj/item/stack/rods)) + build_with_rods(tool, user) + return ITEM_INTERACT_SUCCESS + + if(ismetaltile(tool)) + build_with_floor_tiles(tool, user) + return ITEM_INTERACT_SUCCESS /// Handles adding the chasm component to the turf (So stuff falls into it!) @@ -140,9 +132,11 @@ /turf/open/chasm/true/no_smooth/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, list/rcd_data) return FALSE -/turf/open/chasm/true/no_smooth/attackby(obj/item/item, mob/user, params, area/area_restriction) - if(istype(item, /obj/item/stack/rods)) - return - else if(ismetaltile(item)) - return +/turf/open/chasm/true/no_smooth/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/rods)) + return ITEM_INTERACT_BLOCKING + + if(ismetaltile(tool)) + return ITEM_INTERACT_BLOCKING + return ..() diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index bea8f05aa92b..2dd2484e52e9 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -125,19 +125,21 @@ W.update_appearance() return W -/turf/open/floor/attackby(obj/item/object, mob/living/user, list/modifiers) - if(!object || !user) - return TRUE +/turf/open/floor/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = ..() - if(.) + if(ITEM_INTERACT_ANY_BLOCKER & .) return . - if(overfloor_placed && istype(object, /obj/item/stack/tile)) - try_replace_tile(object, user, modifiers) - return TRUE - if(user.combat_mode && istype(object, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/sheets = object - return sheets.on_attack_floor(src, user, modifiers) - return FALSE + + if(overfloor_placed && istype(tool, /obj/item/stack/tile)) + try_replace_tile(tool, user, modifiers) + return ITEM_INTERACT_SUCCESS + + if(user.combat_mode && istype(tool, /obj/item/stack/sheet)) + var/obj/item/stack/sheet/sheets = tool + if(!sheets.on_attack_floor(src, user, modifiers)) + return ITEM_INTERACT_BLOCKING + + return ITEM_INTERACT_SUCCESS /turf/open/floor/crowbar_act(mob/living/user, obj/item/I) if(overfloor_placed && pry_tile(I, user)) diff --git a/code/game/turfs/open/floor/iron_floor.dm b/code/game/turfs/open/floor/iron_floor.dm index d4fa5912142f..7b0df2455555 100644 --- a/code/game/turfs/open/floor/iron_floor.dm +++ b/code/game/turfs/open/floor/iron_floor.dm @@ -414,6 +414,7 @@ icon_state = "solarpanel" base_icon_state = "solarpanel" floor_tile = /obj/item/stack/tile/iron/solarpanel + skip_minimap_rendering = TRUE /turf/open/floor/iron/solarpanel/airless initial_gas_mix = AIRLESS_ATMOS diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index 93ae88597ad1..7c5aa2629845 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -129,21 +129,31 @@ currentcolor = choice update_appearance() -/turf/open/floor/light/attackby(obj/item/C, mob/user, list/modifiers) - if(..()) - return - if(istype(C, /obj/item/light/bulb)) //only for light tiles - var/obj/item/light/bulb/B = C - if(B.status)/// check if broken - to_chat(user, span_danger("The light bulb is broken!")) - return - if(state && user.temporarilyRemoveItemFromInventory(C)) - qdel(C) - state = LIGHTFLOOR_FINE //fixing it by bashing it with a light bulb, fun eh? - update_appearance() - to_chat(user, span_notice("You replace the light bulb.")) - else - to_chat(user, span_notice("The light bulb seems fine, no need to replace it.")) +/turf/open/floor/light/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + + if(!istype(tool, /obj/item/light/bulb)) //only for light tiles + return . + + if(astype(tool, /obj/item/light/bulb).status)/// check if broken + to_chat(user, span_danger("The light bulb is broken!")) + return ITEM_INTERACT_BLOCKING + + if(!state) + to_chat(user, span_notice("The light bulb seems fine, no need to replace it.")) + return ITEM_INTERACT_BLOCKING + + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + + qdel(tool) + state = LIGHTFLOOR_FINE //fixing it by bashing it with a light bulb, fun eh? + update_appearance() + to_chat(user, span_notice("You replace the light bulb.")) + return ITEM_INTERACT_SUCCESS + /turf/open/floor/light/emp_act(severity) . = ..() diff --git a/code/game/turfs/open/floor/misc_floor.dm b/code/game/turfs/open/floor/misc_floor.dm index 61f2c76bc797..9ce464c68c73 100644 --- a/code/game/turfs/open/floor/misc_floor.dm +++ b/code/game/turfs/open/floor/misc_floor.dm @@ -75,6 +75,9 @@ icon_state = "bcircuitoff" always_off = TRUE +/turf/open/floor/circuit/no_light + always_off = TRUE + /turf/open/floor/circuit/airless initial_gas_mix = AIRLESS_ATMOS @@ -120,6 +123,9 @@ icon_state = "rcircuitoff" always_off = TRUE +/turf/open/floor/circuit/red/no_power + always_off = TRUE + /turf/open/floor/circuit/red/anim icon_state = "rcircuitanim" floor_tile = /obj/item/stack/tile/circuit/red/anim @@ -161,7 +167,7 @@ /turf/open/floor/noslip/tram/Initialize(mapload) . = ..() - var/current_holiday_color = request_station_colors(src, PATTERN_VERTICAL_STRIPE) || request_holiday_colors(src, PATTERN_VERTICAL_STRIPE) + var/current_holiday_color = request_decoration_colors(src, PATTERN_VERTICAL_STRIPE) if(current_holiday_color) color = current_holiday_color else diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm index 7718f4b143ef..97b9b6edc350 100644 --- a/code/game/turfs/open/floor/plating.dm +++ b/code/game/turfs/open/floor/plating.dm @@ -42,99 +42,111 @@ #define PLATE_REINFORCE_COST 2 -/turf/open/floor/plating/attackby(obj/item/C, mob/user, list/modifiers) - if(..()) - return - if(istype(C, /obj/item/stack/rods) && attachment_holes) +/turf/open/floor/plating/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + + if(istype(tool, /obj/item/stack/rods) && attachment_holes) if(broken || burnt) - if(!iscyborg(user)) - to_chat(user, span_warning("Repair the plating first! Use a welding tool to fix the damage.")) - else - to_chat(user, span_warning("Repair the plating first! Use a welding tool or a plating repair tool to fix the damage.")) //we don't need to confuse humans by giving them a message about plating repair tools, since only janiborgs should have access to them outside of Christmas presents or admin intervention - return - var/obj/item/stack/rods/R = C - if (R.get_amount() < 2) + to_chat(user, span_warning("Repair the plating first! Use a welding tool[iscyborg(user) ? " or a plating repair tool" : ""] to fix the damage.")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/rods/material = tool + if (material.get_amount() < 2) to_chat(user, span_warning("You need two rods to make a reinforced floor!")) - return - else - to_chat(user, span_notice("You begin reinforcing the floor...")) - if(do_after(user, 3 SECONDS, target = src)) - if (R.get_amount() >= 2 && !istype(src, /turf/open/floor/engine)) - place_on_top(/turf/open/floor/engine, flags = CHANGETURF_INHERIT_AIR) - playsound(src, 'sound/items/deconstruct.ogg', 80, TRUE) - R.use(2) - to_chat(user, span_notice("You reinforce the floor.")) - return - else if(istype(C, /obj/item/stack/tile)) - if(!broken && !burnt) - for(var/obj/O in src) - for(var/M in O.buckled_mobs) - to_chat(user, span_warning("Someone is buckled to \the [O]! Unbuckle [M] to move \him out of the way.")) - return - var/obj/item/stack/tile/tile = C - tile.place_tile(src, user) - else - if(!iscyborg(user)) - balloon_alert(user, "too damaged, use a welding tool!") - else - balloon_alert(user, "too damaged, use a welding or plating repair tool!") - else if(istype(C, /obj/item/cautery/prt)) //plating repair tool - if((broken || burnt) && C.use_tool(src, user, 0, volume=80)) - to_chat(user, span_danger("You fix some dents on the broken plating.")) - icon_state = base_icon_state - burnt = FALSE - broken = FALSE - update_appearance() - else if(istype(C, /obj/item/stack/sheet/plasteel) && upgradable) //Reinforcement! - if(!broken && !burnt) - var/obj/item/stack/sheet/sheets = C - if(sheets.get_amount() < PLATE_REINFORCE_COST) - return - balloon_alert(user, "reinforcing plating...") - if(do_after(user, 12 SECONDS, target = src)) - if(sheets.get_amount() < PLATE_REINFORCE_COST) - return - sheets.use(PLATE_REINFORCE_COST) - playsound(src, 'sound/machines/creak.ogg', 100, vary = TRUE) - place_on_top(/turf/open/floor/plating/reinforced, CHANGETURF_INHERIT_AIR) - else - if(!iscyborg(user)) - balloon_alert(user, "too damaged, use a welding tool!") - else - balloon_alert(user, "too damaged, use a welding or plating repair tool!") - else if(istype(C, /obj/item/stack/sheet/mineral/plastitanium) && attachment_holes) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You begin reinforcing the floor...")) + if(!do_after(user, 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if (material.get_amount() < 2 || istype(src, /turf/open/floor/engine)) + return ITEM_INTERACT_BLOCKING + + place_on_top(/turf/open/floor/engine, flags = CHANGETURF_INHERIT_AIR) + playsound(src, 'sound/items/deconstruct.ogg', 80, TRUE) + material.use(2) + to_chat(user, span_notice("You reinforce the floor.")) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/tile)) if(broken || burnt) - if(!iscyborg(user)) - to_chat(user, span_warning("Repair the plating first! Use a welding tool to fix the damage.")) - else - to_chat(user, span_warning("Repair the plating first! Use a welding tool or a plating repair tool to fix the damage.")) - return - var/obj/item/stack/sheet/mineral/plastitanium/sheet = C - if (sheet.get_amount() < 1) - to_chat(user, span_warning("You are literally holding nothing.")) - return - else - balloon_alert(user, "insulating flooring...") - if(!do_after(user, 1.5 SECONDS, target = src)) - return - if(sheet.get_amount() < 1 || istype(src, /turf/open/floor/engine/insulation)) - return - place_on_top(/turf/open/floor/engine/insulation, flags = CHANGETURF_INHERIT_AIR) - playsound(src, 'sound/items/deconstruct.ogg', 80, TRUE) - sheet.use(1) - to_chat(user, span_notice("You insulate the floor.")) - balloon_alert(user, "insulated!") - -/turf/open/floor/plating/welder_act(mob/living/user, obj/item/I) - ..() - if((broken || burnt) && I.use_tool(src, user, 0, volume=80)) + balloon_alert(user, "too damaged, use a welding[iscyborg(user) ? "or plating repair " : ""] tool!") + return ITEM_INTERACT_BLOCKING + + for(var/obj/blocker in src) + for(var/mob/sitter as anything in blocker.buckled_mobs) + to_chat(user, span_warning("Someone is buckled to \the [blocker]! Unbuckle [sitter] to move [sitter.p_them()] out of the way.")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/tile/tile = tool + tile.place_tile(src, user) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/cautery/prt)) //plating repair tool + if((!broken && !burnt) || !tool.use_tool(src, user, 0, volume=80)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_danger("You fix some dents on the broken plating.")) icon_state = base_icon_state burnt = FALSE broken = FALSE update_appearance() + return ITEM_INTERACT_SUCCESS - return TRUE + if(istype(tool, /obj/item/stack/sheet/plasteel) && upgradable) //Reinforcement! + if(broken || burnt) + balloon_alert(user, "too damaged, use a welding[iscyborg(user) ? "or plating repair " : ""] tool!") + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/sheets = tool + if(sheets.get_amount() < PLATE_REINFORCE_COST) + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "reinforcing plating...") + if(!do_after(user, 12 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + if(sheets.get_amount() < PLATE_REINFORCE_COST || istype(src, /turf/open/floor/plating/reinforced)) + return ITEM_INTERACT_BLOCKING + sheets.use(PLATE_REINFORCE_COST) + playsound(src, 'sound/machines/creak.ogg', 100, vary = TRUE) + place_on_top(/turf/open/floor/plating/reinforced, CHANGETURF_INHERIT_AIR) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/sheet/mineral/plastitanium) && attachment_holes) + if(broken || burnt) + to_chat(user, span_warning("Repair the plating first! Use a welding tool[iscyborg(user) ? " or a plating repair tool" : ""] to fix the damage.")) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet/mineral/plastitanium/sheet = tool + if (sheet.get_amount() < 1) + to_chat(user, span_warning("You are literally holding nothing.")) // finally a reasonable message + return ITEM_INTERACT_BLOCKING + + balloon_alert(user, "insulating flooring...") + if(!do_after(user, 1.5 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + if(sheet.get_amount() < 1 || istype(src, /turf/open/floor/engine/insulation)) + return ITEM_INTERACT_BLOCKING + + place_on_top(/turf/open/floor/engine/insulation, flags = CHANGETURF_INHERIT_AIR) + playsound(src, 'sound/items/deconstruct.ogg', 80, TRUE) + sheet.use(1) + to_chat(user, span_notice("You insulate the floor.")) + balloon_alert(user, "insulated!") + return ITEM_INTERACT_SUCCESS + +/turf/open/floor/plating/welder_act(mob/living/user, obj/item/tool) + if((!broken && !burnt) || !tool.use_tool(src, user, 0, volume=80)) + return NONE + to_chat(user, span_danger("You fix some dents on the broken plating.")) + icon_state = base_icon_state + burnt = FALSE + broken = FALSE + update_appearance() + return ITEM_INTERACT_SUCCESS #undef PLATE_REINFORCE_COST @@ -239,20 +251,21 @@ icon_state = "r_plate-[deconstruction_state]" return ..() -/turf/open/floor/plating/reinforced/attackby(obj/item/tool_used, mob/user, list/modifiers) +/turf/open/floor/plating/reinforced/item_interaction(mob/living/user, obj/item/tool, list/modifiers) user.changeNext_move(CLICK_CD_MELEE) if (!ISADVANCEDTOOLUSER(user)) to_chat(user, span_warning("You don't have the dexterity to do this!")) - return + return ITEM_INTERACT_BLOCKING //get the user's location if(!isturf(user.loc)) - return //can't do this stuff whilst inside objects and such + return ITEM_INTERACT_BLOCKING//can't do this stuff whilst inside objects and such add_fingerprint(user) - if(deconstruct_steps(tool_used, user)) - return + if(deconstruct_steps(tool, user)) + return ITEM_INTERACT_SUCCESS + return ..() /turf/open/floor/plating/reinforced/proc/deconstruct_steps(obj/item/tool_used, mob/user) diff --git a/code/game/turfs/open/ice.dm b/code/game/turfs/open/ice.dm index a966e8e4d7e6..1a227d2a0340 100644 --- a/code/game/turfs/open/ice.dm +++ b/code/game/turfs/open/ice.dm @@ -82,6 +82,7 @@ baseturfs = /turf/open/openspace/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS slowdown = 0 + skip_minimap_rendering = TRUE /turf/open/misc/ice/icemoon/no_planet_atmos planetary_atmos = FALSE diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm index 63a4e1e5045d..cd33a38fef70 100644 --- a/code/game/turfs/open/lava.dm +++ b/code/game/turfs/open/lava.dm @@ -205,35 +205,41 @@ /turf/open/lava/TakeTemperature(temp) -/turf/open/lava/attackby(obj/item/C, mob/user, list/modifiers) - ..() - if(istype(C, /obj/item/stack/rods/lava)) - var/obj/item/stack/rods/lava/R = C - var/obj/structure/lattice/catwalk/lava/H = locate(/obj/structure/lattice/catwalk/lava, src) - if(H) +/turf/open/lava/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + + if(istype(tool, /obj/item/stack/rods/lava)) + if(locate(/obj/structure/lattice/catwalk/lava, src)) to_chat(user, span_warning("There is already a lattice here!")) - return - if(R.use(1)) - to_chat(user, span_notice("You construct a lattice.")) - playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE) - new /obj/structure/lattice/catwalk/lava(locate(x, y, z)) - else + return ITEM_INTERACT_BLOCKING + + if(!astype(tool, /obj/item/stack/rods/lava).use(1)) to_chat(user, span_warning("You need one rod to build a heatproof lattice.")) - return + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You construct a lattice.")) + playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE) + new /obj/structure/lattice/catwalk/lava(locate(x, y, z)) + return ITEM_INTERACT_SUCCESS + // Light a cigarette in the lava - if(istype(C, /obj/item/cigarette)) - var/obj/item/cigarette/ciggie = C + if(istype(tool, /obj/item/cigarette)) + var/obj/item/cigarette/ciggie = tool if(ciggie.lit) to_chat(user, span_warning("\The [ciggie] is already lit!")) - return TRUE + return ITEM_INTERACT_BLOCKING + var/clumsy_modifier = HAS_TRAIT(user, TRAIT_CLUMSY) ? 2 : 1 - if(prob(25 * clumsy_modifier) && isliving(user)) + if(prob(25 * clumsy_modifier)) ciggie.light(span_warning("[user] expertly dips \the [ciggie.name] into [src], along with the rest of [user.p_their()] arm. What a dumbass.")) var/mob/living/burned_guy = user burned_guy.apply_damage(90, BURN, user.get_active_hand()) - else - ciggie.light(span_rose("[user] expertly dips \the [ciggie.name] into [src], lighting it with the scorching heat of the planet. Witnessing such a feat is almost enough to make you cry.")) - return TRUE + return ITEM_INTERACT_SUCCESS + + ciggie.light(span_rose("[user] expertly dips \the [ciggie.name] into [src], lighting it with the scorching heat of the planet. Witnessing such a feat is almost enough to make you cry.")) + return ITEM_INTERACT_SUCCESS /turf/open/lava/proc/is_safe() return HAS_TRAIT(src, TRAIT_LAVA_STOPPED) diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index 666ad1aef854..7a4bdacf781e 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -21,18 +21,18 @@ heat_capacity = 20000 tiled_turf = TRUE -/turf/open/misc/attackby(obj/item/attacking_item, mob/user, list/modifiers) +/turf/open/misc/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = ..() - if(.) - return TRUE + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . - if(istype(attacking_item, /obj/item/stack/rods)) - build_with_rods(attacking_item, user) - return TRUE + if(istype(tool, /obj/item/stack/rods)) + build_with_rods(tool, user) + return ITEM_INTERACT_SUCCESS - if(ismetaltile(attacking_item)) - build_with_floor_tiles(attacking_item, user) - return TRUE + if(ismetaltile(tool)) + build_with_floor_tiles(tool, user) + return ITEM_INTERACT_SUCCESS /turf/open/misc/attack_paw(mob/user, list/modifiers) return attack_hand(user, modifiers) diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index 21dfeaf1a647..dc5dc15ee1a2 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -161,18 +161,24 @@ return TRUE // DARKPACK EDIT ADD END -/turf/open/openspace/attackby(obj/item/attacking_item, mob/user, list/modifiers) - ..() +/turf/open/openspace/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + if(!CanBuildHere()) - return - if(istype(attacking_item, /obj/item/stack/rods)) - build_with_rods(attacking_item, user) - else if(ismetaltile(attacking_item)) - build_with_floor_tiles(attacking_item, user) - else if(istype(attacking_item, /obj/item/stack/thermoplastic)) - build_with_transport_tiles(attacking_item, user) - else if(istype(attacking_item, /obj/item/stack/sheet/mineral/titanium)) - build_with_titanium(attacking_item, user) + return . + + if(istype(tool, /obj/item/stack/rods)) + build_with_rods(tool, user) + else if(ismetaltile(tool)) + build_with_floor_tiles(tool, user) + else if(istype(tool, /obj/item/stack/thermoplastic)) + build_with_transport_tiles(tool, user) + else if(istype(tool, /obj/item/stack/sheet/mineral/titanium)) + build_with_titanium(tool, user) + + return ITEM_INTERACT_SUCCESS /turf/open/openspace/build_with_floor_tiles(obj/item/stack/tile/iron/used_tiles) if(!CanCoverUp()) @@ -196,7 +202,7 @@ return FALSE /turf/open/openspace/CanAStarPass(to_dir, datum/can_pass_info/pass_info) - var/atom/movable/our_movable = pass_info.requester_ref.resolve() + var/atom/movable/our_movable = pass_info.requester_ref?.resolve() if(our_movable && !our_movable.can_z_move(DOWN, src, null, ZMOVE_FALL_FLAGS)) //If we can't fall here (flying/lattice), it's fine to path through return TRUE return FALSE diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index dcc735819f3b..5045e6136ffe 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -71,6 +71,7 @@ GLOBAL_LIST_EMPTY(starlight) vis_flags = VIS_INHERIT_ID //when this be added to vis_contents of something it be associated with something on clicking, important for visualisation of turf in openspace and interraction with openspace that show you turf. force_no_gravity = TRUE + skip_minimap_rendering = TRUE /turf/open/space/basic icon_state = MAP_SWITCH("space", "space_basic_map") @@ -126,14 +127,19 @@ GLOBAL_LIST_EMPTY(starlight) /turf/open/space/handle_slip() return -/turf/open/space/attackby(obj/item/attacking_item, mob/user, list/modifiers) - ..() +/turf/open/space/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(ITEM_INTERACT_ANY_BLOCKER & .) + return . + if(!CanBuildHere()) - return - if(istype(attacking_item, /obj/item/stack/rods)) - build_with_rods(attacking_item, user) - else if(ismetaltile(attacking_item)) - build_with_floor_tiles(attacking_item, user) + return . + + if(istype(tool, /obj/item/stack/rods)) + build_with_rods(tool, user) + else if(ismetaltile(tool)) + build_with_floor_tiles(tool, user) + return ITEM_INTERACT_SUCCESS /turf/open/space/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index b6a0b8c38678..4836e2370213 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -113,6 +113,9 @@ GLOBAL_LIST_EMPTY(station_turfs) ///The typepath we use for lazy fishing on turfs, to save on world init time. var/fish_source + /// If TRUE, then this turf will be skipped entirely by minimap rendering. + var/skip_minimap_rendering = FALSE + /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)) @@ -385,37 +388,36 @@ GLOBAL_LIST_EMPTY(station_turfs) falling_mov.pulledby.stop_pulling() return TRUE -/turf/proc/handleRCL(obj/item/rcl/C, mob/user) - if(C.loaded) - for(var/obj/structure/pipe_cleaner/LC in src) - if(!LC.d1 || !LC.d2) - LC.handlecable(C, user) - return - C.loaded.place_turf(src, user) - if(C.wiring_gui_menu) - C.wiringGuiUpdate(user) - C.is_empty(user) - -/turf/attackby(obj/item/C, mob/user, list/modifiers, list/attack_modifiers) - if(..()) - return TRUE - if(can_lay_cable() && istype(C, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = C - coil.place_turf(src, user) - return TRUE - else if(can_have_cabling() && istype(C, /obj/item/stack/pipe_cleaner_coil)) - var/obj/item/stack/pipe_cleaner_coil/coil = C - for(var/obj/structure/pipe_cleaner/LC in src) - if(!LC.d1 || !LC.d2) - LC.attackby(C, user) - return +/turf/proc/handleRCL(obj/item/rcl/rapid_layer, mob/user) + if(!rapid_layer.loaded) + return + lay_pipe_cleaner(rapid_layer.loaded, user) + if(rapid_layer.wiring_gui_menu) + rapid_layer.wiringGuiUpdate(user) + rapid_layer.is_empty(user) + +/turf/proc/lay_pipe_cleaner(obj/item/stack/pipe_cleaner_coil/coil, user) + for(var/obj/structure/pipe_cleaner/lain_cable in src) + if(!lain_cable.d1 || !lain_cable.d2) + lain_cable.item_interaction(user, coil) + return + coil.place_turf(src, user) + +/turf/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(can_lay_cable() && istype(tool, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = tool coil.place_turf(src, user) - return TRUE + return ITEM_INTERACT_SUCCESS - else if(istype(C, /obj/item/rcl)) - handleRCL(C, user) + if(can_have_cabling() && istype(tool, /obj/item/stack/pipe_cleaner_coil)) + lay_pipe_cleaner(tool, user) + return ITEM_INTERACT_SUCCESS - return FALSE + if(istype(tool, /obj/item/rcl)) + handleRCL(tool, user) + return ITEM_INTERACT_SUCCESS + + return NONE //There's a lot of QDELETED() calls here if someone can figure out how to optimize this but not runtime when something gets deleted by a Bump/CanPass/Cross call, lemme know or go ahead and fix this mess - kevinz000 /turf/Enter(atom/movable/mover) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f4ddcab57556..c5ce5b9b9381 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -11,7 +11,7 @@ ADMIN_VERB(hide_verbs, R_NONE, "Adminverbs - Hide All", "Hide most of your admin verbs.", ADMIN_CATEGORY_MAIN) user.remove_admin_verbs() - add_verb(user, /client/proc/show_verbs) + ASSIGN_GAME_VERB(user, /client, show_verbs) to_chat(user, span_interface("Almost all of your adminverbs have been hidden."), confidential = TRUE) BLACKBOX_LOG_ADMIN_VERB("Hide All Adminverbs") diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 3b78e5527401..67a7d690070b 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -119,7 +119,7 @@ GLOBAL_PROTECT(href_token) if (!isnull(client)) disassociate() - add_verb(client, /client/proc/readmin) + ASSIGN_GAME_VERB(client, /client, readmin) client.disable_combo_hud() client.update_special_keybinds() client.set_stat_panel() @@ -154,12 +154,12 @@ GLOBAL_PROTECT(href_token) if (deadmined) activate() - remove_verb(client, /client/proc/admin_2fa_verify) + UNASSIGN_GAME_VERB(client, /client, admin_2fa_verify) owner = client owner.holder = src owner.add_admin_verbs() - remove_verb(owner, /client/proc/readmin) + UNASSIGN_GAME_VERB(owner, /client, readmin) owner.init_verbs() //re-initialize the verb list owner.update_special_keybinds() GLOB.admins |= client @@ -284,7 +284,7 @@ GLOBAL_PROTECT(href_token) #define ERROR_2FA_REQUEST_PERMISSIONS "

You could not be verified, and a DB connection couldn't be established. Please contact an admin with +PERMISSIONS to grant you permission.

" /datum/admins/proc/start_2fa_process(client/client, id) - add_verb(client, /client/proc/admin_2fa_verify) + ASSIGN_GAME_VERB(client, /client, admin_2fa_verify) client?.init_verbs() var/admin_2fa_url = CONFIG_GET(string/admin_2fa_url) diff --git a/code/modules/admin/smites/bad_luck.dm b/code/modules/admin/smites/bad_luck.dm index 34592dd200d4..82551955a534 100644 --- a/code/modules/admin/smites/bad_luck.dm +++ b/code/modules/admin/smites/bad_luck.dm @@ -18,11 +18,23 @@ . = ..() //if permanent, replace any existing omen if(incidents == INFINITY) - var/existing_component = target.GetComponent(/datum/component/omen) - qdel(existing_component) - target.AddComponent(/datum/component/omen/smite, incidents_left = incidents) + qdel(target.GetComponent(/datum/component/omen)) + target.AddComponent( \ + /datum/component/omen, \ + incidents_left = incidents, \ + on_death = CALLBACK(src, PROC_REF(on_death)), \ + bless_fixable = incidents != INFINITY, \ + ) if(silent) return to_chat(target, span_warning("You get a bad feeling...")) if(incidents == INFINITY) to_chat(target, span_warning("A very bad feeling... As if malevolent forces are watching you...")) + +/datum/smite/bad_luck/proc/on_death(datum/component/omen/omen) + if(omen.incidents_left == INFINITY) + return + + var/mob/living/our_guy = omen.parent + omen.death_explode(our_guy) + our_guy.gib(DROP_ALL_REMAINS) diff --git a/code/modules/admin/smites/knot_shoes.dm b/code/modules/admin/smites/knot_shoes.dm index bbb86370d0e9..0092ec6b2014 100644 --- a/code/modules/admin/smites/knot_shoes.dm +++ b/code/modules/admin/smites/knot_shoes.dm @@ -4,10 +4,10 @@ /datum/smite/knot_shoes/effect(client/user, mob/living/target) . = ..() - if (!iscarbon(target)) - to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + if (!ishuman(target)) + to_chat(user, span_warning("This must be used on a human mob."), confidential = TRUE) return - var/mob/living/carbon/dude = target + var/mob/living/carbon/human/dude = target var/obj/item/clothing/shoes/sick_kicks = dude.shoes if (!sick_kicks || sick_kicks.fastening_type == SHOES_SLIPON) to_chat(user, span_warning("[dude] does not have knottable shoes!"), confidential = TRUE) diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 71a7098a323c..5a6efbe78e1a 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -320,9 +320,9 @@ output += "
" for(var/datum/job_department/department as anything in SSjob.joinable_departments) - var/label_class = department.label_class + var/label_class = department.get_label_class() var/department_name = department.department_name - output += "
Organ:DmgDmgStatus
[missing_organs[sorted_slot]]:--Missing
[capitalize(organ.name)]:[organ.damage > 0 ? ceil(organ.damage) : "0"][organ.damage > 0 ? ceil(organ.damage) : "0"][status]
Name Role State Location SL Distance
Chip Mello Squad Leader Dead Self-Destruct Core Room N/A
Sophie Knight Squad Smartgunner Dead Self-Destruct Core Room 4
Marie Newman Squad Corpsman Dead Unknown N/A
Angelo Patton Squad Engineer Dead Sulaco Maintenance 19
Marlon Foster Squad Engineer Dead Sulaco Dropship Hangar 28
Doug Davidson Squad Marine Dead Sulaco Hangar Workshop 33
Courtney Miller Squad Marine Dead Sulaco Hangar Workshop 42
Cesar Jefferson Squad Marine Dead Self-Destruct Core Room 14

Primary Objective: Defend the self-destruct core.
Secondary Objective: Give them hell!") @@ -52,6 +53,7 @@ /obj/machinery/computer/terminal/sulaco/helm name = "helms computer" desc = "The navigation console for the Sulaco." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate") icon_screen = "syndishuttle" icon_keyboard = "syndie_key" upperinfo = "Navigation" @@ -60,6 +62,7 @@ /obj/machinery/computer/terminal/sulaco/map name = "map table" desc = "A table that displays a map of the current target location." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/terminal/sulaco/map") icon_screen = "mining" upperinfo = "LV-624" content = list("The display can barely output an image of a map, owing to its damage, but you can make out bits and pieces of something. It appears to be a satellite image of a colony located on a jungle planet. Lush and thick greenery covers the southern part, while the northern area is encompassed by mountainous rock.

A river flows through the colony, splitting it in two. In addition, several icons are scattered across the map, but you are sadly not able to make much sense of them.") diff --git a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_machines.dm b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_machines.dm index c2552b10744c..9355c637c984 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_machines.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_machines.dm @@ -1,4 +1,5 @@ /obj/machinery/computer/old + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/piratepad_control") name = "old computer" circuit = /obj/item/circuitboard/computer diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 66d68a7e60d8..e2af58fc9642 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -1534,3 +1534,17 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_atoms_ontop) name = "blunt impact dent" icon_state = "impact1" dent_type = WALL_DENT_HIT + +/*** + * Used to prevent things from teleporting on (but not off) the turf through most means that do not call do_teleport() with the forced arg set to TRUE. + * The trait is removed if the turf is changed, so you should only keep it on small sections with indestructible turfs, ideally corners surrounded by + * other inaccessible walls. For larger sections, consider using areas with NO_TELEPORT or LOCAL_TELEPORT flags instead. + */ +/obj/effect/mapping_helpers/no_tele_turf + name = "no teleport turf" + icon_state = "no_teleport_turf" + +/obj/effect/mapping_helpers/wall_dent/Initialize(mapload) + . = ..() + var/turf/our_turf = get_turf(src) + ADD_TRAIT(our_turf, TRAIT_NO_TELEPORT, INNATE_TRAIT) diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index fcb5b445b412..e27984b5523e 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -933,6 +933,8 @@ GLOBAL_LIST_EMPTY(map_model_default) old_area.turfs_to_uncontain_by_zlevel[crds.z] += crds area_instance.turfs_by_zlevel[crds.z] += crds area_instance.contents.Add(crds) + if(!isnull(old_area) && !old_area.has_contained_turfs()) + qdel(old_area) if(GLOB.use_preloader) world.preloader_load(area_instance) diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index c6ce163abf52..eacd113c695b 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -75,6 +75,11 @@ * @param ruin_type The type of ruins that are spawning (ZTRAIT_SPACE_RUINS, ZTRAIT_ICE_RUINS, ZTRAIT_LAVA_RUINS, etc.) */ /proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15, mineral_budget_update, ruins_type = ZTRAIT_STATION) +#if defined(CIBUILDING) && !defined(OPENDREAM) + if(SSmapping.current_map.is_unit_test_map && PERFORM_ALL_TESTS(maptest_log_mapping) ) + return log_mapping("Skipping ruin seeding due to running on unit test map in workflow enviorment.") +#endif + if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") return diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index ac2686b38e60..386deb89501c 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -42,6 +42,7 @@ SSaugury.register_doom(src, threat) SpinAnimation() chase_target(target) + setup_extra_drops() AddComponent( /datum/component/meteor_combat, \ CALLBACK(src, PROC_REF(redirect)), \ @@ -88,6 +89,9 @@ if(new_loop) RegisterSignal(new_loop, COMSIG_MOVELOOP_STOP, PROC_REF(on_loop_stopped)) +/obj/effect/meteor/proc/setup_extra_drops() + return + /obj/effect/meteor/proc/on_loop_stopped(datum/source) SIGNAL_HANDLER if(!move_packet || !length(move_packet.existing_loops)) @@ -338,9 +342,9 @@ threat = 15 signature = "bluespace flux" -/obj/effect/meteor/bluespace/Bump() +/obj/effect/meteor/bluespace/Bump(atom/bumped_atom) ..() - if(prob(35)) + if(!QDELETED(src) && prob(35)) do_teleport(src, get_turf(src), 6, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) /obj/effect/meteor/banana @@ -394,28 +398,19 @@ hits = 2 heavy = TRUE meteorsound = 'sound/effects/blob/blobattack.ogg' - meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/heart, /obj/item/organ/lungs, /obj/item/organ/tongue, /obj/item/organ/appendix/) + meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/organ/heart, /obj/item/organ/lungs, /obj/item/organ/appendix) var/meteorgibs = /obj/effect/gibspawner/generic threat = 2 signature = "culinary material" -/obj/effect/meteor/meaty/Initialize(mapload) - for(var/path in meteordrop) - if(path == /obj/item/food/meat/slab/human/mutant) - meteordrop -= path - meteordrop += pick(subtypesof(path)) - - for(var/path in meteordrop) - if(path == /obj/item/organ/tongue) - meteordrop -= path - meteordrop += pick(typesof(path)) - return ..() +/obj/effect/meteor/meaty/setup_extra_drops() + meteordrop += pick(subtypesof(/obj/item/food/meat/slab/human/mutant)) + meteordrop += pick(typesof(/obj/item/organ/tongue)) /obj/effect/meteor/meaty/make_debris() ..() new meteorgibs(get_turf(src)) - /obj/effect/meteor/meaty/ram_turf(turf/T) if(!isspaceturf(T)) new /obj/effect/decal/cleanable/blood(T) @@ -431,9 +426,8 @@ meteorgibs = /obj/effect/gibspawner/xeno signature = "exotic culinary material" -/obj/effect/meteor/meaty/xeno/Initialize(mapload) +/obj/effect/meteor/meaty/xeno/setup_extra_drops() meteordrop += subtypesof(/obj/item/organ/alien) - return ..() /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) diff --git a/code/modules/minimap/_minimap.dm b/code/modules/minimap/_minimap.dm new file mode 100644 index 000000000000..e864b080f560 --- /dev/null +++ b/code/modules/minimap/_minimap.dm @@ -0,0 +1,45 @@ +GLOBAL_ALIST_EMPTY(minimap_blip_tags) +GLOBAL_ALIST_EMPTY(minimap_annotations) +GLOBAL_LIST_EMPTY(minimap_annotation_viewers) + +/// Create a minimap blip on the z-level in question, object is optional, and will tie the blip to the object in question, and will clean up itself if the object in question is deleted +/proc/add_minimap_blip(atom/object, tag, icon_state, icon = 'icons/ui_icons/minimap/map_blips.dmi', large = FALSE, layer = 12) + if(!istype(object) || !tag || !icon_state) + CRASH("Invalid params passed in to add_minimap_blip") + var/atom/movable/screen/minimap_element/blip/new_blip = new(null, null, object, icon_state, icon, large, tag) + new_blip.layer = layer + LAZYADD(GLOB.minimap_blip_tags[tag], new_blip) + SEND_GLOBAL_SIGNAL(COMSIG_MINIMAP_ADD(tag), new_blip) + +/proc/get_minimap_blip(tag, atom/object) + if(!tag || !istype(object)) + return + for(var/atom/movable/screen/minimap_element/blip/blip as anything in GLOB.minimap_blip_tags[tag]) + if(blip.track_target == object) + return blip + +/proc/remove_minimap_blip(tag, atom/object) + var/atom/movable/screen/minimap_element/blip/blip = get_minimap_blip(tag, object) + if(isnull(blip)) + return + SEND_GLOBAL_SIGNAL(COMSIG_MINIMAP_REMOVE(tag), blip) + LAZYREMOVE(GLOB.minimap_blip_tags[tag], blip) + qdel(blip) + +/// Returns minimap blips matching a tag that are within `distance` tiles of `target_turf` on the same z-level. +/proc/get_minimap_blips_in_area(tag, turf/target_turf, distance) + if(!tag || isnull(target_turf) || !isnum(distance) || !islist(GLOB.minimap_blip_tags[tag])) + return list() + + var/list/nearby_blips = list() + for(var/atom/movable/screen/minimap_element/blip/blip as anything in GLOB.minimap_blip_tags[tag]) + var/turf/blip_turf = get_turf(blip.track_target) + if(isnull(blip_turf)) + continue + if(blip_turf.z != target_turf.z) + continue + if(get_dist(blip_turf, target_turf) > distance) + continue + nearby_blips += blip + + return nearby_blips diff --git a/code/modules/minimap/hud/minimal_z_level.dm b/code/modules/minimap/hud/minimal_z_level.dm new file mode 100644 index 000000000000..af6071b49dc1 --- /dev/null +++ b/code/modules/minimap/hud/minimal_z_level.dm @@ -0,0 +1,68 @@ +/atom/movable/screen/minimap_z_indicator + icon = 'icons/hud/screen_ai.dmi' + icon_state = "zindicator" + screen_loc = "BOTTOM+4,RIGHT" + +/atom/movable/screen/minimap_z_indicator/Initialize(mapload, datum/hud/hud_owner) + . = ..() + if(!isnull(hud_owner.mymob)) + RegisterSignal(hud_owner.mymob, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_z_level_change)) + RegisterSignal(hud_owner.mymob, COMSIG_MINIMAP_CHANGE_Z_LEVEL, PROC_REF(on_minimap_change_request)) + var/current_turf = get_turf(hud_owner.mymob) + on_z_level_change(null, current_turf, FALSE) + +///sets the currently indicated relative floor +/atom/movable/screen/minimap_z_indicator/proc/on_z_level_change(turf/old_turf, turf/new_turf, same_z_layer) + SIGNAL_HANDLER + var/used_z = get_displayed_z_level(new_turf) + set_floor_text(used_z) + +/atom/movable/screen/minimap_z_indicator/proc/on_minimap_change_request(mob/hud_owner, new_z_change) + SIGNAL_HANDLER + var/atom/movable/screen/minimap_display/current_display = hud?.screen_objects[HUD_TAC_MINIMAP] + if(isnull(current_display)) + var/current_turf = get_turf(hud_owner) + on_z_level_change(null, current_turf, FALSE) + return + var/current_z = current_display.get_viewed_z_level() + if(isnull(current_z)) + return + var/requested_z = current_display.get_clamped_connected_z(current_z + new_z_change, current_z) + set_floor_text(requested_z) + +/atom/movable/screen/minimap_z_indicator/proc/get_displayed_z_level(turf/current_turf) + var/atom/movable/screen/minimap_display/current_display = hud?.screen_objects[HUD_TAC_MINIMAP] + if(!isnull(current_display?.fixed_z_level)) + return current_display.minimap?.z + return current_turf?.z + +/atom/movable/screen/minimap_z_indicator/proc/set_floor_text(used_z) + if(isnull(used_z)) + return + var/bottom_z = used_z + while(SSmapping.multiz_levels?[bottom_z]?[Z_LEVEL_DOWN]) // just keep going down + bottom_z-- + var/text = "Floor
[(used_z - bottom_z) + 1]" + maptext = MAPTEXT_TINY_UNICODE("
[text]
") + +/atom/movable/screen/minimap_z_up + name = "go up" + icon = 'icons/hud/screen_ai.dmi' + icon_state = "up" + mouse_over_pointer = MOUSE_HAND_POINTER + screen_loc = "BOTTOM+4,RIGHT-1" + +/atom/movable/screen/minimap_z_up/Click(location, control, params) + flick("uppressed", src) + SEND_SIGNAL(hud.mymob, COMSIG_MINIMAP_CHANGE_Z_LEVEL, 1) // +1 z level + +/atom/movable/screen/minimap_z_down + name = "go down" + icon = 'icons/hud/screen_ai.dmi' + icon_state = "down" + mouse_over_pointer = MOUSE_HAND_POINTER + screen_loc = "BOTTOM+4,RIGHT-1" + +/atom/movable/screen/minimap_z_down/Click(location, control, params) + flick("downpressed", src) + SEND_SIGNAL(hud.mymob, COMSIG_MINIMAP_CHANGE_Z_LEVEL, -1) // -1 z level diff --git a/code/modules/minimap/hud/minimap_dimmer.dm b/code/modules/minimap/hud/minimap_dimmer.dm new file mode 100644 index 000000000000..bdd759d86cc5 --- /dev/null +++ b/code/modules/minimap/hud/minimap_dimmer.dm @@ -0,0 +1,7 @@ +/// Fullscreen dimmer used while the tactical minimap is open. +/// Rendered below HUD planes so minimap and normal HUD icons remain undimmed. +/atom/movable/screen/fullscreen/dimmer/minimap + alpha = 180 + plane = FULLSCREEN_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + clear_with_screen = TRUE diff --git a/code/modules/minimap/hud/minimap_display.dm b/code/modules/minimap/hud/minimap_display.dm new file mode 100644 index 000000000000..611bb51f30f0 --- /dev/null +++ b/code/modules/minimap/hud/minimap_display.dm @@ -0,0 +1,585 @@ +#define MINIMAP_LABEL_REMOVE_PIXEL_RANGE 5 + +/// Screen object that renders a [/datum/minimap] base map icon on the HUD. +/atom/movable/screen/minimap_display + name = "Minimap" + icon_state = "" + layer = MINIMAP_IMAGE_LAYER + screen_loc = "1,1" + var/list/origin_px + var/atom/movable/screen/minimap_element/drawing/drawing + /// Optional group tag. Displays with the same tag share drawings and labels. + var/annotation_share_tag + /// Unified list of currently visible minimap elements (drawings, labels, blips, screentip). + var/list/atom/movable/screen/minimap_element/visible_minimap_elements = list() + /// A reference to the minimap used for this display. + var/datum/minimap/minimap + /// Screentext in vis_contents used for the maptext. + var/atom/movable/screen/minimap_element/label/screentip + /// Named blips indexed by name (added via add_blip()). Tagged blips are rebuilt from globals on z-level change. + var/list/atom/movable/screen/minimap_element/blip/blips = list() + /// The list of minimap blip tags we're going to read from the globalist and listen for additions to + var/list/valid_minimap_blip_tags = list() + /// fixed z-level to stay on + var/fixed_z_level + /// Y-axis offset for drawing to account for mouse cursor icon positioning. + var/draw_offset_y = -3 + /// Whether this minimap instance allows drawing and labels. + var/can_draw = TRUE + /// list of signals we want to keep tied on the hud owner mob + var/list/hud_signals = list( + COMSIG_MOVABLE_Z_CHANGED = PROC_REF(on_z_level_change), + COMSIG_MINIMAP_CHANGE_Z_LEVEL = PROC_REF(z_change_request) + ) + /// Maps HUD key → button type path. Used to create/remove toolbar buttons via [/datum/hud]. + var/static/list/toolbar_button_types = list( + HUD_TAC_MINIMAP_TOOL_RED = /atom/movable/screen/minimap_toolbar_button/draw/red, + HUD_TAC_MINIMAP_TOOL_YELLOW = /atom/movable/screen/minimap_toolbar_button/draw/yellow, + HUD_TAC_MINIMAP_TOOL_PURPLE = /atom/movable/screen/minimap_toolbar_button/draw/purple, + HUD_TAC_MINIMAP_TOOL_BLUE = /atom/movable/screen/minimap_toolbar_button/draw/blue, + HUD_TAC_MINIMAP_TOOL_ERASE = /atom/movable/screen/minimap_toolbar_button/erase, + HUD_TAC_MINIMAP_TOOL_LABEL = /atom/movable/screen/minimap_toolbar_button/label, + HUD_TAC_MINIMAP_TOOL_CLEAR = /atom/movable/screen/minimap_toolbar_button/clear, + ) + /// Currently active toolbar button (the active tool). + var/atom/movable/screen/minimap_toolbar_button/active_button = null + /// string for the locator blip's tag + var/locator_blip_tag = "locator" + +/atom/movable/screen/minimap_display/Initialize(mapload, datum/hud/hud_owner, datum/minimap/minimap, list/minimap_blip_tags, initial_fixed_z_level, annotation_share_tag, can_draw = TRUE) + src.can_draw = can_draw + . = ..() + if(isnull(minimap)) + CRASH("[type] created without a minimap reference!") + src.annotation_share_tag = isnull(annotation_share_tag) ? "[type]" : annotation_share_tag + LAZYOR(GLOB.minimap_annotation_viewers[src.annotation_share_tag], src) + if(!isnull(initial_fixed_z_level)) + fixed_z_level = initial_fixed_z_level + INVOKE_ASYNC(src, PROC_REF(apply_fixed_z_minimap), initial_fixed_z_level) + if(length(minimap_blip_tags)) + valid_minimap_blip_tags = minimap_blip_tags.Copy() + set_minimap(minimap) + screentip = new + show_minimap_element(screentip) + if(length(valid_minimap_blip_tags)) + for(var/blip_tag in valid_minimap_blip_tags) + RegisterSignal(SSdcs, COMSIG_MINIMAP_ADD(blip_tag), PROC_REF(on_tagged_blip_add)) + RegisterSignal(SSdcs, COMSIG_MINIMAP_REMOVE(blip_tag), PROC_REF(on_tagged_blip_remove)) + on_z_level_change(hud_owner.mymob) + show_tagged_blips() + +/atom/movable/screen/minimap_display/proc/apply_fixed_z_minimap(target_z) + if(QDELETED(src) || isnull(target_z) || fixed_z_level != target_z) + return + var/datum/minimap/fixed_minimap = get_minimap_for_z(target_z) + if(QDELETED(src) || isnull(fixed_minimap) || fixed_z_level != target_z) + return + set_minimap(fixed_minimap) + +/atom/movable/screen/minimap_display/Destroy() + set_cursor_icon(null) + if(active_button) + active_button.on_deactivate() + active_button = null + var/mob/owner = get_mob() + if(hud) + for(var/key in toolbar_button_types) + hud.remove_screen_object(key, update = FALSE) + if(owner) + for(var/signal in hud_signals) + UnregisterSignal(owner, signal, hud_signals[signal]) + if(owner?.client) + UnregisterSignal(owner.client, COMSIG_CLIENT_MOUSEUP) + if(length(GLOB.minimap_annotation_viewers[annotation_share_tag])) + GLOB.minimap_annotation_viewers[annotation_share_tag] -= src + minimap = null + drawing = null + visible_minimap_elements.Cut() + annotation_share_tag = null + QDEL_NULL(screentip) + if(length(valid_minimap_blip_tags)) + for(var/blip_tag in valid_minimap_blip_tags) + UnregisterSignal(SSdcs, COMSIG_MINIMAP_ADD(blip_tag)) + UnregisterSignal(SSdcs, COMSIG_MINIMAP_REMOVE(blip_tag)) + remove_all_blips() + + return ..() + +/atom/movable/screen/minimap_display/set_new_hud(datum/hud/hud_owner) + var/mob/old_owner = get_mob() + if(hud) + for(var/key in toolbar_button_types) + hud.remove_screen_object(key, update = FALSE) + if(old_owner) + for(var/signal in hud_signals) + UnregisterSignal(old_owner, signal, hud_signals[signal]) + if(old_owner?.client) + UnregisterSignal(old_owner.client, COMSIG_CLIENT_MOUSEUP) + . = ..() + var/mob/new_owner = get_mob() + if(new_owner) + for(var/signal in hud_signals) + RegisterSignal(new_owner, signal, hud_signals[signal]) + if(new_owner?.client) + RegisterSignal(new_owner.client, COMSIG_CLIENT_MOUSEUP, PROC_REF(on_client_mouseup)) + if(can_draw) + for(var/hud_key, hud_type in toolbar_button_types) + var/atom/movable/screen/minimap_toolbar_button/button = new hud_type(null, hud_owner, src) + button.tool_key = hud_key + hud_owner.add_screen_object(button, hud_key, HUD_GROUP_STATIC, update_screen = FALSE) + reposition_toolbar_buttons() + hud_owner.show_hud(hud_owner.hud_version) + +/atom/movable/screen/minimap_display/Click(location, control, params) + if(..() || usr != get_mob()) + return + var/list/modifiers = params2list(params) + var/icon_x = text2num(LAZYACCESS(modifiers, ICON_X)) + var/icon_y = text2num(LAZYACCESS(modifiers, ICON_Y)) + var/right_click = LAZYACCESS(modifiers, RIGHT_CLICK) + + if(active_button && active_button.on_click(icon_x, icon_y, right_click)) + return + +/atom/movable/screen/minimap_display/proc/remove_nearest_label(icon_x, icon_y, mob/user) + var/list/labels_for_z = get_or_create_annotation_list(/atom/movable/screen/minimap_element/label, minimap.z) + if(!length(labels_for_z)) + return + var/atom/movable/screen/minimap_element/label/nearest + var/nearest_dist_sq + for(var/atom/movable/screen/minimap_element/label/label as anything in labels_for_z) + var/dx = label.pixel_w - icon_x + var/dy = label.pixel_z - icon_y + var/dist_sq = (dx * dx) + (dy * dy) + if(dist_sq > (MINIMAP_LABEL_REMOVE_PIXEL_RANGE * MINIMAP_LABEL_REMOVE_PIXEL_RANGE)) + continue + if(isnull(nearest_dist_sq) || dist_sq < nearest_dist_sq) + nearest_dist_sq = dist_sq + nearest = label + if(isnull(nearest)) + return + labels_for_z -= nearest + hide_minimap_element(nearest) + qdel(nearest) + sync_visible_objects(minimap?.z) + log_minimap_drawing("[key_name(user)] removed a minimap label") + +/atom/movable/screen/minimap_display/MouseEntered(location, control, params) + MouseMove(location, control, params) + +/atom/movable/screen/minimap_display/MouseDrag(over_object, src_location, over_location, src_control, over_control, params) + if(usr != get_mob()) + return + if(!active_button) + return + var/list/modifiers = params2list(params) + var/list/mouse_px = params2screenpixel(LAZYACCESS(modifiers, SCREEN_LOC)) + if(length(mouse_px) != 2) + return + var/x = mouse_px[1] - origin_px[1] + 1 + var/y = mouse_px[2] - origin_px[2] + 1 + active_button.on_mouse_drag(x, y) + +/atom/movable/screen/minimap_display/proc/on_client_mouseup(client/source) + SIGNAL_HANDLER + if(active_button) + active_button.on_mouse_up() + +/atom/movable/screen/minimap_display/MouseMove(location, control, params) + if(usr != get_mob()) + return + var/list/modifiers = params2list(params) + var/icon_x = text2num(LAZYACCESS(modifiers, ICON_X)) + var/icon_y = text2num(LAZYACCESS(modifiers, ICON_Y)) + + var/x = clamp(MINIMAP_ICON_TO_WORLD(icon_x, minimap.min_x), 1, world.maxx) + var/y = clamp(MINIMAP_ICON_TO_WORLD(icon_y, minimap.min_y), 1, world.maxy) + var/hover_text = get_hover_text(x, y) + screentip.maptext = MAPTEXT_TINY_UNICODE("[hover_text]") + screentip.pixel_w = icon_x + screentip.pixel_z = icon_y + +/atom/movable/screen/minimap_display/proc/get_hover_text(x, y) + var/closest_blip_name + var/closest_blip_distance + for(var/atom/movable/screen/minimap_element/blip/blip in visible_minimap_elements) + if(isnull(blip.track_target) || blip.track_target.z != minimap.z) + continue + if(!length(blip.name)) + continue + var/hover_range = blip.large ? 2 : 1 + var/x_distance = abs(blip.track_target.x - x) + var/y_distance = abs(blip.track_target.y - y) + if(x_distance > hover_range || y_distance > hover_range) + continue + var/distance = x_distance + y_distance + if(isnull(closest_blip_distance) || distance < closest_blip_distance) + closest_blip_distance = distance + closest_blip_name = blip.name + + if(!isnull(closest_blip_name)) + return closest_blip_name + + var/area_name = minimap.map_position_to_name["[x]:[y]"] + if(isnull(area_name)) + var/turf/hovered_loc = locate(x, y, minimap.z) + area_name = "[hovered_loc?.loc?.name]" + minimap.map_position_to_name["[x]:[y]"] = area_name + return area_name + +/atom/movable/screen/minimap_display/MouseExited(location, control, params) + if(usr != get_mob()) + return + screentip.maptext = "" + if(active_button) + active_button.on_mouse_up() + +/atom/movable/screen/minimap_display/proc/on_z_level_change(mob/source) + SIGNAL_HANDLER + var/turf/mob_loc = get_turf(source) + if(!mob_loc || mob_loc.z != minimap.z) + if(isnull(fixed_z_level)) + INVOKE_ASYNC(src, PROC_REF(resolve_and_change_z_level), mob_loc.z) + return + remove_blip(locator_blip_tag) + return + add_blip(locator_blip_tag, "locator", mob_loc.x, mob_loc.y, layer = 15) + + +/atom/movable/screen/minimap_display/proc/resolve_and_change_z_level(new_z) + if(isnull(new_z)) + return + var/datum/minimap/new_minimap = get_minimap_for_z(new_z) + if(QDELETED(src) || isnull(new_minimap)) + return + change_z_level(new_z, new_minimap) + +/atom/movable/screen/minimap_display/proc/change_z_level(new_z, datum/minimap/new_minimap) + if(isnull(new_minimap)) + return + if(!isnull(fixed_z_level)) + fixed_z_level = new_z + set_minimap(new_minimap) + +/atom/movable/screen/minimap_display/proc/set_fixed_z_level(new_fixed_z, apply_immediately = FALSE) + fixed_z_level = new_fixed_z + if(apply_immediately) + INVOKE_ASYNC(src, PROC_REF(resolve_and_change_z_level), new_fixed_z) + +/atom/movable/screen/minimap_display/proc/show_tagged_blips() + if(!length(valid_minimap_blip_tags)) + return + for(var/blip_flag in valid_minimap_blip_tags) + var/blip_list = GLOB.minimap_blip_tags[blip_flag] + if(!blip_list) + continue + for(var/atom/movable/screen/minimap_element/blip/blip as anything in blip_list) + on_tagged_blip_add(null, blip) + +/atom/movable/screen/minimap_display/proc/on_tagged_blip_add(datum/source, atom/movable/screen/minimap_element/blip/blip) + SIGNAL_HANDLER + if(isnull(blip) || QDELETED(blip) || isnull(minimap)) + return + if(!(blip.blip_tag in valid_minimap_blip_tags)) + return + if(isnull(blip.track_target)) + return + var/turf/blip_turf = get_turf(blip.track_target) + if(blip_turf?.z != minimap.z) + return + blip.start_tracking_target() + show_minimap_element(blip) + +/atom/movable/screen/minimap_display/proc/on_tagged_blip_remove(datum/source, atom/movable/screen/minimap_element/blip/blip) + SIGNAL_HANDLER + if(isnull(blip)) + return + hide_minimap_element(blip) + +/atom/movable/screen/minimap_display/proc/set_minimap(datum/minimap/minimap) + if(isnull(minimap)) + return + icon = minimap.base_map + var/map_w = minimap.base_map.Width() + var/map_h = minimap.base_map.Height() + var/screen_size = get_screen_pixel_size() + var/map_offset_y = 32 + screen_loc = "1:[screen_size / 2 - map_w / 2],1:[screen_size / 2 - map_h / 2 - map_offset_y]" + origin_px = params2screenpixel(screen_loc) + src.minimap = minimap + refresh_visible_annotations() + screentip?.maptext = "" + clear_tagged_blips() + show_tagged_blips() + reposition_toolbar_buttons() + +/// adds a local blip that's not added to the global list +/atom/movable/screen/minimap_display/proc/add_blip(name, icon_state, x, y, large = FALSE, layer = 12) + if(blips[name]) + return + var/atom/movable/screen/minimap_element/blip/new_blip = new(null, null, get_mob(), icon_state, large) + new_blip.layer = layer + new_blip.start_tracking_target() + blips[name] = new_blip + show_minimap_element(new_blip) + +/atom/movable/screen/minimap_display/proc/update_blip(name, x, y) + var/atom/movable/screen/minimap_element/blip/blip = blips[name] + if(!blip) + return + var/half_size = blip.large ? 5 : 3 + blip.pixel_w = MINIMAP_WORLD_TO_PIXEL(x, minimap.min_x, half_size) + blip.pixel_z = MINIMAP_WORLD_TO_PIXEL(y, minimap.min_y, half_size) + +/atom/movable/screen/minimap_display/proc/remove_blip(name) + var/atom/movable/screen/minimap_element/blip/blip = blips[name] + if(!blip) + return + blips -= name + hide_minimap_element(blip) + qdel(blip) + +/atom/movable/screen/minimap_display/proc/remove_all_blips() + for(var/blip_name in blips) + var/atom/movable/screen/minimap_element/blip/blip = blips[blip_name] + hide_minimap_element(blip) + qdel(blip) + blips.Cut() + hide_visible_elements_by_type(/atom/movable/screen/minimap_element/blip) + +/atom/movable/screen/minimap_display/proc/z_change_request(mob/hud_owner, new_z_change) + SIGNAL_HANDLER + var/current_z = get_viewed_z_level() + var/new_z = get_clamped_connected_z(current_z + new_z_change, current_z) + INVOKE_ASYNC(src, PROC_REF(resolve_and_change_z_level), new_z) + +/atom/movable/screen/minimap_display/proc/get_viewed_z_level() + if(!isnull(fixed_z_level)) + return fixed_z_level + return minimap?.z + +/atom/movable/screen/minimap_display/proc/get_clamped_connected_z(requested_z, source_z) + if(isnull(source_z)) + return requested_z + var/list/connected_levels = SSmapping.get_connected_levels(source_z) + if(!length(connected_levels)) + return requested_z + if(requested_z in connected_levels) + return requested_z + var/closest_z = connected_levels[1] + var/closest_distance = abs(closest_z - requested_z) + for(var/connected_z in connected_levels) + var/current_distance = abs(connected_z - requested_z) + if(current_distance < closest_distance) + closest_z = connected_z + closest_distance = current_distance + return closest_z + +/// Activates a toolbar button as the active tool. +/atom/movable/screen/minimap_display/proc/activate_button(atom/movable/screen/minimap_toolbar_button/button) + if(!button) + return + + // Deselect if clicking the same button + if(active_button == button) + deactivate_button() + return + + deactivate_button() + + active_button = button + button.on_activate() + update_toolbar_button_states() + +/// Deactivates the current tool button. +/atom/movable/screen/minimap_display/proc/deactivate_button() + if(active_button) + active_button.on_deactivate() + active_button = null + update_toolbar_button_states() + +/// Sets the mouse cursor icon for the HUD client. Pass null to reset to default. +/atom/movable/screen/minimap_display/proc/set_cursor_icon(icon/cursor_icon) + var/mob/owner = get_mob() + if(owner?.client) + owner.client.mouse_pointer_icon = cursor_icon + +/// Calculates the actual screen pixel size based on the client's view +/atom/movable/screen/minimap_display/proc/get_screen_pixel_size() + var/mob/owner = get_mob() + if(!owner?.client) + return SCREEN_PIXEL_SIZE // fallback to constant if no client + var/list/view_pixels = view_to_pixels(owner.client.view_size.getView()) + // Return the maximum dimension (typically square, but handle non-square views) + return max(view_pixels[1], view_pixels[2]) + +/atom/movable/screen/minimap_display/proc/update_toolbar_button_states() + if(!hud) + return + for(var/hud_key in toolbar_button_types) + var/atom/movable/screen/minimap_toolbar_button/button = hud.screen_objects[hud_key] + if(button) + button.update_active_state() + +/atom/movable/screen/minimap_display/proc/reposition_toolbar_buttons() + if(!hud || !minimap) + return + // origin_px[1] is the minimap's left edge; place toolbar one icon-width to its left. + var/btn_x = origin_px[1] - ICON_SIZE_X - 4 + if(btn_x < 0) + btn_x = origin_px[1] + minimap.base_map.Width() + 4 // fall back to right side + // Toolbar is vertically centered relative to the minimap's current position. + var/screen_size = get_screen_pixel_size() + var/toolbar_h = length(toolbar_button_types) * ICON_SIZE_Y + var/map_center_y = origin_px[2] + minimap.base_map.Height() / 2 + var/btn_top_y = clamp(map_center_y + toolbar_h / 2, toolbar_h, screen_size) + for(var/key in toolbar_button_types) + var/atom/movable/screen/minimap_toolbar_button/button = hud.screen_objects[key] + if(button) + button.screen_loc = "1:[btn_x],1:[btn_top_y - ICON_SIZE_Y - button.button_slot * ICON_SIZE_Y]" + +/atom/movable/screen/minimap_display/proc/clear_canvas(mob/user) + if(!can_draw) + return + drawing.clear_canvas(minimap?.base_map) + log_minimap_drawing("[key_name(user)] cleared the minimap canvas on z-level [minimap?.z]") + to_chat(user, span_warning("Cleared all minimap drawings.")) + +/atom/movable/screen/minimap_display/proc/clear_all_annotations(mob/user, annotation_type = /atom/movable/screen/minimap_element/label, annotation_type_name = "label") + var/alist/annotation_store = GLOB.minimap_annotations[annotation_share_tag] + var/alist/items_by_z = annotation_store?[annotation_type] + if(isnull(items_by_z)) + return + var/current_z = get_viewed_z_level() + var/list/items = items_by_z[current_z] + if(!length(items)) + return + QDEL_LIST(items) + items_by_z[current_z] = list() + refresh_visible_annotations() + sync_visible_objects(current_z) + var/user_name = user ? key_name(user) : "System" + to_chat(user, span_warning("Cleared all [annotation_type_name] annotations on z-level [current_z].")) + log_minimap_drawing("[user_name] has cleared all [annotation_type_name] annotations on z-level [current_z]") + +/atom/movable/screen/minimap_display/proc/async_place_label(mob/user, icon_x, icon_y) + var/x = clamp(MINIMAP_ICON_TO_WORLD(icon_x, minimap.min_x), 1, world.maxx) + var/y = clamp(MINIMAP_ICON_TO_WORLD(icon_y, minimap.min_y), 1, world.maxy) + var/area_name = minimap.map_position_to_name["[x]:[y]"] + if(isnull(area_name)) + var/turf/hovered_loc = locate(x, y, minimap.z) + area_name = "[hovered_loc?.loc?.name]" + minimap.map_position_to_name["[x]:[y]"] = area_name + var/label_text = tgui_input_text(user, "What would you like the label at [area_name] to say?", "Add Label", max_length = 25) + if(!label_text || QDELETED(src)) + return + var/list/filter_result = is_ic_filtered(label_text) + if(filter_result) + to_chat(user, span_warning("That label contained a word prohibited in IC chat! Consider reviewing the server rules.\n\"[label_text]\"")) + SSblackbox.record_feedback("tally", "ic_blocked_words", 1, LOWER_TEXT(config.ic_filter_regex.match)) + REPORT_CHAT_FILTER_TO_USER(src, filter_result) + log_filter("IC", label_text, filter_result) + return + var/atom/movable/screen/minimap_element/label/new_label = new + new_label.icon = 'icons/ui_icons/minimap/map_blips.dmi' + new_label.icon_state = "label" + new_label.maptext_x = 5 + new_label.maptext_y = 5 + new_label.maptext_width = 64 + new_label.maptext = MAPTEXT_TINY_UNICODE("[label_text]") + var/icon/label_icon = icon(new_label.icon, new_label.icon_state) + var/half_width = round(label_icon.Width() / 2) + var/half_height = round(label_icon.Height() / 2) + new_label.pixel_w = MINIMAP_WORLD_TO_PIXEL(x, minimap.min_x, half_width) + new_label.pixel_z = MINIMAP_WORLD_TO_PIXEL(y, minimap.min_y, half_height) + var/list/labels_for_z = get_or_create_annotation_list(/atom/movable/screen/minimap_element/label, minimap.z) + labels_for_z += new_label + sync_visible_objects(minimap?.z) + log_minimap_drawing("[key_name(user)] placed label '[label_text]' at [area_name]") + +/atom/movable/screen/minimap_display/proc/get_or_create_annotation_list(annotation_type, z_level) + var/alist/annotation_store = GLOB.minimap_annotations[annotation_share_tag] + if(isnull(annotation_store)) + annotation_store = alist() + GLOB.minimap_annotations[annotation_share_tag] = annotation_store + var/alist/by_z = annotation_store[annotation_type] + if(isnull(by_z)) + by_z = alist() + annotation_store[annotation_type] = by_z + var/list/items = by_z[z_level] + if(isnull(items)) + items = list() + by_z[z_level] = items + return items + +/atom/movable/screen/minimap_display/proc/refresh_visible_annotations() + if(isnull(minimap)) + return + var/list/drawings = get_or_create_annotation_list(/atom/movable/screen/minimap_element/drawing, minimap.z) + var/atom/movable/screen/minimap_element/drawing/target_drawing = length(drawings) ? drawings[1] : null + if(isnull(target_drawing)) + target_drawing = new + target_drawing.clear_canvas(minimap.base_map) + drawings += target_drawing + if(drawing != target_drawing) + if(!isnull(drawing)) + hide_minimap_element(drawing) + drawing = target_drawing + show_minimap_element(drawing) + + hide_visible_elements_by_type(/atom/movable/screen/minimap_element/label) + var/list/labels_for_z = get_or_create_annotation_list(/atom/movable/screen/minimap_element/label, minimap.z) + if(length(labels_for_z)) + show_minimap_elements(labels_for_z) + show_minimap_element(screentip) + +/atom/movable/screen/minimap_display/proc/sync_visible_objects(z_level) + if(isnull(z_level)) + return + var/list/displays_for_tag = GLOB.minimap_annotation_viewers[annotation_share_tag] + if(!length(displays_for_tag)) + return + for(var/atom/movable/screen/minimap_display/display as anything in displays_for_tag) + if(QDELETED(display) || display.minimap?.z != z_level) + continue + display.refresh_visible_annotations() + +/atom/movable/screen/minimap_display/proc/show_minimap_element(atom/movable/screen/minimap_element/element) + if(isnull(element)) + return + if(!(element in visible_minimap_elements)) + visible_minimap_elements += element + vis_contents |= element + +/atom/movable/screen/minimap_display/proc/hide_minimap_element(atom/movable/screen/minimap_element/element) + if(isnull(element)) + return + visible_minimap_elements -= element + vis_contents -= element + +/atom/movable/screen/minimap_display/proc/show_minimap_elements(list/elements) + for(var/atom/movable/screen/minimap_element/element as anything in elements) + show_minimap_element(element) + +/atom/movable/screen/minimap_display/proc/hide_minimap_elements(list/elements) + for(var/atom/movable/screen/minimap_element/element as anything in elements) + hide_minimap_element(element) + +/atom/movable/screen/minimap_display/proc/hide_visible_elements_by_type(element_type) + if(isnull(element_type)) + return + for(var/atom/movable/screen/minimap_element/element as anything in visible_minimap_elements.Copy()) + if(istype(element, element_type)) + hide_minimap_element(element) + +/atom/movable/screen/minimap_display/proc/clear_tagged_blips() + for(var/atom/movable/screen/minimap_element/blip/blip as anything in visible_minimap_elements.Copy()) + if(!length(blip.blip_tag)) + continue + hide_minimap_element(blip) + +/atom/movable/screen/minimap_display/nuclear + annotation_share_tag = MINIMAP_ANNOTATION_TAG_NUCLEAR + valid_minimap_blip_tags = list(MINIMAP_BOMB_BLIP, MINIMAP_NUKEDISK_BLIP, MINIMAP_NUKEOP_BLIP, MINIMAP_NUKEOP_BORG_BLIP, MINIMAP_SYNDICATE_MECH_BLIP, MINIMAP_SYNDIE_TURRET_BLIP, MINIMAP_LADDER_BLIP, MINIMAP_STAIR_BLIP) + +#undef MINIMAP_LABEL_REMOVE_PIXEL_RANGE diff --git a/code/modules/minimap/hud/minimap_drawing.dm b/code/modules/minimap/hud/minimap_drawing.dm new file mode 100644 index 000000000000..11c81089c85a --- /dev/null +++ b/code/modules/minimap/hud/minimap_drawing.dm @@ -0,0 +1,59 @@ + +/atom/movable/screen/minimap_element/drawing + icon = 'icons/ui_icons/minimap/minimap.dmi' + +/atom/movable/screen/minimap_element/drawing/proc/clear_canvas(icon/base_map) + var/icon/new_icon = icon('icons/ui_icons/minimap/minimap.dmi') + if(base_map) + new_icon.Scale(base_map.Width(), base_map.Height()) + icon = new_icon + +/atom/movable/screen/minimap_element/drawing/proc/draw_box(box_color, start_x, start_y, end_x, end_y, erase_pixel_range = 0, erase_padding_multiplier = 0) + var/icon/new_icon = icon(src.icon) + if(!isnull(box_color) || !erase_padding_multiplier) + new_icon.DrawBox(box_color, start_x, start_y, end_x, end_y) + else + var/padding = erase_pixel_range * erase_padding_multiplier + new_icon.DrawBox(box_color, start_x - padding, start_y - padding, end_x + padding, end_y + padding) + icon = new_icon + +// Unapologetically yoinked from /proc/get_line() +/atom/movable/screen/minimap_element/drawing/proc/draw_line(line_color, x0, y0, x1, y1, erase_pixel_range = 0, erase_padding_multiplier = 0) + var/icon/canvas = icon(src.icon) + var/current_x = x0 + var/current_y = y0 + + var/x_distance = x1 - current_x + var/y_distance = y1 - current_y + + var/abs_x_distance = abs(x_distance) + var/abs_y_distance = abs(y_distance) + + var/x_distance_sign = sign(x_distance) + var/y_distance_sign = sign(y_distance) + + var/cx = abs_x_distance >> 1 + var/cy = abs_y_distance >> 1 + + // draw the start pixel + var/padding = isnull(line_color) && erase_padding_multiplier ? erase_pixel_range * erase_padding_multiplier : 0 + canvas.DrawBox(line_color, current_x - padding, current_y - padding, current_x + 1 + padding, current_y + 1 + padding) + + if(abs_x_distance >= abs_y_distance) + for(var/i in 0 to (abs_x_distance - 1)) + cy += abs_y_distance + if(cy >= abs_x_distance) + cy -= abs_x_distance + current_y += y_distance_sign + current_x += x_distance_sign + canvas.DrawBox(line_color, current_x - padding, current_y - padding, current_x + 1 + padding, current_y + 1 + padding) + else + for(var/i in 0 to (abs_y_distance - 1)) + cx += abs_x_distance + if(cx >= abs_y_distance) + cx -= abs_y_distance + current_x += x_distance_sign + current_y += y_distance_sign + canvas.DrawBox(line_color, current_x - padding, current_y - padding, current_x + 1 + padding, current_y + 1 + padding) + + src.icon = canvas diff --git a/code/modules/minimap/hud/minimap_element.dm b/code/modules/minimap/hud/minimap_element.dm new file mode 100644 index 000000000000..f146f61bf348 --- /dev/null +++ b/code/modules/minimap/hud/minimap_element.dm @@ -0,0 +1,12 @@ +/atom/movable/screen/minimap_element + name = "unknown" + layer = MINIMAP_LABELS_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + vis_flags = VIS_INHERIT_PLANE + /// the tag this blip is associated via in it's stored globalist + var/blip_tag = "" + +/atom/movable/screen/minimap_element/Destroy() + if(blip_tag) + LAZYREMOVE(GLOB.minimap_blip_tags[blip_tag], src) + return ..() diff --git a/code/modules/minimap/hud/minimap_label.dm b/code/modules/minimap/hud/minimap_label.dm new file mode 100644 index 000000000000..e7515ab0c882 --- /dev/null +++ b/code/modules/minimap/hud/minimap_label.dm @@ -0,0 +1,6 @@ + +/atom/movable/screen/minimap_element/label + name = "label" + maptext = "" + maptext_width = 96 + maptext_height = 96 diff --git a/code/modules/minimap/hud/minimap_toolbar.dm b/code/modules/minimap/hud/minimap_toolbar.dm new file mode 100644 index 000000000000..c32ecb3979cf --- /dev/null +++ b/code/modules/minimap/hud/minimap_toolbar.dm @@ -0,0 +1,198 @@ +#define MINIMAP_TOOLBAR_ERASE_RANGE 5 + +/atom/movable/screen/minimap_toolbar_button + icon = 'icons/ui_icons/minimap/minimap_buttons.dmi' + icon_state = "draw" + mouse_over_pointer = MOUSE_HAND_POINTER + /// The minimap display this button controls. + var/atom/movable/screen/minimap_display/display + /// Vertical slot index (0 = topmost). Used by reposition_toolbar_buttons to calculate screen_loc. + var/button_slot = 0 + /// Mouse cursor icon set when this button's tool is active. null = default cursor. + var/icon/mouse_icon = null + /// Draw color this button represents. null = erase mode. + var/draw_color = null + /// HUD key for this tool button. Used to track selection state. + var/tool_key = null + /// Coordinates of the last drag position during drawing. + var/last_drag_x + var/last_drag_y + +/atom/movable/screen/minimap_toolbar_button/Initialize(mapload, datum/hud/hud_owner, atom/movable/screen/minimap_display/minimap_display) + . = ..() + display = minimap_display + +/atom/movable/screen/minimap_toolbar_button/Destroy() + display = null + return ..() + +/atom/movable/screen/minimap_toolbar_button/MouseEntered(location, control, params) + add_filter("mouseover", 1, outline_filter(1, COLOR_LIME)) + if(desc) + openToolTip(usr, tip_src = display || src, params = params, title = name, content = desc) + +/atom/movable/screen/minimap_toolbar_button/MouseExited(location, control, params) + remove_filter("mouseover") + if(desc) + closeToolTip(usr) + +/// Returns TRUE if this button should be shown as active. +/atom/movable/screen/minimap_toolbar_button/proc/is_active() + return display && display.active_button == src + +/// Updates the button's visual state to show if it's active. +/atom/movable/screen/minimap_toolbar_button/proc/update_active_state() + if(is_active()) + add_filter("active", 1, outline_filter(2, COLOR_YELLOW)) + else + remove_filter("active") + +/// Called when this button is activated as the active tool. +/atom/movable/screen/minimap_toolbar_button/proc/on_activate() + display?.set_cursor_icon(mouse_icon) + +/// Called when this button is deactivated. +/atom/movable/screen/minimap_toolbar_button/proc/on_deactivate() + display?.set_cursor_icon(null) + last_drag_x = null + last_drag_y = null + +/// Called during mouse drag on the map. Override to implement tool behavior. +/atom/movable/screen/minimap_toolbar_button/proc/on_mouse_drag(x, y) + return FALSE + +/// Called on mouse up. Override to clean up tool state. +/atom/movable/screen/minimap_toolbar_button/proc/on_mouse_up() + last_drag_x = null + last_drag_y = null + +/// Called on click. Override to implement click behavior like label placement. +/atom/movable/screen/minimap_toolbar_button/proc/on_click(icon_x, icon_y, right_click) + return FALSE + +/atom/movable/screen/minimap_toolbar_button/draw + desc = "Left-drag on the map to draw." + +/atom/movable/screen/minimap_toolbar_button/draw/on_mouse_drag(x, y) + if(isnull(display) || isnull(display.drawing)) + return FALSE + var/icon_width = display.minimap?.base_map?.Width() + var/icon_height = display.minimap?.base_map?.Height() + if(isnull(icon_width) || isnull(icon_height)) + return FALSE + if(!ISINRANGE(x, 1, icon_width) || !ISINRANGE(y, 1, icon_height)) + last_drag_x = null + last_drag_y = null + return FALSE + + if(last_drag_x && last_drag_y) + display.drawing.draw_line(draw_color, last_drag_x, last_drag_y + display.draw_offset_y, x, y + display.draw_offset_y, 0, 1) + last_drag_x = x + last_drag_y = y + else + display.drawing.draw_box(draw_color, x, y + display.draw_offset_y, x + 1, y + 1 + display.draw_offset_y, 0, 1) + last_drag_x = x + last_drag_y = y + return TRUE + +/atom/movable/screen/minimap_toolbar_button/draw/Click(location, control, params) + if(usr == get_mob()) + display?.activate_button(src) + +/atom/movable/screen/minimap_toolbar_button/draw/red + button_slot = 0 + color = TACMAP_DRAWING_RED + draw_color = TACMAP_DRAWING_RED + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/draw_red.dmi' + +/atom/movable/screen/minimap_toolbar_button/draw/yellow + button_slot = 1 + color = TACMAP_DRAWING_YELLOW + draw_color = TACMAP_DRAWING_YELLOW + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/draw_yellow.dmi' + +/atom/movable/screen/minimap_toolbar_button/draw/purple + button_slot = 2 + color = TACMAP_DRAWING_PURPLE + draw_color = TACMAP_DRAWING_PURPLE + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/draw_purple.dmi' + +/atom/movable/screen/minimap_toolbar_button/draw/blue + button_slot = 3 + color = TACMAP_DRAWING_BLUE + draw_color = TACMAP_DRAWING_BLUE + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/draw_blue.dmi' + +/// Erase tool — left-drag on the map to erase a line. +/atom/movable/screen/minimap_toolbar_button/erase + icon_state = "erase" + button_slot = 4 + desc = "Left-drag on the map to erase." + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/draw_erase.dmi' + +/atom/movable/screen/minimap_toolbar_button/erase/on_mouse_drag(x, y) + if(isnull(display) || isnull(display.drawing)) + return FALSE + var/icon_width = display.minimap?.base_map?.Width() + var/icon_height = display.minimap?.base_map?.Height() + if(isnull(icon_width) || isnull(icon_height)) + return FALSE + if(!ISINRANGE(x, 1, icon_width) || !ISINRANGE(y, 1, icon_height)) + last_drag_x = null + last_drag_y = null + return FALSE + + if(last_drag_x && last_drag_y) + display.drawing.draw_line(null, last_drag_x, last_drag_y + display.draw_offset_y, x, y + display.draw_offset_y, MINIMAP_TOOLBAR_ERASE_RANGE, 1) + last_drag_x = x + last_drag_y = y + else + display.drawing.draw_box(null, x, y + display.draw_offset_y, x + 1, y + 1 + display.draw_offset_y, MINIMAP_TOOLBAR_ERASE_RANGE, 1) + last_drag_x = x + last_drag_y = y + return TRUE + +/atom/movable/screen/minimap_toolbar_button/erase/Click(location, control, params) + if(usr == get_mob()) + display?.activate_button(src) + +/// Clear tool — removes all drawings and labels. +/atom/movable/screen/minimap_toolbar_button/clear + icon_state = "clear" + button_slot = 5 + desc = "Clear all drawings." + +/atom/movable/screen/minimap_toolbar_button/clear/is_active() + return FALSE + +/atom/movable/screen/minimap_toolbar_button/clear/Click(location, control, params) + if(usr == get_mob()) + display?.clear_canvas(usr) + +/// Label tool — click the map to place labels, right-click a label to remove it, right-click this button to clear all labels. +/atom/movable/screen/minimap_toolbar_button/label + icon_state = "label" + button_slot = 6 + desc = "Toggle label mode. Click the map to place a label. Right-click a nearby label on the map to remove it. Right-click this button to clear all labels." + mouse_icon = 'icons/ui_icons/minimap/minimap_mouse/label.dmi' + +/atom/movable/screen/minimap_toolbar_button/label/on_click(icon_x, icon_y, right_click) + if(isnull(display)) + return FALSE + if(right_click) + display.remove_nearest_label(icon_x, icon_y, usr) + return TRUE + // Place label asynchronously + INVOKE_ASYNC(display, /atom/movable/screen/minimap_display/proc/async_place_label, usr, icon_x, icon_y) + return TRUE + +/atom/movable/screen/minimap_toolbar_button/label/Click(location, control, params) + if(usr != get_mob()) + return + var/list/modifiers = params2list(params) + if(LAZYACCESS(modifiers, RIGHT_CLICK)) + display.clear_all_annotations(usr, /atom/movable/screen/minimap_element/label) + else + display?.activate_button(src) + +#undef MINIMAP_TOOLBAR_ERASE_RANGE diff --git a/code/modules/minimap/hud/minimap_tracking_blip.dm b/code/modules/minimap/hud/minimap_tracking_blip.dm new file mode 100644 index 000000000000..d7c2d19433c4 --- /dev/null +++ b/code/modules/minimap/hud/minimap_tracking_blip.dm @@ -0,0 +1,90 @@ +/atom/movable/screen/minimap_element/blip + icon = 'icons/ui_icons/minimap/map_blips.dmi' + /// Is this a large blip? causes different pixel offsets to be applied + var/large = FALSE + /// Minimap datum for the current z-level this blip is on + var/datum/minimap/minimap + /// If we are tracking our target or not, to ensure we do not re-register multiple times + var/tracking = FALSE + /// what target we're essentially owned by, and will cause this blip to cleanup if it gets deleted + var/atom/track_target + /// Weak reference to connect_containers so container movement updates this blip. + var/datum/weakref/connect_ref + +/atom/movable/screen/minimap_element/blip/Initialize(mapload, datum/hud/hud_owner, atom/track_target, icon_state, icon, large = FALSE, blip_tag) + . = ..() + src.icon_state = icon_state + src.large = large + if(icon) + src.icon = icon + if(track_target) + register_target(track_target) + if(blip_tag) + src.blip_tag = blip_tag + +/atom/movable/screen/minimap_element/blip/Destroy() + clear_tracking_signals() + return ..() + +/atom/movable/screen/minimap_element/blip/proc/register_target(atom/target) + if(!isnull(track_target)) + CRASH("[type] attempted to register [target] while already tracking [track_target].") + if(isnull(target)) + CRASH("[type] attempted to register a null track target.") + RegisterSignal(target, COMSIG_QDELETING, TYPE_PROC_REF(/datum, selfdelete), override = TRUE) + track_target = target + name = target.name + +/atom/movable/screen/minimap_element/blip/proc/clear_tracking_signals() + tracking = FALSE + if(track_target) + UnregisterSignal(track_target, list(COMSIG_QDELETING, COMSIG_MOVABLE_Z_CHANGED, COMSIG_MOVABLE_MOVED)) + track_target.maptext = null + track_target = null + QDEL_NULL(connect_ref) + +/atom/movable/screen/minimap_element/blip/proc/start_tracking_target() + if(tracking) + return + if(isnull(track_target)) + CRASH("[type] cannot start tracking without a registered target.") + RegisterSignal(track_target, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_target_z_changed)) + RegisterSignal(track_target, COMSIG_MOVABLE_MOVED, PROC_REF(on_tracked_or_container_moved)) + if(ismovable(track_target)) + var/static/list/container_connections = list( + COMSIG_MOVABLE_MOVED = PROC_REF(on_tracked_or_container_moved), + COMSIG_MOVABLE_Z_CHANGED = PROC_REF(on_target_z_changed), + ) + connect_ref = WEAKREF(AddComponent(/datum/component/connect_containers, track_target, container_connections)) + tracking = TRUE + INVOKE_ASYNC(src, PROC_REF(update_minimap)) + +/atom/movable/screen/minimap_element/blip/proc/update_minimap() + var/turf/target_turf = get_turf(track_target) + minimap = get_minimap_for_z(target_turf.z) + update_blip() + +/atom/movable/screen/minimap_element/blip/proc/on_target_z_changed(atom/movable/source, turf/old_turf, turf/new_turf, same_z_layer) + SIGNAL_HANDLER + if(isnull(track_target)) + return + var/turf/target_turf = get_turf(track_target) + if(isnull(minimap) || minimap.z != target_turf?.z) + INVOKE_ASYNC(src, PROC_REF(update_minimap)) + else + update_blip() + +/atom/movable/screen/minimap_element/blip/proc/on_tracked_or_container_moved(atom/movable/source, atom/old_loc) + SIGNAL_HANDLER + update_blip() + +/atom/movable/screen/minimap_element/blip/proc/update_blip() + SIGNAL_HANDLER + if(isnull(track_target) || isnull(minimap)) + return + name = track_target.name + var/turf/target_turf = get_turf(track_target) + var/half_size = large ? 5 : 3 + pixel_w = MINIMAP_WORLD_TO_PIXEL(target_turf.x, minimap.min_x, half_size) + pixel_z = MINIMAP_WORLD_TO_PIXEL(target_turf.y, minimap.min_y, half_size) + diff --git a/code/modules/minimap/minimap.dm b/code/modules/minimap/minimap.dm new file mode 100644 index 000000000000..a893ae13d38a --- /dev/null +++ b/code/modules/minimap/minimap.dm @@ -0,0 +1,84 @@ +/// Assoc list of z-levels to `/datum/minimap` instances. +GLOBAL_ALIST_EMPTY(minimaps) + +/// Represents a minimap for a single Z-level. +/datum/minimap + /// The Z-level this minimap was made for. + VAR_FINAL/z + /// The icon of the base map itself. + var/icon/base_map + /// Mapping of x/y coords to area names. + var/alist/map_position_to_name = alist() + /// Minimum world X coordinate included in the cropped map icon. + var/min_x = 1 + /// Minimum world Y coordinate included in the cropped map icon. + var/min_y = 1 + +/datum/minimap/proc/load_z(z) + . = FALSE + if(!isnum(z) || z > length(SSmapping.z_list)) + CRASH("Tried to create minimap for invalid Z-level ([z])") + + base_map = icon('icons/ui_icons/minimap/minimap.dmi') + src.z = z + + var/min_x = world.maxx + var/min_y = world.maxy + var/max_x = 1 + var/max_y = 1 + + map_position_to_name.Cut() + for(var/turf/location as anything in Z_TURFS(z)) + if(location.skip_minimap_rendering || isshuttleturf(location)) + continue + var/area/arealoc = location.loc + if(arealoc.skip_minimap_rendering) + continue + var/x = location.x + var/y = location.y + min_x = min(min_x, x) + min_y = min(min_y, y) + max_x = max(max_x, x) + max_y = max(max_y, y) + if(location.density) + base_map.DrawBox(location.tacmap_color, x, y) + continue + var/atom/movable/alttarget = (locate(/obj/machinery/door) in location) || (locate(/obj/structure/window) in location) || (locate(/obj/structure/fence) in location) + if(alttarget) + base_map.DrawBox(alttarget.tacmap_color, x, y) + continue + if(arealoc.tacmap_color) + base_map.DrawBox(BlendRGB(location.tacmap_color, arealoc.tacmap_color, 0.5), x, y) + continue + if(istype(location, /turf/open/floor/engine/hull)) + var/turf/turf_below = GET_TURF_BELOW(location) + var/area/below_area = turf_below?.loc + // we'll draw the below area's color but transparent + if(below_area?.tacmap_color) + var/list/below_color = rgb2num(below_area.tacmap_color) + base_map.DrawBox(rgb(below_color[1], below_color[2], below_color[3], 64), x, y) + continue + base_map.DrawBox(location.tacmap_color, x, y) + + src.min_x = min_x + src.min_y = min_y + + base_map.Crop(min_x, min_y, max_x, max_y) + base_map.Scale(base_map.Width() * MINIMAP_PIXEL_MULTIPLIER, base_map.Height() * MINIMAP_PIXEL_MULTIPLIER) + + return TRUE + +/// Gets the `/datum/minimap` for a Z-level - generating it if it hasn't been yet. +/proc/get_minimap_for_z(z) as /datum/minimap + var/static/generating_minimap = FALSE + UNTIL(!generating_minimap) + + if(GLOB.minimaps[z]) + return GLOB.minimaps[z] + + generating_minimap = TRUE + var/datum/minimap/minimap = new + if(minimap.load_z(z)) + GLOB.minimaps[z] = minimap + . = minimap + generating_minimap = FALSE diff --git a/code/modules/minimap/minimap_action.dm b/code/modules/minimap/minimap_action.dm new file mode 100644 index 000000000000..9c25d7bc553e --- /dev/null +++ b/code/modules/minimap/minimap_action.dm @@ -0,0 +1,141 @@ + +/datum/action/minimap + name = "Toggle Minimap" + button_icon = 'icons/hud/implants.dmi' + button_icon_state = "minimap" + /// Mob currently bound to z-change signal handling for auto-hide behavior. + var/mob/tracked_owner + /// Optional fixed z-level that anchors this action's minimap stack and permission checks. + var/fixed_z_level + /// Optional minimap blip tags to render on the rewrite minimap display. + var/list/minimap_blip_tags = list() + /// Optional annotation sharing tag for minimap drawings/labels. + var/annotation_share_tag + /// Whether this action's minimap display should allow drawing tools. + var/can_draw = FALSE + /// list of hud elements we add and remove and check for when this action is triggered + var/list/huds = list( + HUD_TAC_MINIMAP_DIMMER = /atom/movable/screen/fullscreen/dimmer/minimap, + HUD_TAC_MINIMAP = /atom/movable/screen/minimap_display, + HUD_TAC_MINIMAP_Z_INDICATOR = /atom/movable/screen/minimap_z_indicator, + HUD_TAC_MINIMAP_Z_INDICATOR_UP = /atom/movable/screen/minimap_z_up, + HUD_TAC_MINIMAP_Z_INDICATOR_DOWN = /atom/movable/screen/minimap_z_down + ) + +/datum/action/minimap/Trigger(mob/clicker, trigger_flags) + . = ..() + var/datum/hud/hud = clicker.hud_used + // Toggle off if already visible. + if(has_minimap_huds(hud)) + remove_huds(hud) + to_chat(clicker, span_notice("Minimap hidden.")) + return + + if(SEND_SIGNAL(clicker, COMSIG_MINIMAP_ACTION_TRIGGER) & COMSIG_MINIMAP_ACTION_TRIGGER_CANCEL) + return + + var/anchor_z = get_anchor_z_level(clicker?.z) + if(is_forbidden_minimap_z(anchor_z)) + to_chat(clicker, span_warning("The minimap cannot be used on this z-level.")) + clicker.balloon_alert(clicker, "invalid z-level!") + return + var/display_z = get_opening_display_z_level(anchor_z, clicker?.z) + + var/datum/minimap/minimap = get_minimap_for_z(display_z) + if(isnull(minimap)) + clicker.balloon_alert(clicker, "no minimap generated") + return + add_huds(hud, minimap, isnull(fixed_z_level) ? null : display_z) + to_chat(clicker, span_notice("Minimap shown.")) + +/datum/action/minimap/Grant(mob/grant_to) + . = ..() + set_tracked_owner(grant_to) + +/datum/action/minimap/Remove(mob/remove_from) + set_tracked_owner(null) + return ..() + +/datum/action/minimap/proc/has_minimap_huds(datum/hud/hud) + for(var/element in huds) + if(hud.screen_objects[element]) + return TRUE + return FALSE + +/datum/action/minimap/proc/get_open_minimap_display(datum/hud/hud) + if(isnull(hud) || !has_minimap_huds(hud)) + return null + return hud.screen_objects[HUD_TAC_MINIMAP] + +/datum/action/minimap/proc/add_huds(datum/hud/hud, datum/minimap/minimap, initial_display_z_level) + for(var/element in huds) + var/hud_element_type = huds[element] + var/instanced = new hud_element_type(null, hud, minimap, minimap_blip_tags, initial_display_z_level, annotation_share_tag, can_draw) + hud.add_screen_object(instanced, element, HUD_GROUP_STATIC, update_screen = TRUE) + +/datum/action/minimap/proc/set_tracked_owner(mob/new_owner) + if(tracked_owner == new_owner) + return + if(!isnull(tracked_owner)) + UnregisterSignal(tracked_owner, COMSIG_MOVABLE_Z_CHANGED) + tracked_owner = new_owner + if(!isnull(tracked_owner)) + RegisterSignal(tracked_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_owner_z_changed)) + +/datum/action/minimap/proc/get_anchor_z_level(current_z_level) + return isnull(fixed_z_level) ? current_z_level : fixed_z_level + + +/datum/action/minimap/proc/get_opening_display_z_level(anchor_z_level, current_z_level) + var/list/connected_levels = SSmapping.get_connected_levels(anchor_z_level) + if(length(connected_levels) && connected_levels.Find(current_z_level)) + return current_z_level + return (length(connected_levels) ? connected_levels[1] : anchor_z_level) + +/datum/action/minimap/proc/is_forbidden_minimap_z(z_level) + if(isnull(z_level)) + return FALSE + return is_centcom_level(z_level) || is_reserved_level(z_level) + +/datum/action/minimap/proc/on_owner_z_changed(atom/movable/source, turf/old_turf, turf/new_turf, same_z_layer) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(handle_owner_z_changed), source, new_turf?.z) + +/datum/action/minimap/proc/handle_owner_z_changed(mob/owner_mob, new_z_level) + var/datum/hud/owner_hud = owner_mob?.hud_used + if(isnull(get_open_minimap_display(owner_hud))) + return + + var/anchor_z = get_anchor_z_level(new_z_level) + if(is_forbidden_minimap_z(anchor_z)) + remove_huds(owner_hud) + to_chat(owner_mob, span_warning("The minimap closes on this z-level.")) + return + if(isnull(fixed_z_level)) + return + + var/display_z = get_opening_display_z_level(anchor_z, new_z_level) + var/atom/movable/screen/minimap_display/display = get_open_minimap_display(owner_hud) + if(isnull(display) || display.get_viewed_z_level() == display_z) + return + var/datum/minimap/minimap = get_minimap_for_z(display_z) + if(QDELETED(src) || isnull(minimap)) + return + display = get_open_minimap_display(owner_hud) + if(isnull(display) || display.get_viewed_z_level() == display_z) + return + display.change_z_level(display_z, minimap) + +/datum/action/minimap/nuclear + annotation_share_tag = MINIMAP_ANNOTATION_TAG_NUCLEAR + huds = list( + HUD_TAC_MINIMAP_DIMMER = /atom/movable/screen/fullscreen/dimmer/minimap, + HUD_TAC_MINIMAP = /atom/movable/screen/minimap_display/nuclear, + HUD_TAC_MINIMAP_Z_INDICATOR = /atom/movable/screen/minimap_z_indicator, + HUD_TAC_MINIMAP_Z_INDICATOR_UP = /atom/movable/screen/minimap_z_up, + HUD_TAC_MINIMAP_Z_INDICATOR_DOWN = /atom/movable/screen/minimap_z_down + ) + +/datum/action/minimap/proc/remove_huds(datum/hud/hud) + for(var/element in huds) + hud.remove_screen_object(element) diff --git a/code/modules/minimap/minimap_table.dm b/code/modules/minimap/minimap_table.dm new file mode 100644 index 000000000000..3af72ea76c47 --- /dev/null +++ b/code/modules/minimap/minimap_table.dm @@ -0,0 +1,225 @@ + +/obj/machinery/minimap_table + name = "reconnaissance platform" + desc = "This holographic projector displays a constant stream of tactical information, enabling cinematic planning and strategizing. \ + Currently, it appears to be monitoring a nearby station and tracking key targets for a clandestine operation." + icon = 'icons/obj/machines/minimap_table.dmi' + icon_state = "off" + processing_flags = START_PROCESSING_MANUALLY + light_range = 4 + light_power = 2 + light_color = LIGHT_COLOR_INTENSE_RED + light_system = OVERLAY_LIGHT + density = TRUE + bound_width = 64 + SET_BASE_PIXEL(0, 2) + /// Hologram icon sheet used for startup/idle/closing projection effects. + var/hologram_icon_file = 'icons/obj/machines/minimap_table_hologram.dmi' + /// Z-trait used to resolve the minimap level this table displays. + var/target_z_trait = ZTRAIT_STATION + /// Cached minimap datum currently displayed by this table. + var/datum/minimap/minimap + /// Users currently viewing the table-projected minimap HUD. + var/list/mob/viewers = list() + /// Whether the table is currently active and projecting. + var/active = FALSE + /// Whether startup animation/state is currently in progress. + var/startup = FALSE + /// Pixel X offset for projected hologram overlays. + var/animation_x = -15 + /// Pixel Y offset for projected hologram overlays. + var/animation_y = 18 + /// Startup/closing animation duration. + var/animation_duration = 5.1 SECONDS + /// Max distance at which users can interact with the table. + var/interactivity_range = 3 + /// Proximity monitor used to close viewers leaving interaction range. + var/datum/proximity_monitor/proximity + /// Light helper used for pulsing hologram illumination. + var/datum/light_middleman/middleman + /// Lowest alpha value used by the pulsing light animation. + var/flicker_min_alpha = 150 + /// HUD elements used by the holotable minimap view. + var/list/table_huds = list( + HUD_TAC_MINIMAP_DIMMER = /atom/movable/screen/fullscreen/dimmer/minimap, + HUD_TAC_MINIMAP = /atom/movable/screen/minimap_display/nuclear, + HUD_TAC_MINIMAP_Z_INDICATOR = /atom/movable/screen/minimap_z_indicator, + HUD_TAC_MINIMAP_Z_INDICATOR_UP = /atom/movable/screen/minimap_z_up, + HUD_TAC_MINIMAP_Z_INDICATOR_DOWN = /atom/movable/screen/minimap_z_down, + ) + +/obj/machinery/minimap_table/Initialize(mapload) + . = ..() + proximity = new(src, interactivity_range) + + if(IS_OVERLAY_LIGHT_SYSTEM(light_system)) + middleman = new(src, "holotable") + RegisterSignal(middleman, COMSIG_LIGHT_MIDDLEMAN_UPDATED, PROC_REF(light_pulsate)) + middleman.being_overriding_light() + +/obj/machinery/minimap_table/Destroy(force) + for(var/mob/viewer as anything in viewers) + remove_table_huds(viewer.hud_used) + viewers = null + QDEL_NULL(proximity) + QDEL_NULL(middleman) + minimap = null + return ..() + +/obj/machinery/minimap_table/post_machine_initialize() + . = ..() + INVOKE_ASYNC(src, PROC_REF(set_minimap)) + +/obj/machinery/minimap_table/RangedAttackOn(mob/attacker, list/modifiers) + if(get_dist(src, attacker) > interactivity_range) + return + interact(attacker) + +/obj/machinery/minimap_table/interact(mob/user) + . = ..() + if(!is_operational || isnull(minimap) || isnull(user.hud_used)) + return FALSE + if(!isnull(user.hud_used.screen_objects[HUD_TAC_MINIMAP])) + hide_minimap(user) + return TRUE + if(active) + show_minimap(user) + return TRUE + + addtimer(CALLBACK(src, PROC_REF(activate), user), animation_duration, TIMER_UNIQUE | TIMER_CLIENT_TIME) + + startup = TRUE + play_animation("startup") + return TRUE + +/obj/machinery/minimap_table/proc/play_animation(icon_state = "startup", duration = animation_duration) + var/image/img = image(hologram_icon_file, src, icon_state, ABOVE_MOB_LAYER, dir, animation_x, animation_y) + var/image/emissive_img = image(hologram_icon_file, src, icon_state, ABOVE_MOB_LAYER, dir, animation_x, animation_y) + emissive_img.plane = EMISSIVE_PLANE + emissive_img.color = _EMISSIVE_COLOR_NO_BLOOM(1) + + flick_overlay_global(img, GLOB.clients, duration) + flick_overlay_global(emissive_img, GLOB.clients, duration) + +/obj/machinery/minimap_table/proc/activate(mob/activator) + if(active || !is_operational) + return + startup = FALSE + active = TRUE + if(activator && get_dist(src, activator) <= interactivity_range) + show_minimap(activator) + update_appearance(UPDATE_OVERLAYS) + light_pulsate() + +/obj/machinery/minimap_table/proc/deactivate() + if(!active) + return + active = FALSE + update_appearance(UPDATE_OVERLAYS) + var/obj/effect/abstract/main_light = middleman.primary_intercept + animate(main_light, time = 1 SECONDS) + play_animation("closing") + +/obj/machinery/minimap_table/proc/light_pulsate() + SIGNAL_HANDLER + var/obj/effect/abstract/main_light = middleman.primary_intercept + var/matrix/center = matrix() + // center it since we're a 2x2 machine + center.Translate(16, 0) + main_light.transform = center + if(!active) + return + + + var/matrix/bigTransform = matrix() + var/matrix/smallTransform = matrix() + smallTransform.Add(center) + bigTransform.Add(center) + + bigTransform.Scale(1.25) + smallTransform.Scale(0.75) + + animate(main_light, alpha = flicker_min_alpha, time = 2 SECONDS, loop = -1, easing = SINE_EASING) + animate(alpha = 255, time = 2 SECONDS) + animate(transform = bigTransform, time = 3 SECONDS, loop = -1, flags = ANIMATION_PARALLEL, easing = SINE_EASING) + animate(transform = smallTransform, time = 3 SECONDS) + +/obj/machinery/minimap_table/proc/deactive_without_viewers() + if(!length(viewers)) + deactivate() + +/obj/machinery/minimap_table/proc/show_minimap(mob/user) + add_table_huds(user.hud_used) + viewers |= user + +/obj/machinery/minimap_table/proc/hide_minimap(mob/user) + remove_table_huds(user.hud_used) + viewers -= user + if(!length(viewers)) + addtimer(CALLBACK(src, PROC_REF(deactive_without_viewers)), 10 SECONDS, TIMER_OVERRIDE | TIMER_UNIQUE) + +/obj/machinery/minimap_table/proc/add_table_huds(datum/hud/hud) + var/target_z = resolve_target_z() + var/allow_draw = can_user_draw(hud?.mymob) + for(var/element in table_huds) + var/hud_element_type = table_huds[element] + var/instanced = new hud_element_type(null, hud, minimap, null, target_z, MINIMAP_ANNOTATION_TAG_NUCLEAR, allow_draw) + hud.add_screen_object(instanced, element, HUD_GROUP_STATIC, update_screen = TRUE) + +/obj/machinery/minimap_table/proc/can_user_draw(mob/user) + return HAS_TRAIT(user, TRAIT_MINIMAP_TABLE_DRAW) + +/obj/machinery/minimap_table/proc/remove_table_huds(datum/hud/hud) + for(var/element in table_huds) + hud.remove_screen_object(element) + +/obj/machinery/minimap_table/proc/resolve_target_z() + if(isnull(target_z_trait)) + return null + var/list/trait_levels = SSmapping.levels_by_trait(target_z_trait) + if(length(trait_levels)) + var/top_level + for(var/level in trait_levels) + if(isnull(top_level) || level > top_level) + top_level = level + return top_level + return null + +/obj/machinery/minimap_table/proc/set_minimap() + var/target_z = resolve_target_z() + minimap = get_minimap_for_z(target_z) + +/obj/machinery/minimap_table/on_set_is_operational() + update_appearance() + set_light_on(is_operational) + + if(!is_operational) + deactivate() + +/obj/machinery/minimap_table/update_overlays() + . = ..() + if(!is_operational) + return + . += mutable_appearance(icon, "idle") + . += emissive_appearance(icon, "idle", src) + if(active) + var/holo_state = "idle" + var/mutable_appearance/idle = mutable_appearance(hologram_icon_file, holo_state, ABOVE_MOB_LAYER) + idle.pixel_x = animation_x + idle.pixel_y = animation_y + . += idle + + var/mutable_appearance/emissive = emissive_appearance(hologram_icon_file, holo_state, src, ABOVE_MOB_LAYER, effect_type = EMISSIVE_NO_BLOOM) + emissive.pixel_x = animation_x + emissive.pixel_y = animation_y + . += emissive + +/obj/machinery/minimap_table/OnProximityExit(atom/movable/gone) + if(!active || !ismob(gone)) + return + var/mob/mob_gone = gone + var/list/adjacent = orange(interactivity_range, src) + if(mob_gone in adjacent) + return + if(mob_gone in viewers) + hide_minimap(gone) diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index ff4bf581cd83..b371033bce2c 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -15,8 +15,8 @@ name = "auxiliary base management console" desc = "Allows a deployable expedition base to be dropped from the station to a designated mining location. It can also \ interface with the mining shuttle at the landing site if a mobile beacon is also deployed." - icon = 'icons/obj/machines/wallmounts.dmi' - icon_state = "pod_off" + icon = MAP_SWITCH('icons/obj/machines/wallmounts.dmi', 'icons/obj/fluff/map_previews.dmi') + icon_state = MAP_SWITCH("pod_off", "/obj/machinery/computer/shuttle/pod") icon_keyboard = null icon_screen = "pod_on" req_one_access = list(ACCESS_AUX_BASE, ACCESS_COMMAND) diff --git a/code/modules/mining/boulder_processing/boulder_types.dm b/code/modules/mining/boulder_processing/boulder_types.dm index 1a6979f38852..e5e93a74c7c8 100644 --- a/code/modules/mining/boulder_processing/boulder_types.dm +++ b/code/modules/mining/boulder_processing/boulder_types.dm @@ -53,49 +53,33 @@ icon_state = "boulder_artifact_diamond" bonus_mat = /datum/material/diamond -///Boulders usually spawned in lavaland labour camp area +///Boulders spawned by the vent in the work camp, contain exclusively iron so we can have a reliable payout +/obj/item/boulder/gulag_vent + name = "iron boulder" + desc = "Basically just a raw lump of iron. Smash it into bits with a pickaxe." + // This produces 5 ore when smashed open because not using a machine reduces the ore count by one. 14 boulders x 15 ore x 5 points = 1050 points + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 16) + +/// Boulders usually spawned in lavaland labour camp area, broken open with pickaxe like a loot box /obj/item/boulder/gulag name = "low-quality boulder" - desc = "This rocks. It's a low quality boulder, so it's probably not worth as much." + desc = "Smash it with a pickaxe to get a bunch of ore at once. This rocks." /obj/item/boulder/gulag/Initialize(mapload) . = ..() /// Static list of all minerals to populate gulag boulders with. var/static/list/gulag_minerals = list( - /datum/material/diamond = 1, - /datum/material/gold = 8, - /datum/material/iron = 95, - /datum/material/plasma = 30, - /datum/material/silver = 20, - /datum/material/titanium = 8, - /datum/material/uranium = 3, + /datum/material/gold = 1, + /datum/material/iron = 5, + /datum/material/plasma = 4, + /datum/material/silver = 2, ) - set_custom_materials(list(pick_weight(gulag_minerals) = SHEET_MATERIAL_AMOUNT)) + var/amount = rand(10, 13) + set_custom_materials(list(pick_weight(gulag_minerals) = SHEET_MATERIAL_AMOUNT * amount)) -///Boulders usually spawned in lavaland labour camp area but with bluespace material -/obj/item/boulder/gulag_expanded - name = "low-density boulder" - desc = "This rocks. It's not very well packed, and can't contain as many minerals." - -/obj/item/boulder/gulag_expanded/Initialize(mapload) - . = ..() - - /// Static list of all minerals to populate gulag boulders with, but with bluespace added where safe. - var/static/list/expanded_gulag_minerals = list( - /datum/material/bluespace = 1, - /datum/material/diamond = 1, - /datum/material/gold = 8, - /datum/material/iron = 94, - /datum/material/plasma = 30, - /datum/material/silver = 20, - /datum/material/titanium = 8, - /datum/material/uranium = 3, - ) - set_custom_materials(list(pick_weight(expanded_gulag_minerals) = SHEET_MATERIAL_AMOUNT)) - -///lowgrade boulder, Exists as an admin spawn for testing +///lowgrade boulder, Exists as an admin spawn for testing and unit testing. /obj/item/boulder/shabby name = "shabby boulder" desc = "A bizarre, twisted boulder. Wait, wait no, it's just a rock." diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index e3b92dda982c..aca65531264b 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -7,6 +7,7 @@ worn_icon = 'icons/mob/clothing/suits/utility.dmi' inhand_icon_state = null supports_variations_flags = CLOTHING_DIGITIGRADE_MASK + bodyshapes_with_variations = BODYSHAPE_DIGITIGRADE body_parts_covered = CHEST|GROIN|LEGS|ARMS cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT diff --git a/code/modules/mining/equipment/kheiral_cuffs.dm b/code/modules/mining/equipment/kheiral_cuffs.dm index 79264731c885..964c4da6ff15 100644 --- a/code/modules/mining/equipment/kheiral_cuffs.dm +++ b/code/modules/mining/equipment/kheiral_cuffs.dm @@ -100,7 +100,7 @@ else if(isliving(loc.loc)) // for the "worn as accessory" case connect_kheiral_network(loc.loc) -/obj/item/clothing/accessory/kheiral_cuffs/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/clothing/accessory/kheiral_cuffs/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) . += emissive_appearance(icon_file, "strandcuff_emissive", src, alpha = src.alpha) @@ -109,9 +109,10 @@ . = ..() . += emissive_appearance(icon, "strand_light", src, alpha = src.alpha) -/obj/item/clothing/accessory/kheiral_cuffs/suicide_act(mob/living/carbon/user) +/obj/item/clothing/accessory/kheiral_cuffs/suicide_act(mob/living/user) if(!ishuman(user)) - return + user.visible_message(span_suicide("[user] locks [src] around their neck, wrinkles forming across their face. It looks like [user.p_theyre()] trying to commit suicide!")) + return OXYLOSS var/mob/living/carbon/human/victim = user victim.visible_message(span_suicide("[user] locks [src] around their neck, wrinkles forming across their face. It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm index 9f72047fcdea..a45bff148143 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm @@ -119,12 +119,11 @@ for(var/obj/item/crusher_trophy/crusher_trophy as anything in trophies) . += span_notice("It has \a [crusher_trophy] attached, which causes [crusher_trophy.effect_desc()].") -/obj/item/kinetic_crusher/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/crusher_trophy)) - var/obj/item/crusher_trophy/crusher_trophy = attacking_item - crusher_trophy.add_to(src, user) - return - return ..() +/obj/item/kinetic_crusher/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/crusher_trophy)) + astype(tool, /obj/item/crusher_trophy).add_to(src, user) + return ITEM_INTERACT_SUCCESS + return NONE /obj/item/kinetic_crusher/crowbar_act(mob/living/user, obj/item/tool) . = ..() @@ -199,33 +198,8 @@ if(QDELETED(target)) return var/datum/status_effect/crusher_mark/mark = target.has_status_effect(/datum/status_effect/crusher_mark) - if(!mark) - return - var/boosted_mark = mark.boosted - if(!target.remove_status_effect(mark)) - return - // Detonation effect - var/datum/status_effect/crusher_damage/crusher_damage_effect = target.has_status_effect(/datum/status_effect/crusher_damage) || target.apply_status_effect(/datum/status_effect/crusher_damage) - var/target_health = target.health - var/combined_damage = detonation_damage - for(var/obj/item/crusher_trophy/crusher_trophy as anything in trophies) - combined_damage += crusher_trophy.on_mark_detonation(target, user) - if(QDELETED(target)) - return - if(!QDELETED(crusher_damage_effect)) - crusher_damage_effect.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did - new /obj/effect/temp_visual/kinetic_blast(get_turf(target)) - var/backstabbed = FALSE - var/def_check = target.getarmor(type = BOMB) - // Backstab bonus - if(check_behind(user, target) && !HAS_TRAIT(target, TRAIT_BACKSTAB_IMMUNE) || boosted_mark) - backstabbed = TRUE - combined_damage += backstab_bonus - playsound(user, backstab_sound, 100, TRUE) //Seriously who spelled it wrong - if(!QDELETED(crusher_damage_effect)) - crusher_damage_effect.total_damage += combined_damage - SEND_SIGNAL(user, COMSIG_LIVING_CRUSHER_DETONATE, target, src, backstabbed) - target.apply_damage(combined_damage, BRUTE, blocked = def_check) + if(mark) + mark.detonate(src, user) /obj/item/kinetic_crusher/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!istype(interacting_with, /obj/item/crusher_trophy)) @@ -260,6 +234,7 @@ SEND_SIGNAL(src, COMSIG_CRUSHER_FIRED_BLAST, target, user, destabilizer) destabilizer.icon = projectile_icon destabilizer.icon_state = projectile_icon_state + destabilizer.detonation_damage = detonation_damage for(var/obj/item/crusher_trophy/attached_trophy as anything in trophies) attached_trophy.on_projectile_fire(destabilizer, user) destabilizer.aim_projectile(target, user, modifiers) @@ -327,6 +302,8 @@ var/boosted = FALSE /// Should this projectile go through allied mobs? var/ignore_allies = FALSE + /// Mark detonation damage + var/detonation_damage = 50 /obj/projectile/destabilizer/Initialize(mapload) . = ..() @@ -365,7 +342,12 @@ if(QDELETED(target)) return ..() var/mob/living/living_target = target - living_target.apply_status_effect(/datum/status_effect/crusher_mark, boosted) + var/datum/status_effect/crusher_mark/crusher_mark = living_target.apply_status_effect(/datum/status_effect/crusher_mark, boosted, used_crusher) + if (!crusher_mark) + return ..() + crusher_mark.detonation_damage = detonation_damage + for(var/obj/item/crusher_trophy/crusher_trophy as anything in used_crusher?.trophies) + crusher_trophy.on_mark_applied(target, firer, crusher_mark) return ..() var/target_turf = get_turf(target) diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm index c2aee5147221..7e183d8e8512 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm @@ -7,14 +7,14 @@ desc = "A strange spike with no usage." icon = 'icons/obj/mining_zones/artefacts.dmi' icon_state = "tail_spike" - /// if it has a bonus effect, this is how much that effect is + /// If it has a bonus effect, this is how much that effect is var/bonus_value = 10 - /// id of the trophy to be sent by the signal + /// ID of the trophy to be sent by the signal var/trophy_id - /// what type of trophies will block this trophy from being added, must be overriden + /// What type of trophies will block this trophy from being added, must be overriden var/denied_type = /obj/item/crusher_trophy - /// what item will drop if you cut it with wildhunter's knife - var/wildhunter_drop = null + /// What items will drop if you cut it with wildhunter's knife + var/list/wildhunter_drops = null /obj/item/crusher_trophy/examine(mob/living/user) . = ..() @@ -32,7 +32,7 @@ to_chat(user, span_warning("You can't seem to attach [src] to [crusher]. Maybe remove a few trophies?")) return FALSE if(!user.transferItemToLoc(src, crusher)) - return + return FALSE crusher.trophies += src to_chat(user, span_notice("You attach [src] to [crusher].")) return TRUE @@ -57,9 +57,13 @@ /obj/item/crusher_trophy/proc/on_projectile_hit_mineral(turf/closed/mineral, mob/living/user) //the target and the user return +/// Does an effect when a mark is applied +/obj/item/crusher_trophy/proc/on_mark_applied(mob/living/target, mob/living/user, datum/status_effect/crusher_mark) + return + /// Does an effect when you hit a mob that is marked via the projectile /// Returns additional damage for detonation -/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user +/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) //the target and the user SHOULD_CALL_PARENT(TRUE) //if we dont have a set id, use the typepath as identifier SEND_SIGNAL(target, COMSIG_MOB_TROPHY_ACTIVATED(trophy_id || type), src, user) diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm index df40bf4f05b3..f0b0b3331f70 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm @@ -10,12 +10,13 @@ denied_type = /obj/item/crusher_trophy/watcher_wing trophy_id = TROPHY_WATCHER bonus_value = 5 - wildhunter_drop = /obj/item/stack/sheet/sinew + wildhunter_drops = list(/obj/item/stack/sheet/sinew = 7) + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bone = SHEET_MATERIAL_AMOUNT * 5) /obj/item/crusher_trophy/watcher_wing/effect_desc() return "mark detonation to prevent certain creatures from using certain attacks for [bonus_value*0.1] second\s" -/obj/item/crusher_trophy/watcher_wing/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/watcher_wing/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(!ishostile(target)) return @@ -28,31 +29,97 @@ hostile_animal.ranged_cooldown = bonus_value + world.time //magmawing watcher -/obj/item/crusher_trophy/blaster_tubes/magma_wing +/obj/item/crusher_trophy/magma_wing name = "magmawing watcher wing" desc = "A still-searing wing from a magmawing watcher. Suitable as a trophy for a kinetic crusher." icon_state = "magma_wing" - gender = NEUTER - bonus_value = 5 - wildhunter_drop = /obj/item/stack/sheet/sinew + denied_type = /obj/item/crusher_trophy/magma_wing + wildhunter_drops = list(/obj/item/stack/sheet/sinew/magmawing = 3) + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 6, /datum/material/bone = SHEET_MATERIAL_AMOUNT * 3) + /// List of mobs we've marked + var/list/mob/living/marked_targets = list() + +/obj/item/crusher_trophy/magma_wing/Destroy(force) + marked_targets.Cut() + return ..() + +/obj/item/crusher_trophy/magma_wing/effect_desc() + return "attacks of marked enemies to cause mark detonation" + +/obj/item/crusher_trophy/magma_wing/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user) + . = ..() + for (var/mob/living/mark_on as anything in marked_targets) + UnregisterSignal(mark_on, list(COMSIG_LIVING_STATUS_REMOVED, COMSIG_HOSTILE_POST_ATTACKINGTARGET, COMSIG_QDELETING)) + marked_targets.Cut() + +/obj/item/crusher_trophy/magma_wing/on_mark_applied(mob/living/target, mob/living/user, datum/status_effect/crusher_mark) + . = ..() + // Shouldn't happen, but just in case + if (marked_targets[target]) + return + marked_targets[target] = TRUE + RegisterSignal(target, COMSIG_LIVING_STATUS_REMOVED, PROC_REF(on_status_removed)) + RegisterSignal(target, COMSIG_HOSTILE_POST_ATTACKINGTARGET, PROC_REF(on_hostile_attacking)) + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_deleted)) + +/obj/item/crusher_trophy/magma_wing/proc/on_status_removed(mob/living/source, datum/status_effect/removed) + SIGNAL_HANDLER + + if (istype(removed, /datum/status_effect/crusher_mark)) + UnregisterSignal(source, list(COMSIG_LIVING_STATUS_REMOVED, COMSIG_HOSTILE_POST_ATTACKINGTARGET, COMSIG_QDELETING)) + marked_targets -= source + +/obj/item/crusher_trophy/magma_wing/proc/on_target_deleted(mob/living/source) + SIGNAL_HANDLER -/obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc() - return "mark detonation to make the next destabilizer shot deal [bonus_value] damage" + UnregisterSignal(source, list(COMSIG_LIVING_STATUS_REMOVED, COMSIG_HOSTILE_POST_ATTACKINGTARGET, COMSIG_QDELETING)) + marked_targets -= source -/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) - if(deadly_shot) - marker.name = "heated [marker.name]" - marker.icon_state = "lava" - marker.damage = bonus_value - deadly_shot = FALSE +/obj/item/crusher_trophy/magma_wing/proc/on_hostile_attacking(mob/living/source, atom/target, result) + SIGNAL_HANDLER + + if (!isliving(target) || !istype(loc, /obj/item/kinetic_crusher)) + return + + var/mob/living/living_target = target + var/datum/status_effect/crusher_mark/crusher_mark = source.has_status_effect(/datum/status_effect/crusher_mark) + var/mob/living/crusher_user = null + var/obj/item/kinetic_crusher/used_crusher = loc + // Count hits on crusher wielder as detonations caused by them + if (living_target.get_active_held_item() == used_crusher) + crusher_user = living_target + if (!isnull(crusher_mark)) + playsound(source, used_crusher.backstab_sound, 100, TRUE) // Give feedback that a detonation has occured + crusher_mark.detonate(used_crusher, crusher_user, melee_hit = FALSE) //icewing watcher -/obj/item/crusher_trophy/watcher_wing/ice_wing +/obj/item/crusher_trophy/ice_wing name = "icewing watcher wing" desc = "A carefully preserved frozen wing from an icewing watcher. Suitable as a trophy for a kinetic crusher." icon_state = "ice_wing" - bonus_value = 8 - wildhunter_drop = /obj/item/stack/sheet/sinew + bonus_value = 2 + denied_type = /obj/item/crusher_trophy/ice_wing + wildhunter_drops = list(/obj/item/stack/sheet/sinew/icewing = 3) + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 6, /datum/material/bone = SHEET_MATERIAL_AMOUNT * 3) + +/obj/item/crusher_trophy/ice_wing/effect_desc() + return "user to backstep [bonus_value] tile\s when detonating a mark" + +/obj/item/crusher_trophy/ice_wing/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) + . = ..() + if (!user) + return + var/step_dir = get_dir(target, user) + for (var/i in 1 to bonus_value) + var/turf/open/behind_user = get_step(user, step_dir) + if (!istype(behind_user) || behind_user.is_blocked_turf(source_atom = user)) + return + // Don't backstep into chasms, lava or fire + if (ischasm(behind_user) || islava(behind_user) || (locate(/obj/effect/hotspot) in behind_user)) + return + // Don't try further moves if you fail once + if (!user.Move(behind_user, step_dir, FALSE, FALSE)) + return //legion /obj/item/crusher_trophy/legion_skull @@ -61,7 +128,8 @@ icon_state = "legion_skull" denied_type = /obj/item/crusher_trophy/legion_skull bonus_value = 3 - wildhunter_drop = /obj/item/organ/monster_core/regenerative_core/legion // if you killed blood drunk you can afford stabilizer potions sooo.... + // No wildhunter drop to prevent refresh cheese + custom_materials = list(/datum/material/bone = SHEET_MATERIAL_AMOUNT * 5) /obj/item/crusher_trophy/legion_skull/effect_desc() return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster" @@ -84,21 +152,18 @@ denied_type = /obj/item/crusher_trophy/goliath_tentacle bonus_value = 2 trophy_id = TROPHY_GOLIATH_TENTACLE - wildhunter_drop = /obj/item/stack/sheet/animalhide/goliath_hide + wildhunter_drops = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) + custom_materials = list(/datum/material/bone = SHEET_MATERIAL_AMOUNT * 8) /// Your missing health is multiplied by this value to find the bonus damage var/missing_health_ratio = 0.1 - /// Amount of health you must lose to gain damage, according to the examine text. Cached so we don't recalculate it every examine. - var/missing_health_desc - -/obj/item/crusher_trophy/goliath_tentacle/Initialize(mapload) - . = ..() - missing_health_desc = 1 / missing_health_ratio / bonus_value /obj/item/crusher_trophy/goliath_tentacle/effect_desc() - return "mark detonation to do [bonus_value] more damage for every [missing_health_desc] health you are missing" + return "mark detonation to do [bonus_value] more damage for every [1 / missing_health_ratio] health you are missing" -/obj/item/crusher_trophy/goliath_tentacle/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/goliath_tentacle/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() + if (!user) + return var/missing_health = user.maxHealth - user.health missing_health *= missing_health_ratio //bonus is active at all times, even if you're above 90 health missing_health *= bonus_value //multiply the remaining amount by bonus_value @@ -109,16 +174,17 @@ /obj/item/crusher_trophy/lobster_claw name = "lobster claw" icon_state = "lobster_claw" - desc = "A lobster claw." + desc = "A lobster claw. Suitable as a trophy for a kinetic crusher." denied_type = /obj/item/crusher_trophy/lobster_claw trophy_id = TROPHY_LOBSTER_CLAW bonus_value = 1 - wildhunter_drop = /obj/item/organ/monster_core/rush_gland + // No wildhunter drop to prevent refresh cheese + custom_materials = list(/datum/material/meat = SHEET_MATERIAL_AMOUNT * 12, /datum/material/bone = SHEET_MATERIAL_AMOUNT * 5) /obj/item/crusher_trophy/lobster_claw/effect_desc() return "mark detonation to briefly rebuke the target for [bonus_value] second[bonus_value > 1 ? "s" : ""]" -/obj/item/crusher_trophy/lobster_claw/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/lobster_claw/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() target.apply_status_effect(/datum/status_effect/rebuked, bonus_value SECONDS) @@ -129,14 +195,14 @@ desc = "A fang from a brimdemon's corpse." denied_type = /obj/item/crusher_trophy/brimdemon_fang trophy_id = TROPHY_BRIMDEMON_FANG - wildhunter_drop = /obj/item/organ/monster_core/brimdust_sac + // No wildhunter drop to prevent refresh cheese /// Cartoon punching vfx var/static/list/comic_phrases = list("BOOM", "BANG", "KABLOW", "KAPOW", "OUCH", "BAM", "KAPOW", "WHAM", "POW", "KABOOM") /obj/item/crusher_trophy/brimdemon_fang/effect_desc() return "mark detonation to create visual and audiosensory effects at the target" -/obj/item/crusher_trophy/brimdemon_fang/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/brimdemon_fang/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() target.loc.balloon_alert_to_viewers("[pick(comic_phrases)]!") playsound(target, 'sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg', 100) @@ -148,7 +214,8 @@ icon_state = "bileworm_spewlet" desc = "A baby bileworm. Suitable as a trophy for a kinetic crusher." denied_type = /obj/item/crusher_trophy/bileworm_spewlet - wildhunter_drop = /obj/item/stack/sheet/animalhide/bileworm + wildhunter_drops = list(/obj/item/stack/sheet/animalhide/bileworm = 3) + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 12) ///item ability that handles the effect var/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet/ability @@ -172,7 +239,7 @@ /obj/item/crusher_trophy/bileworm_spewlet/effect_desc() return "mark detonation launches projectiles in cardinal directions on a 10 second cooldown. Also gives you an AOE when mining minerals" -/obj/item/crusher_trophy/bileworm_spewlet/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/bileworm_spewlet/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() //ability itself handles cooldowns. ability.InterceptClickOn(user, null, target) @@ -238,7 +305,7 @@ /obj/item/crusher_trophy/ice_demon_cube/effect_desc() return "mark detonation to unleash demonic ice clones upon the target" -/obj/item/crusher_trophy/ice_demon_cube/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/ice_demon_cube/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(isnull(target) || !COOLDOWN_FINISHED(src, summon_cooldown)) return @@ -271,7 +338,7 @@ /obj/item/crusher_trophy/wolf_ear/effect_desc() return "mark detonation to gain a slight speed boost temporarily" -/obj/item/crusher_trophy/wolf_ear/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/wolf_ear/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() user.apply_status_effect(/datum/status_effect/speed_boost, 1 SECONDS) @@ -286,7 +353,7 @@ /obj/item/crusher_trophy/bear_paw/effect_desc() return "mark detonation to attack twice if you are below half your life" -/obj/item/crusher_trophy/bear_paw/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/bear_paw/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(user.health / user.maxHealth > 0.5) return @@ -301,7 +368,7 @@ icon_state = "raptor_feather" denied_type = /obj/item/crusher_trophy/raptor_feather trophy_id = TROPHY_RAPTOR_FEATHER - wildhunter_drop = /obj/item/food/meat/slab/chicken + wildhunter_drops = list(/obj/item/food/meat/slab/chicken = 1) /obj/item/crusher_trophy/raptor_feather/effect_desc() return "your shots to go through your allies" diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_megafauna.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_megafauna.dm index 09d15bef6ba2..e91b2b07f515 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_megafauna.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_megafauna.dm @@ -13,7 +13,7 @@ /obj/item/crusher_trophy/miner_eye/effect_desc() return "mark detonation to grant stun immunity and 90% damage reduction for 1 second" -/obj/item/crusher_trophy/miner_eye/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/miner_eye/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() user.apply_status_effect(/datum/status_effect/blooddrunk) @@ -27,7 +27,7 @@ /obj/item/crusher_trophy/tail_spike/effect_desc() return "mark detonation to do [bonus_value] damage to nearby creatures and push them back" -/obj/item/crusher_trophy/tail_spike/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/tail_spike/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() for(var/mob/living/living_target in oview(2, user)) if(user.faction_check_atom(living_target) || living_target.stat == DEAD) @@ -74,11 +74,11 @@ /obj/item/crusher_trophy/demon_claws/on_melee_hit(mob/living/target, mob/living/user) user.heal_ordered_damage(bonus_value * 0.1, damage_heal_order) -/obj/item/crusher_trophy/demon_claws/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/demon_claws/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() user.heal_ordered_damage(bonus_value * 0.4, damage_heal_order) -//colossus +// Colossus, allows user to fire shots during click CD /obj/item/crusher_trophy/blaster_tubes name = "blaster tubes" desc = "The blaster tubes from a colossus's arm. Suitable as a trophy for a kinetic crusher." @@ -87,26 +87,48 @@ denied_type = /obj/item/crusher_trophy/blaster_tubes bonus_value = 15 trophy_id = TROPHY_BLASTER_TUBES - var/deadly_shot = FALSE /obj/item/crusher_trophy/blaster_tubes/effect_desc() - return "mark detonation to make the next destabilizer shot deal [bonus_value] damage but move slower" + return "destabilizer shots to be fire-able freely inbetween swings" -/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) - if(deadly_shot) - marker.name = "deadly [marker.name]" - marker.icon_state = "chronobolt" - marker.damage = bonus_value - marker.speed = 2 - deadly_shot = FALSE +/obj/item/crusher_trophy/blaster_tubes/add_to(obj/item/kinetic_crusher/crusher, mob/living/user) + . = ..() + if (!.) + return + RegisterSignal(crusher, COMSIG_ITEM_EQUIPPED, PROC_REF(on_crusher_equipped)) + RegisterSignal(crusher, COMSIG_ITEM_DROPPED, PROC_REF(on_crusher_dropped)) + if (user.get_slot_by_item(crusher) == ITEM_SLOT_HANDS) + RegisterSignal(user, COMSIG_MOB_CLICKON, PROC_REF(try_crusher_fire)) -/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/blaster_tubes/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user) . = ..() - deadly_shot = TRUE - addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) + UnregisterSignal(crusher, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + if (ismob(crusher.loc)) + UnregisterSignal(crusher.loc, COMSIG_MOB_CLICKON) + +/obj/item/crusher_trophy/blaster_tubes/proc/on_crusher_equipped(obj/item/kinetic_crusher/source, mob/user, slot) + SIGNAL_HANDLER + + if (slot == ITEM_SLOT_HANDS && isliving(user)) + RegisterSignal(user, COMSIG_MOB_CLICKON, PROC_REF(try_crusher_fire)) + +/obj/item/crusher_trophy/blaster_tubes/proc/on_crusher_dropped(obj/item/kinetic_crusher/source, mob/user) + SIGNAL_HANDLER + UnregisterSignal(user, COMSIG_MOB_CLICKON) + +/obj/item/crusher_trophy/blaster_tubes/proc/try_crusher_fire(mob/living/user, atom/target, list/modifiers) + SIGNAL_HANDLER + + // Only trigger on normal RMB when on cooldown + if (user.next_move < world.time || !LAZYACCESS(modifiers, RIGHT_CLICK) || LAZYACCESS(modifiers, SHIFT_CLICK) || LAZYACCESS(modifiers, CTRL_CLICK) || LAZYACCESS(modifiers, ALT_CLICK)) + return + + if (INCAPACITATED_IGNORING(user, INCAPABLE_STASIS) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || user.throw_mode || (!LAZYACCESS(modifiers, "catcher") && target.IsObscured())) + return -/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot() - deadly_shot = FALSE + var/obj/item/kinetic_crusher/crusher = loc + if (istype(crusher) && user.get_active_held_item() == crusher) // istype() just in case, crusher handles wielding/CD in its secondary interact on its own + crusher.interact_with_atom_secondary(target, user, modifiers) // Standard shot recharge delay is 1.5 seconds (swing + shot CDs would be 1.6) so its fine to not have a penalty //hierophant /obj/item/crusher_trophy/vortex_talisman @@ -119,7 +141,7 @@ /obj/item/crusher_trophy/vortex_talisman/effect_desc() return "mark detonation to create a homing hierophant chaser" -/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(isliving(target)) var/obj/effect/temp_visual/hierophant/chaser/chaser = new(get_turf(user), user, target, 3, TRUE) @@ -138,7 +160,7 @@ /obj/item/crusher_trophy/ice_block_talisman/effect_desc() return "mark detonation to freeze a creature in a block of ice for a period, preventing them from moving" -/obj/item/crusher_trophy/ice_block_talisman/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/ice_block_talisman/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() target.apply_status_effect(/datum/status_effect/ice_block_talisman) @@ -181,7 +203,7 @@ /obj/item/crusher_trophy/broodmother_tongue/effect_desc() return "mark detonation to have a [bonus_value]% chance to summon a patch of goliath tentacles at the target's location" -/obj/item/crusher_trophy/broodmother_tongue/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/broodmother_tongue/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(prob(bonus_value) && target.stat != DEAD) new /obj/effect/goliath_tentacle/broodmother/patch(get_turf(target), user) @@ -216,7 +238,7 @@ /obj/item/crusher_trophy/legionnaire_spine/effect_desc() return "mark detonation to have a [bonus_value]% chance to summon a loyal legion skull" -/obj/item/crusher_trophy/legionnaire_spine/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/legionnaire_spine/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() if(!prob(bonus_value) || target.stat == DEAD) return @@ -254,6 +276,6 @@ /obj/item/crusher_trophy/flesh_glob/on_melee_hit(mob/living/target, mob/living/user) user.heal_ordered_damage(bonus_value * 0.2, damage_heal_order) -/obj/item/crusher_trophy/flesh_glob/on_mark_detonation(mob/living/target, mob/living/user) +/obj/item/crusher_trophy/flesh_glob/on_mark_detonation(mob/living/target, mob/living/user, obj/item/kinetic_crusher/pkc) . = ..() user.heal_ordered_damage(bonus_value * 0.5, damage_heal_order) diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 93b0a26a3df8..bbaab539cb7a 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -64,6 +64,7 @@ icon_state = "mining0" range = 4 cooldown = 50 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/t_scanner/adv_mining_scanner/scan() if(current_cooldown <= world.time) diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index d16be7e4b4c1..b237ddc415a3 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -72,6 +72,7 @@ usesound = 'sound/items/weapons/drill.ogg' hitsound = 'sound/items/weapons/drill.ogg' desc = "An electric mining drill for the especially scrawny." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/pickaxe/drill/Initialize(mapload) . = ..() @@ -83,6 +84,7 @@ inhand_icon_state = "diamonddrill" toolspeed = 0.2 desc = "Yours is the drill that will pierce the heavens!" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/pickaxe/drill/jackhammer name = "sonic jackhammer" @@ -92,6 +94,7 @@ usesound = 'sound/items/weapons/sonic_jackhammer.ogg' hitsound = 'sound/items/weapons/sonic_jackhammer.ogg' desc = "Cracks rocks with sonic blasts." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT) /obj/item/pickaxe/improvised name = "improvised pickaxe" @@ -104,7 +107,7 @@ toolspeed = 3 //3 times slower than a normal pickaxe slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*6) //This number used to be insane and I'm just going to save your sanity and not tell you what it was. + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.05, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) //This number used to be insane and I'm just going to save your sanity and not tell you what it was. /obj/item/shovel name = "shovel" @@ -323,7 +326,7 @@ item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW slowdown = 3 attack_speed = 1.2 SECONDS - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.6, /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.6, /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// The factor at which the recoil becomes less. var/recoil_factor = 3 /// Wether we knock down and launch away out enemies when we attack. diff --git a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm index 9c741ae06808..2c047792c8e5 100644 --- a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm +++ b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm @@ -169,6 +169,12 @@ dust_overlay.alpha = stacks * BRIMDUST_ALPHA_PER_STACK dust_overlay.color = COLOR_RED_LIGHT dust_overlay.blend_mode = BLEND_INSET_OVERLAY + if (ishuman(owner)) + var/mob/living/carbon/human/as_human = owner + if (as_human.cached_body_min_x_offset && target_width > ICON_SIZE_X) + dust_overlay.pixel_w = as_human.cached_body_min_x_offset + if (as_human.cached_body_min_y_offset && target_height > ICON_SIZE_Y) + dust_overlay.pixel_z = as_human.cached_body_min_y_offset ADD_KEEP_TOGETHER(owner, REF(src)) owner.add_overlay(dust_overlay) var/obj/effect/holder = owner.add_shared_particles(/particles/brimdust, "brimdust_coating-[owner.base_pixel_w]") diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm index dcd980e71cdd..7223bbd231b4 100644 --- a/code/modules/mining/equipment/resonator.dm +++ b/code/modules/mining/equipment/resonator.dm @@ -12,6 +12,12 @@ force = 15 throwforce = 10 slot_flags = ITEM_SLOT_BELT + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT*2, + /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/uranium =HALF_SHEET_MATERIAL_AMOUNT, + ) /// the mode of the resonator; has three modes: auto (1), manual (2), and matrix (3) var/mode = RESONATOR_MODE_AUTO diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 170baf58a3db..d25333bc516f 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -1,5 +1,3 @@ -#define SHEET_POINT_VALUE 33 - /**********************Prisoners' Console**************************/ /obj/machinery/mineral/labor_claim_console @@ -201,8 +199,8 @@ if (!istype(input, /obj/item/stack/sheet)) return ..() var/obj/item/stack/sheet/sheet = input - if (sheet.manufactured && sheet.gulag_valid) - points += SHEET_POINT_VALUE * sheet.amount + if (sheet.manufactured && sheet.gulag_value) + points += sheet.gulag_value * sheet.amount return ..() /obj/machinery/mineral/stacking_machine/laborstacker/base_item_interaction(mob/living/user, obj/item/weapon, list/modifiers) @@ -245,5 +243,3 @@ vars_and_tooltips_map = list( "PERSON" = "will be replaced with the name of the prisoner." ) - -#undef SHEET_POINT_VALUE diff --git a/code/modules/mining/lavaland/mining_loot/eye_of_god.dm b/code/modules/mining/lavaland/mining_loot/eye_of_god.dm index 02a539154f6b..7951e059238d 100644 --- a/code/modules/mining/lavaland/mining_loot/eye_of_god.dm +++ b/code/modules/mining/lavaland/mining_loot/eye_of_god.dm @@ -87,7 +87,7 @@ living_scanned.add_filter("scan", 2, list("type" = "outline", "color" = COLOR_RED, "size" = 1)) addtimer(CALLBACK(living_scanned, TYPE_PROC_REF(/datum, remove_filter), "scan"), 30 SECONDS) - healthscan(living_owner, living_scanned, 1, TRUE) + healthscan(living_owner, living_scanned, SCANNER_VERBOSE, SCANPOWER_ADVANCED) owner.playsound_local(get_turf(owner), 'sound/effects/magic/smoke.ogg', 50, TRUE) owner.balloon_alert(owner, "[living_scanned] scanned") diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm b/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm index 74d7267e465a..a3ccc742457a 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm @@ -137,7 +137,7 @@ AddComponent(\ /datum/component/butchering, \ speed = 1.5 SECONDS , \ - effectiveness = 110, \ + effectiveness = 125, \ bonus_modifier = 0, \ ) @@ -149,11 +149,17 @@ if(!istype(interacting_with, /obj/item/crusher_trophy)) return NONE var/obj/item/crusher_trophy/trophy = interacting_with - if(isnull(trophy.wildhunter_drop)) + if(!length(trophy.wildhunter_drops)) return NONE balloon_alert(user, "cutting trophy...") if(!do_after(user, 4 SECONDS, trophy)) return ITEM_INTERACT_BLOCKING - new trophy.wildhunter_drop(trophy.drop_location()) + for (var/path, count in trophy.wildhunter_drops) + if (ispath(path, /obj/item/stack)) + new path(trophy.drop_location(), count) + continue + + for (var/i in 1 to count) + new path(trophy.drop_location()) qdel(trophy) return ITEM_INTERACT_SUCCESS diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm index 38f515685440..fe03791baed4 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm @@ -106,7 +106,7 @@ if (blink?.current_charges) . += "hierophant_ready" -/obj/item/hierophant_club/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/hierophant_club/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if (blink?.current_charges) . += "hierophant_ready" diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 87e95469de61..fab53fbe93f3 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -76,7 +76,7 @@ /obj/machinery/mineral/processing_unit_console/Initialize(mapload) . = ..() - processing_machine = locate(/obj/machinery/mineral/processing_unit) in view(2, src) + processing_machine = locate(/obj/machinery/mineral/processing_unit) in range(2, src) if (processing_machine) processing_machine.mineral_machine = src else diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 8bffeaed85c1..c064b755fd37 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -22,7 +22,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) prepare_huds() if(length(CONFIG_GET(keyed_list/cross_server))) - add_verb(src, /mob/dead/proc/server_hop) + ASSIGN_GAME_VERB(src, /mob/dead, server_hop) set_focus(src) become_hearing_sensitive() log_mob_tag("TAG: [tag] CREATED: [key_name(src)] \[[src.type]\]") @@ -33,10 +33,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) #define SERVER_HOPPER_TRAIT "server_hopper" -/mob/dead/proc/server_hop() - set category = "OOC" - set name = "Server Hop" - set desc= "Jump to the other server" +GAME_VERB_PROC_DESC(/mob/dead, server_hop, "Server Hop", "Jump to the other server", "OOC") if(HAS_TRAIT(src, TRAIT_NO_TRANSFORM)) // in case the round is ending and a cinematic is already playing we don't wanna clash with that (yes i know) return var/list/our_id = CONFIG_GET(string/cross_comms_name) @@ -44,7 +41,7 @@ INITIALIZE_IMMEDIATE(/mob/dead) var/pick switch(length(csa)) if(0) - remove_verb(src, /mob/dead/proc/server_hop) + UNASSIGN_GAME_VERB(src, /mob/dead, server_hop) to_chat(src, span_notice("Server Hop has been disabled.")) if(1) pick = csa[1] diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index ed32f7256ca4..1a7851e1ef3b 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -34,7 +34,7 @@ . = ..() GLOB.new_player_list += src - add_verb(src, /mob/dead/new_player/proc/reset_menu_hud) + ASSIGN_GAME_VERB(src, /mob/dead/new_player, reset_menu_hud) /mob/dead/new_player/Destroy() GLOB.new_player_list -= src @@ -213,7 +213,7 @@ var/atom/destination = mind.assigned_role.get_latejoin_spawn_point() if(!destination) CRASH("Failed to find a latejoin spawn point.") - var/mob/living/character = create_character(destination) + var/mob/living/character = create_character(destination, forced_slot = client.prefs.default_slot) if(!character) CRASH("Failed to create a character for latejoin.") transfer_character() @@ -288,10 +288,20 @@ if(!employmentCabinet.virgin) employmentCabinet.addFile(employee) -/// Creates, assigns and returns the new_character to spawn as. Assumes a valid mind.assigned_role exists. -/mob/dead/new_player/proc/create_character(atom/destination) +/** + * Creates, assigns and returns the new_character to spawn as. + * Assumes a valid mind.assigned_role exists. + * + * * destination - where to spawn the character + * * forced_slot - if provided, will load whatever character is in that slot instead of their active slot + */ +/mob/dead/new_player/proc/create_character(atom/destination, forced_slot) spawning = TRUE + var/spawned_slot = isnum(forced_slot) ? forced_slot : LAZYACCESS(client.prefs.job_assigned_profiles, mind.assigned_role.title) + if(isnum(spawned_slot) && client.prefs.default_slot != spawned_slot) + client.prefs.load_character(spawned_slot) // if this fails, we will simply load their current slot anyways + mind.active = FALSE //we wish to transfer the key manually var/mob/living/spawning_mob = mind.assigned_role.get_spawn_mob(client, destination) if(QDELETED(src) || !HAS_CONNECTED_PLAYER(src)) @@ -378,13 +388,11 @@ I.ui_interact(src) // Add verb for re-opening the interview panel, fixing chat and re-init the verbs for the stat panel - add_verb(src, /mob/dead/new_player/proc/open_interview) + ASSIGN_GAME_VERB(src, /mob/dead/new_player, open_interview) add_verb(client, /client/verb/fix_tgui_panel) ///Resets the Lobby Menu HUD, recreating and reassigning it to the new player -/mob/dead/new_player/proc/reset_menu_hud() - set name = "Reset Lobby Menu HUD" - set category = "OOC" +GAME_VERB_PROC(/mob/dead/new_player, reset_menu_hud, "Reset Lobby Menu HUD", "OOC") var/mob/dead/new_player/new_player = usr if(!COOLDOWN_FINISHED(new_player, reset_hud_cooldown)) to_chat(new_player, span_warning("You must wait [DisplayTimeText(COOLDOWN_TIMELEFT(new_player, reset_hud_cooldown))] before resetting the Lobby Menu HUD again!")) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index bf5178969ea9..31c95b6c94e5 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -86,10 +86,10 @@ var/datum/job/preview_job var/highest_pref = 0 - for(var/job in job_preferences) - if(job_preferences[job] > highest_pref) + for(var/job, priority in job_preferences) + if(priority > highest_pref) preview_job = SSjob.get_job(job) - highest_pref = job_preferences[job] + highest_pref = priority return preview_job @@ -126,4 +126,6 @@ continue mannequin.add_quirk(quirk_type, parent, announce = FALSE) + // Height is applied universally once to save on filters + mannequin.apply_height(mannequin, ENTIRE_BODY) return mannequin.appearance diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index a8b9e7bd24eb..00bce865135e 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -306,10 +306,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) /* This is the proc mobs get to turn into a ghost. Forked from ghostize due to compatibility issues. */ -/mob/living/verb/ghost() - set category = "OOC" - set name = "Ghost" - set desc = "Relinquish your life and enter the land of the dead." +GAME_VERB_DESC(/mob/living, ghost, "Ghost", "Relinquish your life and enter the land of the dead.", "OOC") if(stat != CONSCIOUS && stat != DEAD) succumb() @@ -323,10 +320,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ghostize(FALSE) // FALSE parameter is so we can never re-enter our body. U ded. return TRUE -/mob/eye/verb/ghost() - set category = "OOC" - set name = "Ghost" - set desc = "Relinquish your life and enter the land of the dead." +GAME_VERB_DESC(/mob/eye, ghost, "Ghost", "Relinquish your life and enter the land of the dead.", "OOC") var/response = tgui_alert(usr, "Are you sure you want to ghost? If you ghost whilst still alive you cannot re-enter your body!", "Confirm Ghost Observe", list("Ghost", "Stay in Body")) if(response != "Ghost") @@ -368,8 +362,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(new_area != ambience_tracked_area) update_ambience_area(new_area) -/mob/dead/observer/verb/reenter_corpse() - set name = "Re-enter Corpse" +GAME_VERB(/mob/dead/observer, reenter_corpse, "Re-enter Corpse", null) if(!client) return @@ -390,8 +383,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp mind.current.client.init_verbs() return TRUE -/mob/dead/observer/verb/do_not_resuscitate() - set name = "Do Not Resuscitate" +GAME_VERB(/mob/dead/observer, do_not_resuscitate, "Do Not Resuscitate", null) if(!can_reenter_corpse) to_chat(usr, span_warning("You're already stuck out of your body!")) @@ -445,8 +437,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(sound) SEND_SOUND(src, sound(sound)) -/mob/dead/observer/verb/dead_tele() - set name = "Teleport" +GAME_VERB(/mob/dead/observer, dead_tele, "Teleport", null) if(!isobserver(usr)) to_chat(usr, span_warning("Not when you're not dead!")) @@ -473,13 +464,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp usr.abstract_move(pick(L)) -/mob/dead/observer/verb/follow() - set name = "Orbit" +GAME_VERB(/mob/dead/observer, follow, "Orbit", null) GLOB.orbit_menu.show(src) -/mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak - set name = "Jump to Mob" +GAME_VERB(/mob/dead/observer, jumptomob, "Jump to Mob", null) //Moves the ghost instead of just changing the ghosts's eye -Nodrak if(!isobserver(usr)) //Make sure they're an observer! return @@ -507,8 +496,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(source_mob, span_danger("This mob is not located in the game world.")) -/mob/dead/observer/verb/change_view_range() - set name = "View Range" +GAME_VERB(/mob/dead/observer, change_view_range, "View Range", null) if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) to_chat(usr, span_notice("That verb is currently globally disabled.")) @@ -525,15 +513,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else client.view_size.resetToDefault() -/mob/dead/observer/verb/toggle_ghostsee() - set name = "Toggle Ghost Vision" +GAME_VERB(/mob/dead/observer, toggle_ghostsee, "Toggle Ghost Vision", null) toggle_ghost_hud_flag(GHOST_VISION) update_sight() to_chat(usr, span_boldnotice("You [(ghost_hud_flags & GHOST_VISION) ? "now" : "no longer"] have ghost vision.")) -/mob/dead/observer/verb/toggle_darkness() - set name = "Toggle Darkness" +GAME_VERB(/mob/dead/observer, toggle_darkness, "Toggle Darkness", null) switch(lighting_cutoff) if (LIGHTING_CUTOFF_VISIBLE) @@ -547,13 +533,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp update_sight() -/mob/dead/observer/verb/view_manifest() - set name = "View Crew Manifest" +GAME_VERB(/mob/dead/observer, view_manifest, "View Crew Manifest", null) GLOB.manifest.ui_interact(src) -/mob/dead/observer/verb/observe() - set name = "Observe" +GAME_VERB(/mob/dead/observer, observe, "Observe", null) if(!isobserver(usr) || HAS_TRAIT(src, TRAIT_NO_OBSERVE)) //Make sure they're an observer! return @@ -582,8 +566,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp do_observe(chosen_target) -/mob/dead/observer/verb/tray_view() - set name = "T-ray scan" +GAME_VERB(/mob/dead/observer, tray_view, "T-ray scan", null) if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) to_chat(usr, span_notice("That verb is currently globally disabled.")) @@ -591,8 +574,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp t_ray_scan(src) -/mob/dead/observer/verb/toggle_data_huds() - set name = "Toggle Sec/Med/Diag HUD" +GAME_VERB(/mob/dead/observer, toggle_data_huds, "Toggle Sec/Med/Diag HUD", null) toggle_ghost_hud_flag(GHOST_DATA_HUDS) if(ghost_hud_flags & GHOST_DATA_HUDS) @@ -600,8 +582,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(src, span_notice("Data HUDs disabled.")) -/mob/dead/observer/verb/toggle_health_scan() - set name = "Toggle Health Scan" +GAME_VERB(/mob/dead/observer, toggle_health_scan, "Toggle Health Scan", null) toggle_ghost_hud_flag(GHOST_HEALTH) if(ghost_hud_flags & GHOST_HEALTH) @@ -609,8 +590,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(src, span_notice("Health scan disabled.")) -/mob/dead/observer/verb/toggle_chem_scan() - set name = "Toggle Chem Scan" +GAME_VERB(/mob/dead/observer, toggle_chem_scan, "Toggle Chem Scan", null) toggle_ghost_hud_flag(GHOST_CHEM) if(ghost_hud_flags & GHOST_CHEM) @@ -618,8 +598,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(src, span_notice("Chem scan disabled.")) -/mob/dead/observer/verb/toggle_gas_scan() - set name = "Toggle Gas Scan" +GAME_VERB(/mob/dead/observer, toggle_gas_scan, "Toggle Gas Scan", null) toggle_ghost_hud_flag(GHOST_GAS) if(ghost_hud_flags & GHOST_GAS) @@ -627,8 +606,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else to_chat(src, span_notice("Gas scan disabled.")) -/mob/dead/observer/verb/restore_ghost_appearance() - set name = "Restore Ghost Character" +GAME_VERB(/mob/dead/observer, restore_ghost_appearance, "Restore Ghost Character", null) set_ghost_appearance() if(client?.prefs) @@ -688,9 +666,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if (!isnull(client) && !isnull(client.eye)) reset_perspective(null) -/mob/dead/observer/verb/add_view_range(input as num) - set name = "Add View Range" - set hidden = TRUE +GAME_VERB_HIDDEN(/mob/dead/observer, add_view_range, "Add View Range", input as num) if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) to_chat(usr, span_notice("That verb is currently globally disabled.")) @@ -989,15 +965,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(G, message) GLOB.observer_default_invisibility = amount -/mob/dead/observer/proc/open_spawners_menu() - set name = "Spawners Menu" +GAME_VERB_PROC(/mob/dead/observer, open_spawners_menu, "Spawners Menu", null) if(!spawners_menu) spawners_menu = new(src) spawners_menu.ui_interact(src) -/mob/dead/observer/proc/open_minigames_menu() - set name = "Minigames Menu" +GAME_VERB_PROC(/mob/dead/observer, open_minigames_menu, "Minigames Menu", null) if(!client) return if(!isobserver(src)) diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm index 86c277f2fb57..116241c4ec9a 100644 --- a/code/modules/mob/dead/observer/observer_say.dm +++ b/code/modules/mob/dead/observer/observer_say.dm @@ -82,4 +82,4 @@ to_chat(src, html = "[link] [message]", avoid_highlighting = speaker == src) - return TRUE + return HEAR_HEARD | HEAR_UNDERSTOOD diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index b600c291214d..5c643461b159 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -302,7 +302,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) /mob/eye, /mob/living/basic/boss, /mob/living/basic/regal_rat, - /mob/living/simple_animal/bot, + /mob/living/basic/bot, /mob/living/simple_animal/hostile/megafauna, )) if(!is_type_in_typecache(potential_mob_poi, mob_allowed_typecache) && !potential_mob_poi.GetComponent(/datum/component/deadchat_control)) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5fd9172e1607..d61dcd47c5ee 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -644,9 +644,7 @@ qdel(item) return FALSE -/mob/verb/quick_equip() - set name = "quick-equip" - set hidden = TRUE +GAME_VERB_HIDDEN(/mob, quick_equip, "quick-equip") DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(execute_quick_equip))) diff --git a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm index 703fd0d4d1de..27208c1ae79b 100644 --- a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm +++ b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm @@ -54,7 +54,7 @@ /mob/living/basic/blob_minion/blobbernaut/death(gibbed) flick("[icon_state]_death", src) playsound(src, 'sound/mobs/non-humanoids/blobmob/blobbernaut_death.ogg', 100, TRUE) - update_overlays() + update_appearance(UPDATE_OVERLAYS) return ..() /mob/living/basic/blob_minion/blobbernaut/create_mob_hud() diff --git a/code/modules/mob/living/basic/boss/blood_drunk_miner/_blood_drunk_miner.dm b/code/modules/mob/living/basic/boss/blood_drunk_miner/_blood_drunk_miner.dm index 0e9e734a21de..a251db94200a 100644 --- a/code/modules/mob/living/basic/boss/blood_drunk_miner/_blood_drunk_miner.dm +++ b/code/modules/mob/living/basic/boss/blood_drunk_miner/_blood_drunk_miner.dm @@ -86,6 +86,9 @@ Difficulty: Medium QDEL_NULL(miner_saw) return ..() +/mob/living/basic/boss/blood_drunk_miner/get_hud_x_offset() + return 0 + /// Returns a list of innate actions for the blood-drunk miner. /mob/living/basic/boss/blood_drunk_miner/proc/get_innate_actions() var/list/innate_abilities = list( diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm index 15d983b8745c..f7962d9b8687 100644 --- a/code/modules/mob/living/basic/bots/_bots.dm +++ b/code/modules/mob/living/basic/bots/_bots.dm @@ -196,7 +196,7 @@ GLOBAL_LIST_INIT(command_strings, list( /mob/living/basic/bot/proc/get_emagged_message() return get_policy(ROLE_EMAGGED_BOT) || "You are a malfunctioning bot! Disrupt everyone and cause chaos!" -/mob/living/basic/bot/proc/turn_on() +/mob/living/basic/bot/proc/turn_on(mob/user) if(stat == DEAD) return FALSE set_mode_flags(bot_mode_flags | BOT_MODE_ON) diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm index 4d26f2858384..24ec3d55e5ed 100644 --- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm +++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm @@ -8,7 +8,7 @@ health = 25 maxHealth = 25 light_color = "#99ccff" - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) req_one_access = list(ACCESS_ROBOTICS, ACCESS_JANITOR) radio_key = /obj/item/encryptionkey/headset_service diff --git a/code/modules/mob/living/basic/bots/ed209/ed209.dm b/code/modules/mob/living/basic/bots/ed209/ed209.dm index 83373e25a82d..15ae317a63eb 100644 --- a/code/modules/mob/living/basic/bots/ed209/ed209.dm +++ b/code/modules/mob/living/basic/bots/ed209/ed209.dm @@ -14,10 +14,7 @@ bot_type = ADVANCED_SEC_BOT hackables = "combat inhibitors" - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.8, - /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.1, - ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.1) ///sound of the projectiles we shoot var/projectile_sound = 'sound/items/weapons/laser.ogg' diff --git a/code/modules/mob/living/basic/bots/firebot/firebot.dm b/code/modules/mob/living/basic/bots/firebot/firebot.dm index b49aa011bbbf..049bd660e2ea 100644 --- a/code/modules/mob/living/basic/bots/firebot/firebot.dm +++ b/code/modules/mob/living/basic/bots/firebot/firebot.dm @@ -7,7 +7,7 @@ icon_state = "firebot1" light_color = "#8cffc9" light_power = 0.8 - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.9, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION) radio_key = /obj/item/encryptionkey/headset_eng diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm index 5daa8e5b25b7..fbe91b7cc4de 100644 --- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm +++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm @@ -4,7 +4,7 @@ icon_state = "honkbot" base_icon_state = "honkbot" damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, STAMINA = 0, OXY = 0) - custom_materials = list(/datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) req_access = list(ACCESS_ROBOTICS, ACCESS_THEATRE, ACCESS_JANITOR) radio_key = /obj/item/encryptionkey/headset_service ai_controller = /datum/ai_controller/basic_controller/bot/honkbot diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm index 3e6a22b0c6d8..2dfb4c2fed0a 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm @@ -14,7 +14,7 @@ pass_flags = PASSMOB | PASSFLAPS status_flags = (CANPUSH | CANSTUN) ai_controller = /datum/ai_controller/basic_controller/bot/medbot - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5) req_one_access = list(ACCESS_ROBOTICS, ACCESS_MEDICAL) radio_key = /obj/item/encryptionkey/headset_med @@ -468,6 +468,9 @@ /mob/living/basic/bot/medbot/nukie/Initialize(mapload, new_skin) . = ..() + var/datum/action/minimap/nuclear/tacmap_action = new + tacmap_action.Grant(src) + add_minimap_blip(src, MINIMAP_NUKEOP_BLIP, "mediborg") RegisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_DISARMED, PROC_REF(nuke_disarm)) RegisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_ARMED, PROC_REF(nuke_arm)) RegisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_DETONATING, PROC_REF(nuke_detonate)) diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot.dm new file mode 100644 index 000000000000..55d5632e5e18 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot.dm @@ -0,0 +1,193 @@ +/mob/living/basic/bot/mulebot + name = "\improper MULEbot" + desc = "A Multiple Utility Load Effector bot." + icon = 'icons/mob/silicon/aibots.dmi' + icon_state = "mulebot0" + base_icon_state = "mulebot" + + light_color = "#ffcc99" + light_power = 0.8 + + health = 50 + maxHealth = 50 + + damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, STAMINA = 0, OXY = 0) + density = TRUE + mob_size = MOB_SIZE_LARGE + move_resist = MOVE_FORCE_STRONG + animate_movement = SLIDE_STEPS + speed = 3 + + combat_mode = TRUE + + buckle_lying = 0 + buckle_prevents_pull = TRUE // No pulling loaded shit + + bot_mode_flags = ~BOT_MODE_ROUNDSTART_POSSESSION + req_one_access = list(ACCESS_ROBOTICS, ACCESS_CARGO) + radio_key = /obj/item/encryptionkey/headset_cargo + radio_channel = RADIO_CHANNEL_SUPPLY + pass_flags = PASSFLAPS + bot_type = MULE_BOT + + additional_access = /datum/id_trim/job/cargo_technician + path_image_color = "#7F5200" + hud_type = /datum/hud/living/mulebot + + hackables = "obstacle detection circuits" + possessed_message = "You are a MULEbot! Do your best to make sure that packages get to their destination!" + ai_controller = /datum/ai_controller/basic_controller/bot/mulebot + + /// unique identifier in case there are multiple mulebots. + var/id + + /// what we're transporting + var/atom/movable/load + /// who's riding us + var/mob/living/passenger + + ///flags of mulebot mode + var/mulebot_delivery_flags = MULEBOT_RETURN_MODE | MULEBOT_AUTO_PICKUP_MODE | MULEBOT_REPORT_DELIVERY_MODE + + ///Internal Powercell + var/obj/item/stock_parts/power_store/cell + ///How much power we use when we move. + var/cell_move_power_usage = 0.0005 * STANDARD_CELL_CHARGE + ///The amount of steps we should take until we rest for a time. + var/num_steps = 0 + + ///The chance to be deleted and replaced by a different mule + var/replacement_chance = 0.666 + ///home destination, only used by mappers. + var/home_destination = "" + +/mob/living/basic/bot/mulebot/Initialize(mapload) + . = ..() + + if(prob(replacement_chance) && mapload) + new /mob/living/basic/bot/mulebot/paranormal(loc) + return INITIALIZE_HINT_QDEL + + set_wires(new /datum/wires/mulebot(src)) + var/obj/item/stock_parts/power_store/cell/upgraded/new_cell = new(src) + assign_cell(new_cell) + ai_controller.set_blackboard_key(BB_MULEBOT_HOME_BEACON, "") + AddElement(/datum/element/ridable, /datum/component/riding/creature/mulebot) + ADD_TRAIT(src, TRAIT_NOMOBSWAP, INNATE_TRAIT) + add_traits(list(TRAIT_NOMOBSWAP, TRAIT_COMBAT_MODE_LOCK), INNATE_TRAIT) + RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(on_pre_move)) + + set_id(suffix || assign_random_name()) + suffix = null + if(name == "\improper MULEbot") + name = "\improper MULEbot [id]" + set_home(get_turf(src)) + ai_controller.update_able_to_run() + update_appearance() + +/mob/living/basic/bot/mulebot/Destroy() + UnregisterSignal(src, COMSIG_MOVABLE_PRE_MOVE) + unload() + QDEL_NULL(cell) + return ..() + +/mob/living/basic/bot/mulebot/proc/assign_cell(atom/new_cell) + cell = new_cell + var/atom/movable/screen/mob_charge/charge_hud = hud_used?.screen_objects[HUD_MULEBOT_CHARGE] + charge_hud?.update_battery_overlay(new_cell) + charge_hud?.calculate_charge() + + +/mob/living/basic/bot/mulebot/attack_hand(mob/living/carbon/human/user, list/modifiers) + if(bot_access_flags & BOT_COVER_MAINTS_OPEN && !HAS_AI_ACCESS(user)) + wires.interact(user) + return + if(wires.is_cut(WIRE_RX) && HAS_AI_ACCESS(user)) + return + + return ..() + +/mob/living/basic/bot/mulebot/examine(mob/user) + . = ..() + if(bot_access_flags & BOT_COVER_MAINTS_OPEN) + if(cell) + . += span_notice("It has \a [cell] installed.") + . += span_info("You can use a crowbar to remove it.") + else + . += span_notice("It has an empty compartment where a power cell can be installed.") + if(load) //observer check is so we don't show the name of the ghost that's sitting on it to prevent metagaming who's ded. + . += span_notice("\A [isobserver(load) ? "ghostly figure" : load] is on its load platform.") + +/mob/living/basic/bot/mulebot/get_cell() + return cell + +/mob/living/basic/bot/mulebot/melee_attack(atom/target, list/modifiers, ignore_cooldown = FALSE) + if(!can_unarmed_attack()) + return + if(isturf(target) && isturf(loc) && loc.Adjacent(target) && load) + unload(get_dir(loc, target)) + else + return ..() + +/mob/living/basic/bot/mulebot/turn_on(mob/user) + if(bot_access_flags & BOT_COVER_MAINTS_OPEN) + if(user) + to_chat(user, span_warning("[src]'s maintenance panel is open!")) + return FALSE + if(!has_power()) + if(user) + to_chat(user, span_warning("[src] has no power!")) + return FALSE + return ..() + +/mob/living/basic/bot/mulebot/update_icon_state() //if you change the icon_state names, please make sure to update /datum/wires/mulebot/on_pulse() as well. <3 + . = ..() + icon_state = "[base_icon_state][(bot_mode_flags & BOT_MODE_ON) ? wires?.is_cut(WIRE_AVOIDANCE) : "0"]" + +/mob/living/basic/bot/mulebot/update_overlays() + . = ..() + if(bot_access_flags & BOT_COVER_MAINTS_OPEN) + . += "[base_icon_state]-hatch" + if(isnull(load) || ismob(load)) //mob offsets and such are handled by the riding component / buckling + return + var/mutable_appearance/load_overlay = mutable_appearance(load.icon, load.icon_state, layer + 0.01) + load_overlay.pixel_y = initial(load.pixel_y) + 11 + . += load_overlay + +/mob/living/basic/bot/mulebot/proc/handle_buzzing(datum/move_loop/has_target/jps/frustrations/source, frustration_counter) + SIGNAL_HANDLER + + update_bot_mode(new_mode = BOT_BLOCKED) + var/buzz_mode = frustration_counter >= source.maximum_frustrations ? MULEBOT_MOOD_ANNOYED : MULEBOT_MOOD_SIGH + buzz(buzz_mode) + +/mob/living/basic/bot/mulebot/handle_loop_movement(atom/movable/source, atom/oldloc, dir, forced) //incase we start moving again after being previously blocked, update our mode + . = ..() + if(mode != BOT_BLOCKED) + return + var/obj/machinery/navbeacon/beacon = ai_controller.current_movement_target + if(!istype(beacon)) + return + var/intended_mode = beacon.location == ai_controller.blackboard[BB_MULEBOT_HOME_BEACON] ? BOT_GO_HOME : BOT_DELIVER + update_bot_mode(new_mode = intended_mode) + +///Noises that mulebots make +/mob/living/basic/bot/mulebot/proc/buzz(type) + switch(type) + if(MULEBOT_MOOD_SIGH) + audible_message(span_hear("[src] makes a sighing buzz.")) + playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE) + if(MULEBOT_MOOD_ANNOYED) + audible_message(span_hear("[src] makes an annoyed buzzing sound.")) + playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE) + if(MULEBOT_MOOD_DELIGHT) + audible_message(span_hear("[src] makes a delighted ping!")) + playsound(src, 'sound/machines/ping.ogg', 50, FALSE) + if(MULEBOT_MOOD_CHIME) + audible_message(span_hear("[src] makes a chiming sound!")) + playsound(src, 'sound/machines/chime.ogg', 50, FALSE) + flick("[base_icon_state]1", src) + +/// returns true if the bot is fully powered. +/mob/living/basic/bot/mulebot/proc/has_power() + return cell && cell.charge > 0 && (!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_ai.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_ai.dm new file mode 100644 index 000000000000..7898ced148ce --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_ai.dm @@ -0,0 +1,145 @@ +/datum/ai_controller/basic_controller/bot/mulebot + blackboard = list( + BB_SALUTE_MESSAGES = list( + "blinks its light in appreciation towards", + ) + ) + ai_movement = /datum/ai_movement/jps/bot/mulebot + max_target_distance = AI_MULEBOT_PATH_LENGTH + planning_subtrees = list( + /datum/ai_planning_subtree/respond_to_summon, + /datum/ai_planning_subtree/salute_authority, + /datum/ai_planning_subtree/attempt_delivery, + /datum/ai_planning_subtree/find_delivery_beacon, + ) + reset_keys = list( + BB_BOT_SUMMON_TARGET, + BB_MULEBOT_DESTINATION_BEACON, + BB_MULEBOT_TRAVEL_TARGET, + ) + +/datum/ai_controller/basic_controller/bot/mulebot/get_able_to_run() + var/mob/living/basic/bot/mulebot/bot_pawn = pawn + if(!bot_pawn.has_power()) + return AI_UNABLE_TO_RUN + return ..() + +/datum/ai_controller/basic_controller/bot/mulebot/setup_able_to_run() + . = ..() + var/mob/living/basic/bot/my_bot = pawn + var/static/list/wire_signals = list( + COMSIG_MEND_WIRE(WIRE_POWER1), //this framework is insane + COMSIG_MEND_WIRE(WIRE_POWER2), + COMSIG_CUT_WIRE(WIRE_POWER1), + COMSIG_CUT_WIRE(WIRE_POWER2), + ) + RegisterSignals(my_bot.wires, wire_signals, PROC_REF(update_able_to_run)) + var/static/list/content_signals = list( + COMSIG_ATOM_ENTERED, + COMSIG_ATOM_EXITED, + ) + RegisterSignals(my_bot, content_signals, PROC_REF(update_able_to_run)) + +/datum/ai_planning_subtree/find_delivery_beacon + ///what behavior do we use to seek beacons + var/find_beacon_behaviour = /datum/ai_behavior/find_delivery_beacon + +/datum/ai_planning_subtree/find_delivery_beacon/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/mob/living/basic/bot/mulebot/bot_pawn = controller.pawn + if(bot_pawn.wires.is_cut(WIRE_BEACON)) + return + + if(!controller.blackboard_key_exists(BB_MULEBOT_TRAVEL_TARGET)) + controller.queue_behavior(find_beacon_behaviour, BB_MULEBOT_TRAVEL_TARGET) + +/datum/ai_behavior/find_delivery_beacon + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/find_delivery_beacon/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + var/mob/living/basic/bot/mulebot/bot_pawn = controller.pawn + var/atom/delivery_beacon + + var/beacon_tag = null + + switch(bot_pawn.mode) + if(BOT_DELIVER) + beacon_tag = controller.blackboard[BB_MULEBOT_DESTINATION_BEACON] + if(BOT_GO_HOME) + beacon_tag = controller.blackboard[BB_MULEBOT_HOME_BEACON] + else + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + + for(var/obj/machinery/navbeacon/beacon as anything in GLOB.deliverybeacons) + if(beacon.location == beacon_tag) + delivery_beacon = beacon + break + + if(isnull(delivery_beacon)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + + controller.set_blackboard_key(BB_MULEBOT_TRAVEL_TARGET, delivery_beacon) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + +/datum/ai_behavior/travel_towards/delivery_beacon + new_movement_type = /datum/ai_movement/jps/bot/mulebot + +/datum/ai_planning_subtree/attempt_delivery + ///behavior we use to unload crates + var/delivery_behaviour = /datum/ai_behavior/handle_delivery + +/datum/ai_planning_subtree/attempt_delivery/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if(!controller.blackboard_key_exists(BB_MULEBOT_TRAVEL_TARGET)) + return + + controller.queue_behavior(delivery_behaviour, BB_MULEBOT_TRAVEL_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/handle_delivery + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH + +/datum/ai_behavior/handle_delivery/setup(datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/handle_delivery/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + var/obj/machinery/navbeacon/beacon = controller.blackboard[target_key] + var/mob/living/basic/bot/mulebot/bot_pawn = controller.pawn + + var/load_direction = beacon.codes[NAVBEACON_DELIVERY_DIRECTION] // this will be the load/unload dir + if(!load_direction) + load_direction = beacon.dir // fallback + + load_direction = text2num(load_direction) + + if(bot_pawn.load) + if(bot_pawn.mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE) + bot_pawn.radio_channel = RADIO_CHANNEL_SUPPLY //Supply channel + bot_pawn.buzz(MULEBOT_MOOD_CHIME) + bot_pawn.speak("Destination [RUNECHAT_BOLD("[beacon.location]")] reached. Unloading [bot_pawn.load].", bot_pawn.radio_channel) + bot_pawn.unload(load_direction) + + else + if(bot_pawn.mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE) // find a crate + var/atom/movable/atom_to_pick_up + if(bot_pawn.wires.is_cut(WIRE_LOADCHECK)) // if hacked, load first unanchored thing we find + for(var/atom/movable/target_atom in get_step(bot_pawn.loc, load_direction)) + if(!target_atom.anchored) + atom_to_pick_up = target_atom + break + else // otherwise, look for crates only + atom_to_pick_up = locate(/obj/structure/closet/crate) in get_step(bot_pawn.loc, load_direction) + if(atom_to_pick_up?.Adjacent(bot_pawn)) + bot_pawn.load(atom_to_pick_up) + if(bot_pawn.mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE) + bot_pawn.speak("Now loading [bot_pawn.load] at [RUNECHAT_BOLD("[get_area_name(bot_pawn)]")].", bot_pawn.radio_channel) + + if((bot_pawn.mulebot_delivery_flags & MULEBOT_RETURN_MODE) && controller.blackboard[BB_MULEBOT_HOME_BEACON] && controller.blackboard[BB_MULEBOT_HOME_BEACON] != beacon.location) + bot_pawn.update_bot_mode(new_mode = BOT_GO_HOME) + controller.clear_blackboard_key(BB_MULEBOT_TRAVEL_TARGET) + else + bot_pawn.bot_reset() // otherwise go idle + + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_control.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_control.dm new file mode 100644 index 000000000000..d7bd93be22c4 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_control.dm @@ -0,0 +1,116 @@ +/mob/living/basic/bot/mulebot/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Mule", name) + ui.open() + +/mob/living/basic/bot/mulebot/ui_data(mob/user) + var/list/data = list() + data["powerStatus"] = bot_mode_flags & BOT_MODE_ON + data["locked"] = bot_access_flags & BOT_COVER_LOCKED + data["siliconUser"] = HAS_SILICON_ACCESS(user) + data["mode"] = mode ? "[mode]" : "Ready" + data["modeStatus"] = "" + switch(mode) + if(BOT_IDLE, BOT_DELIVER, BOT_GO_HOME) + data["modeStatus"] = "good" + if(BOT_BLOCKED, BOT_NAV, BOT_WAIT_FOR_NAV) + data["modeStatus"] = "average" + if(BOT_NO_ROUTE) + data["modeStatus"] = "bad" + data["load"] = get_load_name() + data["destination"] = ai_controller.blackboard[BB_MULEBOT_DESTINATION_BEACON] + data["homeDestination"] = ai_controller.blackboard[BB_MULEBOT_HOME_BEACON] + data["destinationsList"] = GLOB.deliverybeacontags + data["cellPercent"] = cell?.percent() + data["autoReturn"] = mulebot_delivery_flags & MULEBOT_RETURN_MODE + data["autoPickup"] = mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE + data["reportDelivery"] = mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE + data["botId"] = id + data["allowPossession"] = bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT + data["possessionEnabled"] = can_be_possessed + data["paiInserted"] = !!paicard + return data + +/mob/living/basic/bot/mulebot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + var/mob/user = ui.user + if(. || (bot_access_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(user))) + return + + bot_control(action, user, params) + return TRUE + +/mob/living/basic/bot/mulebot/bot_control(command, mob/user, list/params = list(), pda = FALSE) + if(pda && wires.is_cut(WIRE_RX)) // MULE wireless is controlled by wires. + return + + switch(command) + if("stop") + if(mode != BOT_IDLE) + bot_reset() + if("go") + if(mode == BOT_IDLE) + start() + if("home") + if(mode == BOT_IDLE || mode == BOT_DELIVER) + start_home() + if("destination") + var/new_dest + if(pda) + new_dest = tgui_input_list(user, "Enter Destination", "Mulebot Settings", GLOB.deliverybeacontags, ai_controller.blackboard[BB_MULEBOT_DESTINATION_BEACON]) + else + new_dest = params["value"] + if(new_dest) + set_destination(new_dest) + if("setid") + var/new_id = tgui_input_text(user, "Enter ID", "ID Assignment", id, max_length = MAX_NAME_LEN) + if(new_id) + set_id(new_id) + name = "\improper MULEbot [new_id]" + if("sethome") + var/new_home = tgui_input_list(user, "Enter Home", "Mulebot Settings", GLOB.deliverybeacontags, ai_controller.blackboard[BB_MULEBOT_HOME_BEACON]) + if(new_home) + ai_controller.set_blackboard_key(BB_MULEBOT_HOME_BEACON, new_home) + if("unload") + if(load && mode != BOT_HUNT) + unload() + if("autoret") + mulebot_delivery_flags ^= MULEBOT_RETURN_MODE + if("autopick") + mulebot_delivery_flags ^= MULEBOT_AUTO_PICKUP_MODE + if("report") + mulebot_delivery_flags ^= MULEBOT_REPORT_DELIVERY_MODE + +/mob/living/basic/bot/mulebot/proc/start() + if(!(bot_mode_flags & BOT_MODE_ON)) + return + if(ai_controller.blackboard[BB_MULEBOT_DESTINATION_BEACON] == ai_controller.blackboard[BB_MULEBOT_HOME_BEACON]) + update_bot_mode(new_mode = BOT_GO_HOME) + else + update_bot_mode(new_mode = BOT_DELIVER) + +/mob/living/basic/bot/mulebot/proc/start_home() + set_destination(ai_controller.blackboard[BB_MULEBOT_HOME_BEACON]) + update_bot_mode(new_mode = BOT_GO_HOME) + +/mob/living/basic/bot/mulebot/proc/set_destination(new_destination) + ai_controller.set_blackboard_key(BB_MULEBOT_DESTINATION_BEACON, new_destination) + +/mob/living/basic/bot/mulebot/proc/set_home(turf/home_loc) + if(home_destination) + ai_controller.set_blackboard_key(BB_MULEBOT_HOME_BEACON, home_destination) + home_destination = null + if(!istype(home_loc)) + CRASH("MULEbot [id] was requested to set a home location to [home_loc ? "an invalid home loc ([home_loc.type])" : "null"]") + + var/obj/machinery/navbeacon/home_beacon = locate() in home_loc + if(isnull(home_beacon)) + ai_controller.set_blackboard_key(BB_MULEBOT_HOME_BEACON, "") + return + ai_controller.set_blackboard_key(BB_MULEBOT_HOME_BEACON, home_beacon.location) + log_transport("[id]: MULEbot successfuly set home location to ID [home_beacon.location] at [home_beacon.x], [home_beacon.y], [home_beacon.z]") + +///Sets the new ID of the mulebot +/mob/living/basic/bot/mulebot/proc/set_id(new_id) + id = new_id diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_delivery.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_delivery.dm new file mode 100644 index 000000000000..5fec23e9bbfc --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_delivery.dm @@ -0,0 +1,117 @@ +/mob/living/basic/bot/mulebot/execute_resist() + . = ..() + if(load) + unload() + +/mob/living/basic/bot/mulebot/Exited(atom/movable/gone, direction) + . = ..() + if(gone == load) + unload() + if(gone == cell) + turn_off() + assign_cell() + cell = null + set_cell_hud() + +/mob/living/basic/bot/mulebot/Entered(obj/item/stock_parts/power_store/cell/arrived, atom/old_loc, list/atom/old_locs) + . = ..() + if(istype(arrived) && isnull(cell)) + assign_cell(arrived) + +// mousedrop a crate to load the bot +// can load anything if hacked +/mob/living/basic/bot/mulebot/mouse_drop_receive(atom/movable/atom_to_load, mob/user, params) + if(!isliving(user)) + return + + if(!istype(atom_to_load) || isdead(atom_to_load) || iseyemob(atom_to_load) || istype(atom_to_load, /obj/effect/dummy/phased_mob)) + return + + load(atom_to_load) + +/mob/living/basic/bot/mulebot/post_unbuckle_mob(mob/living/M) + load = null + return ..() + +/mob/living/basic/bot/mulebot/relaymove(mob/living/user, direction) + if(user.incapacitated) + return + if(load == user) + unload() + +/mob/living/basic/bot/mulebot/remove_air(amount) //To prevent riders suffocating + return loc ? loc.remove_air(amount) : null + +/// Called to load an atom on the mulebot, which is usually a crate, unless if hacked +/mob/living/basic/bot/mulebot/proc/load(atom/movable/atom_to_load) + if(load || atom_to_load.anchored) + return + + if(!isturf(atom_to_load.loc)) //To prevent the loading from stuff from someone's inventory or screen icons. + return + + var/obj/structure/closet/crate/crate = atom_to_load + if(!istype(crate)) + if(!wires.is_cut(WIRE_LOADCHECK)) + buzz(MULEBOT_MOOD_SIGH) + return // if not hacked, only allow crates to be loaded + crate = null + + if(crate || isobj(atom_to_load)) + var/obj/object_to_load = atom_to_load + if(object_to_load.has_buckled_mobs() || (locate(/mob) in atom_to_load)) //can't load non crates objects with mobs buckled to it or inside it. + buzz(MULEBOT_MOOD_SIGH) + return + + if(crate) + crate.close() //make sure the crate is closed + + object_to_load.forceMove(src) + + else if(isliving(atom_to_load)) + if(!load_mob(atom_to_load)) //forceMove() is handled in buckling + return + + load = atom_to_load + update_appearance() + +///resolves the name to display for the loaded mob. primarily needed for the paranormal subtype since we don't want to show the name of ghosts riding it. +/mob/living/basic/bot/mulebot/proc/get_load_name() + return load ? load.name : null + +///Loads a mob onto the mulebot +/mob/living/basic/bot/mulebot/proc/load_mob(mob/living/mob_to_load) + can_buckle = TRUE + if(buckle_mob(mob_to_load)) + passenger = mob_to_load + load = mob_to_load + can_buckle = FALSE + return TRUE + +// called to unload the bot +// argument is optional direction to unload +// if zero or null, unload at bot's location +/mob/living/basic/bot/mulebot/proc/unload(dirn) + if(QDELETED(load)) + if(load) //if our thing was qdel'd, there's likely a leftover reference. just clear it and remove the overlay. we'll let the bot keep moving around to prevent it abruptly stopping somewhere. + load = null + update_appearance() + return + + update_bot_mode(new_mode = BOT_IDLE) + + var/atom/movable/cached_load = load //cache the load since unbuckling mobs clears the var. + + unbuckle_all_mobs() + + if(load) //don't have to do any of this for mobs. + cached_load.forceMove(loc) + cached_load.pixel_y = initial(cached_load.pixel_y) + cached_load.layer = initial(cached_load.layer) + SET_PLANE_EXPLICIT(cached_load, initial(cached_load.plane), src) + load = null + + if(dirn) //move the thing to the delivery point. + cached_load.Move(get_step(loc,dirn), dirn) + + update_appearance() diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_hud.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_hud.dm new file mode 100644 index 000000000000..3e1f26c85849 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_hud.dm @@ -0,0 +1,74 @@ +/mob/living/basic/bot/mulebot/proc/set_cell_hud() + if(!has_power()) + set_hud_image_state(DIAG_BATT_HUD, "hudnobatt") + return + + var/atom/movable/screen/mob_charge/charge_hud = hud_used?.screen_objects[HUD_MULEBOT_CHARGE] + charge_hud?.calculate_charge() + set_hud_image_state(DIAG_BATT_HUD, "hudbatt[RoundDiagBar(cell.charge/cell.maxcharge)]") + +/atom/movable/screen/mob_charge + icon = 'icons/obj/machines/cell_charger.dmi' + icon_state = "ccharger" + screen_loc = ui_stamina + ///used to find the overlay for charger icon + var/current_charge_level = 4 + ///dynamic, based on what cell our nulebot's using + var/image/battery_overlay + ///maptext that displays charge in numbers + var/image/charge_overlay + ///is there a mouse on us + var/hovering = FALSE + +/atom/movable/screen/mob_charge/proc/update_battery_overlay(atom/target_battery) + var/obj/item/stock_parts/power_store/cell/my_cell = target_battery || (locate() in get_mob()) + if(isnull(my_cell)) + battery_overlay = null + else + battery_overlay = image(icon = my_cell.icon, icon_state = my_cell.icon_state, loc = src, layer = src.layer + 0.1) + update_appearance(UPDATE_ICON) + +/atom/movable/screen/mob_charge/proc/calculate_charge() + var/obj/item/stock_parts/power_store/cell/my_battery = locate() in get_mob() + var/charge_value = isnull(my_battery) ? 0 : round(my_battery.charge/my_battery.maxcharge * 100 , 1) + current_charge_level = round(charge_value * 4 / 100) + charge_overlay.maptext = MAPTEXT("
[charge_value]%
") + update_appearance(UPDATE_ICON) + +/atom/movable/screen/mob_charge/New(loc, ...) + . = ..() + charge_overlay = image(loc = src, layer = src.layer+0.2, pixel_y = -5) + update_battery_overlay() + +/atom/movable/screen/mob_charge/Destroy() + charge_overlay = null + battery_overlay = null + return ..() + +/atom/movable/screen/mob_charge/update_overlays() + . = ..() + . += mutable_appearance(icon, "ccharger-o[current_charge_level]") + if(battery_overlay) + . |= battery_overlay + if(hovering) + . |= charge_overlay + +/atom/movable/screen/mob_charge/MouseEntered(location,control,params) + if(usr != get_mob()) + return + . = ..() + hovering = TRUE + calculate_charge() + +/atom/movable/screen/mob_charge/MouseExited(location, control, params) + if(usr != get_mob()) + return + . = ..() + hovering = FALSE + update_appearance(UPDATE_ICON) + +/datum/hud/living/mulebot + +/datum/hud/living/mulebot/initialize_screen_objects() + . = ..() + add_screen_object(/atom/movable/screen/mob_charge, HUD_MULEBOT_CHARGE, HUD_GROUP_INFO) diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_movement.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_movement.dm new file mode 100644 index 000000000000..0654477a0965 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_movement.dm @@ -0,0 +1,72 @@ +/mob/living/basic/bot/mulebot/MobBump(mob/bumped_mob) // called when the bot bumps into a mob + if(mind || !isliving(bumped_mob)) //if there's a sentience controlling the bot, they aren't allowed to harm folks. + return ..() + var/mob/living/bumped_living = bumped_mob + if(wires.is_cut(WIRE_AVOIDANCE)) // usually just bumps, but if the avoidance wire is cut, knocks them over. + if(iscyborg(bumped_living)) + visible_message(span_danger("[src] bumps into [bumped_living]!")) + else if(bumped_living.Knockdown(8 SECONDS)) + log_combat(src, bumped_living, "knocked down") + visible_message(span_danger("[src] knocks over [bumped_living]!")) + return ..() + +/mob/living/basic/bot/mulebot/on_bot_movement(atom/movable/source, atom/oldloc, dir, forced) + cell?.use(cell_move_power_usage) + set_cell_hud() + + if(has_gravity()) + for(var/mob/living/carbon/human/future_pancake in loc) + if(future_pancake.body_position == LYING_DOWN) + run_over(future_pancake) + + return ..() + +///Checks if the bot is on or if it has charge +/mob/living/basic/bot/mulebot/proc/on_pre_move() + SIGNAL_HANDLER + + if(!(bot_mode_flags & BOT_MODE_ON)) + return COMPONENT_MOB_BOT_BLOCK_PRE_STEP + + if((cell && (cell.charge < cell_move_power_usage)) || !has_power()) + turn_off() + return COMPONENT_MOB_BOT_BLOCK_PRE_STEP + +// when mulebot is in the same loc +/mob/living/basic/bot/mulebot/proc/run_over(mob/living/carbon/human/crushed) + if (!(bot_access_flags & BOT_COVER_EMAGGED) && !wires.is_cut(WIRE_AVOIDANCE)) + if (!has_status_effect(/datum/status_effect/careful_driving)) + crushed.visible_message(span_notice("[src] slows down to avoid crushing [crushed].")) + apply_status_effect(/datum/status_effect/careful_driving) + return // Player mules must be emagged before they can trample + + log_combat(src, crushed, "run over", addition = "(DAMTYPE: [uppertext(BRUTE)])") + crushed.visible_message( + span_danger("[src] drives over [crushed]!"), + span_userdanger("[src] drives over you!"), + ) + + playsound(src, 'sound/effects/splat.ogg', 50, TRUE) + + var/damage = rand(5, 15) + var/static/list/zone_damages = list( + BODY_ZONE_HEAD = 2, + BODY_ZONE_CHEST = 2, + BODY_ZONE_L_LEG = 0.5, + BODY_ZONE_R_LEG = 0.5, + BODY_ZONE_L_ARM = 0.5, + BODY_ZONE_R_ARM = 0.5, + ) + for(var/body_zone in zone_damages) + crushed.apply_damage(zone_damages[body_zone] * damage, BRUTE, body_zone, run_armor_check(body_zone, MELEE)) + + add_mob_blood(crushed) + + var/turf/below_us = get_turf(src) + below_us.add_mob_blood(crushed) + + AddComponent(/datum/component/blood_walk, \ + blood_type = /obj/effect/decal/cleanable/blood/tracks, \ + target_dir_change = TRUE, \ + transfer_blood_dna = TRUE, \ + max_blood = 4) diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_paranormal.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_paranormal.dm new file mode 100644 index 000000000000..9a4b20b9e5a3 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_paranormal.dm @@ -0,0 +1,61 @@ +/mob/living/basic/bot/mulebot/paranormal + name = "\improper GHOULbot" + desc = "A rather ghastly looking... Multiple Utility Load Effector bot? It only seems to accept paranormal forces, and for this reason is fucking useless." + icon_state = "paranormalmulebot0" + base_icon_state = "paranormalmulebot" + ///avoid the utterly miniscule chance of infinite looping + replacement_chance = 0 + +/mob/living/basic/bot/mulebot/paranormal/update_overlays() + . = ..() + if(!isobserver(load)) + return + var/mutable_appearance/ghost_overlay = mutable_appearance('icons/mob/simple/mob.dmi', "ghost", layer + 0.01) //use a generic ghost icon, otherwise you can metagame who's dead if they have a custom ghost set + ghost_overlay.pixel_y = 12 + . += ghost_overlay + +/mob/living/basic/bot/mulebot/paranormal/get_load_name() //Don't reveal the name of ghosts so we can't metagame who died and all that. + . = ..() + if(. && isobserver(load)) + return "Unknown" + +/mob/living/basic/bot/mulebot/paranormal/load(atom/movable/movable_atom) + if(load || movable_atom.anchored) + return + + if(!isturf(movable_atom.loc)) //To prevent the loading from stuff from someone's inventory or screen icons. + return + + if(isobserver(movable_atom)) + visible_message(span_warning("A ghostly figure appears on [src]!")) + movable_atom.forceMove(src) + RegisterSignal(movable_atom, COMSIG_MOVABLE_MOVED, PROC_REF(ghost_moved)) + + else if(!wires.is_cut(WIRE_LOADCHECK)) + buzz(MULEBOT_MOOD_SIGH) + return // if not hacked, only allow ghosts to be loaded + + else if(isobj(movable_atom)) + if(movable_atom.has_buckled_mobs() || (locate(/mob) in movable_atom)) //can't load non crates objects with mobs buckled to it or inside it. + buzz(MULEBOT_MOOD_SIGH) + return + + if(istype(movable_atom, /obj/structure/closet/crate)) + var/obj/structure/closet/crate/crate = movable_atom + crate.close() //make sure it's closed + + movable_atom.forceMove(src) + + else if(isliving(movable_atom) && !load_mob(movable_atom)) + return + + load = movable_atom + update_bot_mode(new_mode = BOT_IDLE) + update_appearance() + +///Handles the ghosts moving out from the mule +/mob/living/basic/bot/mulebot/paranormal/proc/ghost_moved() + SIGNAL_HANDLER + visible_message(span_notice("The ghostly figure vanishes...")) + UnregisterSignal(load, COMSIG_MOVABLE_MOVED) + unload() diff --git a/code/modules/mob/living/basic/bots/mulebot/mulebot_tool_interactions.dm b/code/modules/mob/living/basic/bots/mulebot/mulebot_tool_interactions.dm new file mode 100644 index 000000000000..d80cc520bbb8 --- /dev/null +++ b/code/modules/mob/living/basic/bots/mulebot/mulebot_tool_interactions.dm @@ -0,0 +1,46 @@ +/mob/living/basic/bot/mulebot/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + update_appearance() + +/mob/living/basic/bot/mulebot/crowbar_act(mob/living/user, obj/item/tool) + if(!(bot_access_flags & BOT_COVER_MAINTS_OPEN) || user.combat_mode) + return + if(!cell) + to_chat(user, span_warning("[src] doesn't have a power cell!")) + return ITEM_INTERACT_BLOCKING + cell.add_fingerprint(user) + user.visible_message( + span_notice("[user] crowbars [cell] out from [src]."), + span_notice("You pry [cell] out of [src]."), + ) + if(Adjacent(user) && !issilicon(user)) + user.put_in_hands(cell) + else + cell.forceMove(drop_location()) + return ITEM_INTERACT_SUCCESS + +/mob/living/basic/bot/mulebot/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stock_parts/power_store/cell) && (bot_access_flags & BOT_COVER_MAINTS_OPEN)) + if(cell) + to_chat(user, span_warning("[src] already has a power cell!")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + user.visible_message( + span_notice("[user] inserts \a [cell] into [src]."), + span_notice("You insert [cell] into [src]."), + ) + return ITEM_INTERACT_SUCCESS + if(is_wire_tool(tool) && (bot_access_flags & BOT_COVER_MAINTS_OPEN)) + attack_hand(user) + return ITEM_INTERACT_SUCCESS + return ..() + + +/mob/living/basic/bot/mulebot/emag_act(mob/user, obj/item/card/emag/emag_card) + . = ..() + if(!(bot_access_flags & BOT_COVER_EMAGGED)) + return + flick("[base_icon_state]-emagged", src) + playsound(src, SFX_SPARKS, 100, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) + return TRUE diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm index 8cc3a90a3368..4bb584a3de54 100644 --- a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm +++ b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm @@ -9,9 +9,8 @@ layer = BELOW_MOB_LAYER anchored = FALSE health = 35 - can_be_held = TRUE maxHealth = 35 - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) path_image_color = "#80dae7" bot_ui = "RepairBot" req_one_access = list(ACCESS_ROBOTICS, ACCESS_ENGINEERING) @@ -93,6 +92,7 @@ our_screwdriver = new(src) our_rods = new(src, our_rods::max_amount) set_color(toolbox_color) + AddElement(/datum/element/can_be_held) START_PROCESSING(SSobj, src) /mob/living/basic/bot/repairbot/proc/set_color(new_color) @@ -250,7 +250,7 @@ var/obj/item/stack/rods/new_rods = new() new_rods.forceMove(src) -/mob/living/basic/bot/repairbot/turn_on() +/mob/living/basic/bot/repairbot/turn_on(mob/user) . = ..() if(!.) return diff --git a/code/modules/mob/living/basic/bots/secbot/secbot.dm b/code/modules/mob/living/basic/bots/secbot/secbot.dm index df71f848a941..46b2835764c0 100644 --- a/code/modules/mob/living/basic/bots/secbot/secbot.dm +++ b/code/modules/mob/living/basic/bots/secbot/secbot.dm @@ -27,7 +27,7 @@ possessed_message = "You are a securitron! Guard the station to the best of your ability!" additional_access = /datum/id_trim/job/detective - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2) ai_controller = /datum/ai_controller/basic_controller/bot/secbot ///Whether this secbot is considered 'commissioned' and given the trait on Initialize. var/commissioned = FALSE diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm index ab89baea6516..b2db02de081a 100644 --- a/code/modules/mob/living/basic/bots/vibebot/vibebot.dm +++ b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm @@ -9,7 +9,7 @@ light_range = 6 ai_controller = /datum/ai_controller/basic_controller/bot/vibebot light_power = 2 - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) hackables = "vibing scanners" diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index f7219599d40b..36c60b175abf 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -46,7 +46,6 @@ lighting_cutoff_red = 30 lighting_cutoff_green = 35 lighting_cutoff_blue = 25 - can_be_held = TRUE worn_slot_flags = ITEM_SLOT_HEAD inhand_holder_type = /obj/item/mob_holder/drone /// `TRUE` if we have picked our visual appearance, `FALSE` otherwise (default) @@ -155,6 +154,8 @@ listener.RegisterSignal(src, COMSIG_LIVING_DEATH, TYPE_PROC_REF(/datum/alarm_listener, prevent_alarm_changes)) listener.RegisterSignal(src, COMSIG_LIVING_REVIVE, TYPE_PROC_REF(/datum/alarm_listener, allow_alarm_changes)) + AddElement(/datum/element/can_be_held) + /mob/living/basic/drone/med_hud_set_health() set_hud_image_state(DIAG_HUD, "huddiag[RoundDiagBar(health/maxHealth)]") diff --git a/code/modules/mob/living/basic/drone/drone_tools.dm b/code/modules/mob/living/basic/drone/drone_tools.dm index d1be8ab0cec1..d7d88bd7f8cf 100644 --- a/code/modules/mob/living/basic/drone/drone_tools.dm +++ b/code/modules/mob/living/basic/drone/drone_tools.dm @@ -49,7 +49,7 @@ greyscale_config = null greyscale_colors = null -/obj/item/screwdriver/drone/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/screwdriver/drone/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) . = ..() if(!isinhands) return diff --git a/code/modules/mob/living/basic/drone/interaction.dm b/code/modules/mob/living/basic/drone/interaction.dm index 4dfa3256c5cd..90cad722002c 100644 --- a/code/modules/mob/living/basic/drone/interaction.dm +++ b/code/modules/mob/living/basic/drone/interaction.dm @@ -122,7 +122,7 @@ /// Returns a multiplier for any head armor you wear as a drone. /mob/living/basic/drone/proc/get_armor_effectiveness() - return 0 + return 0.8 /** * Hack or unhack a drone diff --git a/code/modules/mob/living/basic/drone/verbs.dm b/code/modules/mob/living/basic/drone/verbs.dm index a66d17048fde..e5a941d0a925 100644 --- a/code/modules/mob/living/basic/drone/verbs.dm +++ b/code/modules/mob/living/basic/drone/verbs.dm @@ -3,9 +3,7 @@ * * See [/mob/living/basic/drone/var/laws] */ -/mob/living/basic/drone/verb/check_laws() - set category = "Drone" - set name = "Check Laws" +GAME_VERB(/mob/living/basic/drone, check_laws, "Check Laws", "Drone") to_chat(src, "Drone Laws") to_chat(src, laws) @@ -21,9 +19,7 @@ * * Attaches area name to message */ -/mob/living/basic/drone/verb/drone_ping() - set category = "Drone" - set name = "Drone ping" +GAME_VERB(/mob/living/basic/drone, drone_ping, "Drone ping", "Drone") var/alert_s = input(src,"Alert severity level","Drone ping",null) as null|anything in list("Low","Medium","High","Critical") diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index c3a1c5d91395..409035c9683b 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -36,7 +36,6 @@ mob_biotypes = MOB_ORGANIC|MOB_BUG density = FALSE gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE held_w_class = WEIGHT_CLASS_TINY environment_smash = ENVIRONMENT_SMASH_NONE habitable_atmos = null @@ -71,6 +70,7 @@ AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/swabable, CELL_LINE_TABLE_QUEEN_BEE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/basic_allergenic_attack, allergen = BUGS, allergen_chance = 33, histamine_add = 5) + AddElement(/datum/element/can_be_held) /mob/living/basic/bee/mob_pickup(mob/living/picker) if(flags_1 & HOLOGRAM_1) diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm index 0ef58faca89b..39008cab8674 100644 --- a/code/modules/mob/living/basic/farm_animals/pig.dm +++ b/code/modules/mob/living/basic/farm_animals/pig.dm @@ -5,7 +5,6 @@ icon_state = "pig" icon_living = "pig" icon_dead = "pig_dead" - icon_gib = "pig_gib" gender = MALE mob_biotypes = MOB_ORGANIC | MOB_BEAST speak_emote = list("oinks","squees") @@ -51,7 +50,7 @@ ///wrapper for the tameable component addition so you can have non tamable cow subtypes /mob/living/basic/pig/proc/make_tameable() - var/list/food_types = string_list(list(/obj/item/food/grown/carrot)) + var/list/food_types = string_list(list(/obj/item/food/grown/carrotlike/carrot)) AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15) /mob/living/basic/pig/tamed(mob/living/tamer, atom/food) diff --git a/code/modules/mob/living/basic/farm_animals/rabbit.dm b/code/modules/mob/living/basic/farm_animals/rabbit.dm index ca09405ca230..42c3f0832222 100644 --- a/code/modules/mob/living/basic/farm_animals/rabbit.dm +++ b/code/modules/mob/living/basic/farm_animals/rabbit.dm @@ -18,7 +18,6 @@ health = 15 maxHealth = 15 mob_size = MOB_SIZE_SMALL - can_be_held = TRUE density = FALSE gold_core_spawnable = FRIENDLY_SPAWN speak_emote = list("sniffles", "twitches") @@ -55,6 +54,7 @@ AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/pet_bonus, "hop") AddElement(/datum/element/animal_variety, icon_prefix, pick("brown", "black", "white"), TRUE) + AddElement(/datum/element/can_be_held) if(prob(20)) // bunny name = "bunny" @@ -91,7 +91,7 @@ var/list/feed_messages = list("[p_they()] nibbles happily.", "[p_they()] noms happily.") AddComponent(/datum/component/egg_layer,\ /obj/item/surprise_egg,\ - list(/obj/item/food/grown/carrot),\ + list(/obj/item/food/grown/carrotlike/carrot),\ feed_messages,\ list("hides an egg.","scampers around suspiciously.","begins making a huge racket.","begins shuffling."),\ initial_egg_amount,\ diff --git a/code/modules/mob/living/basic/guardian/guardian_types/gaseous.dm b/code/modules/mob/living/basic/guardian/guardian_types/gaseous.dm index 7db7107e1099..2547b8509d2a 100644 --- a/code/modules/mob/living/basic/guardian/guardian_types/gaseous.dm +++ b/code/modules/mob/living/basic/guardian/guardian_types/gaseous.dm @@ -159,7 +159,7 @@ var/datum/gas_mixture/mix_to_spawn = new() mix_to_spawn.add_gas(active_gas) - mix_to_spawn.gases[active_gas][MOLES] = possible_gases[active_gas] * seconds_per_tick + mix_to_spawn.moles[active_gas] = possible_gases[active_gas] * seconds_per_tick mix_to_spawn.temperature = T20C var/turf/open/our_turf = get_turf(owner) our_turf.assume_air(mix_to_spawn) diff --git a/code/modules/mob/living/basic/health_adjustment.dm b/code/modules/mob/living/basic/health_adjustment.dm index 499f679cdee5..410a2afe55a0 100644 --- a/code/modules/mob/living/basic/health_adjustment.dm +++ b/code/modules/mob/living/basic/health_adjustment.dm @@ -39,8 +39,8 @@ else if(damage_coeff[BURN]) . = adjust_health(amount * damage_coeff[BURN] * CONFIG_GET(number/damage_multiplier), updating_health, forced) -/mob/living/basic/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype, required_respiration_type) - if(!can_adjust_oxy_loss(amount, forced, required_biotype, required_respiration_type)) +/mob/living/basic/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype) + if(!can_adjust_oxy_loss(amount, forced, required_biotype)) return 0 if(forced) . = adjust_health(amount * CONFIG_GET(number/damage_multiplier), updating_health, forced) diff --git a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm index ca627fd40446..78056ebe8ee4 100644 --- a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm +++ b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm @@ -22,6 +22,11 @@ var/recent_examine_damage_cooldown = 10 SECONDS /// A list of REFs to people who recently examined us var/list/recent_examiner_refs = list() + /// The 1920s English/Welsh name appended to the end of the maid's title. + var/antiquated_name + /// A large list of names. One is randomly chosen upon mirror maid creation and removed + /// to prevent duplicates. If somehow emptied, the list is restored to its original state. + var/static/list/antiquated_names = GLOB.mirror_maid_names.Copy() /mob/living/basic/heretic_summon/maid_in_the_mirror/Initialize(mapload) . = ..() @@ -35,6 +40,13 @@ GRANT_ACTION(/datum/action/cooldown/spell/jaunt/mirror_walk) ADD_TRAIT(src, TRAIT_UNHITTABLE_BY_LASERS, INNATE_TRAIT) + if(!length(antiquated_names)) + antiquated_names = GLOB.mirror_maid_names.Copy() + + antiquated_name = pick_n_take(antiquated_names) + name = "Mirror Maid [antiquated_name]" + real_name = name + /mob/living/basic/heretic_summon/maid_in_the_mirror/death(gibbed) var/turf/death_turf = get_turf(src) death_turf.TakeTemperature(-40) // Spooky diff --git a/code/modules/mob/living/basic/icemoon/polar_bear/polar_bear.dm b/code/modules/mob/living/basic/icemoon/polar_bear/polar_bear.dm index b1dc69d06bf0..5d838db8fe8a 100644 --- a/code/modules/mob/living/basic/icemoon/polar_bear/polar_bear.dm +++ b/code/modules/mob/living/basic/icemoon/polar_bear/polar_bear.dm @@ -43,7 +43,6 @@ . = ..() add_traits(list(TRAIT_SPACEWALK, TRAIT_SWIMMER, TRAIT_FENCE_CLIMBER, TRAIT_SNOWSTORM_IMMUNE), INNATE_TRAIT) - AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/change_force_on_death, move_force = MOVE_FORCE_DEFAULT, move_resist = MOVE_RESIST_DEFAULT, pull_force = PULL_FORCE_DEFAULT) AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) diff --git a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm index 9d1393fbc3b1..288206cf3bce 100644 --- a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm +++ b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm @@ -58,7 +58,6 @@ ADD_TRAIT(src, TRAIT_WOUND_LICKER, INNATE_TRAIT) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/ai_flee_while_injured) - AddElement(/datum/element/ai_retaliate) if(can_tame) make_tameable() diff --git a/code/modules/mob/living/basic/lavaland/bileworm/_bileworm.dm b/code/modules/mob/living/basic/lavaland/bileworm/_bileworm.dm index 19d1fd20c6ae..8b7c74eaa03b 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/_bileworm.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/_bileworm.dm @@ -12,8 +12,6 @@ verb_ask = "spittles questioningly" verb_exclaim = "splutters and gurgles" verb_yell = "splutters and gurgles" - crusher_loot = /obj/item/crusher_trophy/bileworm_spewlet - crusher_drop_chance = 15 butcher_results = list(/obj/item/food/meat/slab/bugmeat = 4) guaranteed_butcher_results = list( /obj/effect/gibspawner/generic = 1, diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm index 74d20946737f..2fade1b1dcc3 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm @@ -6,7 +6,7 @@ icon_state = "bilehorn" allowed_instrument_ids = "bilehorn" inhand_icon_state = null - custom_materials = list(/datum/material/bone = SHEET_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 12, /datum/material/bone = SHEET_MATERIAL_AMOUNT * 2) /datum/crafting_recipe/bilehorn name = "Bilehorn" diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm index 63e2190d0154..ba1c54be70e9 100644 --- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm +++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm @@ -27,7 +27,6 @@ ai_controller = /datum/ai_controller/basic_controller/brimdemon - crusher_loot = /obj/item/crusher_trophy/brimdemon_fang butcher_results = list( /obj/item/food/meat/slab = 2, /obj/effect/decal/cleanable/brimdust = 1, diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm index b43f2149893d..02273b82b061 100644 --- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm +++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm @@ -87,6 +87,9 @@ if(has_emissive) update_appearance(UPDATE_OVERLAYS) +/mob/living/basic/mining/goldgrub/get_hud_x_offset() + return -4 + /mob/living/basic/mining/goldgrub/proc/block_bullets(datum/source, obj/projectile/hitting_projectile) SIGNAL_HANDLER @@ -159,6 +162,11 @@ if(has_emissive) . += emissive_appearance(icon, "[icon_state]_e", src) +/mob/living/basic/mining/goldgrub/death(gibbed) + . = ..() + if (!QDELETED(src) && has_emissive) + update_appearance(UPDATE_OVERLAYS) + /mob/living/basic/mining/goldgrub/baby icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' name = "goldgrub baby" diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm index 7b982ddf5be8..6220f9f0278e 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm @@ -29,7 +29,6 @@ ai_controller = /datum/ai_controller/basic_controller/goliath - crusher_loot = /obj/item/crusher_trophy/goliath_tentacle butcher_results = list(/obj/item/food/meat/slab/goliath = 2, /obj/item/stack/sheet/bone = 2) guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1) /// Icon state to use when tentacles are available @@ -52,7 +51,6 @@ /mob/living/basic/mining/goliath/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_TENTACLE_IMMUNE, INNATE_TRAIT) - AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/footstep, FOOTSTEP_MOB_HEAVY) AddElement(/datum/element/basic_eating, heal_amt = 10, food_types = goliath_foods) AddElement(\ @@ -88,6 +86,9 @@ QDEL_NULL(tentacle_line) return ..() +/mob/living/basic/mining/goliath/get_hud_x_offset() + return -4 + /mob/living/basic/mining/goliath/examine(mob/user) . = ..() if (saddled) @@ -197,7 +198,6 @@ This one is clearly ancient, and its tentacles constantly churn the earth around it." maxHealth = 400 health = 400 - crusher_drop_chance = 100 /// Don't re-check nearby turfs for this long COOLDOWN_DECLARE(retarget_turfs_cooldown) /// List of places we might spawn a tentacle, if we're alive diff --git a/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm b/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm index b5af54e4da0f..219c193b996e 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm @@ -171,6 +171,8 @@ RegisterSignal(beam_effect.visuals, COMSIG_CLICK, PROC_REF(on_beam_click)) RegisterSignals(user, list(SIGNAL_ADDTRAIT(TRAIT_TENTACLE_IMMUNE), COMSIG_BRIMDUST_EXPLOSION), PROC_REF(release)) RegisterSignals(tentacle, list(COMSIG_QDELETING, COMSIG_GOLIATH_TENTACLE_RETRACTING), PROC_REF(on_tentacle_left)) + if (tentacle.owner) + RegisterSignal(tentacle.owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_tentacle_left)) RegisterSignal(leash, COMSIG_QDELETING, PROC_REF(release)) /obj/item/restraints/legcuffs/goliath_tentacle/proc/on_beam_click(atom/source, atom/location, control, params, mob/user) @@ -229,7 +231,7 @@ beam_effect = user.Beam(tentacle.owner, "goliath_tentacle", beam_type = /obj/effect/ebeam/goliath, emissive = FALSE) RegisterSignal(beam_effect.visuals, COMSIG_CLICK, PROC_REF(on_beam_click)) RegisterSignals(user, list(SIGNAL_ADDTRAIT(TRAIT_TENTACLE_IMMUNE), COMSIG_BRIMDUST_EXPLOSION), PROC_REF(release)) - RegisterSignals(tentacle.owner, COMSIG_QDELETING, PROC_REF(on_tentacle_left)) + RegisterSignals(tentacle.owner, list(COMSIG_QDELETING, COMSIG_MOB_STATCHANGE), PROC_REF(on_tentacle_left)) RegisterSignal(leash, COMSIG_QDELETING, PROC_REF(release)) tentacle.retract() tentacle = null diff --git a/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm b/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm index 9489a119c5c9..d330ff822035 100644 --- a/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm +++ b/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm @@ -36,7 +36,6 @@ GLOB.gutlunch_count++ if(greyscale_config) set_greyscale(colors = list(pick(possible_colors))) - AddElement(/datum/element/ai_retaliate) if(can_breed) add_breeding_component() diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm index f738e35bf8c8..36016b7f1791 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm @@ -23,7 +23,6 @@ speak_emote = list("gurgles") attack_sound = 'sound/items/weapons/pierce.ogg' throw_blocked_message = "bounces harmlessly off of" - crusher_loot = /obj/item/crusher_trophy/legion_skull death_message = "wails in chorus and dissolves into quivering flesh." ai_controller = /datum/ai_controller/basic_controller/legion /// What kind of mob do we spawn? @@ -142,10 +141,8 @@ maxHealth = 60 health = 60 speed = 2 - crusher_drop_chance = 20 corpse_type = /obj/effect/mob_spawn/corpse/human/legioninfested/dwarf - /// Like a Legion but larger and spawns regular Legions, not currently used anywhere and very soulful /mob/living/basic/mining/legion/large name = "myriad" diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index 1801d2dc189b..ecf69e02a9a9 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -25,7 +25,6 @@ /obj/item/stack/sheet/bone = 2, /obj/item/organ/monster_core/rush_gland = 1, ) - crusher_loot = /obj/item/crusher_trophy/lobster_claw ai_controller = /datum/ai_controller/basic_controller/lobstrosity /// Charging ability var/datum/action/cooldown/mob_cooldown/charge/basic_charge/lobster/charge @@ -160,7 +159,6 @@ /obj/item/stack/sheet/bone = 1, /obj/item/organ/monster_core/rush_gland = 1, ) - crusher_loot = null ai_controller = /datum/ai_controller/basic_controller/lobstrosity/juvenile snip_speed = 6.5 SECONDS charge_type = /datum/action/cooldown/mob_cooldown/charge/basic_charge/lobster/shrimp diff --git a/code/modules/mob/living/basic/lavaland/mining.dm b/code/modules/mob/living/basic/lavaland/mining.dm index b2ba41395599..2f0baa25c2b5 100644 --- a/code/modules/mob/living/basic/lavaland/mining.dm +++ b/code/modules/mob/living/basic/lavaland/mining.dm @@ -44,6 +44,7 @@ // We add this to ensure that mobs will actually receive the above signal, as some will lack AI // handling for retaliation and attack special cases AddElement(/datum/element/relay_attackers) + AddElement(/datum/element/ai_retaliate) //Used by priority behaviors /mob/living/basic/mining/proc/add_ranged_armour(list/vulnerable_projectiles) AddElement(\ diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm index 610682fd7a36..6d14322145e1 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm @@ -78,6 +78,8 @@ GLOBAL_LIST_EMPTY(raptor_population) var/datum/raptor_inheritance/inherited_stats = null /// Current happiness value of the raptor var/happiness_percentage = 0 + /// The ability for this raptor to be picked up and held. Defaults to FALSE as it's meant to be in lockstep with the element being added/removed. + var/could_be_held = FALSE /mob/living/basic/raptor/Initialize(mapload, datum/raptor_color/color_type, datum/raptor_inheritance/passed_stats) . = ..() @@ -139,6 +141,9 @@ GLOBAL_LIST_EMPTY(raptor_population) return return ..() +/mob/living/basic/raptor/get_hud_x_offset() + return -4 + /mob/living/basic/raptor/examine(mob/user) . = ..() if (stat == DEAD) @@ -280,6 +285,16 @@ GLOBAL_LIST_EMPTY(raptor_population) return pick_weight(prob_list) +/// Updates the presence of the can_be_held element based on what we want from the raptor +/mob/living/basic/raptor/proc/update_holdability(bool) + if(bool && !could_be_held) + AddElement(/datum/element/can_be_held) + could_be_held = TRUE + + if(!bool && could_be_held) + RemoveElement(/datum/element/can_be_held) + could_be_held = FALSE + /mob/living/basic/raptor/proc/on_picked_up(mob/living/basic/raptor/source, mob/living/user, obj/item/mob_holder/holder) SIGNAL_HANDLER // Our inventory code sucks so we have to do this @@ -361,16 +376,16 @@ GLOBAL_LIST_EMPTY(raptor_population) base_pixel_w = initial(base_pixel_w) mob_size = initial(mob_size) - can_be_held = initial(density) density = initial(density) move_resist = initial(move_resist) can_breed = initial(can_breed) + update_holdability(initial(could_be_held)) if (new_stage == RAPTOR_ADULT) // Adults need to be tamed with skill rather than snacks qdel(GetComponent(/datum/component/tameable)) else // Make us teeny-tiny - can_be_held = TRUE + update_holdability(TRUE) density = FALSE can_breed = FALSE move_resist = MOVE_RESIST_DEFAULT @@ -386,7 +401,7 @@ GLOBAL_LIST_EMPTY(raptor_population) var/obj/item/mob_holder/holder = null if (istype(loc, /obj/item/mob_holder)) holder = loc - if (!can_be_held) + if (!could_be_held) holder.release() holder = null diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_color.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_color.dm index 1be8dcb6ad9d..25129736487f 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_color.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_color.dm @@ -128,7 +128,7 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors()) // Purple raptors never "fully" grow up, and remain usable as backpacks /datum/raptor_color/purple/setup_adult(mob/living/basic/raptor/raptor) - raptor.can_be_held = TRUE + raptor.update_holdability(TRUE) raptor.density = FALSE raptor.move_resist = MOVE_RESIST_DEFAULT raptor.held_w_class = WEIGHT_CLASS_BULKY @@ -271,7 +271,8 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors()) // Raptors won't have the best of times keeping up tall humans or fatties up in the air var/struggling = HAS_TRAIT(user, TRAIT_FAT) || user.mob_height > HUMAN_HEIGHT_SHORTEST if (wings_open) - wings_underlay = user.apply_height_offsets(mutable_appearance(worn_icon, "raptor_purple_wings", -BODY_BEHIND_LAYER, user), UPPER_BODY) + wings_underlay = mutable_appearance(worn_icon, "raptor_purple_wings", -BODY_BEHIND_LAYER, user) + user.apply_height(wings_underlay, UPPER_BODY) user.add_overlay(wings_underlay) user.physiology.stun_mod *= 2 user.add_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), REF(src)) @@ -280,7 +281,7 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors()) else user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/raptor) user.AddElement(/datum/element/forced_gravity, 0) - passtable_on(user, REF(src)) + ADD_TRAIT(user, TRAIT_PASSTABLE, REF(src)) to_chat(user, span_notice("You begin gently hovering above ground as [held_mob] on your back starts furiously flapping [held_mob.p_their()] wings[struggling ? ", struggling to keep you up in the air" : ""]!")) user.set_resting(FALSE, TRUE) user.refresh_gravity() @@ -296,7 +297,7 @@ GLOBAL_LIST_INIT(raptor_colors, init_raptor_colors()) user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/raptor/slow) user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/raptor) user.RemoveElement(/datum/element/forced_gravity, 0) - passtable_off(user, REF(src)) + REMOVE_TRAIT(user, TRAIT_PASSTABLE, REF(src)) to_chat(user, span_notice("You settle gently back onto the ground[struggling ? ", [held_mob] on your back breathing out a sigh of releif" : ""]...")) user.refresh_gravity() STOP_PROCESSING(SSprocessing, src) diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_egg.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_egg.dm index ac8d5ebb0f4d..2dc093ca27d2 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_egg.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_egg.dm @@ -47,6 +47,6 @@ return visible_message(span_notice("[src] hatches with a quiet cracking sound.")) - new /mob/living/basic/raptor(loc, child_color, inherited_stats) + new /mob/living/basic/raptor/baby(loc, child_color, inherited_stats) inherited_stats = null qdel(src) diff --git a/code/modules/mob/living/basic/lavaland/tendril/tendril.dm b/code/modules/mob/living/basic/lavaland/tendril/tendril.dm index b31e8a982a73..d7758e6048c3 100644 --- a/code/modules/mob/living/basic/lavaland/tendril/tendril.dm +++ b/code/modules/mob/living/basic/lavaland/tendril/tendril.dm @@ -13,11 +13,11 @@ GLOBAL_LIST_INIT(tendrils, list()) pixel_w = -8 base_pixel_w = -8 status_flags = NONE - mob_biotypes = MOB_ORGANIC | MOB_SKELETAL | MOB_MINING + mob_biotypes = MOB_ORGANIC | MOB_SKELETAL | MOB_MINING | MOB_SPECIAL basic_mob_flags = DEL_ON_DEATH | IMMUNE_TO_FISTS mob_size = MOB_SIZE_HUGE - maxHealth = 1200 - health = 1200 + maxHealth = 800 + health = 800 friendly_verb_continuous = "flails at" friendly_verb_simple = "flail at" @@ -43,16 +43,17 @@ GLOBAL_LIST_INIT(tendrils, list()) var/datum/looping_sound/heartbeat/soundloop /// Melee attack ability to used in retaliation to melee strikes and whenever it manages to grab someone var/datum/action/cooldown/mob_cooldown/projectile_attack/tendril_melee/tendril_melee + /// List of all necropolis turfs we've generated -> their original types for cleanup once we are killed + var/list/infected_turfs = list() /mob/living/basic/mining/tendril/Initialize(mapload) . = ..() GLOB.tendrils += src - AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/death_drops, /obj/structure/closet/crate/necropolis/tendril) AddComponent(/datum/component/ai_target_timer) AddComponent(/datum/component/gps, "Eerie Signal") AddComponent(/datum/component/basic_mob_attack_telegraph, display_telegraph_overlay = FALSE, telegraph_duration = 0.4 SECONDS) - AddComponent(/datum/component/regenerator, regeneration_delay = 30 SECONDS, brute_per_second = 20) + AddComponent(/datum/component/regenerator, regeneration_delay = 30 SECONDS, brute_per_second = 20, outline_colour = COLOR_CULT_RED) add_traits(list(TRAIT_BACKSTAB_IMMUNE, TRAIT_IMMOBILIZED), INNATE_TRAIT) var/static/list/abilities = list( @@ -74,7 +75,7 @@ GLOBAL_LIST_INIT(tendrils, list()) var/turf/our_turf = get_turf(src) for (var/turf/rock in range(4, src)) - var/dist = sqrt((rock.x - our_turf.x) ** 2 + (rock.y - our_turf.y) ** 2) + var/dist = get_dist_euclidean(rock, our_turf) if (dist > 4.5) continue @@ -82,11 +83,13 @@ GLOBAL_LIST_INIT(tendrils, list()) rock.ScrapeAway(null, CHANGETURF_IGNORE_AIR) if (istype(rock, /turf/open/misc/asteroid) && prob(100 / sqrt(max(1, dist)))) + infected_turfs[rock] = rock.type rock.ChangeTurf(/turf/open/indestructible/necropolis, null, CHANGETURF_IGNORE_AIR) /mob/living/basic/mining/tendril/Destroy() GLOB.tendrils -= src QDEL_NULL(soundloop) + infected_turfs.Cut() if(!SSachievements.achievements_enabled || (flags_1 & ADMIN_SPAWNED_1)) return ..() @@ -100,6 +103,17 @@ GLOBAL_LIST_INIT(tendrils, list()) return ..() +/mob/living/basic/mining/tendril/death(gibbed) + var/turf/our_turf = get_turf(src) + playsound(our_turf, 'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) + // Change our infected turfs back into regular ones, but only if they haven't been already altered + for (var/turf/open/indestructible/necropolis/infected_turf in infected_turfs) + var/dist = get_dist_euclidean(our_turf, infected_turf) + if (dist > 4.5) // We got moved? + continue + addtimer(CALLBACK(infected_turf, TYPE_PROC_REF(/turf, ChangeTurf), infected_turfs[infected_turf], null, CHANGETURF_IGNORE_AIR), round(5 - dist, 0.5) * 1 SECONDS) + return ..() + /mob/living/basic/mining/tendril/update_overlays() . = ..() . += emissive_appearance(icon, "[icon_state]_e", src, effect_type = EMISSIVE_NO_BLOOM) diff --git a/code/modules/mob/living/basic/lavaland/tendril/tendril_actions.dm b/code/modules/mob/living/basic/lavaland/tendril/tendril_actions.dm index 1a2272fd85b7..1750372e250a 100644 --- a/code/modules/mob/living/basic/lavaland/tendril/tendril_actions.dm +++ b/code/modules/mob/living/basic/lavaland/tendril/tendril_actions.dm @@ -7,7 +7,7 @@ background_icon_state = "bg_demon" overlay_icon_state = "bg_demon_border" click_to_activate = FALSE - cooldown_time = 8 SECONDS + cooldown_time = 12 SECONDS melee_cooldown_time = 0 shared_cooldown = NONE projectile_type = /obj/projectile/tentacle_lash @@ -24,12 +24,12 @@ telegraph.dir = swipe_dir line_turf = get_step(line_turf, swipe_dir) - SLEEP_CHECK_DEATH(0.8 SECONDS, owner) + SLEEP_CHECK_DEATH(1.2 SECONDS, owner) for (var/swipe_dir in GLOB.cardinals) shoot_projectile(get_turf(owner), get_step(owner, swipe_dir), dir2angle(swipe_dir), owner) - SLEEP_CHECK_DEATH(1.6 SECONDS, owner) + SLEEP_CHECK_DEATH(1.8 SECONDS, owner) for (var/swipe_dir in GLOB.diagonals) var/turf/open/line_turf = get_step(owner, swipe_dir) @@ -40,7 +40,7 @@ telegraph.dir = swipe_dir line_turf = get_step(line_turf, swipe_dir) - SLEEP_CHECK_DEATH(0.8 SECONDS, owner) + SLEEP_CHECK_DEATH(1.2 SECONDS, owner) for (var/swipe_dir in GLOB.diagonals) shoot_projectile(get_turf(owner), get_step(owner, swipe_dir), dir2angle(swipe_dir), owner) @@ -55,7 +55,8 @@ name = "tentacle spike" icon_state = "tentacle_spike" pass_flags = PASSTABLE - damage = 5 // +10 from the grab + damage = 10 // +10 from the grab + speed = 1 armor_flag = MELEE range = 7 hit_prone_targets = TRUE @@ -69,6 +70,8 @@ var/duration = 1.2 SECONDS /// Damage dealt to targets who get snatched from entering the beam or being hit directly var/snatch_damage = 10 + /// How much faster do we retract + var/retract_speed = 2.5 /obj/projectile/tentacle_lash/stab damage = 15 @@ -86,6 +89,21 @@ /obj/projectile/tentacle_lash/Destroy() QDEL_NULL(tentacle_beam) + if (QDELETED(firer) || !isturf(loc)) + return ..() + // Animate tentacle retraction for visual flair + var/turf/our_turf = loc + var/turf/firer_turf = get_turf(firer) + var/obj/effect/abstract/holder = new(firer_turf) + holder.icon = icon + holder.icon_state = icon_state + holder.transform = transform + holder.pixel_x = (firer_turf.x - our_turf.x) * ICON_SIZE_X + pixel_x + holder.pixel_y = (firer_turf.y - our_turf.y) * ICON_SIZE_Y + pixel_y + holder.Beam(firer, "goliath_tentacle", emissive = FALSE) + var/anim_time = sqrt((holder.pixel_x / ICON_SIZE_X) ** 2 + (holder.pixel_y / ICON_SIZE_Y) ** 2) / (speed * SSprojectiles.wait * retract_speed) + animate(holder, pixel_x = 0, pixel_y = 0, time = anim_time) + QDEL_IN_CLIENT_TIME(holder, anim_time) return ..() // Don't range out, stop and persist until we're done @@ -143,13 +161,13 @@ button_icon_state = "spikes_stabbing" background_icon_state = "bg_demon" overlay_icon_state = "bg_demon_border" - cooldown_time = 8 SECONDS + cooldown_time = 12 SECONDS click_to_activate = TRUE shared_cooldown = NONE /// Lazy list of references to spike trails var/list/active_chasers /// Health percentage threshold at which we send out wide charsers after the main target - var/wide_chaser_threshold = 0.7 + var/wide_chaser_threshold = 0.6 /datum/action/cooldown/mob_cooldown/tendril_chaser/Grant(mob/granted_to) . = ..() @@ -176,7 +194,7 @@ ResetCooldown() /datum/action/cooldown/mob_cooldown/tendril_chaser/Activate(atom/target) - . = ..() + disable_cooldown_actions() var/primary_type = /obj/effect/temp_visual/effect_trail/tendril_chaser if (isliving(owner)) var/mob/living/as_living = owner @@ -187,6 +205,9 @@ LAZYADD(active_chasers, WEAKREF(chaser)) RegisterSignal(chaser, COMSIG_QDELETING, PROC_REF(on_chaser_destroyed)) playsound(owner, 'sound/effects/magic/demon_attack1.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE) + SLEEP_CHECK_DEATH(0.6 SECONDS, owner) + StartCooldown() + enable_cooldown_actions() /// Remove a spike trail from our list of active trails /datum/action/cooldown/mob_cooldown/tendril_chaser/proc/on_chaser_destroyed(atom/chaser) @@ -195,8 +216,8 @@ /obj/effect/temp_visual/effect_trail/tendril_chaser duration = 10 SECONDS - move_speed = 4 - spawned_effect = /obj/effect/temp_visual/emerging_ground_spike/tendril + move_speed = 5 + spawned_effect = /obj/effect/temp_visual/emerging_ground_spike/tendril/chaser /// Do we spawn spikes around ourselves as well or only on our own turf? var/area_spawn = FALSE @@ -211,7 +232,7 @@ if (!area_spawn) var/turf/spawn_turf = get_turf(src) if (!(locate(/obj/effect/temp_visual/emerging_ground_spike/tendril) in spawn_turf) && isopenturf(spawn_turf)) - new spawned_effect(spawn_turf) + new spawned_effect(spawn_turf, src) return for (var/spawn_dir in GLOB.cardinals) @@ -219,31 +240,31 @@ continue var/turf/spawn_loc = get_step(src, spawn_dir) if (!(locate(/obj/effect/temp_visual/emerging_ground_spike/tendril) in spawn_loc) && isopenturf(spawn_loc)) - new spawned_effect(spawn_loc) + new spawned_effect(spawn_loc, src) /obj/effect/temp_visual/emerging_ground_spike/tendril icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' icon_state = "spikes_stabbing" - duration = 0.7 SECONDS + duration = 0.8 SECONDS position_variance = 3 - impale_damage = 10 + impale_damage = 15 damage_blacklist_typecache = list( /mob/living/basic/mining/tendril, ) impale_wound_bonus = CANT_WOUND - // Have we hit someone yet? + /// Have we hit someone yet? var/hit_loser = FALSE - -/obj/effect/temp_visual/emerging_ground_spike/tendril/single - icon_state = "spike" - duration = 1 SECONDS - harm_delay = 0.25 SECONDS - position_variance = 5 + /// For how long after emerging can we hit someone after harm_delay? + var/hit_entry = 0.35 SECONDS /obj/effect/temp_visual/emerging_ground_spike/tendril/impale() . = ..() hit_loser |= . RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_entered)) + addtimer(CALLBACK(src, PROC_REF(stop_impaling)), hit_entry) + +/obj/effect/temp_visual/emerging_ground_spike/tendril/proc/stop_impaling() + UnregisterSignal(loc, COMSIG_ATOM_ENTERED) /obj/effect/temp_visual/emerging_ground_spike/tendril/proc/on_entered(atom/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) SIGNAL_HANDLER @@ -255,6 +276,39 @@ playsound(src, 'sound/items/weapons/slice.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE) hit_loser = TRUE +/obj/effect/temp_visual/emerging_ground_spike/tendril/single + icon_state = "spike" + duration = 1.2 SECONDS + harm_delay = 0.3 SECONDS + hit_entry = 0.45 SECONDS + position_variance = 5 + +/// Subtype which deletes the chaser once it hits the target +/obj/effect/temp_visual/emerging_ground_spike/tendril/chaser + /// Chaser that spawned us + var/obj/effect/temp_visual/effect_trail/tendril_chaser/spawner + +/obj/effect/temp_visual/emerging_ground_spike/tendril/chaser/Initialize(mapload, spawner) + . = ..() + src.spawner = spawner + RegisterSignal(spawner, COMSIG_QDELETING, PROC_REF(on_spawner_destroy)) + +/obj/effect/temp_visual/emerging_ground_spike/tendril/chaser/proc/on_spawner_destroy(datum/source) + SIGNAL_HANDLER + spawner = null + +/obj/effect/temp_visual/emerging_ground_spike/tendril/chaser/Destroy() + spawner = null + return ..() + +/obj/effect/temp_visual/emerging_ground_spike/tendril/chaser/harm_mob(mob/living/victim) + // Don't multihit mobs by spikes from the same chaser + if (!spawner) + return FALSE + . = ..() + if (.) + qdel(spawner) + /datum/action/cooldown/mob_cooldown/tendril_cross_spikes name = "Cross Spikes" desc = "Create a wave of spikes around yourself, impaling anyone caught in it." @@ -263,7 +317,7 @@ background_icon_state = "bg_demon" overlay_icon_state = "bg_demon_border" click_to_activate = FALSE - cooldown_time = 10 SECONDS + cooldown_time = 12 SECONDS melee_cooldown_time = 0 shared_cooldown = NONE /// Range in which we create spikes diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm index 80b815087ac6..4eceea8a73cc 100644 --- a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm +++ b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm @@ -18,7 +18,6 @@ attack_sound = 'sound/items/weapons/bladeslice.ogg' attack_verb_continuous = "buffets" attack_verb_simple = "buffet" - crusher_loot = /obj/item/crusher_trophy/watcher_wing ai_controller = /datum/ai_controller/basic_controller/watcher butcher_results = list( /obj/item/stack/sheet/bone = 1, @@ -44,7 +43,6 @@ /mob/living/basic/mining/watcher/Initialize(mapload) . = ..() - AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/simple_flying) AddElement(/datum/element/content_barfer) AddComponent(/datum/component/ai_target_timer) @@ -91,8 +89,11 @@ health = 175 projectile_type = /obj/projectile/temp/watcher/magma_wing gaze_attack = /datum/action/cooldown/mob_cooldown/watcher_gaze/fire - crusher_loot = /obj/item/crusher_trophy/blaster_tubes/magma_wing - crusher_drop_chance = 100 // There's only going to be one of these per round throw them a bone + butcher_results = list( + /obj/item/stack/sheet/bone = 1, + /obj/item/stack/ore/diamond = 2, + /obj/item/stack/sheet/sinew/magmawing = 3, + ) /// Less durable, freezing projectiles /mob/living/basic/mining/watcher/icewing @@ -107,5 +108,8 @@ projectile_type = /obj/projectile/temp/watcher/ice_wing gaze_attack = /datum/action/cooldown/mob_cooldown/watcher_gaze/ice butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) - crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing - crusher_drop_chance = 100 + butcher_results = list( + /obj/item/stack/sheet/bone = 1, + /obj/item/stack/ore/diamond = 5, + /obj/item/stack/sheet/sinew/icewing = 3, + ) diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm index 53fef0e912ba..27687114d284 100644 --- a/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm +++ b/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm @@ -17,12 +17,22 @@ var/animation_time = 0.8 SECONDS /// How long after pressing the button do we give people to turn around? var/wait_delay = 1.6 SECONDS - /// What are we currently displaying? + /// What are we currently displaying to all mobs? var/image/current_overlay + /// Image displayed for to-be-blinded victims + var/image/danger_overlay /// Timer until we go to the next stage var/stage_timer + /// Proximity monitor we use to keep track of possible targets + var/datum/proximity_monitor/watcher_gaze/proximity_monitor + /// List of textrefs to mobs in range we're currently displaying warnings to -> are they currently under threat or not + var/list/tracked_mobs = list() /datum/action/cooldown/mob_cooldown/watcher_gaze/Activate(mob/living/target) + proximity_monitor = new(owner, effect_radius, ability = src) + // Start tracking all potential victims in range as proxmon won't trigger on them + for (var/mob/living/victim in viewers(effect_radius, owner)) + on_entered(victim) show_indicator_overlay("eye_open") stage_timer = addtimer(CALLBACK(src, PROC_REF(show_indicator_overlay), "eye_pulse"), animation_time, TIMER_STOPPABLE) StartCooldown(360 SECONDS, 360 SECONDS) @@ -33,14 +43,20 @@ deltimer(stage_timer) clear_current_overlay() StartCooldown() + tracked_mobs.Cut() + QDEL_NULL(proximity_monitor) return TRUE /datum/action/cooldown/mob_cooldown/watcher_gaze/Destroy() + tracked_mobs.Cut() + QDEL_NULL(proximity_monitor) deltimer(stage_timer) clear_current_overlay() return ..() /datum/action/cooldown/mob_cooldown/watcher_gaze/Remove(mob/removed_from) + tracked_mobs.Cut() + QDEL_NULL(proximity_monitor) deltimer(stage_timer) clear_current_overlay() return ..() @@ -50,8 +66,7 @@ deltimer(stage_timer) show_indicator_overlay("eye_flash") for (var/mob/living/viewer in viewers(effect_radius, owner)) - var/view_dir = get_dir(viewer, owner) - if (!(viewer.dir & view_dir) || viewer.stat != CONSCIOUS) + if (!valid_target(viewer)) continue if (!apply_effect(viewer)) continue @@ -67,6 +82,13 @@ var/mob/living/living_owner = owner living_owner.Stun(1.5 SECONDS, ignore_canstun = TRUE) +/datum/action/cooldown/mob_cooldown/watcher_gaze/proc/valid_target(mob/living/viewer) + if (!istype(viewer) || viewer.stat || viewer == owner) + return FALSE + if (!(viewer.dir & get_dir(viewer, owner))) + return FALSE + return TRUE + /// Do something bad to someone who was looking at us /datum/action/cooldown/mob_cooldown/watcher_gaze/proc/apply_effect(mob/living/viewer) if (!viewer.flash_act(intensity = 4, affect_silicon = TRUE, visual = TRUE, length = 3 SECONDS)) @@ -83,18 +105,88 @@ /// Display an animated overlay over our head to indicate what's going on /datum/action/cooldown/mob_cooldown/watcher_gaze/proc/show_indicator_overlay(overlay_state) clear_current_overlay() - current_overlay = image(icon = 'icons/effects/eldritch.dmi', loc = owner, icon_state = overlay_state, layer = ABOVE_ALL_MOB_LAYER) + current_overlay = image(icon = 'icons/effects/eldritch.dmi', loc = owner, icon_state = "[overlay_state]_y", layer = ABOVE_ALL_MOB_LAYER) current_overlay.pixel_w = -owner.pixel_x current_overlay.pixel_z = 28 SET_PLANE_EXPLICIT(current_overlay, ABOVE_LIGHTING_PLANE, owner) + // This will cause turning to reset the animation *but* this is the best option + // as modifying alpha requires readding the image to client.images for it to actually update + danger_overlay = image(icon = 'icons/effects/eldritch.dmi', loc = owner, icon_state = overlay_state, layer = ABOVE_ALL_MOB_LAYER) + danger_overlay.pixel_w = -owner.pixel_x + danger_overlay.pixel_z = 28 + SET_PLANE_EXPLICIT(danger_overlay, ABOVE_LIGHTING_PLANE, owner) + for(var/client/add_to in GLOB.clients) - add_to.images += current_overlay + var/mob/living/victim = add_to.mob + if (istype(victim) && tracked_mobs[REF(victim)]) + add_to.images += danger_overlay + else + add_to.images += current_overlay /// Hide whatever overlay we are showing /datum/action/cooldown/mob_cooldown/watcher_gaze/proc/clear_current_overlay() if (!isnull(current_overlay)) remove_image_from_clients(current_overlay, GLOB.clients) + remove_image_from_clients(danger_overlay, GLOB.clients) current_overlay = null + danger_overlay = null + +/datum/action/cooldown/mob_cooldown/watcher_gaze/proc/on_entered(mob/living/arrived) + if (arrived == owner) + return + // Already tracked + if (isnull(tracked_mobs[REF(arrived)])) + RegisterSignals(arrived, list(COMSIG_ATOM_POST_DIR_CHANGE, COMSIG_MOB_STATCHANGE), PROC_REF(update_state)) + update_state(arrived) + +/datum/action/cooldown/mob_cooldown/watcher_gaze/proc/on_exited(mob/living/exited) + if (exited == owner) + return + UnregisterSignal(exited, list(COMSIG_ATOM_POST_DIR_CHANGE, COMSIG_MOB_STATCHANGE)) + tracked_mobs -= REF(exited) + if (current_overlay && exited.client) + exited.client.images += current_overlay + exited.client.images -= danger_overlay + +/datum/action/cooldown/mob_cooldown/watcher_gaze/proc/update_state(mob/living/target) + SIGNAL_HANDLER + // Don't do viewers(), too costly and only applies for thermals anyways + if (valid_target(target)) + if (!tracked_mobs[REF(target)]) + tracked_mobs[REF(target)] = TRUE + if (current_overlay && target.client) + target.client.images -= current_overlay + target.client.images += danger_overlay + else if (tracked_mobs[REF(target)] != FALSE) // Can be null + tracked_mobs[REF(target)] = FALSE + if (current_overlay && target.client) + target.client.images += current_overlay + target.client.images -= danger_overlay + +// No need to refresh targets when the owner moves as the ability uses a do_after and will stop if the owner moves anyways +/datum/proximity_monitor/watcher_gaze + /// Ability we're linked to + var/datum/action/cooldown/mob_cooldown/watcher_gaze/gaze = null + +/datum/proximity_monitor/watcher_gaze/Destroy() + gaze = null + return ..() + +/datum/proximity_monitor/watcher_gaze/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, datum/action/cooldown/mob_cooldown/watcher_gaze/ability = null) + . = ..() + gaze = ability + +/datum/proximity_monitor/watcher_gaze/on_entered(atom/source, atom/movable/arrived, turf/old_loc) + if (source != host && arrived != host && isliving(arrived)) + gaze.on_entered(arrived) + +/datum/proximity_monitor/watcher_gaze/on_uncrossed(atom/source, atom/movable/gone, direction) + if (source != host && gone != host && isliving(gone)) + gaze.on_exited(gone) + +/datum/proximity_monitor/watcher_gaze/on_initialized(turf/location, atom/created, init_flags) + if (isliving(created)) + gaze.on_entered(created) /// Magmawing glare burns you /datum/action/cooldown/mob_cooldown/watcher_gaze/fire diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index b2b0c12c9c37..2589648ac8f4 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -24,7 +24,6 @@ response_harm_simple = "kick" mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE ai_controller = /datum/ai_controller/basic_controller/cat held_state = "cat2" attack_verb_continuous = "claws" @@ -97,6 +96,7 @@ AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/pet_bonus, "purr", /datum/mood_event/pet_animal) AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) + AddElement(/datum/element/can_be_held) add_cell_sample() add_verb(src, /mob/living/proc/toggle_resting) add_traits(list(TRAIT_CATLIKE_GRACE, TRAIT_VENTCRAWLER_ALWAYS, TRAIT_WOUND_LICKER, TRAIT_COLORBLIND), INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm index 97a44c433a00..4114699d342b 100644 --- a/code/modules/mob/living/basic/pets/dog/_dog.dm +++ b/code/modules/mob/living/basic/pets/dog/_dog.dm @@ -27,7 +27,6 @@ response_harm_simple = "kick" speak_emote = list("barks", "woofs") faction = list(FACTION_NEUTRAL) - can_be_held = TRUE ai_controller = /datum/ai_controller/basic_controller/dog // The dog attack pet command can raise melee attack above 0 attack_verb_continuous = "bites" @@ -113,6 +112,7 @@ AddElement(/datum/element/pet_bonus, "woof") AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/unfriend_attacker, untamed_reaction = "%SOURCE% fixes %TARGET% with a look of betrayal.") + AddElement(/datum/element/can_be_held) var/static/list/food_types = list( /obj/item/food/meat/slab/human/mutant/skeleton, /obj/item/stack/sheet/bone, diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm index 0cf4b48e52c4..9a6dd92c1738 100644 --- a/code/modules/mob/living/basic/pets/dog/corgi.dm +++ b/code/modules/mob/living/basic/pets/dog/corgi.dm @@ -271,7 +271,8 @@ ///Handler for COMSIG_MOB_RETRIEVE_ACCESS /mob/living/basic/pet/dog/corgi/proc/retrieve_access(mob/accessor, list/player_access) SIGNAL_HANDLER - player_access += access_card.GetAccess() + if(access_card) + player_access += access_card.GetAccess() ///Handles updating any existing overlays for the corgi (such as fashion items) when it changes how it appears, as in, dead or alive. /mob/living/basic/pet/dog/corgi/proc/on_appearance_change() diff --git a/code/modules/mob/living/basic/pets/fox.dm b/code/modules/mob/living/basic/pets/fox.dm index 16b3b6662175..e986d74259ba 100644 --- a/code/modules/mob/living/basic/pets/fox.dm +++ b/code/modules/mob/living/basic/pets/fox.dm @@ -19,7 +19,6 @@ response_harm_continuous = "kicks" response_harm_simple = "kick" gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE held_state = "fox" melee_damage_lower = 5 melee_damage_upper = 5 @@ -58,6 +57,7 @@ AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/tiny_mob_hunter, MOB_SIZE_SMALL) AddElement(/datum/element/ai_retaliate) + AddElement(/datum/element/can_be_held) /datum/ai_controller/basic_controller/fox blackboard = list( diff --git a/code/modules/mob/living/basic/pets/parrot/_parrot.dm b/code/modules/mob/living/basic/pets/parrot/_parrot.dm index d40a6af9b3dd..424057b89a52 100644 --- a/code/modules/mob/living/basic/pets/parrot/_parrot.dm +++ b/code/modules/mob/living/basic/pets/parrot/_parrot.dm @@ -2,6 +2,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( /datum/strippable_item/parrot_headset, + /datum/strippable_item/hand/left, ))) @@ -45,9 +46,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( ///Headset for Poly to yell at engineers :) var/obj/item/radio/headset/ears = null - ///Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding. - var/obj/item/held_item = null - /// The blackboard key we use to store the string we're repeating var/speech_blackboard_key = BB_PARROT_REPEAT_STRING /// The generic probability odds we have to do a speech-related action @@ -97,6 +95,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/strippable, GLOB.strippable_parrot_items) AddElement(/datum/element/simple_flying) + AddElement(/datum/element/dextrous, can_throw = TRUE, hands_count = 1) AddComponent(/datum/component/listen_and_repeat, desired_phrases = get_static_list_of_phrases(), blackboard_key = BB_PARROT_REPEAT_STRING) AddComponent(/datum/component/tameable, food_types = edibles, tame_chance = 100, bonus_tame_chance = 0) AddComponent(/datum/component/obeys_commands, pet_commands) @@ -110,15 +109,9 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( // should have cleaned these up on death, but let's be super safe in case that didn't happen if(!QDELETED(ears)) QDEL_NULL(ears) - if(!QDELETED(held_item)) - QDEL_NULL(held_item) return ..() /mob/living/basic/parrot/death(gibbed) - if(held_item) - held_item.forceMove(drop_location()) - held_item = null - if(ears) ears.forceMove(drop_location()) ears = null @@ -133,31 +126,28 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( /mob/living/basic/parrot/examine(mob/user) . = ..() + var/obj/item/held_item = get_active_held_item() . += "It appears to [isnull(held_item) ? "not be holding anything." : "be holding \a [held_item]."]" if(stat != DEAD) return if(HAS_MIND_TRAIT(user, TRAIT_NAIVE)) - . += pick( + . += span_notice(pick( "It seems tired and shagged out after a long squawk.", "It seems to be pining for the fjords.", "It's resting. It's a beautiful bird. Lovely plumage.", - ) + )) else - . += pick( + . += span_danger(pick( "This is a late parrot.", "This is an ex-parrot.", "This parrot is no more.", - ) + )) /mob/living/basic/parrot/say_dead(message) return // this is so flarped -/mob/living/basic/parrot/get_status_tab_items() - . = ..() - . += "Held Item: [held_item]" - /mob/living/basic/parrot/radio(message, list/message_mods = list(), list/spans, language) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be. . = ..() if(. != NONE) @@ -184,13 +174,11 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( return icon_state = HAS_TRAIT(src, TRAIT_PARROT_PERCHED) ? icon_sit : icon_living -/// Proc that we just use to see if we're rightclicking something for perch behavior or dropping the item we currently ahve -/mob/living/basic/parrot/resolve_right_click_attack(atom/target, list/modifiers) - if(!start_perching(target)) - return SECONDARY_ATTACK_CALL_NORMAL - if(!isnull(held_item)) - drop_held_item(gently = TRUE) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +/// Proc that we just use to see if we're dragging onto stomething something for perch behavior or dropping the item we currently have +/mob/living/basic/parrot/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params) + . = ..() + if(!start_perching(over)) + balloon_alert(user, "not a perching spot!") /// Proc that handles sending the signal and returning a valid phrase to say. Will not do anything if we don't have a stat or if we're cliented. /// Will return either a string or null. @@ -285,33 +273,34 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(.) return - if(isitem(target) && steal_from_ground(target)) - return BASIC_MOB_END_ATTACK_CHAIN_COOLDOWN - if(iscarbon(target) && steal_from_mob(target)) return BASIC_MOB_END_ATTACK_CHAIN_COOLDOWN /// Picks up an item from the ground and puts it in our claws. Returns TRUE if we picked it up, FALSE otherwise. -/mob/living/basic/parrot/proc/steal_from_ground(obj/item/target) - if(!isnull(held_item)) - balloon_alert(src, "already holding something!") - return FALSE - - if(target.w_class > WEIGHT_CLASS_SMALL) +/mob/living/basic/parrot/put_in_hand_check(obj/item/item_to_pick_up) + if(item_to_pick_up.w_class > WEIGHT_CLASS_SMALL) balloon_alert(src, "too big to pick up!") return FALSE - pick_up_item(target) - visible_message( - span_notice("[src] grabs [held_item]!"), - span_notice("You grab [held_item]!"), - span_hear("You hear the sounds of wings flapping furiously."), - ) + return ..() + +/mob/living/basic/parrot/put_in_hand(obj/item/target, hand_index, forced = FALSE, ignore_anim = TRUE, visuals_only = FALSE) + if(istype(target, /obj/item/food/cracker)) + consume_cracker(target) + qdel(target) + return + + if(..()) + visible_message( + span_notice("[src] grabs [target]!"), + span_notice("You grab [target]!"), + span_hear("You hear the sounds of wings flapping furiously."), + ) return TRUE /// Looks for an item that we can snatch and puts it in our claws. Returns TRUE if we picked it up, FALSE otherwise. /mob/living/basic/parrot/proc/steal_from_mob(mob/living/carbon/victim) - if(!isnull(held_item)) + if(!isnull(get_active_held_item())) balloon_alert(src, "already holding something!") return FALSE @@ -322,12 +311,12 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(!victim.temporarilyRemoveItemFromInventory(stealable)) continue + dropItemToGround(stealable) visible_message( - span_notice("[src] grabs [held_item] out of [victim]'s hand!"), - span_notice("You snag [held_item] out of [victim]'s hand!"), + span_notice("[src] wrestles [stealable] out of [victim]'s hand!"), + span_notice("You wrestles [stealable] out of [victim]'s hand!"), span_hear("You hear the sounds of wings flapping furiously."), ) - pick_up_item(stealable) return TRUE return FALSE @@ -370,41 +359,24 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, say), message = return_value, forced = "parrot oneliner on attack") -/// Handles picking up the item we're holding, done in its own proc because of a snowflake edge case we need to account for. No additional logic beyond that. -/// Returns TRUE if we picked it up, FALSE otherwise. -/mob/living/basic/parrot/proc/pick_up_item(obj/item/target) - if(istype(target, /obj/item/food/cracker)) - consume_cracker(target) - qdel(target) - return - - target.forceMove(src) - held_item = target - /// Handles dropping items we're holding. Gently is a special modifier we can use for special interactions. /mob/living/basic/parrot/proc/drop_held_item(gently = TRUE) - if(isnull(held_item)) + if(get_num_held_items() == 0) balloon_alert(src, "nothing to drop!") return if(stat != CONSCIOUS) // don't gotta do shit return - if(!gently && isgrenade(held_item)) - var/obj/item/grenade/bomb = held_item + if(!gently && isgrenade(get_active_held_item())) + var/obj/item/grenade/bomb = get_active_held_item() balloon_alert(src, "bombs away!") // you'll likely die too so we can get away with the `!` here bomb.forceMove(drop_location()) bomb.detonate() return balloon_alert(src, "dropped item") - held_item.forceMove(drop_location()) - -/mob/living/basic/parrot/Exited(atom/movable/gone, direction) - . = ..() - if(gone != held_item) - return - held_item = null + drop_all_held_items(drop_location()) /mob/living/basic/parrot/vv_edit_var(var_name, vval) . = ..() // give admins an easier time when it comes to fucking with poly diff --git a/code/modules/mob/living/basic/pets/sloth.dm b/code/modules/mob/living/basic/pets/sloth.dm index a6d6b4f6a479..fd2d3f2827cc 100644 --- a/code/modules/mob/living/basic/pets/sloth.dm +++ b/code/modules/mob/living/basic/pets/sloth.dm @@ -10,7 +10,6 @@ GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth) speak_emote = list("yawns") - can_be_held = TRUE held_state = "sloth" response_help_continuous = "pets" @@ -53,6 +52,7 @@ GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth) AddElement(/datum/element/pet_bonus, "ssmile") AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/ai_retaliate) + AddElement(/datum/element/can_be_held) AddComponent(/datum/component/tree_climber) if(!mapload || !isnull(GLOB.cargo_sloth) || !is_station_level(z)) diff --git a/code/modules/mob/living/basic/ruin_defender/zombie.dm b/code/modules/mob/living/basic/ruin_defender/zombie.dm index 41376b3d7f98..4cec33f13ed8 100644 --- a/code/modules/mob/living/basic/ruin_defender/zombie.dm +++ b/code/modules/mob/living/basic/ruin_defender/zombie.dm @@ -31,7 +31,7 @@ /mob/living/basic/zombie/Initialize(mapload) . = ..() apply_dynamic_human_appearance(src, outfit, /datum/species/zombie, bloody_slots = ITEM_SLOT_OCLOTHING) - AddElement(/datum/element/death_drops, /obj/effect/decal/remains/human) + //AddElement(/datum/element/death_drops, /obj/effect/decal/remains/human) DARKPACK EDIT REMOVAL - Graveyard random event /mob/living/basic/zombie/melee_attack(atom/target, list/modifiers, ignore_cooldown) . = ..() diff --git a/code/modules/mob/living/basic/slime/feeding.dm b/code/modules/mob/living/basic/slime/feeding.dm index 3661bcdbd30d..8c527891b8e6 100644 --- a/code/modules/mob/living/basic/slime/feeding.dm +++ b/code/modules/mob/living/basic/slime/feeding.dm @@ -91,6 +91,6 @@ balloon_alert(src, "feeding stopped") remove_offsets(FEEDING_OFFSET) layer = initial(layer) - buckled.unbuckle_mob(src,force=TRUE) + INVOKE_ASYNC(buckled, TYPE_PROC_REF(/atom/movable, unbuckle_mob), src, force=TRUE) #undef FEEDING_OFFSET diff --git a/code/modules/mob/living/basic/slime/life.dm b/code/modules/mob/living/basic/slime/life.dm index 8d2b0a074dfa..68f1eb1646da 100644 --- a/code/modules/mob/living/basic/slime/life.dm +++ b/code/modules/mob/living/basic/slime/life.dm @@ -20,10 +20,7 @@ /mob/living/basic/slime/proc/handle_slime_stasis() var/datum/gas_mixture/environment = loc.return_air() - var/bz_percentage = 0 - - if(environment.gases[/datum/gas/bz]) - bz_percentage = environment.gases[/datum/gas/bz][MOLES] / environment.total_moles() + var/bz_percentage = environment.moles[/datum/gas/bz] / environment.total_moles() if(bz_percentage >= 0.05 && bodytemperature < (T0C + 100)) //Check if we should be in stasis if(!has_status_effect(/datum/status_effect/grouped/stasis)) //Check if we don't have the status effect yet diff --git a/code/modules/mob/living/basic/snails/snail.dm b/code/modules/mob/living/basic/snails/snail.dm index 5c8ea912ee46..e972f9937c23 100644 --- a/code/modules/mob/living/basic/snails/snail.dm +++ b/code/modules/mob/living/basic/snails/snail.dm @@ -19,7 +19,6 @@ speed = 6 verb_say = "gurgles" verb_ask = "gurgles curiously" - can_be_held = TRUE verb_exclaim = "gurgles loudly" verb_yell = "gurgles loudly" worn_slot_flags = ITEM_SLOT_HEAD @@ -28,6 +27,8 @@ ai_controller = /datum/ai_controller/basic_controller/snail /// What do we turn into if effected by a regal rat? var/minion_path = /mob/living/basic/snail/angry + /// Are we able to be held by a player? + var/should_be_holdable = TRUE /mob/living/basic/snail/Initialize(mapload) . = ..() @@ -53,6 +54,9 @@ if (minion_path) AddElement(/datum/element/regal_rat_minion, converted_path = minion_path, success_balloon = "gurgle", pet_commands = GLOB.regal_rat_minion_commands) + if(should_be_holdable) + AddElement(/datum/element/can_be_held) + /mob/living/basic/snail/proc/on_entered(datum/source, obj/effect/decal/cleanable/food/salt/potential_salt) SIGNAL_HANDLER if(istype(potential_salt)) @@ -105,7 +109,7 @@ melee_damage_lower = 5 melee_damage_upper = 8 obj_damage = 8 - can_be_held = FALSE + should_be_holdable = FALSE minion_path = null ai_controller = /datum/ai_controller/basic_controller/snail/trash diff --git a/code/modules/mob/living/basic/space_fauna/ant.dm b/code/modules/mob/living/basic/space_fauna/ant.dm index 5dc63c95d5a1..97633a705801 100644 --- a/code/modules/mob/living/basic/space_fauna/ant.dm +++ b/code/modules/mob/living/basic/space_fauna/ant.dm @@ -26,7 +26,6 @@ response_harm_simple = "kick" gold_core_spawnable = FRIENDLY_SPAWN faction = list(FACTION_NEUTRAL) - can_be_held = FALSE health = 100 maxHealth = 100 light_range = 1.5 // Bioluminescence! diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm index d114b6d42a1e..f04fa3aea99d 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -252,6 +252,8 @@ var/datum/callback/got_disk = CALLBACK(src, PROC_REF(got_disk)) var/datum/callback/display_disk = CALLBACK(src, PROC_REF(display_disk)) AddComponent(/datum/component/nuclear_bomb_operator, got_disk, display_disk) + var/obj/item/implant/implanter = SSwardrobe.provide_type(/obj/item/implant/tacmap/nuclear/cayenne, src) + implanter.implant(src, null, TRUE) /mob/living/basic/carp/pet/cayenne/apply_colour() if (prob(RARE_CAYENNE_CHANCE)) diff --git a/code/modules/mob/living/basic/space_fauna/carp/megacarp.dm b/code/modules/mob/living/basic/space_fauna/carp/megacarp.dm index d82120a37e03..c86250c5f90c 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/megacarp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/megacarp.dm @@ -33,3 +33,6 @@ melee_damage_upper += rand(10,20) maxHealth += rand(30,60) health = maxHealth + +/mob/living/basic/carp/mega/get_hud_x_offset() + return -5 diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm index 7b2846d42729..35a9e4dafe4b 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm @@ -58,7 +58,7 @@ grant_actions_by_list(innate_actions) AddElement(/datum/element/simple_flying) - var/list/food_types = string_list(list(/obj/item/food/grown/carrot)) + var/list/food_types = string_list(list(/obj/item/food/grown/carrotlike/carrot)) AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) on_hit_overlay = mutable_appearance(icon, "[icon_state]_crying") @@ -71,7 +71,7 @@ if(!proximity_flag) return - if(istype(attack_target, /obj/item/food/grown/carrot)) + if(istype(attack_target, /obj/item/food/grown/carrotlike/carrot)) adjust_brute_loss(-5) to_chat(src, span_warning("You eat [attack_target]! It restores some health!")) qdel(attack_target) diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm index d6e912f1ce62..e24abb62b5e8 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm @@ -49,5 +49,5 @@ /datum/ai_planning_subtree/find_and_hunt_target/carrot target_key = BB_LOW_PRIORITY_HUNTING_TARGET hunting_behavior = /datum/ai_behavior/hunt_target/interact_with_target/carrot - hunt_targets = list(/obj/item/food/grown/carrot) + hunt_targets = list(/obj/item/food/grown/carrotlike/carrot) hunt_range = 6 diff --git a/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm b/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm index 60288e9c5e74..4e6701bea5bc 100644 --- a/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm +++ b/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm @@ -87,4 +87,5 @@ var/target_zone = victim.resting ? BODY_ZONE_CHEST : pick_weight(standing_damage_zones) victim.apply_damage(impale_damage, damagetype = BRUTE, def_zone = target_zone, wound_bonus = impale_wound_bonus, sharpness = SHARP_POINTY) + to_chat(victim, span_userdanger("You've been impaled by \a [src]!")) return TRUE diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm index f0e370c668e2..bf64860cb540 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm @@ -99,9 +99,9 @@ /mob/living/basic/regal_rat/handle_environment(datum/gas_mixture/environment) . = ..() - if(stat == DEAD || isnull(environment) || isnull(environment.gases[/datum/gas/miasma])) + if(stat == DEAD || isnull(environment) || isnull(environment.moles[/datum/gas/miasma])) return - var/miasma_percentage = environment.gases[/datum/gas/miasma][MOLES] / environment.total_moles() + var/miasma_percentage = environment.moles[/datum/gas/miasma] / environment.total_moles() if(miasma_percentage >= 0.25) heal_bodypart_damage(1) diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm index 86849f1ffd9f..5202159878b1 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm @@ -175,12 +175,6 @@ // A note to future coders: do not replace this with an EMP because it will wreck malf AIs and everyone will hate you. /datum/action/cooldown/spell/aoe/revenant/malfunction/cast_on_thing_in_aoe(turf/victim, mob/living/basic/revenant/caster) - for(var/mob/living/simple_animal/bot/bot in victim) - if(!(bot.bot_cover_flags & BOT_COVER_EMAGGED)) - new /obj/effect/temp_visual/revenant(bot.loc) - bot.bot_cover_flags &= ~BOT_COVER_LOCKED - bot.bot_cover_flags |= BOT_COVER_MAINTS_OPEN - bot.emag_act(caster) for(var/mob/living/basic/bot/bot in victim) if(!(bot.bot_access_flags & BOT_COVER_EMAGGED)) new /obj/effect/temp_visual/revenant(bot.loc) diff --git a/code/modules/mob/living/basic/space_fauna/robot_customer.dm b/code/modules/mob/living/basic/space_fauna/robot_customer.dm index 7ffe1fadd6a5..1afe0b9c97b5 100644 --- a/code/modules/mob/living/basic/space_fauna/robot_customer.dm +++ b/code/modules/mob/living/basic/space_fauna/robot_customer.dm @@ -22,6 +22,7 @@ ai_controller = /datum/ai_controller/robot_customer damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1) + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" /// The clothes that we draw on this tourist. var/clothes_set = "amerifat_clothes" @@ -42,7 +43,8 @@ add_traits(list(TRAIT_NOMOBSWAP, TRAIT_NO_TELEPORT, TRAIT_STRONG_GRABBER), INNATE_TRAIT) // never suffer a bitch to fuck with you AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) - + if(SStts.tts_enabled) + voice = pick(strings("robot_voices.json", "[customer_data.type]", "config")) ai_controller.set_blackboard_key(BB_CUSTOMER_CUSTOMERINFO, customer_info) ai_controller.set_blackboard_key(BB_CUSTOMER_ATTENDING_VENUE, attending_venue) ai_controller.set_blackboard_key(BB_CUSTOMER_PATIENCE, customer_info.total_patience) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider.dm b/code/modules/mob/living/basic/space_fauna/spider/spider.dm index ce246e1e0e3e..cde120b1c4c5 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider.dm @@ -200,7 +200,6 @@ icon_state = "maint_spider" icon_living = "maint_spider" icon_dead = "maint_spider_dead" - can_be_held = TRUE mob_size = MOB_SIZE_TINY held_w_class = WEIGHT_CLASS_TINY worn_slot_flags = ITEM_SLOT_HEAD @@ -234,3 +233,4 @@ AddElement(/datum/element/ai_retaliate) AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/tiny_mob_hunter) + AddElement(/datum/element/can_be_held) diff --git a/code/modules/mob/living/basic/stoats/stoat.dm b/code/modules/mob/living/basic/stoats/stoat.dm index 25d077dc54bb..d9730e4c4f50 100644 --- a/code/modules/mob/living/basic/stoats/stoat.dm +++ b/code/modules/mob/living/basic/stoats/stoat.dm @@ -19,7 +19,6 @@ response_help_simple = "pet" verb_say = "chips" verb_ask = "chips curiously" - can_be_held = TRUE verb_exclaim = "chips loudly" verb_yell = "chips loudly" faction = list(FACTION_NEUTRAL) @@ -47,6 +46,7 @@ AddComponent(/datum/component/tameable, food_types = eatable_food, tame_chance = 70, bonus_tame_chance = 0) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(eatable_food)) AddElement(/datum/element/wears_collar) + AddElement(/datum/element/can_be_held) AddComponent(/datum/component/obeys_commands, pet_commands) if(can_breed) add_breeding_component() @@ -65,15 +65,15 @@ /mob/living/basic/stoat/kit = 100 // Placeholder until we get proper baby stoats ) AddComponent(\ - /datum/component/breed,\ - can_breed_with = typecacheof(list(/mob/living/basic/stoat)),\ - baby_paths = baby_paths,\ + /datum/component/breed,\ + can_breed_with = typecacheof(list(/mob/living/basic/stoat)),\ + baby_paths = baby_paths,\ ) /mob/living/basic/stoat/kit name = "\improper stoat kit" real_name = "stoat" - desc = "They're a stoat kit!" + desc = "An apex predator, but friend-shaped, and tiny..." icon_state = "kit_stoat" icon_living = "kit_stoat" icon_dead = "kit_stoat_dead" @@ -82,3 +82,15 @@ ai_controller = /datum/ai_controller/basic_controller/stoat/kit mob_size = MOB_SIZE_SMALL can_breed = FALSE + +/mob/living/basic/stoat/kit/Initialize(mapload) + . = ..() + AddComponent(\ + /datum/component/growth_and_differentiation,\ + growth_time = 20 MINUTES,\ + growth_path = /mob/living/basic/stoat,\ + growth_probability = 100,\ + lower_growth_value = 0.5,\ + upper_growth_value = 1,\ + signals_to_kill_on = list(COMSIG_MOB_CLIENT_LOGIN),\ + ) diff --git a/code/modules/mob/living/basic/tree.dm b/code/modules/mob/living/basic/tree.dm index 5d370cf7cfbe..5cf9c1bf27a2 100644 --- a/code/modules/mob/living/basic/tree.dm +++ b/code/modules/mob/living/basic/tree.dm @@ -66,10 +66,10 @@ if(!isopenturf(loc)) return var/turf/open/our_turf = src.loc - if(!our_turf.air || !our_turf.air.gases[/datum/gas/carbon_dioxide]) + if(!our_turf.air || !our_turf.air.moles[/datum/gas/carbon_dioxide]) return var/datum/gas_mixture/our_air = our_turf.air - var/co2 = our_air.gases[/datum/gas/carbon_dioxide][MOLES] + var/co2 = our_air.moles[/datum/gas/carbon_dioxide] if(co2 > 0 && SPT_PROB(13, seconds_per_tick)) var/amt = min(co2, 9) our_air.adjust_gas(/datum/gas/carbon_dioxide, -amt) diff --git a/code/modules/mob/living/basic/turtle/turtle.dm b/code/modules/mob/living/basic/turtle/turtle.dm index 4000d4f3ad6e..9f0ab89b07ae 100644 --- a/code/modules/mob/living/basic/turtle/turtle.dm +++ b/code/modules/mob/living/basic/turtle/turtle.dm @@ -94,6 +94,8 @@ return destined_path /mob/living/basic/turtle/process(seconds_per_tick) + if(HAS_TRAIT(src, TRAIT_STASIS)) + return if(isnull(reagents) || !length(reagents.reagent_list)) //if we have no reagents, default to our highest destined path set_plant_growth(retrieve_destined_path(), 0.5) return diff --git a/code/modules/mob/living/basic/vermin/axolotl.dm b/code/modules/mob/living/basic/vermin/axolotl.dm index 278fc0eac690..730b22fb16df 100644 --- a/code/modules/mob/living/basic/vermin/axolotl.dm +++ b/code/modules/mob/living/basic/vermin/axolotl.dm @@ -22,7 +22,6 @@ response_harm_continuous = "splats" response_harm_simple = "splat" - can_be_held = TRUE held_w_class = WEIGHT_CLASS_TINY held_lh = 'icons/mob/inhands/animal_item_lefthand.dmi' held_rh = 'icons/mob/inhands/animal_item_righthand.dmi' @@ -35,6 +34,7 @@ . = ..() add_traits(list(TRAIT_NODROWN, TRAIT_SWIMMER, TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) AddElement(/datum/element/swabable, CELL_LINE_TABLE_AXOLOTL, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) + AddElement(/datum/element/can_be_held) /datum/ai_controller/basic_controller/axolotl ai_traits = PASSIVE_AI_FLAGS diff --git a/code/modules/mob/living/basic/vermin/cockroach/cockroach.dm b/code/modules/mob/living/basic/vermin/cockroach/cockroach.dm index 76dee59ce357..393a612f1b1b 100644 --- a/code/modules/mob/living/basic/vermin/cockroach/cockroach.dm +++ b/code/modules/mob/living/basic/vermin/cockroach/cockroach.dm @@ -10,7 +10,6 @@ health = 1 maxHealth = 1 speed = 1.25 - can_be_held = TRUE gold_core_spawnable = FRIENDLY_SPAWN pass_flags = PASSTABLE | PASSGRILLE | PASSMOB @@ -50,6 +49,7 @@ . = ..() AddElement(/datum/element/death_drops, /obj/effect/decal/cleanable/insectguts) AddElement(/datum/element/swabable, cockroach_cell_line, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 7) + AddElement(/datum/element/can_be_held) AddComponent( \ /datum/component/squashable, \ squash_chance = 50, \ diff --git a/code/modules/mob/living/basic/vermin/frog.dm b/code/modules/mob/living/basic/vermin/frog.dm index 0e4b7f2adc26..d7dbe3848f82 100644 --- a/code/modules/mob/living/basic/vermin/frog.dm +++ b/code/modules/mob/living/basic/vermin/frog.dm @@ -31,7 +31,6 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE held_w_class = WEIGHT_CLASS_TINY worn_slot_flags = ITEM_SLOT_HEAD head_icon = 'icons/mob/clothing/head/pets_head.dmi' @@ -60,6 +59,7 @@ AddElement(/datum/element/venomous, poison_type, poison_per_bite) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/swabable, CELL_LINE_TABLE_FROG, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) + AddElement(/datum/element/can_be_held) if (minion_type) AddElement(/datum/element/regal_rat_minion, converted_path = minion_type, success_balloon = "ribbit", pet_commands = GLOB.regal_rat_minion_commands) diff --git a/code/modules/mob/living/basic/vermin/lizard.dm b/code/modules/mob/living/basic/vermin/lizard.dm index 3c5852699013..a61b1604c549 100644 --- a/code/modules/mob/living/basic/vermin/lizard.dm +++ b/code/modules/mob/living/basic/vermin/lizard.dm @@ -32,7 +32,6 @@ gold_core_spawnable = FRIENDLY_SPAWN obj_damage = 0 environment_smash = ENVIRONMENT_SMASH_NONE - can_be_held = TRUE held_w_class = WEIGHT_CLASS_TINY held_lh = 'icons/mob/inhands/animal_item_lefthand.dmi' held_rh = 'icons/mob/inhands/animal_item_righthand.dmi' @@ -60,6 +59,7 @@ . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/pet_bonus, "tongue") + AddElement(/datum/element/can_be_held) AddElement(/datum/element/basic_eating, heal_amt = 5, food_types = edibles) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(edibles)) diff --git a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm index 94acd65a3dac..1e70c723a740 100644 --- a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm +++ b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm @@ -16,7 +16,6 @@ maxHealth = 25 speed = 1.25 gold_core_spawnable = FRIENDLY_SPAWN - can_be_held = TRUE worn_slot_flags = ITEM_SLOT_HEAD verb_say = "flutters" @@ -60,6 +59,7 @@ ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(food_types)) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/pet_bonus, "squeak") + AddElement(/datum/element/can_be_held) add_verb(src, /mob/living/proc/toggle_resting) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index 67cae390295f..3e92f78c8afb 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -11,7 +11,6 @@ density = FALSE pass_flags = PASSTABLE|PASSGRILLE|PASSMOB mob_size = MOB_SIZE_TINY - can_be_held = TRUE held_w_class = WEIGHT_CLASS_TINY mob_biotypes = MOB_ORGANIC|MOB_BEAST gold_core_spawnable = FRIENDLY_SPAWN @@ -78,6 +77,7 @@ AddElement(/datum/element/connect_loc, loc_connections) make_tameable() AddComponent(/datum/component/swarming, 16, 16) //max_x, max_y + AddElement(/datum/element/can_be_held) /mob/living/basic/mouse/proc/make_tameable() if (HAS_TRAIT(src, TRAIT_TAMED)) @@ -381,24 +381,22 @@ qdel(src) return LAZARUS_INJECTOR_USED -/obj/item/food/deadmouse/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - var/mob/living/living_user = user - if(istype(living_user) && attacking_item.get_sharpness() && living_user.combat_mode) - if(!isturf(loc)) - balloon_alert(user, "can't butcher here!") - return - - balloon_alert(user, "butchering...") - if(!do_after(user, 0.75 SECONDS, src)) - balloon_alert(user, "interrupted!") - return - - loc.balloon_alert(user, "butchered") - new /obj/item/food/meat/slab/mouse(loc) - qdel(src) - return +/obj/item/food/deadmouse/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.get_sharpness() || !user.combat_mode) + return NONE + if(!isturf(loc)) + balloon_alert(user, "can't butcher here!") + return ITEM_INTERACT_BLOCKING - return ..() + balloon_alert(user, "butchering...") + if(!do_after(user, 0.75 SECONDS, src)) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + + loc.balloon_alert(user, "butchered") + new /obj/item/food/meat/slab/mouse(loc) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/item/food/deadmouse/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(isnull(reagents) || !interacting_with.is_open_container()) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 00adadd33fdb..3f2d984e67eb 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -5,8 +5,10 @@ icon_state = "mmi_off" base_icon_state = "mmi" w_class = WEIGHT_CLASS_NORMAL + + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/braintype = "Cyborg" - var/obj/item/radio/radio = null //Let's give it a radio. + var/obj/item/radio/mmi/radio = null //Let's give it a radio. var/mob/living/brain/brainmob = null //The current occupant. var/mob/living/silicon/robot = null //Appears unused. var/obj/vehicle/sealed/mecha = null //This does not appear to be used outside of reference in mecha.dm. @@ -17,10 +19,12 @@ /// Whether the brainmob can move. Doesnt usually matter but SPHERICAL POSIBRAINSSS var/immobilize = TRUE +/obj/item/radio/mmi + custom_materials = null + /obj/item/mmi/Initialize(mapload) . = ..() radio = new(src) //Spawns a radio inside the MMI. - radio.set_broadcasting(FALSE) //researching radio mmis turned the robofabs into radios because this didnt start as 0. laws.set_laws_config() /obj/item/mmi/Destroy() @@ -259,12 +263,7 @@ /obj/item/mmi/proc/replacement_ai_name() return brainmob.name -/obj/item/mmi/verb/Toggle_Listening() - set name = "Toggle Listening" - set desc = "Toggle listening channel on or off." - set category = "MMI" - set src = usr.loc - set popup_menu = FALSE +GAME_VERB_SRC_DESC(/obj/item/mmi, Toggle_Listening, usr.loc, "Toggle Listening", "Toggle listening channel on or off.", "MMI") if(brainmob.stat) to_chat(brainmob, span_warning("Can't do that while incapacitated or dead!")) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index e9247477c35a..c3b9c811f484 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -256,7 +256,7 @@ else return span_info("This one is completely devoid of life.") -/obj/item/organ/brain/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/brain/get_status_appendix(scanpower, add_tooltips) var/list/trauma_text for(var/datum/brain_trauma/trauma as anything in traumas) var/trauma_desc = "" diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 7bfc3612e885..f4792ddef96a 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -9,6 +9,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) w_class = WEIGHT_CLASS_NORMAL req_access = list(ACCESS_ROBOTICS) braintype = "Android" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.85, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.67, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) ///Message sent to the user when polling ghosts var/begin_activation_message = span_notice("You carefully locate the manual activation switch and start the positronic brain's boot process.") @@ -230,6 +231,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) icon_state = "spheribrain" base_icon_state = "spheribrain" immobilize = FALSE + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5) /// Delay between movements var/move_delay = 0.5 SECONDS /// when can we move again? diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index a524b6c91b62..3de9f365c95e 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -43,7 +43,7 @@ ) /mob/living/carbon/alien/Initialize(mapload) - add_verb(src, /mob/living/proc/mob_sleep) + ASSIGN_GAME_VERB(src, /mob/living, mob_sleep) add_verb(src, /mob/living/proc/toggle_resting) create_bodyparts() //initialize bodyparts diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index e7b45585511b..33918c16741d 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -18,25 +18,25 @@ var/plasma_used = 0 var/plas_detect_threshold = 0.02 var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME - var/list/breath_gases = breath.gases + var/list/breath_moles = breath.moles breath.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) //Partial pressure of the plasma in our breath - var/Plasma_pp = (breath_gases[/datum/gas/plasma][MOLES]/breath.total_moles())*breath_pressure + var/plasma_pp = (breath_moles[/datum/gas/plasma] / breath.total_moles()) * breath_pressure - if(Plasma_pp > plas_detect_threshold) // Detect plasma in air - adjustPlasma(breath_gases[/datum/gas/plasma][MOLES]*250) + if(plasma_pp > plas_detect_threshold) // Detect plasma in air + adjustPlasma(breath_moles[/datum/gas/plasma] * 250) throw_alert(ALERT_XENO_PLASMA, /atom/movable/screen/alert/alien_plas) - plasma_used = breath_gases[/datum/gas/plasma][MOLES] + plasma_used = breath_moles[/datum/gas/plasma] else clear_alert(ALERT_XENO_PLASMA) //Breathe in plasma and out oxygen - breath_gases[/datum/gas/plasma][MOLES] -= plasma_used - breath_gases[/datum/gas/oxygen][MOLES] += plasma_used + breath_moles[/datum/gas/plasma] -= plasma_used + breath_moles[/datum/gas/oxygen] += plasma_used breath.garbage_collect() diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 7c99305fd3b0..53a1e8fc0f03 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -23,7 +23,7 @@ else to_chat(finder, span_notice("It's grown quite large, and writhes slightly as you look at it.")) if(prob(10)) - attempt_grow(gib_on_success = FALSE) + INVOKE_ASYNC(src, PROC_REF(attempt_grow), gib_on_success = FALSE) /obj/item/organ/body_egg/alien_embryo/on_life(seconds_per_tick) . = ..() @@ -57,6 +57,10 @@ to_chat(owner, span_danger("You feel something tearing its way out of your chest...")) owner.adjust_tox_loss(5 * seconds_per_tick) // Why is this [TOX]? +/obj/item/organ/body_egg/alien_embryo/get_status_appendix(scanpower, add_tooltips) + if(scanpower >= SCANPOWER_SUPER) + return "Stage: [stage]/6" + /// Controls Xenomorph Embryo growth. If embryo is fully grown (or overgrown), stop the proc. If not, increase the stage by one and if it's not fully grown (stage 6), add a timer to do this proc again after however long the growth time variable is. /obj/item/organ/body_egg/alien_embryo/proc/advance_embryo_stage() if(stage >= 6) @@ -78,7 +82,7 @@ /obj/item/organ/body_egg/alien_embryo/egg_process() if(stage == 6 && prob(50)) // If we are mid surgery we won't gib the mob, isn't that neat? - attempt_grow(gib_on_success = !LIMB_HAS_SURGERY_STATE(bodypart_owner, SURGERY_SKIN_OPEN|SURGERY_BONE_SAWED)) + INVOKE_ASYNC(src, PROC_REF(attempt_grow), gib_on_success = !LIMB_HAS_SURGERY_STATE(bodypart_owner, SURGERY_SKIN_OPEN|SURGERY_BONE_SAWED)) /// Attempt to burst an alien outside of the host, getting a ghost to play as the xeno. /obj/item/organ/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index cfdf70e57738..9339bd7abd80 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -46,9 +46,9 @@ RegisterSignal(src, COMSIG_ITEM_IN_UNWRAPPED_TRAITOR_MAIL, PROC_REF(on_mail_unwrap)) /obj/item/clothing/mask/facehugger/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) - ..() - if(atom_integrity < 90) - Die() + . = ..() + if(. && atom_integrity < 90 && !QDELETED(src)) + die() /obj/item/clothing/mask/facehugger/attackby(obj/item/attacked_item, mob/user, list/modifiers, list/attack_modifiers) return attacked_item.attack_atom(src, user, modifiers) @@ -56,20 +56,20 @@ /obj/item/clothing/mask/facehugger/proc/react_to_mob(datum/source, mob/user) SIGNAL_HANDLER if((stat == CONSCIOUS && !sterile) && !isalien(user)) - if(Leap(user)) + if(leap_to(user)) return COMSIG_LIVING_CANCEL_PULL //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/mask/facehugger/attack_hand(mob/user, list/modifiers) if((stat == CONSCIOUS && !sterile) && !isalien(user)) - if(Leap(user)) + if(leap_to(user)) return . = ..() /obj/item/clothing/mask/facehugger/attack(mob/living/M, mob/user) ..() if(user.transferItemToLoc(src, get_turf(M))) - Leap(M) + leap_to(M) /obj/item/clothing/mask/facehugger/examine(mob/user) . = ..() @@ -87,11 +87,11 @@ return (exposed_temperature > 300) /obj/item/clothing/mask/facehugger/atmos_expose(datum/gas_mixture/air, exposed_temperature) - Die() + die() /obj/item/clothing/mask/facehugger/equipped(mob/M) . = ..() - Attach(M) + attach_to_victim(M) /obj/item/clothing/mask/facehugger/proc/on_entered(datum/source, atom/target) SIGNAL_HANDLER @@ -103,7 +103,7 @@ /obj/item/clothing/mask/facehugger/HasProximity(atom/movable/AM as mob|obj) if(CanHug(AM) && Adjacent(AM)) - return Leap(AM) + return leap_to(AM) /obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle, quickstart = TRUE, throw_type_path = /datum/thrownthing) . = ..() @@ -121,7 +121,7 @@ ..() if(stat == CONSCIOUS) icon_state = "[base_icon_state]" - Leap(hit_atom) + leap_to(hit_atom) /obj/item/clothing/mask/facehugger/proc/valid_to_attach(mob/living/hit_mob) // valid targets: carbons except aliens and devils @@ -130,12 +130,9 @@ return FALSE if(attached) return FALSE - if(!iscarbon(hit_mob)) - return FALSE - // disallowed carbons - if(isalien(hit_mob)) + if(!ishuman(hit_mob)) return FALSE - var/mob/living/carbon/target = hit_mob + var/mob/living/carbon/human/target = hit_mob // gotta have a head to be implanted (no changelings or sentient plants) if(!target.get_bodypart(BODY_ZONE_HEAD)) return FALSE @@ -145,12 +142,12 @@ // carbon, has head, not an alien nor has an hivenode or embryo: valid return TRUE -/obj/item/clothing/mask/facehugger/proc/Leap(mob/living/hit_mob) +/obj/item/clothing/mask/facehugger/proc/leap_to(mob/living/hit_mob) //check if not carbon/alien/has facehugger already/ect. if(!valid_to_attach(hit_mob)) return FALSE - var/mob/living/carbon/target = hit_mob - if(target.wear_mask && istype(target.wear_mask, /obj/item/clothing/mask/facehugger)) + var/mob/living/carbon/human/target = hit_mob + if(istype(target.wear_mask, /obj/item/clothing/mask/facehugger)) return FALSE // passed initial checks - time to leap! target.visible_message(span_danger("[src] leaps at [target]'s face!"), \ @@ -160,7 +157,7 @@ if(target.is_mouth_covered(ITEM_SLOT_HEAD)) target.visible_message(span_danger("[src] smashes against [target]'s [target.head]!"), \ span_userdanger("[src] smashes against your [target.head]!")) - Die() + die() return FALSE if(target.wear_mask) @@ -175,7 +172,7 @@ log_combat(target, src, "was facehugged by") return TRUE // time for a smoke -/obj/item/clothing/mask/facehugger/proc/Attach(mob/living/victim) +/obj/item/clothing/mask/facehugger/proc/attach_to_victim(mob/living/victim) if(!valid_to_attach(victim)) return @@ -193,27 +190,22 @@ victim.Paralyze(1 SECONDS) victim.adjust_confusion(20 SECONDS) victim.Knockdown(10 SECONDS) - GoIdle() //so it doesn't jump the people that tear it off + go_idle() //so it doesn't jump the people that tear it off - addtimer(CALLBACK(src, PROC_REF(Impregnate), victim), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME)) + addtimer(CALLBACK(src, PROC_REF(impregnate_target), victim), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME)) /obj/item/clothing/mask/facehugger/proc/detach() attached = 0 -/obj/item/clothing/mask/facehugger/proc/Impregnate(mob/living/target) - if(!target || target.stat == DEAD) //was taken off or something +/obj/item/clothing/mask/facehugger/proc/impregnate_target(mob/living/target) + if(!target || target.stat == DEAD || target.get_item_by_slot(ITEM_SLOT_MASK) != src) //was taken off or something return - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(C.wear_mask != src) - return - if(!sterile) target.visible_message(span_danger("[src] falls limp after violating [target]'s face!"), \ span_userdanger("[src] falls limp after violating your face!")) - Die() + die() icon_state = "[base_icon_state]_impregnated" worn_icon_state = "[base_icon_state]_impregnated" @@ -229,7 +221,7 @@ target.visible_message(span_danger("[src] violates [target]'s face!"), \ span_userdanger("[src] violates your face!")) -/obj/item/clothing/mask/facehugger/proc/GoActive() +/obj/item/clothing/mask/facehugger/proc/go_active() if(stat == DEAD || stat == CONSCIOUS) return @@ -237,7 +229,7 @@ icon_state = "[base_icon_state]" worn_icon_state = "[base_icon_state]" -/obj/item/clothing/mask/facehugger/proc/GoIdle() +/obj/item/clothing/mask/facehugger/proc/go_idle() if(stat == DEAD || stat == UNCONSCIOUS) return @@ -245,9 +237,9 @@ icon_state = "[base_icon_state]_inactive" worn_icon_state = "[base_icon_state]_inactive" - addtimer(CALLBACK(src, PROC_REF(GoActive)), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME)) + addtimer(CALLBACK(src, PROC_REF(go_active)), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME)) -/obj/item/clothing/mask/facehugger/proc/Die() +/obj/item/clothing/mask/facehugger/proc/die() if(stat == DEAD) return @@ -300,7 +292,7 @@ if(stat != CONSCIOUS) return NONE to_chat(user, span_danger("There's something moving inside of \the [letter]!")) - Leap(user) + leap_to(user) return COMPONENT_TRAITOR_MAIL_HANDLED /obj/item/clothing/mask/facehugger/lamarr @@ -330,7 +322,7 @@ slowdown = 0 integrity_failure = 0 -/obj/item/clothing/mask/facehugger/toy/Die() +/obj/item/clothing/mask/facehugger/toy/die() return #undef MIN_ACTIVE_TIME diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 097a85e55b24..587e23536544 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -488,50 +488,43 @@ if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. return - if(glasses) - new_sight |= glasses.vision_flags - if(glasses.invis_override) - set_invis_see(glasses.invis_override) - else - set_invis_see(min(glasses.invis_view, see_invisible)) - if(!isnull(glasses.lighting_cutoff)) - lighting_cutoff = max(lighting_cutoff, glasses.lighting_cutoff) - if(length(glasses.color_cutoffs)) - lighting_color_cutoffs = blend_cutoff_colors(lighting_color_cutoffs, glasses.color_cutoffs) + new_sight |= get_sight_and_cutoffs() + + if(SSmapping.level_trait(z, ZTRAIT_NOXRAY)) + new_sight = NONE + + // DARKPACK EDIT ADD - Necromancy + if(HAS_TRAIT(src, TRAIT_GHOST_VISION)) + see_invisible = SEE_INVISIBLE_OBSERVER + // DARKPACK EDIT END - Necromancy + set_sight(new_sight) + return ..() +/// Modifies lighting_cutoff/lighting_color_cutoffs/see_invisible and returns additional sight flags to apply +/mob/living/carbon/proc/get_sight_and_cutoffs() + . = NONE if(HAS_TRAIT(src, TRAIT_TRUE_NIGHT_VISION)) lighting_cutoff = max(lighting_cutoff, LIGHTING_CUTOFF_HIGH) if(HAS_TRAIT(src, TRAIT_MESON_VISION)) - new_sight |= SEE_TURFS + . |= SEE_TURFS lighting_cutoff = max(lighting_cutoff, LIGHTING_CUTOFF_MEDIUM) if(HAS_TRAIT(src, TRAIT_THERMAL_VISION)) - new_sight |= SEE_MOBS + . |= SEE_MOBS lighting_cutoff = max(lighting_cutoff, LIGHTING_CUTOFF_MEDIUM) if (HAS_TRAIT(src, TRAIT_MINOR_NIGHT_VISION)) lighting_cutoff = max(lighting_cutoff, LIGHTING_CUTOFF_LOW) if(HAS_TRAIT(src, TRAIT_XRAY_VISION)) - new_sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + . |= SEE_TURFS|SEE_MOBS|SEE_OBJS if(HAS_TRAIT(src, TRAIT_ECHOLOCATOR)) - new_sight |= SEE_MOBS|SEE_TURFS + . |= SEE_MOBS|SEE_TURFS lighting_cutoff = max(lighting_cutoff, LIGHTING_CUTOFF_FULLBRIGHT) - if(SSmapping.level_trait(z, ZTRAIT_NOXRAY)) - new_sight = NONE - - // DARKPACK EDIT ADD - Necromancy - if(HAS_TRAIT(src, TRAIT_GHOST_VISION)) - see_invisible = SEE_INVISIBLE_OBSERVER - // DARKPACK EDIT END - Necromancy - - set_sight(new_sight) - return ..() - /** * Calculates how visually impaired the mob is by their equipment and other factors * @@ -1197,9 +1190,6 @@ if (ismecha(loc)) return FALSE - if (wearing_shock_proof_gloves()) - return FALSE - if(!get_powernet_info_from_source(power_source)) return FALSE @@ -1208,10 +1198,6 @@ return TRUE -/// Returns if the carbon is wearing shock proof gloves -/mob/living/carbon/proc/wearing_shock_proof_gloves() - return gloves?.siemens_coefficient == 0 - /// Modifies max_skillchip_count and updates active skillchips /mob/living/carbon/proc/adjust_skillchip_complexity_modifier(delta) skillchip_complexity_modifier += delta @@ -1296,8 +1282,6 @@ return TRUE if((acid_power * acid_volume) < ACID_LEVEL_HANDBURN) return TRUE - if(gloves?.resistance_flags & (UNACIDABLE | ACID_PROOF)) - return TRUE return FALSE /** @@ -1309,8 +1293,6 @@ return TRUE if(HAS_TRAIT(src, TRAIT_RESISTHEAT) || HAS_TRAIT(src, TRAIT_RESISTHEATHANDS)) return TRUE - if(gloves?.max_heat_protection_temperature >= BURNING_ITEM_MINIMUM_TEMPERATURE) - return TRUE return FALSE /// Goes through the organs and bodyparts of the mob and updates their blood_dna_info, in case their blood type has changed (via set_species() or otherwise) @@ -1377,7 +1359,8 @@ if(!can_bleed()) to_chat(src, span_notice("You get a headache.")) return - head.adjustBleedStacks(5) + var/add_stacks = HAS_TRAIT(src, TRAIT_BLOOD_FOUNTAIN) ? 7 : 5 + head.adjustBleedStacks(add_stacks) visible_message(span_notice("[src] gets a nosebleed."), span_warning("You get a nosebleed.")) /mob/living/carbon/check_hit_limb_zone_name(hit_zone) @@ -1396,13 +1379,13 @@ . = ..() // Force a weight update in case we're stasis'd and don't tick if (HAS_TRAIT_FROM(src, TRAIT_FAT, OBESITY)) - if (overeatduration >= 200 SECONDS) + if (overeatduration >= OVEREAT_TIME_LIMIT) return to_chat(src, span_notice("You feel fit again!")) remove_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) return - if (overeatduration >= 200 SECONDS) + if (overeatduration >= OVEREAT_TIME_LIMIT) to_chat(src, span_danger("You suddenly feel blubbery!")) add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 6f1cf08d1ad5..131f38f44020 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -5,17 +5,9 @@ if(is_blind() && !is_blind_from(list(UNCONSCIOUS_TRAIT, HYPNOCHAIR_TRAIT))) return INFINITY //For all my homies that can not see in the world var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES) - if(eyes) - . += eyes.flash_protect - else + if(!eyes) return INFINITY //Can't get flashed without eyes - if(isclothing(head)) //Adds head protection - var/obj/item/clothing/helmet = head - . += helmet.flash_protect - if(isclothing(glasses)) //Glasses - . += glasses.flash_protect - if(isclothing(wear_mask)) //Mask - . += wear_mask.flash_protect + . += eyes.flash_protect /mob/living/carbon/sound_damage(damage, deafen) if(HAS_TRAIT(src, TRAIT_GODMODE)) @@ -32,42 +24,16 @@ var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS) return ..() + ears?.bang_protect -/mob/living/carbon/is_mouth_covered(check_flags = ALL) - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSMOUTH)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) - return wear_mask - - return null - -/mob/living/carbon/is_eyes_covered(check_flags = ALL) - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSEYES)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSEYES)) - return wear_mask - if((check_flags & ITEM_SLOT_EYES) && glasses && (glasses.flags_cover & GLASSESCOVERSEYES)) - return glasses - - return null - /mob/living/carbon/is_pepper_proof(check_flags = ALL) var/obj/item/organ/eyes/eyes = get_organ_by_type(/obj/item/organ/eyes) if(eyes && eyes.pepperspray_protect) return eyes - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & PEPPERPROOF)) - return wear_mask - - return null /mob/living/carbon/is_ears_covered() for(var/obj/item/worn_thing as anything in get_equipped_items(INCLUDE_ABSTRACT)) if(worn_thing.flags_cover & EARS_COVERED) return worn_thing - return null - /mob/living/carbon/check_projectile_dismemberment(obj/projectile/proj, def_zone) var/obj/item/bodypart/affecting = get_bodypart(def_zone) if(affecting && affecting.can_dismember() && !(affecting.bodypart_flags & BODYPART_UNREMOVABLE) && affecting.get_damage() >= (affecting.max_damage - proj.dismemberment)) @@ -364,8 +330,8 @@ else add_mood_event("tailpulled", /datum/mood_event/tailpulled) - else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && (istype(head, /obj/item/clothing/head/costume/kitty) || istype(head, /obj/item/clothing/head/collectable/kitty))) - var/obj/item/clothing/head/faketail = head + else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && (istype(get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/costume/kitty) || istype(get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/collectable/kitty))) + var/obj/item/clothing/head/faketail = get_item_by_slot(ITEM_SLOT_HEAD) // Should probably be COMSIG_CARBON_PRE_MISC_HELP helper.visible_message(span_danger("[helper] pulls on [src]'s tail... and it rips off!"), \ null, span_hear("You hear a ripping sound."), DEFAULT_MESSAGE_RANGE, list(helper, src)) to_chat(helper, span_danger("You pull on [src]'s tail... and it rips off!")) @@ -518,22 +484,7 @@ else if(damage == 0 && prob(20)) // just enough protection to_chat(src, span_notice("Something bright flashes in the corner of your vision!")) -/mob/living/carbon/damage_clothes(damage_amount, damage_type = BRUTE, damage_flag = 0, def_zone) - if(damage_type != BRUTE && damage_type != BURN) - return - damage_amount *= 0.5 //0.5 multiplier for balance reason, we don't want clothes to be too easily destroyed - if(!def_zone || def_zone == BODY_ZONE_HEAD) - var/obj/item/clothing/hit_clothes - if(wear_mask) - hit_clothes = wear_mask - if(wear_neck) - hit_clothes = wear_neck - if(head) - hit_clothes = head - if(hit_clothes) - hit_clothes.take_damage(damage_amount, damage_type, damage_flag, 0) - -/mob/living/carbon/adjust_oxy_loss(amount, updating_health = TRUE, forced, required_biotype, required_respiration_type) +/mob/living/carbon/adjust_oxy_loss(amount, updating_health = TRUE, forced, required_biotype) if(!forced && HAS_TRAIT(src, TRAIT_NOBREATH)) amount = min(amount, 0) //Prevents oxy damage but not healing @@ -545,7 +496,7 @@ if(!limb) return -/mob/living/carbon/set_oxy_loss(amount, updating_health = TRUE, forced, required_biotype, required_respiration_type) +/mob/living/carbon/set_oxy_loss(amount, updating_health = TRUE, forced, required_biotype) . = ..() check_passout() @@ -674,7 +625,7 @@ var/changed_something = FALSE var/obj/item/organ/new_organ = pick(GLOB.bioscrambler_valid_organs) var/obj/item/organ/replaced = get_organ_slot(initial(new_organ.slot)) - if (!replaced || ORGAN_CAN_BE_BIOSCRAMBLED(replaced)) + if ((!replaced || ORGAN_CAN_BE_BIOSCRAMBLED(replaced)) && get_bodypart(deprecise_zone(new_organ.zone))) changed_something = TRUE new_organ = new new_organ() new_organ.replace_into(src) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 0e6efd543571..475446721d50 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -31,23 +31,10 @@ var/old_disgust = 0 //inventory slots - var/obj/item/back = null - var/obj/item/clothing/mask/wear_mask = null - var/obj/item/clothing/neck/wear_neck = null /// Equipped air tank. Never set this manually. var/obj/item/tank/internal = null /// "External" air tank. Never set this manually. Not required to stay directly equipped on the mob (i.e. could be a machine or MOD suit module). var/obj/item/tank/external = null - var/obj/item/head = null - - ///only used by humans - var/obj/item/clothing/gloves = null - ///only used by humans. - var/obj/item/clothing/shoes/shoes = null - ///only used by humans. - var/obj/item/clothing/glasses/glasses = null - ///only used by humans. - var/obj/item/clothing/ears = null /// DNA is carbon-only, and ideally you should be accessing it through has_dna(), but you can access it directly if you know you're working with a carbon mob var/datum/dna/dna = null diff --git a/code/modules/mob/living/carbon/carbon_say.dm b/code/modules/mob/living/carbon/carbon_say.dm index e1dc3d279921..35ed43d8fde1 100644 --- a/code/modules/mob/living/carbon/carbon_say.dm +++ b/code/modules/mob/living/carbon/carbon_say.dm @@ -12,4 +12,4 @@ // the tower of babel needs to bypass the tongue language restrictions without giving omnitongue return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path) - return initial(language_path.flags) & TONGUELESS_SPEECH + return initial(language_path.flags) & LANGUAGE_TONGUELESS_SPEECH diff --git a/code/modules/mob/living/carbon/carbon_stripping.dm b/code/modules/mob/living/carbon/carbon_stripping.dm index 34733512126c..b01c1c014e2f 100644 --- a/code/modules/mob/living/carbon/carbon_stripping.dm +++ b/code/modules/mob/living/carbon/carbon_stripping.dm @@ -107,9 +107,6 @@ return TRUE /datum/strippable_item/hand/finish_equip(atom/source, obj/item/equipping, mob/user) - if (!iscarbon(source)) - return FALSE - var/mob/mob_source = source mob_source.put_in_hand(equipping, hand_index) diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index 7280ef782a11..5c34f05a3311 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -260,17 +260,25 @@ hands += I.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE, bodyshape = bodyshape) return hands -/mob/living/carbon/get_fire_overlay(stacks, on_fire) - var/fire_icon = "[dna?.species.fire_overlay || "human"]_[stacks > MOB_BIG_FIRE_STACK_THRESHOLD ? "big_fire" : "small_fire"]" - - if(!GLOB.fire_appearances[fire_icon]) - GLOB.fire_appearances[fire_icon] = mutable_appearance( - 'icons/mob/effects/onfire.dmi', - fire_icon, - -HIGHEST_LAYER, - appearance_flags = RESET_COLOR|KEEP_APART, - ) +/mob/living/carbon/proc/get_fire_icon_state(stacks, on_fire) + return "[dna?.species.fire_overlay || "human"]_[stacks > MOB_BIG_FIRE_STACK_THRESHOLD ? "big_fire" : "small_fire"]" +/mob/living/carbon/get_fire_overlay(stacks, on_fire) + var/fire_icon = get_fire_icon_state(stacks, on_fire) + var/list/overrides = list() + SEND_SIGNAL(src, COMSIG_CARBON_GET_FIRE_OVERLAY, stacks, on_fire, fire_icon, overrides) + if (length(overrides)) + return overrides[1] + + if(GLOB.fire_appearances[fire_icon]) + return GLOB.fire_appearances[fire_icon] + + GLOB.fire_appearances[fire_icon] = mutable_appearance( + 'icons/mob/effects/onfire.dmi', + fire_icon, + -HIGHEST_LAYER, + appearance_flags = RESET_COLOR|KEEP_APART, + ) return GLOB.fire_appearances[fire_icon] /mob/living/carbon/update_damage_overlays() @@ -294,6 +302,7 @@ if(isnull(damage_overlay)) return + apply_height(damage_overlay, ENTIRE_BODY) overlays_standing[DAMAGE_LAYER] = damage_overlay apply_overlay(DAMAGE_LAYER) @@ -316,39 +325,10 @@ if(isnull(wound_overlay)) return + apply_height(wound_overlay, ENTIRE_BODY) overlays_standing[WOUND_LAYER] = wound_overlay apply_overlay(WOUND_LAYER) -/mob/living/carbon/update_worn_mask() - remove_overlay(FACEMASK_LAYER) - hud_used?.update_inventory_slot(ITEM_SLOT_MASK) - - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return - - if(wear_mask && !(obscured_slots & HIDEMASK)) - overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi') - overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi', bodyshape = bodyshape) - - apply_overlay(FACEMASK_LAYER) - -/mob/living/carbon/update_worn_neck() - remove_overlay(NECK_LAYER) - hud_used?.update_inventory_slot(ITEM_SLOT_NECK) - - if(wear_neck && !(obscured_slots & HIDENECK)) - overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = 'icons/mob/clothing/neck.dmi', bodyshape = bodyshape) - apply_overlay(NECK_LAYER) - -/mob/living/carbon/update_worn_back() - remove_overlay(BACK_LAYER) - hud_used?.update_inventory_slot(ITEM_SLOT_BACK) - - if(back) - overlays_standing[BACK_LAYER] = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = 'icons/mob/clothing/back.dmi', bodyshape = bodyshape) - - apply_overlay(BACK_LAYER) - /mob/living/carbon/update_worn_legcuffs() remove_overlay(LEGCUFF_LAYER) clear_alert("legcuffed") @@ -360,19 +340,6 @@ apply_overlay(LEGCUFF_LAYER) throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = src.legcuffed) -/mob/living/carbon/update_worn_head() - remove_overlay(HEAD_LAYER) - hud_used?.update_inventory_slot(ITEM_SLOT_HEAD) - - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return - - if(head && !(obscured_slots & HIDEHEADGEAR)) - overlays_standing[HEAD_LAYER] = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/clothing/head/default.dmi', bodyshape = bodyshape) - - apply_overlay(HEAD_LAYER) - - /mob/living/carbon/update_worn_handcuffs() remove_overlay(HANDCUFF_LAYER) hud_used?.update_inventory_slot(ITEM_SLOT_HANDS) @@ -380,7 +347,7 @@ var/mutable_appearance/handcuff_overlay = mutable_appearance('icons/mob/simple/mob.dmi', "handcuff1", -HANDCUFF_LAYER) if(handcuffed.blocks_emissive != EMISSIVE_BLOCK_NONE) handcuff_overlay.overlays += emissive_blocker(handcuff_overlay.icon, handcuff_overlay.icon_state, src, alpha = handcuff_overlay.alpha) - + apply_height(handcuff_overlay, LOWER_BODY) // low hanging overlays_standing[HANDCUFF_LAYER] = handcuff_overlay apply_overlay(HANDCUFF_LAYER) @@ -390,21 +357,21 @@ /// Overlays for the worn overlay so you can overlay while you overlay /// eg: ammo counters, primed grenade flashing, etc. /// "icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -/obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) +/obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, bodyshape = NONE) SHOULD_CALL_PARENT(TRUE) RETURN_TYPE(/list) . = list() if(blocks_emissive != EMISSIVE_BLOCK_NONE) . += emissive_blocker(standing.icon, standing.icon_state, src) - SEND_SIGNAL(src, COMSIG_ITEM_GET_WORN_OVERLAYS, ., standing, isinhands, icon_file) + SEND_SIGNAL(src, COMSIG_ITEM_GET_WORN_OVERLAYS, ., standing, isinhands, icon_file, bodyshape) /// worn_overlays to use when you'd want to use KEEP_APART. Don't use KEEP_APART neither there nor here, as it would break floating overlays -/obj/item/proc/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) +/obj/item/proc/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file, bodyshape = NONE) SHOULD_CALL_PARENT(TRUE) RETURN_TYPE(/list) . = list() - SEND_SIGNAL(src, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, ., standing, draw_target, isinhands, icon_file) + SEND_SIGNAL(src, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, ., standing, draw_target, isinhands, icon_file, bodyshape) ///Checks to see if any bodyparts need to be redrawn, then does so. update_limb_data = TRUE redraws the limbs to conform to the owner. ///Returns an integer representing the number of limbs that were updated. @@ -491,10 +458,14 @@ if(is_invisible) . += "invisible" for(var/datum/bodypart_overlay/overlay as anything in bodypart_overlays) - if(!overlay.can_draw_on_bodypart(src, owner, is_husked)) - continue - . += overlay.generate_icon_cache(src) - if(ishuman(owner)) + if(overlay.can_draw_on_bodypart(src, owner)) + . += overlay.icon_render_key(src) + for(var/datum/bodypart_texture/texture as anything in bodypart_textures) + if(texture.can_texture_bodypart(src)) + . += texture.icon_render_key() + if(isdummy(owner)) // dummies always cache as default height because they have optimizations + . += "[/mob/living/carbon/human::mob_height]" + else if(ishuman(owner)) // otherwise cache height because we apply height filters to bodypart images var/mob/living/carbon/human/human_owner = owner . += "[human_owner.mob_height]" SEND_SIGNAL(src, COMSIG_BODYPART_GENERATE_ICON_KEY, .) @@ -518,12 +489,13 @@ . += body_zone if(is_invisible) . += "invisible" - . += "[LAZYLEN(blood_dna_info) ? get_color_from_blood_list(blood_dna_info) : BLOOD_COLOR_RED]" for(var/datum/bodypart_overlay/overlay as anything in bodypart_overlays) - if(!overlay.can_draw_on_bodypart(src, owner, TRUE)) - continue - . += overlay.generate_icon_cache(src) - if(ishuman(owner)) + if(overlay.can_draw_on_bodypart(src, owner)) + . += overlay.icon_render_key(src) + . += "[LAZYLEN(blood_dna_info) ? get_color_from_blood_list(blood_dna_info) : BLOOD_COLOR_RED]" + if(isdummy(owner)) // dummies always cache as default height because they have optimizations + . += "[/mob/living/carbon/human::mob_height]" + else if(ishuman(owner)) // otherwise cache height because we apply height filters to bodypart images var/mob/living/carbon/human/human_owner = owner . += "[human_owner.mob_height]" return . diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 292eda9c6ace..478037ccf33e 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -73,7 +73,7 @@ qdel(organ) -/mob/living/carbon/spread_bodyparts(drop_bitflags=NONE) +/mob/living/carbon/spread_bodyparts(drop_bitflags = NONE, gibbed = FALSE) for(var/obj/item/bodypart/part as anything in get_bodyparts()) if(part.body_zone == BODY_ZONE_CHEST) continue // never drop this @@ -84,12 +84,16 @@ for(var/obj/item/organ/leftover in part) leftover_organs += leftover - part.drop_limb(TRUE) + part.drop_limb(special = gibbed, dismembered = !gibbed) part.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5) // any organs that weren't throw out already about need to follow the bodypart out for(var/obj/item/organ/leftover as anything in leftover_organs) - leftover.Remove(src, TRUE) - leftover.bodypart_insert(part) + // depending on whether gibbed flag was set changes how the organs are removed, + // so just let's be... very careful here and double check everything + if(leftover.owner == src) + leftover.Remove(src, gibbed) + if(leftover.loc != part) + leftover.bodypart_insert(part) /mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo. . = ..() diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 16984f115f5e..a02fad4b30b2 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -398,12 +398,6 @@ var/t_his = p_their() var/t_has = p_have() var/t_is = p_are() - //head - if(head && !(obscured_slots & HIDEHEADGEAR) && !HAS_TRAIT(head, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [head.examine_title(user)] on [t_his] head." - //back - if(back && !HAS_TRAIT(back, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [back.examine_title(user)] on [t_his] back." //Hands for(var/obj/item/held_thing in held_items) if((held_thing.item_flags & (ABSTRACT|HAND_ITEM)) || HAS_TRAIT(held_thing, TRAIT_EXAMINE_SKIP)) @@ -414,39 +408,16 @@ continue var/obj/item/corresponding_item = get_item_for_held_index(part.held_index) || part . += "[t_He] [t_has] a [corresponding_item.examine_title(user)] in place of [t_his] [initial(part.plaintext_zone)]." - //gloves - if(gloves && !(obscured_slots & HIDEGLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [gloves.examine_title(user)] on [t_his] hands." - else if(GET_ATOM_BLOOD_DECAL_LENGTH(src) && num_hands) - var/list/blood_stains = GET_ATOM_BLOOD_DECALS(src) - var/datum/blood_type/blood_type = blood_stains[blood_stains[length(blood_stains)]] - var/blood_descriptior = "blood" - if(istype(blood_type)) - blood_descriptior = LOWER_TEXT(blood_type.get_blood_name()) - . += span_warning("[t_He] [t_has] [num_hands > 1 ? "" : "a "][blood_descriptior]-stained hand[num_hands > 1 ? "s" : ""]!") //handcuffed? if(handcuffed) var/cables_or_cuffs = istype(handcuffed, /obj/item/restraints/handcuffs/cable) ? "restrained with cable" : "handcuffed" . += span_warning("[t_He] [t_is] [icon2html(handcuffed, user)] [cables_or_cuffs]!") - //shoes - if(shoes && !(obscured_slots & HIDESHOES) && !HAS_TRAIT(shoes, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [shoes.examine_title(user)] on [t_his] feet." - //mask - if(wear_mask && !(obscured_slots & HIDEMASK) && !HAS_TRAIT(wear_mask, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [wear_mask.examine_title(user)] on [t_his] face." - if(wear_neck && !(obscured_slots & HIDENECK) && !HAS_TRAIT(wear_neck, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_is] wearing [wear_neck.examine_title(user)] around [t_his] neck." //eyes if(!(obscured_slots & HIDEEYES)) - if(glasses && !HAS_TRAIT(glasses, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [glasses.examine_title(user)] covering [t_his] eyes." - else if(HAS_TRAIT(src, TRAIT_UNNATURAL_RED_GLOWY_EYES)) + if(HAS_TRAIT(src, TRAIT_UNNATURAL_RED_GLOWY_EYES)) . += span_warning("[t_His] eyes are glowing with an unnatural red aura!") else if(HAS_TRAIT(src, TRAIT_BLOODSHOT_EYES)) . += span_warning("[t_His] eyes are bloodshot!") - //ears - if(ears && !(obscured_slots & HIDEEARS) && !HAS_TRAIT(ears, TRAIT_EXAMINE_SKIP)) - . += "[t_He] [t_has] [ears.examine_title(user)] on [t_his] ears." // Yes there's a lot of copypasta here, we can improve this later when carbons are less dumb in general /mob/living/carbon/human/get_clothing_examine_info(mob/living/user) @@ -519,9 +490,15 @@ //gloves if(gloves && !(obscured_slots & HIDEGLOVES) && !HAS_TRAIT(gloves, TRAIT_EXAMINE_SKIP)) . += "[t_He] [t_has] [gloves.examine_title(user)] on [t_his] hands." - else if(GET_ATOM_BLOOD_DECAL_LENGTH(src) || blood_in_hands) - if(num_hands) - . += span_warning("[t_He] [t_has] [num_hands > 1 ? "" : "a "]blood-stained hand[num_hands > 1 ? "s" : ""]!") + else if(GET_ATOM_BLOOD_DECAL_LENGTH(src) && num_hands) + var/list/blood_stains = GET_ATOM_BLOOD_DECALS(src) + var/datum/blood_type/blood_type = blood_stains[blood_stains[length(blood_stains)]] + var/blood_descriptior = "blood" + if(istype(blood_type)) + blood_descriptior = LOWER_TEXT(blood_type.get_blood_name()) + . += span_warning("[t_He] [t_has] [num_hands > 1 ? "" : "a "][blood_descriptior]-stained hand[num_hands > 1 ? "s" : ""]!") + else if (blood_in_hands && num_hands) + . += span_warning("[t_He] [t_has] [num_hands > 1 ? "" : "a "]blood-stained hand[num_hands > 1 ? "s" : ""]!") //handcuffed? if(handcuffed) var/cables_or_cuffs = istype(handcuffed, /obj/item/restraints/handcuffs/cable) ? "restrained with cable" : "handcuffed" diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 6b1a314b0ea7..99c41a4c9a1c 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -28,7 +28,7 @@ GLOBAL_LIST_EMPTY(features_by_species) */ var/plural_form - ///Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows + /// Whether or not the race has sexual characteristics (biological genders). At the moment this is only FALSE for skeletons and shadows var/sexes = TRUE ///The maximum number of bodyparts this species can have. @@ -135,14 +135,9 @@ GLOBAL_LIST_EMPTY(features_by_species) var/list/inherent_traits = list() /// List of biotypes the mob belongs to. Used by diseases. var/inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID - /// The type of respiration the mob is capable of doing. Used by adjust_oxy_loss. - var/inherent_respiration_type = RESPIRATION_OXYGEN ///List of factions the mob gain upon gaining this species. var/list/inherent_factions - ///What gas does this species breathe? Used by suffocation screen alerts, most of actual gas breathing is handled by mutantlungs. See [life.dm][code/modules/mob/living/carbon/human/life.dm] - var/breathid = GAS_O2 - ///What anim to use for gibbing var/gib_anim = "gibbed-h" @@ -387,7 +382,6 @@ GLOBAL_LIST_EMPTY(features_by_species) // Drop the items the new species can't wear human_who_gained_species.mob_biotypes = inherent_biotypes - human_who_gained_species.mob_respiration_type = inherent_respiration_type human_who_gained_species.butcher_results = knife_butcher_results?.Copy() //update body zones to match what they are supposed to have @@ -498,17 +492,6 @@ GLOBAL_LIST_EMPTY(features_by_species) human.living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS -// This exists so sprite accessories can still be per-layer without having to include that layer's -// number in their sprite name, which causes issues when those numbers change. -/datum/species/proc/mutant_bodyparts_layertext(layer) - switch(layer) - if(BODY_BEHIND_LAYER) - return "BEHIND" - if(BODY_ADJ_LAYER) - return "ADJ" - if(BODY_FRONT_LAYER) - return "FRONT" - ///Proc that will randomise the hair, or primary appearance element (i.e. for moths wings) of a species' associated mob /datum/species/proc/randomize_main_appearance_element(mob/living/carbon/human/human_mob) human_mob.set_hairstyle(random_hairstyle(human_mob.gender), update = FALSE) @@ -926,7 +909,7 @@ GLOBAL_LIST_EMPTY(features_by_species) var/kicking = (atk_effect == ATTACK_EFFECT_KICK) var/biting = (atk_effect == ATTACK_EFFECT_BITE) - if(damage >= 1 TTRPG_DAMAGE) + if((damage >= 1 TTRPG_DAMAGE) && prob(66)) target.force_say() target.apply_damage(damage, attack_type, affecting, armor_block, attack_direction = attack_direction, sharpness = limb_sharpness) if(grappled) @@ -1375,12 +1358,9 @@ GLOBAL_LIST_EMPTY(features_by_species) if((suit_flags & STOPSPRESSUREDAMAGE) && (head_flags & STOPSPRESSUREDAMAGE)) return - for(var/gas_id in environment.gases) - var/gas_amount = environment.gases[gas_id][MOLES] - switch(gas_id) - if(/datum/gas/antinoblium) // Antinoblium - irradiates the target. - if(gas_amount >= MOLES_GAS_VISIBLE && SPT_PROB(1, gas_amount * seconds_per_tick)) - SSradiation.irradiate(human) + var/antinoblium_moles = environment.moles[/datum/gas/antinoblium] + if (antinoblium_moles >= MOLES_GAS_VISIBLE && SPT_PROB(1, antinoblium_moles * seconds_per_tick)) + SSradiation.irradiate(human) //////////// // Stun // @@ -1932,12 +1912,13 @@ GLOBAL_LIST_EMPTY(features_by_species) var/list/to_add = list() - if (breathid != GAS_O2) + var/breath_id = get_breath_type() + if (breath_id && breath_id != GAS_O2) to_add += list(list( SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, SPECIES_PERK_ICON = "wind", - SPECIES_PERK_NAME = "[capitalize(breathid)] Breathing", - SPECIES_PERK_DESC = "[plural_form] must breathe [breathid] to survive. You receive a tank when you arrive.", + SPECIES_PERK_NAME = "[capitalize(breath_id)] Breathing", + SPECIES_PERK_DESC = "[plural_form] must breathe [breath_id] to survive. You receive a tank when you arrive.", )) return to_add @@ -2003,7 +1984,7 @@ GLOBAL_LIST_EMPTY(features_by_species) new_part = new path() new_part.replace_limb(target) new_part.update_limb(is_creating = TRUE) - new_part.set_initial_damage(old_part.brute_dam, old_part.burn_dam) + new_part.set_initial_damage(old_part.brute_dam, old_part.burn_dam, old_part.aggravated_dam)// DARKPACK EDIT CHANGE - AGGRAVATED_DAMAGE qdel(old_part) /// Creates body parts for the target completely from scratch based on the species @@ -2065,21 +2046,31 @@ GLOBAL_LIST_EMPTY(features_by_species) /// Remove body markings /datum/species/proc/remove_body_markings(mob/living/carbon/human/hooman) + var/needs_update = FALSE for(var/obj/item/bodypart/part as anything in hooman.get_bodyparts()) for(var/datum/bodypart_overlay/simple/body_marking/marking in part.bodypart_overlays) - part.remove_bodypart_overlay(marking) + part.remove_bodypart_overlay(marking, update = FALSE) + needs_update = TRUE + + if(needs_update && !(hooman.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) + hooman.update_body_parts() + return null /** - * Calculates the expected height values for this species - * - * Return a height value corresponding to a specific height filter - * Return null to just use the mob's base height + * Returns what type of gas this species breathes */ -/datum/species/proc/update_species_heights(mob/living/carbon/human/holder) - if(HAS_TRAIT(holder, TRAIT_DWARF)) - return HUMAN_HEIGHT_DWARF +/datum/species/proc/get_breath_type() + if(isnull(mutantlungs)) + return null + + if(mutantlungs::safe_plasma_min > 0) + return GAS_PLASMA + + if(mutantlungs::safe_oxygen_min > 0) + return GAS_O2 - if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) - return HUMAN_HEIGHT_TALLEST + if(mutantlungs::safe_nitro_min > 0) + return GAS_N2 + stack_trace("Unsupported breath type for species with [mutantlungs]") return null diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index d24f8f524692..0b75db139338 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) human_heart?.beat = BEAT_NONE human_heart?.Stop() - force_say(immediate = TRUE) + force_say(list(""), immediate = TRUE) . = ..() diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 2d99beba9197..68bac2332b29 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -88,6 +88,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) delete_equipment() update_lips(null, null, null, update = FALSE) cut_overlays(TRUE) + clear_filters() /mob/living/carbon/human/dummy/setup_human_dna() randomize_human_normie(src, randomize_mutations = FALSE) @@ -95,19 +96,13 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) /mob/living/carbon/human/dummy/log_mob_tag(text) return -// To speed up the preference menu, we apply 1 filter to the entire mob -/mob/living/carbon/human/dummy/regenerate_icons() - . = ..() - apply_height_filters(src, TRUE) - -/mob/living/carbon/human/dummy/apply_height_filters(image/appearance, only_apply_in_prefs = FALSE) - if(only_apply_in_prefs) +// To speed up the preference menu, we apply one height filter to the entire mob, +// rather than independently applying offsets and filters to each individual overlay +// This looks good enough to pass the sniff test and saves a lot of time +/mob/living/carbon/human/dummy/apply_height(image/appearance, body_area) + if(appearance == src) return ..() -// Not necessary with above -/mob/living/carbon/human/dummy/apply_height_offsets(image/appearance, upper_torso) - return - /// Takes in an accessory list and returns the first entry from that list, ensuring that we dont return SPRITE_ACCESSORY_NONE in the process. /proc/get_consistent_feature_entry(list/accessory_feature_list) var/consistent_entry = (accessory_feature_list- SPRITE_ACCESSORY_NONE)[1] diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index edb52ef85761..6268d1fc4c5f 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -63,7 +63,7 @@ message = "screeches!" message_mime = "screeches silently." emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE - specific_emote_audio_cooldown = 10 SECONDS + manual_specific_emote_audio_cooldown = 10 SECONDS vary = FALSE /datum/emote/living/carbon/human/screech/get_sound(mob/living/carbon/human/user) @@ -337,7 +337,7 @@ key_third_person = "flares" message = "flares up to a dazzling intensity!" emote_type = EMOTE_VISIBLE - sound = "sound/mobs/humanoids/ethereal/ethereal_hiss.ogg" + sound = 'sound/mobs/humanoids/ethereal/ethereal_hiss.ogg' /datum/emote/living/carbon/human/flare/can_run_emote(mob/living/carbon/human/user, status_check = TRUE , intentional, params) if(!isethereal(user)) @@ -354,7 +354,7 @@ key_third_person = "flicker" message = "flickers." emote_type = EMOTE_VISIBLE - sound = "sound/effects/sparks/sparks4.ogg" + sound = 'sound/effects/sparks/sparks4.ogg' /datum/emote/living/carbon/human/flicker/can_run_emote(mob/living/carbon/human/user, status_check = TRUE , intentional, params) if(!isethereal(user)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9faf2b2fcacf..ca1f1decb0db 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human/Initialize(mapload) - add_verb(src, /mob/living/proc/mob_sleep) + ASSIGN_GAME_VERB(src, /mob/living, mob_sleep) add_verb(src, /mob/living/proc/toggle_resting) icon_state = "" //Remove the inherent human icon that is visible on the map editor. We're rendering ourselves limb by limb, having it still be there results in a bug where the basic human icon appears below as south in all directions and generally looks nasty. @@ -655,7 +655,7 @@ if(dna?.species) add_atom_colour(COLOR_BLACK, TEMPORARY_COLOUR_PRIORITY) var/mutable_appearance/shock_animation_dna = mutable_appearance(icon, "electrocuted_base", appearance_flags = RESET_COLOR|KEEP_APART) - apply_height_filters(shock_animation_dna) + apply_height(shock_animation_dna, ENTIRE_BODY) zap_appearance = shock_animation_dna // Otherwise do a generic animation @@ -1089,7 +1089,7 @@ /mob/living/carbon/human/species/set_species(datum/species/mrace, icon_update, pref_load, replace_missing) . = ..() if(use_random_name) - fully_replace_character_name(real_name, generate_random_mob_name()) + fully_replace_character_name(newname = generate_random_mob_name()) ///Proc used to make monkey roles able to function like crew, but not be able to shift into humans easily. /mob/living/carbon/human/proc/crewlike_monkify() @@ -1119,6 +1119,35 @@ return FALSE return head_covered || HAS_TRAIT(src, TRAIT_HEAD_ATMOS_SEALED) +/mob/living/carbon/human/should_electrocute(power_source) + if (gloves?.siemens_coefficient == 0) + return FALSE + return ..() + +/mob/living/carbon/human/can_touch_acid(atom/acided_atom, acid_power, acid_volume) + if(gloves?.resistance_flags & (UNACIDABLE | ACID_PROOF)) + return TRUE + return ..() + +/mob/living/carbon/human/can_touch_burning(atom/burning_atom, acid_power, acid_volume) + if(gloves?.max_heat_protection_temperature >= BURNING_ITEM_MINIMUM_TEMPERATURE) + return TRUE + return ..() + +/mob/living/carbon/human/get_sight_and_cutoffs() + . = ..() + if(!istype(glasses)) + return + . |= glasses.vision_flags + if(glasses.invis_override) + set_invis_see(glasses.invis_override) + else + set_invis_see(min(glasses.invis_view, see_invisible)) + if(!isnull(glasses.lighting_cutoff)) + lighting_cutoff = max(lighting_cutoff, glasses.lighting_cutoff) + if(length(glasses.color_cutoffs)) + lighting_color_cutoffs = blend_cutoff_colors(lighting_color_cutoffs, glasses.color_cutoffs) + /mob/living/carbon/human/species/abductor race = /datum/species/abductor diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e28e3ec6521f..0bd950891087 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -18,7 +18,6 @@ organnum++ return (armorval/max(organnum, 1)) - /mob/living/carbon/human/proc/check_armor(obj/item/bodypart/def_zone, damage_type) if(!damage_type) return 0 @@ -728,3 +727,39 @@ if(methods == NONE) return return ..() + + +/mob/living/carbon/human/is_mouth_covered(check_flags = ALL) + if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSMOUTH)) + return head + if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) + return wear_mask + return null + +/mob/living/carbon/human/is_eyes_covered(check_flags = ALL) + if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSEYES)) + return head + if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSEYES)) + return wear_mask + if((check_flags & ITEM_SLOT_EYES) && glasses && (glasses.flags_cover & GLASSESCOVERSEYES)) + return glasses + return null + +/mob/living/carbon/human/is_pepper_proof(check_flags = ALL) + . = ..() + if (.) + return + if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF)) + return head + if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & PEPPERPROOF)) + return wear_mask + +/mob/living/carbon/human/get_eye_protection() + . = ..() + if(isclothing(head)) // Adds head protection + var/obj/item/clothing/helmet = head + . += helmet.flash_protect + if(isclothing(glasses)) // Glasses + . += glasses.flash_protect + if(isclothing(wear_mask)) // Mask + . += wear_mask.flash_protect diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 075545917264..99e0d242d26a 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -57,6 +57,14 @@ var/jumpsuit_style = PREF_SUIT //suit/skirt //Equipment slots + var/obj/item/back = null + var/obj/item/head = null + var/obj/item/clothing/gloves = null + var/obj/item/clothing/ears = null + var/obj/item/clothing/glasses/glasses = null + var/obj/item/clothing/shoes/shoes = null + var/obj/item/clothing/neck/wear_neck = null + var/obj/item/clothing/mask/wear_mask = null var/obj/item/clothing/wear_suit = null var/obj/item/clothing/w_uniform = null var/obj/item/belt = null @@ -93,3 +101,12 @@ /// Tracks how long in seconds we've been in a low pressure environment VAR_FINAL/seconds_in_low_pressure = 0 + + /// Combined width of our body sprite + VAR_PRIVATE/cached_body_width = ICON_SIZE_X + /// Combined height of our body sprite + VAR_PRIVATE/cached_body_height = ICON_SIZE_Y + /// Leftmost offset of our overlays + var/cached_body_min_x_offset = 0 + /// Rightmost offset of our overlays + var/cached_body_min_y_offset = 0 diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index be7c9c052ae6..74fc72be79fd 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -287,9 +287,11 @@ */ /mob/living/carbon/human/proc/update_mob_height() var/old_height = mob_height - mob_height = dna?.species?.update_species_heights(src) || base_mob_height + var/obj/item/bodypart/chest/chest = get_bodypart(BODY_ZONE_CHEST) + mob_height = chest?.update_mob_heights(src) || base_mob_height if(old_height != mob_height) regenerate_icons() + readjust_atom_huds() SEND_SIGNAL(src, COMSIG_HUMAN_HEIGHT_UPDATED, old_height) /** diff --git a/code/modules/mob/living/carbon/human/human_suicide.dm b/code/modules/mob/living/carbon/human/human_suicide.dm index e710ab2afb4a..c6a7069746d0 100644 --- a/code/modules/mob/living/carbon/human/human_suicide.dm +++ b/code/modules/mob/living/carbon/human/human_suicide.dm @@ -4,20 +4,7 @@ #define HUMAN_COMBAT_MODE_SUICIDE_MESSAGE "combat mode message" #define HUMAN_DEFAULT_MODE_SUICIDE_MESSAGE "default mode message" -/mob/living/carbon/human/handle_suicide() - if(!suicide_alert()) - return - - set_suicide(TRUE) //need to be called before calling suicide_act as fuck knows what suicide_act will do with your suicide - - var/obj/item/held_item = get_active_held_item() - var/damage_type = SEND_SIGNAL(src, COMSIG_HUMAN_SUICIDE_ACT) || held_item?.suicide_act(src) - - if(damage_type) - if(apply_suicide_damage(held_item, damage_type)) - final_checkout(held_item, apply_damage = FALSE) - return - +/mob/living/carbon/human/perform_basic_suicide() // if no specific item or damage type we want to deal, default to doing the deed with our own bare hands. if(combat_mode) send_applicable_messages(HUMAN_COMBAT_MODE_SUICIDE_MESSAGE) @@ -28,32 +15,7 @@ else send_applicable_messages(HUMAN_DEFAULT_MODE_SUICIDE_MESSAGE) - final_checkout(held_item, apply_damage = TRUE) - -/mob/living/carbon/human/apply_suicide_damage(obj/item/suicide_tool, damage_type = NONE) - // if we don't have any damage_type passed in, default to parent. - if(damage_type == NONE) - return ..() - - if(damage_type & SHAME) - adjust_stamina_loss(200) - set_suicide(FALSE) - add_mood_event("shameful_suicide", /datum/mood_event/shameful_suicide) - return FALSE - - if(damage_type & MANUAL_SUICIDE_NONLETHAL) - set_suicide(FALSE) - return FALSE - - if(damage_type & MANUAL_SUICIDE) // Assume that the suicide tool will handle the death. - suicide_log(suicide_tool) - return FALSE - - if(damage_type & (BRUTELOSS | FIRELOSS | OXYLOSS | TOXLOSS)) - handle_suicide_damage_spread(damage_type) - return TRUE - - return ..() //if all else fails, hope parent accounts for it or just do whatever damage that parent prescribes. + final_checkout() /// Any "special" suicide messages are handled by the related item that the mob uses to kill itself. This is just messages for when it's done with the bare hands. /mob/living/carbon/human/send_applicable_messages(message_type) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index e15594a8eec6..5441ead6fd8e 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -64,7 +64,6 @@ There are several things that need to be remembered: update_pockets() update_worn_neck() update_transform() - update_mutations_overlay() update_damage_overlays() // These are done via parent call update_body(), keeping them here for clarity // update_hair() @@ -86,7 +85,7 @@ There are several things that need to be remembered: if(uniform.adjusted == ALT_STYLE) target_overlay = "[target_overlay]_d" - var/mutable_appearance/uniform_overlay + //This is how non-humanoid clothing works. You check if the mob has the right bodyflag, and the clothing has the corresponding clothing flag. //handled_by_bodyshape is used to track whether or not we successfully used an alternate sprite. It's set to TRUE to ease up on copy-paste. //icon_file MUST be set to null by default, or it causes issues. @@ -94,13 +93,19 @@ There are several things that need to be remembered: //"override_file = handled_by_bodyshape ? icon_file : null" MUST be added to the arguments of build_worn_icon() //Friendly reminder that icon_exists_or_scream(file, state) is your friend when debugging this code. var/handled_by_bodyshape = TRUE + var/digi = (bodyshape & BODYSHAPE_DIGITIGRADE) var/icon_file var/woman + var/female_sprite_flags = uniform.female_sprite_flags //BEGIN SPECIES HANDLING - if((bodyshape & BODYSHAPE_DIGITIGRADE) && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION)) + if(digi && (uniform.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION)) icon_file = DIGITIGRADE_UNIFORM_FILE //Female sprites have lower priority than digitigrade sprites - else if(dna.species.sexes && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(uniform.female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh + var/chest_is_dimorphic + if(dna.species.sexes) + var/obj/item/bodypart/chest/our_chest = get_bodypart(BODY_ZONE_CHEST) + chest_is_dimorphic = our_chest.is_dimorphic + if(chest_is_dimorphic && (bodyshape & BODYSHAPE_HUMANOID) && physique == FEMALE && !(female_sprite_flags & NO_FEMALE_UNIFORM)) //Agggggggghhhhh woman = TRUE if(!icon_exists(icon_file, RESOLVE_ICON_STATE(uniform))) @@ -108,16 +113,17 @@ There are several things that need to be remembered: handled_by_bodyshape = FALSE //END SPECIES HANDLING - uniform_overlay = uniform.build_worn_icon( + var/mutable_appearance/uniform_overlay = uniform.build_worn_icon( default_layer = UNIFORM_LAYER, default_icon_file = icon_file, isinhands = FALSE, - female_uniform = woman ? uniform.female_sprite_flags : null, + female_uniform = woman ? female_sprite_flags : null, override_state = target_overlay, override_file = handled_by_bodyshape ? icon_file : null, bodyshape = bodyshape, ) + apply_height(uniform_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_uniform_offset?.apply_offset(uniform_overlay) overlays_standing[UNIFORM_LAYER] = uniform_overlay @@ -128,8 +134,6 @@ There are several things that need to be remembered: remove_overlay(ID_LAYER) hud_used?.update_inventory_slot(ITEM_SLOT_ID) - var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER] - if(wear_id) var/obj/item/worn_item = wear_id @@ -137,12 +141,9 @@ There are several things that need to be remembered: return var/icon_file = 'icons/mob/clothing/id.dmi' + var/mutable_appearance/id_overlay = wear_id.build_worn_icon(default_layer = ID_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) - id_overlay = wear_id.build_worn_icon(default_layer = ID_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) - - if(!id_overlay) - return - + apply_height(id_overlay, UPPER_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_id_offset?.apply_offset(id_overlay) overlays_standing[ID_LAYER] = id_overlay @@ -168,6 +169,8 @@ There are several things that need to be remembered: var/mutable_appearance/blood_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands_right") blood_overlay.color = get_blood_dna_color() hands_combined.overlays += blood_overlay + + apply_height(hands_combined, LOWER_BODY) overlays_standing[GLOVES_LAYER] = hands_combined apply_overlay(GLOVES_LAYER) return @@ -184,11 +187,10 @@ There are several things that need to be remembered: var/feature_y_offset = 0 //needs to be typed, hand_bodyparts can have nulls for (var/obj/item/bodypart/arm/my_hand in hand_bodyparts) - var/list/glove_offset = my_hand.worn_glove_offset?.get_offset() - if (glove_offset && (!feature_y_offset || glove_offset["y"] > feature_y_offset)) - feature_y_offset = glove_offset["y"] + feature_y_offset = max(my_hand.worn_glove_offset?.get_offset()["y"], feature_y_offset) gloves_overlay.pixel_z += feature_y_offset + apply_height(gloves_overlay, LOWER_BODY) // We dont have any >2 hands human species (and likely wont ever), so theres no point in splitting this because: // It will only run if the left hand OR the right hand is missing, and it wont run if both are missing because you cant wear gloves with no arms @@ -222,6 +224,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/eyes.dmi' var/mutable_appearance/glasses_overlay = glasses.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(glasses_overlay, UPPER_BODY) my_head.worn_glasses_offset?.apply_offset(glasses_overlay) overlays_standing[GLASSES_LAYER] = glasses_overlay apply_overlay(GLASSES_LAYER) @@ -243,6 +246,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/ears.dmi' var/mutable_appearance/ears_overlay = ears.build_worn_icon(default_layer = EARS_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(ears_overlay, UPPER_BODY) my_head.worn_ears_offset?.apply_offset(ears_overlay) overlays_standing[EARS_LAYER] = ears_overlay apply_overlay(EARS_LAYER) @@ -260,6 +264,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/neck.dmi' var/mutable_appearance/neck_overlay = worn_item.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(neck_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_neck_offset?.apply_offset(neck_overlay) overlays_standing[NECK_LAYER] = neck_overlay @@ -282,19 +287,13 @@ There are several things that need to be remembered: var/icon_file = DEFAULT_SHOES_FILE var/mutable_appearance/shoes_overlay = shoes.build_worn_icon(default_layer = SHOES_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) - if(!shoes_overlay) - return - var/feature_y_offset = 0 - for (var/body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + for (var/body_zone in GLOB.leg_zones) var/obj/item/bodypart/leg/my_leg = get_bodypart(body_zone) - if(isnull(my_leg)) - continue - var/list/foot_offset = my_leg.worn_foot_offset?.get_offset() - if (foot_offset && foot_offset["y"] > feature_y_offset) - feature_y_offset = foot_offset["y"] + feature_y_offset = max(my_leg?.worn_foot_offset?.get_offset()["y"], feature_y_offset) shoes_overlay.pixel_z += feature_y_offset + // apply_height(shoes_overlay, NO_MODIFY) // Shoes are rooted overlays_standing[SHOES_LAYER] = shoes_overlay apply_overlay(SHOES_LAYER) @@ -308,7 +307,9 @@ There are several things that need to be remembered: if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON) || (obscured_slots & HIDESUITSTORAGE)) return - var/mutable_appearance/s_store_overlay = worn_item.build_worn_icon(default_layer = SUIT_STORE_LAYER, default_icon_file = 'icons/mob/clothing/belt_mirror.dmi') + + var/mutable_appearance/s_store_overlay = worn_item.build_worn_icon(default_layer = SUIT_STORE_LAYER, default_icon_file = 'icons/mob/clothing/belt_mirror.dmi', bodyshape = bodyshape) + apply_height(s_store_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_suit_storage_offset?.apply_offset(s_store_overlay) overlays_standing[SUIT_STORE_LAYER] = s_store_overlay @@ -326,6 +327,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/head/default.dmi' var/mutable_appearance/head_overlay = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(head_overlay, UPPER_BODY) var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) my_head?.worn_head_offset?.apply_offset(head_overlay) overlays_standing[HEAD_LAYER] = head_overlay @@ -344,6 +346,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/belt.dmi' var/mutable_appearance/belt_overlay = belt.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(belt_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_belt_offset?.apply_offset(belt_overlay) overlays_standing[BELT_LAYER] = belt_overlay @@ -363,6 +366,7 @@ There are several things that need to be remembered: var/icon_file = DEFAULT_SUIT_FILE var/mutable_appearance/suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(suit_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_suit_offset?.apply_offset(suit_overlay) overlays_standing[SUIT_LAYER] = suit_overlay @@ -390,6 +394,7 @@ There are several things that need to be remembered: var/icon_file = 'icons/mob/clothing/mask.dmi' var/mutable_appearance/mask_overlay = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(mask_overlay, UPPER_BODY) my_head.worn_mask_offset?.apply_offset(mask_overlay) overlays_standing[FACEMASK_LAYER] = mask_overlay @@ -400,18 +405,13 @@ There are several things that need to be remembered: hud_used?.update_inventory_slot(ITEM_SLOT_BACK) if(back) - var/obj/item/worn_item = back - var/mutable_appearance/back_overlay - - if(HAS_TRAIT(worn_item, TRAIT_NO_WORN_ICON)) + if(HAS_TRAIT(back, TRAIT_NO_WORN_ICON)) return var/icon_file = 'icons/mob/clothing/back.dmi' - back_overlay = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) - - if(!back_overlay) - return + var/mutable_appearance/back_overlay = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = icon_file, bodyshape = bodyshape) + apply_height(back_overlay, ENTIRE_BODY) var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) my_chest?.worn_back_offset?.apply_offset(back_overlay) overlays_standing[BACK_LAYER] = back_overlay @@ -426,9 +426,10 @@ There are several things that need to be remembered: if(!t_state) t_state = worn_item.icon_state - var/mutable_appearance/hand_overlay + var/icon_file = IS_RIGHT_INDEX(held_index) ? worn_item.righthand_file : worn_item.lefthand_file - hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE, bodyshape = bodyshape) + var/mutable_appearance/hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE, bodyshape = bodyshape) + apply_height(hand_overlay, LOWER_BODY) var/obj/item/bodypart/arm/held_in_hand = hand_bodyparts[held_index] held_in_hand?.held_hand_offset?.apply_offset(hand_overlay) @@ -436,12 +437,12 @@ There are several things that need to be remembered: return hands /// Modifies a sprite slightly to conform to female body shapes -/proc/wear_female_version(icon_state, icon, type, greyscale_colors) - var/index = "[icon_state]-[greyscale_colors]" +/proc/wear_female_version(icon_state, icon_file_path, icon, type, greyscale_colors, bodyshape) + var/index = "[icon_file_path]-[icon_state]-[greyscale_colors]" var/static/list/female_clothing_icons = list() var/icon/female_clothing_icon = female_clothing_icons[index] if(!female_clothing_icon) //Create standing/laying icons if they don't exist - var/female_icon_state = "female[type == FEMALE_UNIFORM_FULL ? "_full" : ((!type || type & FEMALE_UNIFORM_TOP_ONLY) ? "_top" : "")][type & FEMALE_UNIFORM_NO_BREASTS ? "_no_breasts" : ""]" + var/female_icon_state = "female[type == FEMALE_UNIFORM_FULL ? "_full" : ((!type || type & FEMALE_UNIFORM_TOP_ONLY) || bodyshape & BODYSHAPE_DIGITIGRADE ? "_top" : "")][type & FEMALE_UNIFORM_NO_BREASTS ? "_no_breasts" : ""]" var/icon/female_cropping_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', female_icon_state) female_clothing_icon = icon(icon, icon_state) female_clothing_icon.Blend(female_cropping_mask, ICON_MULTIPLY) @@ -450,24 +451,24 @@ There are several things that need to be remembered: return icon(female_clothing_icon) -/// Modifies a sprite to conform to digitigrade body shapes -/proc/wear_digi_version(icon/base_icon, obj/item/item, key, greyscale_colors) - ASSERT(istype(item), "wear_digi_version: no item passed") - ASSERT(istext(key), "wear_digi_version: no key passed") - if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) - greyscale_colors = item.get_general_color(base_icon) - - var/index = "[key]-[item.type]-[greyscale_colors]" - var/static/list/digitigrade_clothing_cache = list() - var/icon/resulting_icon = digitigrade_clothing_cache[index] - if(!resulting_icon) - resulting_icon = item.generate_digitigrade_icons(base_icon, greyscale_colors) +/// Modifies a sprite to conform to custom body shapes +/obj/item/proc/get_bodyshape_icon(icon/base_icon, key, greyscale_colors, bodyshape) + ASSERT(istext(key), "get_bodyshape_icon: no key passed") + if((bodyshape & BODYSHAPE_DIGITIGRADE) && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK)) + if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) + greyscale_colors = get_general_color(base_icon) + + var/index = "[key]-[type]-[greyscale_colors]" + var/static/list/digitigrade_clothing_cache = list() + var/icon/resulting_icon = digitigrade_clothing_cache[index] if(!resulting_icon) - stack_trace("[item.type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).") - return base_icon - digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon) + resulting_icon = generate_digitigrade_icons(base_icon, greyscale_colors) + if(!resulting_icon) + stack_trace("[type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).") + return base_icon + digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon) - return icon(resulting_icon) + return icon(resulting_icon) /// Modifies a sprite to replace the legs with a new version /proc/replace_icon_legs(icon/base_icon, icon/new_legs) @@ -597,16 +598,18 @@ generate/load female uniform sprites matching all previously decided variables if(female_uniform) building_icon = wear_female_version( icon_state = t_state, + icon_file_path = file2use, icon = file2use, type = female_uniform, greyscale_colors = greyscale_colors, + bodyshape = bodyshape, ) - if(!isinhands && (bodyshape & BODYSHAPE_DIGITIGRADE) && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK)) - building_icon = wear_digi_version( + if(!isinhands && (bodyshapes_with_variations & bodyshape)) + building_icon = get_bodyshape_icon( base_icon = building_icon || icon(file2use, t_state), - item = src, key = "[t_state]-[file2use]-[female_uniform]", greyscale_colors = greyscale_colors, + bodyshape = bodyshape, ) if(building_icon) draw_target = mutable_appearance(building_icon, layer = -layer2use) @@ -615,7 +618,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(draw_target, isinhands, file2use) + var/list/worn_overlays = worn_overlays(draw_target, isinhands, file2use, bodyshape) if(length(worn_overlays)) draw_target.overlays += worn_overlays draw_target = color_atom_overlay(draw_target) @@ -624,7 +627,7 @@ generate/load female uniform sprites matching all previously decided variables // but KEEP_APART breaks float layering, so what we need to do is make fake KEEP_APART for us to use var/mutable_appearance/standing = mutable_appearance(layer = -layer2use, appearance_flags = KEEP_TOGETHER) standing.overlays += draw_target - var/list/separate_overlays = separate_worn_overlays(standing, draw_target, isinhands, file2use) + var/list/separate_overlays = separate_worn_overlays(standing, draw_target, isinhands, file2use, bodyshape) if(length(separate_overlays)) standing.overlays += separate_overlays else // Don't nest overlays if there's nothing to nest against @@ -668,14 +671,12 @@ generate/load female uniform sprites matching all previously decided variables /mob/living/carbon/human/update_body(is_creating = FALSE) remove_overlay(BODY_LAYER) - - var/list/body_overlays = list() - body_overlays += get_underwear_overlays() - - if(length(body_overlays)) - overlays_standing[BODY_LAYER] = body_overlays + var/list/clothing_overlays = get_underwear_overlays() + if(length(clothing_overlays)) + for(var/image/overlay as anything in clothing_overlays) + apply_height(overlay, ENTIRE_BODY) + overlays_standing[BODY_LAYER] = clothing_overlays apply_overlay(BODY_LAYER) - // parent call will update the actual bodyparts return ..() @@ -723,6 +724,8 @@ generate/load female uniform sprites matching all previously decided variables var/list/eye_overlays = noggin.get_eye_overlays() if(length(eye_overlays)) + for(var/image/overlay as anything in eye_overlays) + apply_height(overlay, UPPER_BODY) overlays_standing[EYES_LAYER] = eye_overlays apply_overlay(EYES_LAYER) @@ -736,6 +739,8 @@ generate/load female uniform sprites matching all previously decided variables var/obj/item/bodypart/head/head = get_bodypart(BODY_ZONE_HEAD) var/list/head_overlays = head?.get_hair_overlays() if(length(head_overlays)) + for(var/image/overlay as anything in head_overlays) + apply_height(overlay, UPPER_BODY) overlays_standing[HAIR_LAYER] = head_overlays apply_overlay(HAIR_LAYER) @@ -752,6 +757,7 @@ generate/load female uniform sprites matching all previously decided variables for (var/mutable_appearance/overlay as anything in eye_overlays) overlay.pixel_w = 0 overlay.pixel_z = 0 + apply_height(overlay, UPPER_BODY) noggin.worn_face_offset.apply_offset(overlay) overlays_standing[EYES_LAYER] = eye_overlays @@ -776,56 +782,37 @@ generate/load female uniform sprites matching all previously decided variables update_eyes() update_hair() -// Hooks into human apply overlay so that we can modify all overlays applied through standing overlays to our height system. -// Some of our overlays will be passed through a displacement filter to make our mob look taller or shorter. -// Some overlays can't be displaced as they're too close to the edge of the sprite or cross the middle point in a weird way. -// So instead we have to pass them through an offset, which is close enough to look good. -/mob/living/carbon/human/apply_overlay(cache_index) - if(mob_height == HUMAN_HEIGHT_MEDIUM) - return ..() - - var/raw_applied = overlays_standing[cache_index] - var/string_form_index = num2text(cache_index) - var/offset_type = GLOB.layers_to_offset[string_form_index] - if(isnull(offset_type)) - if(islist(raw_applied)) - for(var/image/applied_appearance in raw_applied) - apply_height_filters(applied_appearance) - else if(isimage(raw_applied)) - apply_height_filters(raw_applied) - else - if(islist(raw_applied)) - for(var/image/applied_appearance in raw_applied) - apply_height_offsets(applied_appearance, offset_type) - else if(isimage(raw_applied)) - apply_height_offsets(raw_applied, offset_type) - - return ..() - /** - * Used in some circumstances where appearances can get cut off from the mob sprite from being too tall + * Applies an offset or a filter to an appearance accordance to the height of our mob * - * upper_torso is to specify whether the appearance is locate in the upper half of the mob rather than the lower half, - * higher up things (hats for example) need to be offset more due to the location of the filter displacement + * * appearance - The appearance to apply the height changes to + * * body_area - The body area this appearance is on, used to determine what offsets/filters to apply */ -/mob/living/carbon/human/proc/apply_height_offsets(image/appearance, upper_torso) - var/height_to_use = num2text(mob_height) - var/final_offset = 0 - switch(upper_torso) - if(UPPER_BODY) - final_offset = GLOB.human_heights_to_offsets[height_to_use][1] - if(LOWER_BODY) - final_offset = GLOB.human_heights_to_offsets[height_to_use][2] - else +/mob/living/carbon/proc/apply_height(image/appearance, body_area) + return + +/mob/living/carbon/human/apply_height(image/appearance, body_area) + if(mob_height == HUMAN_HEIGHT_MEDIUM) + return // default, no handling needed + + switch(body_area) + if(LOWER_BODY, UPPER_BODY) + appearance.pixel_z += GLOB.human_heights_to_offsets[mob_height][body_area] + return + if(ENTIRE_BODY) + apply_height_filter(appearance) + return + if(NO_MODIFY) return - appearance.pixel_z += final_offset - return appearance + stack_trace("Invalid height body_area specified ([body_area || "null"])") /** * Applies a filter to an appearance according to mob height */ -/mob/living/carbon/human/proc/apply_height_filters(image/appearance) +/mob/living/carbon/human/proc/apply_height_filter(image/appearance) + PRIVATE_PROC(TRUE) + var/static/icon/cut_torso_mask = icon('icons/effects/cut.dmi', "Cut1") var/static/icon/cut_legs_mask = icon('icons/effects/cut.dmi', "Cut2") var/static/icon/lenghten_torso_mask = icon('icons/effects/cut.dmi', "Cut3") @@ -954,9 +941,58 @@ generate/load female uniform sprites matching all previously decided variables // Kinda gross but because many humans overlays do not use KEEP_TOGETHER we need to manually propogate the filter // Otherwise overlays, such as worn overlays on icons, won't have the filter "applied", and the effect kinda breaks if(!(appearance.appearance_flags & KEEP_TOGETHER)) - for(var/image/overlay in list() + appearance.underlays + appearance.overlays) - apply_height_filters(overlay) + for(var/mutable_appearance/child_overlay as anything in appearance.underlays + appearance.overlays) + apply_height_filter(child_overlay) return appearance #undef RESOLVE_ICON_STATE + +// Wide organs or bodyparts shouldn't offset human HUD directly +/mob/living/carbon/human/get_hud_x_offset() + return 0 + +// But they are affected by height +/mob/living/carbon/human/get_hud_y_offset() + return GLOB.human_heights_to_offsets[mob_height]["[UPPER_BODY]"] + +/mob/living/carbon/human/get_cached_width() + return cached_body_width + +/mob/living/carbon/human/get_cached_height() + return cached_body_height + +#define SUB_OVERLAY_X_INDEX 1 +#define SUB_OVERLAY_Y_INDEX 1 + +/mob/living/carbon/human/update_body_parts(update_limb_data) + . = ..() + if (!.) + return + cached_body_width = ICON_SIZE_X + cached_body_height = ICON_SIZE_Y + var/list/bodypart_overlays = overlays_standing[BODYPARTS_LAYER] + if (!length(bodypart_overlays)) + return + var/list/parsed_overlays = bodypart_overlays.Copy() + var/i = 1 + while (i <= length(parsed_overlays)) + var/mutable_appearance/overlay = parsed_overlays[i] + if (!isimage(overlay)) // Malformed overlays, etc + i += 1 + continue + var/overlay_x = overlay.pixel_x + overlay.pixel_w + var/overlay_y = overlay.pixel_y + overlay.pixel_z + if (!isnull(parsed_overlays[overlay])) // Nested overlay + overlay_x += parsed_overlays[overlay][SUB_OVERLAY_X_INDEX] + overlay_y += parsed_overlays[overlay][SUB_OVERLAY_Y_INDEX] + cached_body_width = max(cached_body_width, overlay.get_cached_width()) + cached_body_height = max(cached_body_height, overlay.get_cached_height()) + cached_body_min_x_offset = min(cached_body_min_x_offset, overlay_x) + cached_body_min_y_offset = min(cached_body_min_y_offset, overlay_y) + for (var/sub_overlay in overlay.overlays) + parsed_overlays[sub_overlay] = list(overlay_x, overlay_y) + i += 1 + +#undef SUB_OVERLAY_X_INDEX +#undef SUB_OVERLAY_Y_INDEX diff --git a/code/modules/mob/living/carbon/human/init_signals.dm b/code/modules/mob/living/carbon/human/init_signals.dm index 9f864884723a..4f14f056727a 100644 --- a/code/modules/mob/living/carbon/human/init_signals.dm +++ b/code/modules/mob/living/carbon/human/init_signals.dm @@ -23,9 +23,9 @@ update_mob_height() // Toggle passtable if(HAS_TRAIT(src, TRAIT_DWARF)) - passtable_on(src, TRAIT_DWARF) + ADD_TRAIT(src, TRAIT_PASSTABLE, TRAIT_DWARF) else - passtable_off(src, TRAIT_DWARF) + REMOVE_TRAIT(src, TRAIT_PASSTABLE, TRAIT_DWARF) /// Gaining or losing [TRAIT_TOO_TALL] updates our height /mob/living/carbon/human/proc/on_tootall_trait(datum/source) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index cfb9c5d8c163..bee617b9d568 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -26,6 +26,8 @@ /mob/living/carbon/human/get_item_by_slot(slot_id) switch(slot_id) + if(ITEM_SLOT_BACK) + return back if(ITEM_SLOT_BELT) return belt if(ITEM_SLOT_ID) @@ -38,6 +40,12 @@ return gloves if(ITEM_SLOT_FEET) return shoes + if(ITEM_SLOT_MASK) + return wear_mask + if(ITEM_SLOT_NECK) + return wear_neck + if(ITEM_SLOT_HEAD) + return head if(ITEM_SLOT_OCLOTHING) return wear_suit if(ITEM_SLOT_ICLOTHING) @@ -52,6 +60,9 @@ return ..() /mob/living/carbon/human/get_slot_by_item(obj/item/looking_for) + if(looking_for == back) + return ITEM_SLOT_BACK + if(looking_for == belt) return ITEM_SLOT_BELT @@ -70,6 +81,15 @@ if(looking_for == head) return ITEM_SLOT_HEAD + if(looking_for == wear_mask) + return ITEM_SLOT_MASK + + if(looking_for == wear_neck) + return ITEM_SLOT_NECK + + if(looking_for == head) + return ITEM_SLOT_HEAD + if(looking_for == shoes) return ITEM_SLOT_FEET @@ -90,40 +110,6 @@ return ..() -/mob/living/carbon/human/proc/get_body_slots() - return list( - back, - s_store, - handcuffed, - legcuffed, - wear_suit, - gloves, - shoes, - belt, - wear_id, - l_store, - r_store, - w_uniform - ) - -/mob/living/carbon/human/proc/get_head_slots() - return list( - head, - wear_mask, - wear_neck, - glasses, - ears, - ) - -/mob/living/carbon/human/proc/get_storage_slots() - return list( - back, - belt, - l_store, - r_store, - s_store, - ) - /mob/living/carbon/human/get_visible_items() var/list/visible_items = ..() var/obj/item/clothing/under/under = w_uniform @@ -139,6 +125,11 @@ var/not_handled = FALSE //Added in case we make this type path deeper one day switch(slot) + if(ITEM_SLOT_BACK) + if(back) + return + back = equipping + update_worn_back() if(ITEM_SLOT_BELT) if(belt) return @@ -181,6 +172,21 @@ stop_pulling() //can't pull if restrained update_mob_action_buttons() //certain action buttons will no longer be usable. update_worn_oversuit() + if(ITEM_SLOT_MASK) + if(wear_mask) + return + wear_mask = equipping + update_worn_mask() + if(ITEM_SLOT_HEAD) + if(head) + return + head = equipping + update_worn_head() + if(ITEM_SLOT_NECK) + if(wear_neck) + return + wear_neck = equipping + update_worn_neck(equipping) if(ITEM_SLOT_ICLOTHING) if(w_uniform) return @@ -234,6 +240,22 @@ dropItemToGround(wear_id) if(belt && !can_equip(belt, ITEM_SLOT_BELT, TRUE, ignore_equipped = TRUE)) dropItemToGround(belt) + else if(item_dropping == back) + back = null + if(!QDELETED(src)) + update_worn_back() + else if(item_dropping == head) + head = null + if(!QDELETED(src)) + update_worn_head() + else if(item_dropping == wear_mask) + wear_mask = null + if(!QDELETED(src)) + update_worn_mask() + else if(item_dropping == wear_neck) + wear_neck = null + if(!QDELETED(src)) + update_worn_neck(item_dropping) else if(item_dropping == gloves) gloves = null if(!QDELETED(src)) @@ -429,3 +451,17 @@ new_bodypart.try_attach_limb(src, TRUE) hand_bodyparts[i] = new_bodypart ..() //Don't redraw hands until we have organs for them + +/// Returns the helmet if an air tank compatible helmet is equipped. +/mob/living/carbon/human/proc/can_breathe_helmet() + if (astype(head, /obj/item/clothing)?.clothing_flags & HEADINTERNALS) + return head + +/// Returns the mask if an air tank compatible mask is equipped. +/mob/living/carbon/human/proc/can_breathe_mask() + if (astype(wear_mask, /obj/item/clothing)?.clothing_flags & MASKINTERNALS) + return wear_mask + +/// Returns the object that allows us to breathe internals - tube implant, mask or helmet +/mob/living/carbon/human/can_breathe_internals() + return can_breathe_tube() || can_breathe_mask() || can_breathe_helmet() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3c21ea44ed54..9f2740d4c601 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -81,17 +81,16 @@ if(human_lungs) return human_lungs.check_breath(breath, src) - if(health >= crit_threshold) - adjust_oxy_loss(HUMAN_MAX_OXYLOSS + 1) - else if(!HAS_TRAIT(src, TRAIT_NOCRITDAMAGE)) - adjust_oxy_loss(HUMAN_CRIT_MAX_OXYLOSS) + var/oxy_damage = SUFFOCATION_OXYLOSS + 1 + if(stat == SOFT_CRIT || stat == HARD_CRIT) + oxy_damage *= (HAS_TRAIT(src, TRAIT_NOCRITDAMAGE) ? 0 : SUFFOCATION_OXYLOSS_CRIT_MODIFIER) - failed_last_breath = TRUE - - var/datum/species/human_species = dna.species + if(oxy_damage > 0) + apply_damage(oxy_damage, OXY) - switch(human_species.breathid) - if(GAS_O2) + failed_last_breath = TRUE + switch(dna?.species?.get_breath_type()) + if(GAS_O2, null) // null means use oxyloss alert by default throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy) if(GAS_PLASMA) throw_alert(ALERT_NOT_ENOUGH_PLASMA, /atom/movable/screen/alert/not_enough_plas) @@ -99,6 +98,9 @@ throw_alert(ALERT_NOT_ENOUGH_CO2, /atom/movable/screen/alert/not_enough_co2) if(GAS_N2) throw_alert(ALERT_NOT_ENOUGH_NITRO, /atom/movable/screen/alert/not_enough_nitro) + else + stack_trace("Unsupported breath type for species [dna.species.name] in check_breath()") + return FALSE /// Environment handlers for species diff --git a/code/modules/mob/living/carbon/human/monkey.dm b/code/modules/mob/living/carbon/human/monkey.dm index e4d19ab1443d..04bae32dac01 100644 --- a/code/modules/mob/living/carbon/human/monkey.dm +++ b/code/modules/mob/living/carbon/human/monkey.dm @@ -3,14 +3,9 @@ race = /datum/species/monkey ai_controller = /datum/ai_controller/monkey -/mob/living/carbon/human/species/monkey/Initialize(mapload, cubespawned = FALSE, mob/spawner) +/mob/living/carbon/human/species/monkey/Initialize(mapload, cubespawned = FALSE) ADD_TRAIT(src, TRAIT_BORN_MONKEY, INNATE_TRAIT) if (cubespawned) - var/cap = CONFIG_GET(number/monkeycap) - if (LAZYLEN(SSmobs.cubemonkeys) > cap) - if (spawner) - to_chat(spawner, span_warning("Bluespace harmonics prevent the spawning of more than [cap] monkeys on the station at one time!")) - return INITIALIZE_HINT_QDEL SSmobs.cubemonkeys += src return ..() @@ -21,7 +16,7 @@ /mob/living/carbon/human/species/monkey/angry ai_controller = /datum/ai_controller/monkey/angry -/mob/living/carbon/human/species/monkey/angry/Initialize(mapload, cubespawned = FALSE, mob/spawner) +/mob/living/carbon/human/species/monkey/angry/Initialize(mapload, cubespawned = FALSE) . = ..() if(prob(10)) INVOKE_ASYNC(src, PROC_REF(give_ape_escape_helmet)) diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index a77aee8473a3..556814211180 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -12,12 +12,9 @@ meat = /obj/item/food/meat/slab/monkey knife_butcher_results = list(/obj/item/food/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/carbon/monkey = 1) inherent_traits = list( - TRAIT_NO_AUGMENTS, TRAIT_NO_BLOOD_OVERLAY, TRAIT_NO_DNA_COPY, TRAIT_NO_UNDERWEAR, - TRAIT_VENTCRAWLER_NUDE, - TRAIT_WEAK_SOUL, ) no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_SUITSTORE changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | ERT_SPAWN | SLIME_EXTRACT @@ -44,26 +41,11 @@ . = ..() if (pref_load) ADD_TRAIT(human_who_gained_species, TRAIT_BORN_MONKEY, INNATE_TRAIT) // Not a species trait, you cannot escape your genetic destiny - passtable_on(human_who_gained_species, SPECIES_TRAIT) human_who_gained_species.dna.add_mutation(/datum/mutation/race, MUTATION_SOURCE_ACTIVATED) - human_who_gained_species.AddElement(/datum/element/human_biter) - human_who_gained_species.update_mob_height() /datum/species/monkey/on_species_loss(mob/living/carbon/human/C) . = ..() - passtable_off(C, SPECIES_TRAIT) C.dna.remove_mutation(/datum/mutation/race, MUTATION_SOURCE_ACTIVATED) - C.RemoveElement(/datum/element/human_biter) - C.update_mob_height() - -/datum/species/monkey/update_species_heights(mob/living/carbon/human/holder) - if(HAS_TRAIT(holder, TRAIT_DWARF)) - return MONKEY_HEIGHT_DWARF - - if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) - return MONKEY_HEIGHT_TALL - - return MONKEY_HEIGHT_MEDIUM /datum/species/monkey/check_roundstart_eligible() // STOP ADDING MONKEY SUBTYPES YOU HEATHEN @@ -136,7 +118,7 @@ /obj/item/organ/brain/primate //Ook Ook name = "Primate Brain" desc = "This wad of meat is small, but has enlarged occipital lobes for spotting bananas." - organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE, TRAIT_GUN_NATURAL) // No literacy or advanced tool usage. + organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE, TRAIT_GUN_NATURAL, TRAIT_WEAK_SOUL) // No literacy or advanced tool usage. actions_types = list(/datum/action/item_action/organ_action/toggle_trip) /// Will this monkey stumble if they are crossed by a simple mob or a carbon in combat mode? Toggable by monkeys with clients, and is messed automatically set to true by monkey AI. var/tripping = TRUE @@ -164,10 +146,12 @@ /obj/item/organ/brain/primate/on_mob_insert(mob/living/carbon/primate) . = ..() RegisterSignal(primate, COMSIG_LIVING_MOB_BUMPED, PROC_REF(on_mob_bump)) + primate.AddElement(/datum/element/human_biter) /obj/item/organ/brain/primate/on_mob_remove(mob/living/carbon/primate) . = ..() UnregisterSignal(primate, COMSIG_LIVING_MOB_BUMPED) + primate.RemoveElement(/datum/element/human_biter) /obj/item/organ/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob) SIGNAL_HANDLER diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 32138df70cec..8bacbfb4c2b1 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -102,11 +102,12 @@ /// Bodypart overlay for the mushroom cap organ /datum/bodypart_overlay/mutant/mushroom_cap - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) feature_key = FEATURE_MUSH_CAP dyable = TRUE + offset_location = UPPER_BODY -/datum/bodypart_overlay/mutant/mushroom_cap/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/mushroom_cap/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) /datum/bodypart_overlay/mutant/mushroom_cap/override_color(obj/item/bodypart/bodypart_owner) diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 2989fb95a7d9..7b9c9dd516a0 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -17,7 +17,6 @@ ) inherent_biotypes = MOB_HUMANOID|MOB_MINERAL|MOB_SKELETAL - inherent_respiration_type = RESPIRATION_PLASMA mutantlungs = /obj/item/organ/lungs/plasmaman smoker_lungs = /obj/item/organ/lungs/plasmaman/plasmaman_smoker mutanttongue = /obj/item/organ/tongue/bone/plasmaman @@ -27,7 +26,6 @@ mutantheart = null heatmod = 1.5 payday_modifier = 1.0 - breathid = GAS_PLASMA changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | ERT_SPAWN species_cookie = /obj/item/reagent_containers/condiment/milk outfit_important_for_life = /datum/outfit/plasmaman diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index fa31d7a89cf1..038abcc22d9d 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -31,7 +31,6 @@ . = ..() to_chat(new_vampire, "[info_text]") new_vampire.skin_tone = "albino" - RegisterSignal(new_vampire, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(new_vampire, COMSIG_MOB_HUD_CREATED, PROC_REF(on_hud_created)) RegisterSignal(new_vampire, COMSIG_LIVING_LIFE, PROC_REF(on_life)) if(new_vampire.hud_used) @@ -40,7 +39,6 @@ /datum/species/human/vampire/on_species_loss(mob/living/carbon/human/old_vampire, datum/species/new_species, pref_load) . = ..() UnregisterSignal(old_vampire, list( - COMSIG_ATOM_ATTACKBY, COMSIG_MOB_HUD_CREATED, COMSIG_LIVING_LIFE, )) @@ -73,12 +71,6 @@ SIGNAL_HANDLER source.hud_used.add_screen_object(/atom/movable/screen/blood_level, HUD_MOB_BLOOD_LEVEL, HUD_GROUP_INFO, update_screen = TRUE) -/datum/species/human/vampire/proc/on_attackby(mob/living/source, obj/item/attacking_item, mob/living/attacker, list/modifiers, list/attack_modifiers) - SIGNAL_HANDLER - - if(istype(attacking_item, /obj/item/nullrod/whip)) - MODIFY_ATTACK_FORCE_MULTIPLIER(attack_modifiers, 2) - /datum/species/human/vampire/get_physical_attributes() return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \ They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!" diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 3307bc4215ae..7d1b374c90d8 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -113,6 +113,7 @@ // INFECTIOUS UNIQUE TRAIT_STABLEHEART, // Replacement for noblood. Infectious zombies can bleed but don't need their heart. TRAIT_STABLELIVER, // Not necessary but for consistency with above + TRAIT_APATHETIC, // They don't have the brains for mood. ) // Infectious zombies have slow legs @@ -134,6 +135,7 @@ new_zombie.set_combat_mode(TRUE) // Needs to be added after combat mode is set ADD_TRAIT(new_zombie, TRAIT_COMBAT_MODE_LOCK, SPECIES_TRAIT) + new_zombie.physiology.stamina_mod *= 0.33 //Zombie stam resist // Deal with the source of this zombie corruption // Infection organ needs to be handled separately from mutant_organs @@ -162,6 +164,7 @@ REMOVE_TRAIT(was_zombie, TRAIT_COMBAT_MODE_LOCK, SPECIES_TRAIT) qdel(was_zombie.GetComponent(/datum/component/mutant_hands)) qdel(was_zombie.GetComponent(/datum/component/regenerator)) + was_zombie.physiology.stamina_mod /= 0.33 /datum/species/zombie/infectious/check_roundstart_eligible() return FALSE diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index fcf292496f27..2c5a953ae79e 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -25,14 +25,6 @@ /mob/living/carbon/get_item_by_slot(slot_id) switch(slot_id) - if(ITEM_SLOT_BACK) - return back - if(ITEM_SLOT_MASK) - return wear_mask - if(ITEM_SLOT_NECK) - return wear_neck - if(ITEM_SLOT_HEAD) - return head if(ITEM_SLOT_HANDCUFFED) return handcuffed if(ITEM_SLOT_LEGCUFFED) @@ -41,18 +33,6 @@ return ..() /mob/living/carbon/get_slot_by_item(obj/item/looking_for) - if(looking_for == back) - return ITEM_SLOT_BACK - - if(looking_for == wear_mask) - return ITEM_SLOT_MASK - - if(looking_for == wear_neck) - return ITEM_SLOT_NECK - - if(looking_for == head) - return ITEM_SLOT_HEAD - if(looking_for == handcuffed) return ITEM_SLOT_HANDCUFFED @@ -123,26 +103,6 @@ var/not_handled = FALSE switch(slot) - if(ITEM_SLOT_BACK) - if(back) - return - back = equipping - update_worn_back() - if(ITEM_SLOT_MASK) - if(wear_mask) - return - wear_mask = equipping - update_worn_mask() - if(ITEM_SLOT_HEAD) - if(head) - return - head = equipping - update_worn_head() - if(ITEM_SLOT_NECK) - if(wear_neck) - return - wear_neck = equipping - update_worn_neck(equipping) if(ITEM_SLOT_HANDCUFFED) set_handcuffed(equipping) if(ITEM_SLOT_LEGCUFFED) @@ -193,23 +153,7 @@ if(!. || !item_dropping) //We don't want to set anything to null if the parent returned 0. return - if(item_dropping == head) - head = null - if(!QDELETED(src)) - update_worn_head() - else if(item_dropping == back) - back = null - if(!QDELETED(src)) - update_worn_back() - else if(item_dropping == wear_mask) - wear_mask = null - if(!QDELETED(src)) - update_worn_mask() - else if(item_dropping == wear_neck) - wear_neck = null - if(!QDELETED(src)) - update_worn_neck(item_dropping) - else if(item_dropping == handcuffed) + if(item_dropping == handcuffed) set_handcuffed(null) if(buckled?.buckle_requires_restraints) buckled.unbuckle_mob(src) @@ -272,23 +216,13 @@ if((added_slots|removed_slots) & (HIDEJUMPSUIT|HIDEEARS|HIDEHAIR|HIDESNOUT|HIDEMUTWINGS|HIDEANTENNAE)) update_body() -/// Returns the helmet if an air tank compatible helmet is equipped. -/mob/living/carbon/proc/can_breathe_helmet() - if (astype(head, /obj/item/clothing)?.clothing_flags & HEADINTERNALS) - return head - -/// Returns the mask if an air tank compatible mask is equipped. -/mob/living/carbon/proc/can_breathe_mask() - if (astype(wear_mask, /obj/item/clothing)?.clothing_flags & MASKINTERNALS) - return wear_mask - /// Returns the tube if a breathing tube is equipped. /mob/living/carbon/proc/can_breathe_tube() return get_organ_slot(ORGAN_SLOT_BREATHING_TUBE) /// Returns the object that allows us to breathe internals - tube implant, mask or helmet /mob/living/carbon/proc/can_breathe_internals() - return can_breathe_tube() || can_breathe_mask() || can_breathe_helmet() + return can_breathe_tube() /// Returns truthy if air tank is open and mob lacks apparatus, or if the tank moved away from the mob. /mob/living/carbon/proc/invalid_internals() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index c7d0a88c038d..5185ed84ef09 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -83,20 +83,19 @@ if(lungs?.organ_flags & ORGAN_FAILING) losebreath++ else if(!get_organ_slot(ORGAN_SLOT_BREATHING_TUBE)) - if(health <= HEALTH_THRESHOLD_FULLCRIT || pulledby?.grab_state >= GRAB_KILL) + if(stat == HARD_CRIT || pulledby?.grab_state >= GRAB_KILL) losebreath++ //You can't breath at all when in critical or when being choked, so you're going to miss a breath - else if(health <= crit_threshold) + else if(stat == SOFT_CRIT) losebreath += 0.25 //You're having trouble breathing in soft crit, so you'll miss a breath one in four times //Suffocate if(losebreath >= 1) //You've missed a breath, take oxy damage losebreath-- - if(prob(10)) - emote("gasp") if(isobj(loc)) var/obj/loc_as_obj = loc loc_as_obj.handle_internal_lifeform(src,0) + else //Breathe from internal breath = get_breath_from_internal(BREATH_VOLUME) @@ -164,7 +163,7 @@ breath.assert_gases(/datum/gas/bz, /datum/gas/carbon_dioxide, /datum/gas/freon, /datum/gas/plasma, /datum/gas/pluoxium, /datum/gas/miasma, /datum/gas/nitrous_oxide, /datum/gas/nitrium, /datum/gas/oxygen) /// The list of gases in the breath. - var/list/breath_gases = breath.gases + var/list/breath_moles = breath.moles /// Indicates if there are moles of gas in the breath. var/has_moles = breath.total_moles() != 0 @@ -209,16 +208,16 @@ if(has_moles) // Breath has more than 0 moles of gas. // Partial pressures of "main gases". - pluoxium_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/pluoxium][MOLES]) - o2_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/oxygen][MOLES] + (PLUOXIUM_PROPORTION * pluoxium_pp)) - plasma_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/plasma][MOLES]) - co2_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/carbon_dioxide][MOLES]) + pluoxium_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/pluoxium]) + o2_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/oxygen] + (PLUOXIUM_PROPORTION * pluoxium_pp)) + plasma_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/plasma]) + co2_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/carbon_dioxide]) // Partial pressures of "trace" gases. - bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES]) - freon_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/freon][MOLES]) - miasma_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/miasma][MOLES]) - n2o_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/nitrous_oxide][MOLES]) - nitrium_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/nitrium][MOLES]) + bz_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/bz]) + freon_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/freon]) + miasma_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/miasma]) + n2o_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/nitrous_oxide]) + nitrium_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/nitrium]) // Breath has 0 moles of gas. else if(can_breathe_vacuum) @@ -236,7 +235,7 @@ // Behaves like Oxygen with 8X efficacy, but metabolizes into a reagent. if(pluoxium_pp) // Inhale Pluoxium. Exhale nothing. - breath_gases[/datum/gas/pluoxium][MOLES] = 0 + breath_moles[/datum/gas/pluoxium] = 0 // Metabolize to reagent. if(pluoxium_pp > gas_stimulation_min) var/existing = reagents.get_reagent_amount(/datum/reagent/pluoxium) @@ -248,7 +247,7 @@ // Minimum Oxygen effects. "Too little oxygen!" if(!can_breathe_vacuum && (o2_pp < safe_oxygen_min)) // Breathe insufficient amount of O2. - oxygen_used = handle_suffocation(o2_pp, safe_oxygen_min, breath_gases[/datum/gas/oxygen][MOLES]) + oxygen_used = handle_suffocation(o2_pp, safe_oxygen_min, breath_moles[/datum/gas/oxygen]) if(!HAS_TRAIT(src, TRAIT_ANOSMIA)) throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy) else @@ -257,14 +256,14 @@ clear_alert(ALERT_NOT_ENOUGH_OXYGEN) if(o2_pp) // Inhale O2. - oxygen_used = breath_gases[/datum/gas/oxygen][MOLES] + oxygen_used = breath_moles[/datum/gas/oxygen] // Heal mob if not in crit. if(health >= crit_threshold) adjust_oxy_loss(-5) // Exhale equivalent amount of CO2. if(o2_pp) - breath_gases[/datum/gas/oxygen][MOLES] -= oxygen_used - breath_gases[/datum/gas/carbon_dioxide][MOLES] += oxygen_used + breath_moles[/datum/gas/oxygen] -= oxygen_used + breath_moles[/datum/gas/carbon_dioxide] += oxygen_used //-- CARBON DIOXIDE --// // Maximum CO2 effects. "Too much CO2!" @@ -294,7 +293,7 @@ // Maximum Plasma effects. "Too much Plasma!" if(plasma_pp > safe_plas_max) // Plasma side-effects. - var/ratio = (breath_gases[/datum/gas/plasma][MOLES] / safe_plas_max) * 10 + var/ratio = (breath_moles[/datum/gas/plasma] / safe_plas_max) * 10 adjust_tox_loss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) if(!HAS_TRAIT(src, TRAIT_ANOSMIA)) throw_alert(ALERT_TOO_MUCH_PLASMA, /atom/movable/screen/alert/too_much_plas) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 61850f26f10a..f78e6ad5a766 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -338,24 +338,15 @@ /mob/living/proc/get_oxy_loss() return oxyloss -/mob/living/proc/can_adjust_oxy_loss(amount, forced, required_biotype, required_respiration_type) - if(!forced) - if(HAS_TRAIT(src, TRAIT_GODMODE)) - return FALSE - if (required_respiration_type) - var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) - if(isnull(affected_lungs)) - if(!(mob_respiration_type & required_respiration_type)) // if the mob has no lungs, use mob_respiration_type - return FALSE - else - if(!(affected_lungs.respiration_type & required_respiration_type)) // otherwise use the lungs' respiration_type - return FALSE +/mob/living/proc/can_adjust_oxy_loss(amount, forced, required_biotype) + if(!forced && HAS_TRAIT(src, TRAIT_GODMODE)) + return FALSE if(SEND_SIGNAL(src, COMSIG_LIVING_ADJUST_OXY_DAMAGE, OXY, amount, forced) & COMPONENT_IGNORE_CHANGE) return FALSE return TRUE -/mob/living/proc/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype = ALL, required_respiration_type = ALL) - if(!can_adjust_oxy_loss(amount, forced, required_biotype, required_respiration_type)) +/mob/living/proc/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype = ALL) + if(!can_adjust_oxy_loss(amount, forced, required_biotype)) return 0 . = oxyloss oxyloss = clamp((oxyloss + (amount * CONFIG_GET(number/damage_multiplier))), 0, maxHealth * 2) @@ -365,18 +356,10 @@ if(updating_health) updatehealth() -/mob/living/proc/set_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype = ALL, required_respiration_type = ALL) - if(!forced) - if(HAS_TRAIT(src, TRAIT_GODMODE)) - return FALSE +/mob/living/proc/set_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype = ALL) + if(!forced && HAS_TRAIT(src, TRAIT_GODMODE)) + return FALSE - var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS) - if(isnull(affected_lungs)) - if(!(mob_respiration_type & required_respiration_type)) - return FALSE - else - if(!(affected_lungs.respiration_type & required_respiration_type)) - return FALSE . = oxyloss oxyloss = amount . -= oxyloss diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index a7de4804b76c..022bfc314e82 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -23,7 +23,7 @@ spill_organs(drop_bitflags) if(drop_bitflags & DROP_BODYPARTS) - spread_bodyparts(drop_bitflags) + spread_bodyparts(drop_bitflags, gibbed = TRUE) // failsafe for if we fuck up and leave our brain behind. (other organs are replaceable so we can ignore them.) var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN) @@ -83,7 +83,7 @@ * drop_bitflags: (see code/__DEFINES/blood.dm) * * DROP_BRAIN - Detaches the head from the mob and launches it away from the body **/ -/mob/living/proc/spread_bodyparts(drop_bitflags=NONE) +/mob/living/proc/spread_bodyparts(drop_bitflags = NONE, gibbed = FALSE) return /// Length of the animation in dust_animation.dmi diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index bef9780b390e..fda5851dddd2 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -125,13 +125,12 @@ // Prevent mobs in a deathcoma from revealing they actually died if (HAS_TRAIT(user, TRAIT_DEATHCOMA)) return - // DARKPACK EDIT ADD END - Torpor - var/mob/living/carbon/carbon_user = user + // DARKPACK EDIT ADD END // For masks that give unique death sounds - if(istype(carbon_user) && isclothing(carbon_user.wear_mask) && carbon_user.wear_mask.unique_death) - playsound(carbon_user, carbon_user.wear_mask.unique_death, 200, TRUE, TRUE) - return - if(user.death_sound) + var/obj/item/clothing/mask/mask = astype(user.get_item_by_slot(ITEM_SLOT_MASK), /obj/item/clothing/mask) + if(mask?.unique_death) + playsound(user, mask.unique_death, 200, TRUE, TRUE) + else if(user.death_sound) playsound(user, user.death_sound, 200, TRUE, TRUE) /datum/emote/living/drool @@ -308,7 +307,7 @@ message = "laughs." message_mime = "laughs silently!" emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE - specific_emote_audio_cooldown = 8 SECONDS + manual_specific_emote_audio_cooldown = 8 SECONDS vary = TRUE /datum/emote/living/laugh/can_run_emote(mob/living/user, status_check = TRUE , intentional, params) @@ -424,7 +423,9 @@ emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE mob_type_blacklist_typecache = list(/mob/living/brain) sound_wall_ignore = TRUE - specific_emote_audio_cooldown = 10 SECONDS + use_sound_tokens = TRUE + manual_specific_emote_audio_cooldown = 10 SECONDS + forced_specific_emote_audio_cooldown = 4 SECONDS vary = TRUE /datum/emote/living/scream/run_emote(mob/user, params, type_override, intentional = FALSE) @@ -661,8 +662,7 @@ if(TIMER_COOLDOWN_FINISHED(user, COOLDOWN_YAWN_PROPAGATION)) TIMER_COOLDOWN_START(user, COOLDOWN_YAWN_PROPAGATION, cooldown * 3) - var/mob/living/carbon/carbon_user = user - if(carbon_user.obscured_slots & HIDEFACE) + if(astype(user, /mob/living/carbon)?.obscured_slots & HIDEFACE) return // if your face is obscured, skip propagation var/propagation_distance = user.client ? 5 : 2 // mindless mobs are less able to spread yawns diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm index 3c9c0d7dd4f1..5b82ee78330a 100644 --- a/code/modules/mob/living/init_signals.dm +++ b/code/modules/mob/living/init_signals.dm @@ -84,6 +84,9 @@ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_MIND_TEMPORARILY_GONE), PROC_REF(on_mind_temporarily_gone_trait_gain)) RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_MIND_TEMPORARILY_GONE), PROC_REF(on_mind_temporarily_gone_trait_loss)) + RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_PASSTABLE), SIGNAL_REMOVETRAIT(TRAIT_PASSTABLE)), PROC_REF(on_passtable_trait_toggled)) + RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_PASSWINDOW), SIGNAL_REMOVETRAIT(TRAIT_PASSWINDOW)), PROC_REF(on_passwindow_trait_toggled)) + /// Called when [TRAIT_KNOCKEDOUT] is added to the mob. /mob/living/proc/on_knockedout_trait_gain(datum/source) SIGNAL_HANDLER @@ -346,3 +349,19 @@ /mob/living/proc/on_mind_temporarily_gone_trait_loss(datum/source) SIGNAL_HANDLER med_hud_set_status() + +/// Called when [TRAIT_PASSTABLE] is added/removed to/from the mob. +/mob/living/proc/on_passtable_trait_toggled(datum/source) + SIGNAL_HANDLER + if(HAS_TRAIT(src, TRAIT_PASSTABLE)) + pass_flags |= PASSTABLE + else + pass_flags &= ~PASSTABLE + +/// Called when [TRAIT_PASSWINDOW] is added/removed to/from the mob. +/mob/living/proc/on_passwindow_trait_toggled(datum/source) + SIGNAL_HANDLER + if(HAS_TRAIT(src, TRAIT_PASSWINDOW)) + pass_flags |= PASSWINDOW + else + pass_flags &= ~PASSWINDOW diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 178679bfc912..bf39f4aa87ee 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -49,6 +49,8 @@ if(stat != DEAD) //Breathing, if applicable handle_breathing(seconds_per_tick) + if(isnull(loc)) // Mice can die and become items from breathing + return // Handle temperature/pressure differences between body and environment var/datum/gas_mixture/environment = loc.return_air() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 94753937735f..310da8937560 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -374,8 +374,9 @@ now_pushing = FALSE /mob/living/start_pulling(atom/movable/AM, state, force = pull_force, supress_message = FALSE) - if(!AM || !src) + if(!src) return FALSE + ASSERT(ismovable(AM), "[src] attempted to pull [AM ? "[AM], a nonmovable atom" : "a null object"]") if(!(AM.can_be_pulled(src, force))) return FALSE if(throwing || !(mobility_flags & MOBILITY_PULL)) @@ -514,9 +515,7 @@ //mob verbs are a lot faster than object verbs //for more info on why this is not atom/pull, see examinate() in mob.dm -/mob/living/verb/pulled(atom/movable/thing_pulled as mob|obj in oview(1)) - set name = "Pull" - +GAME_VERB(/mob/living, pulled, "Pull", null, atom/movable/thing_pulled as mob|obj in oview(1)) if(istype(thing_pulled) && Adjacent(thing_pulled)) start_pulling(thing_pulled) @@ -540,8 +539,7 @@ log_message("points at [pointing_at]", LOG_EMOTE) visible_message(span_infoplain("[span_name("[src]")] points at [pointing_at]."), span_notice("You point at [pointing_at].")) -/mob/living/verb/succumb(whispered as num|null) - set hidden = TRUE +GAME_VERB_HIDDEN(/mob/living, succumb, "succumb", whispered as num|null) if (!CAN_SUCCUMB(src)) if(HAS_TRAIT(src, TRAIT_SUCCUMB_OVERRIDE)) if(whispered) @@ -610,9 +608,7 @@ // MOB PROCS //END -/mob/living/proc/mob_sleep() - set name = "Sleep" - set hidden = TRUE +GAME_VERB_PROC(/mob/living, mob_sleep, "Sleep", null) if(IsSleeping()) to_chat(src, span_warning("You are already sleeping!")) @@ -992,10 +988,11 @@ set_agg_loss(0, updating_health = FALSE, forced = TRUE) // DARKPACK EDIT ADD END - // I don't really care to keep this under a flag - set_nutrition(NUTRITION_LEVEL_FED + 50) - overeatduration = 0 - satiety = 0 + // Only aheals really do this right now, so this flag should be fine for the time being + if(heal_flags & HEAL_ADMIN) + set_nutrition(NUTRITION_LEVEL_FED + 50) + overeatduration = 0 + satiety = 0 // These should be tracked by status effects losebreath = 0 @@ -1187,10 +1184,19 @@ /mob/living/resist_grab(moving_resist) . = TRUE - //Our effective grab state. GRAB_PASSIVE is equal to 0, so if we have no other altering factors to our grab state, we can break free immediately on resist. - var/effective_grab_state = pulledby.grab_state - //The amount of damage inflicted on a failed resist attempt. - var/damage_on_resist_fail = rand(7, 13) + var/list/grab_stats = list( + // Our effective grab state. + // GRAB_PASSIVE is equal to 0, so if we have no other altering factors to our grab state, we can break free immediately on resist. + pulledby.grab_state, + /// The amount of damage inflicted on a failed resist attempt. + rand(7, 13), + // Base chance to escape a grab. Divided by effective grab state. + BASE_GRAB_RESIST_CHANCE, + ) + SEND_SIGNAL(pulledby, COMSIG_MOVABLE_GRABBED_RESISTING, src, grab_stats) + + var/effective_grab_state = grab_stats[GRAB_STAT_EFFECTIVE_STATE] + var/damage_on_resist_fail = grab_stats[GRAB_STAT_FAIL_DAMAGE] if(body_position == LYING_DOWN) //If prone, treat the grab state as one higher effective_grab_state++ @@ -1204,25 +1210,14 @@ if(HAS_TRAIT(src, TRAIT_GRABRESISTANCE)) //If we have grab resistance from some source, treat the grab state as one lower. effective_grab_state-- - //If our puller is a human, and they have an active hand they're grabbing with (please don't ask how people grab without hands), then apply their unarmed values to the grab values - if(pulledby && ishuman(pulledby)) + // If our puller is a human, and they have an active hand they're grabbing with (please don't ask how people grab without hands), then apply their unarmed values to the grab values + if(ishuman(pulledby)) var/mob/living/carbon/human/human_puller = pulledby var/obj/item/bodypart/grabbing_bodypart = human_puller.get_active_hand() if(grabbing_bodypart) damage_on_resist_fail += (rand(grabbing_bodypart.unarmed_damage_low, grabbing_bodypart.unarmed_damage_high)) + grabbing_bodypart.unarmed_grab_damage_bonus effective_grab_state += grabbing_bodypart.unarmed_grab_state_bonus - //If our puller is a drunken brawler, they add more damage based on their own damage taken so long as they're drunk and treat the grab state as one higher - var/puller_drunkenness = human_puller.get_drunk_amount() - if(puller_drunkenness && HAS_TRAIT(human_puller, TRAIT_DRUNKEN_BRAWLER)) - damage_on_resist_fail += clamp((human_puller.get_fire_loss() + human_puller.get_brute_loss()) / 10, 3, 20) - effective_grab_state++ - - var/datum/martial_art/puller_art = GET_ACTIVE_MARTIAL_ART(human_puller) - if(puller_art?.can_use(human_puller)) - damage_on_resist_fail += puller_art.grab_damage_modifier - effective_grab_state += puller_art.grab_state_modifier - //We only resist our grab state if we are currently in a grab equal to or greater than GRAB_AGGRESSIVE (1). Otherwise, break out immediately! if(effective_grab_state >= GRAB_AGGRESSIVE) // Grabber is the "action taker" so he is the "owner" @@ -2024,14 +2019,11 @@ GLOBAL_LIST_EMPTY(fire_appearances) ..() update_z(new_turf?.z) -/mob/living/mouse_drop_receive(atom/dropping, atom/user, params) - var/mob/living/U = user - if(isliving(dropping)) - var/mob/living/M = dropping - if(M.can_be_held && U.pulling == M) - M.mob_try_pickup(U)//blame kevinz - return//dont open the mobs inventory if you are picking them up - return ..() +/mob/living/proc/set_name() + if(identifier == 0) + identifier = rand(1, 999) + name = "[name] ([identifier])" + real_name = name /mob/living/proc/mob_pickup(mob/living/user) var/obj/item/mob_holder/holder = new inhand_holder_type(get_turf(src), src, held_state, head_icon, held_lh, held_rh, worn_slot_flags) @@ -2039,12 +2031,6 @@ GLOBAL_LIST_EMPTY(fire_appearances) user.visible_message(span_warning("[user] scoops up [src]!")) user.put_in_hands(holder) -/mob/living/proc/set_name() - if(identifier == 0) - identifier = rand(1, 999) - name = "[name] ([identifier])" - real_name = name - /mob/living/proc/mob_try_pickup(mob/living/user, instant=FALSE) if(!ishuman(user) && (user.mob_size <= mob_size || user.num_hands == 0)) if (!user.num_hands) @@ -2629,6 +2615,12 @@ GLOBAL_LIST_EMPTY(fire_appearances) else if(!(movement_type & (FLYING | FLOATING)) && !usable_hands && !usable_legs) //Lost a hand, not flying, no hands left, no legs. ADD_TRAIT(src, TRAIT_IMMOBILIZED, LACKING_LOCOMOTION_APPENDAGES_TRAIT) +/mob/living/perform_hand_swap(held_index) + //safeguard for one-handed mobs lol + if(num_hands == 1) + held_index = 1 + + return ..() /// Whether or not this mob will escape from storages while being picked up/held. /mob/living/proc/will_escape_storage() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 80857085bef0..53c3b83c1b12 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -823,6 +823,9 @@ span_userdanger("You[knocked_down ? "'re knocked down" : " resist falling down"] from a shove by [name]!"), span_hear("You hear aggressive shuffling [knocked_down ? "followed by a loud thud!" : ""]"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You shove [target.name][knocked_down ? ", knocking [target.p_them()] down" : ""]!")) log_combat(src, target, "shoved", "[knocked_down ? "knocking them down[weapon ? " with [weapon]" : ""]" : ""]") + if(ishuman(target)) + var/mob/living/carbon/human/human_target = target + human_target.force_say() return if(shove_flags & SHOVE_CAN_KICK_SIDE) //KICK HIM IN THE NUTS diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 69edd7a3728b..f5e93fd5aa61 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -111,8 +111,6 @@ var/mob_size = MOB_SIZE_HUMAN /// List of biotypes the mob belongs to. Used by diseases and reagents mainly. var/mob_biotypes = MOB_ORGANIC - /// The type of respiration the mob is capable of doing. Used by adjust_oxy_loss. - var/mob_respiration_type = RESPIRATION_OXYGEN ///more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. var/metabolism_efficiency = 1 ///does the mob have distinct limbs?(arms,legs, chest,head) @@ -180,8 +178,6 @@ ///used for database logging var/last_words - ///whether this can be picked up and held. - var/can_be_held = FALSE /// The w_class of the holder when held. var/held_w_class = WEIGHT_CLASS_NORMAL ///if it can be held, can it be equipped to any slots? (think pAI's on head) diff --git a/code/modules/mob/living/living_item_handling.dm b/code/modules/mob/living/living_item_handling.dm index 24b3e2692d16..7036f6bd65cc 100644 --- a/code/modules/mob/living/living_item_handling.dm +++ b/code/modules/mob/living/living_item_handling.dm @@ -127,7 +127,7 @@ * Arguments: * * offered - The player being offered the item (optional, if null the offer is to everyone around) */ -/mob/living/proc/give(mob/living/offered) +/mob/living/proc/give(mob/living/offered, obj/item/item_bypass) if(has_status_effect(/datum/status_effect/offering)) to_chat(src, span_warning("You're already offering something!")) return @@ -136,9 +136,9 @@ to_chat(src, span_warning("You're unable to offer anything in your current state!")) return - var/obj/item/offered_item = get_active_held_item() + var/obj/item/offered_item = item_bypass ? item_bypass : get_active_held_item() // if it's an abstract item, should consider it to be non-existent (unless it's a HAND_ITEM, which means it's an obj/item that is just a representation of our hand) - if(!offered_item || ((offered_item.item_flags & ABSTRACT) && !(offered_item.item_flags & HAND_ITEM))) + if(!offered_item || ((offered_item.item_flags & ABSTRACT && !HAS_TRAIT(offered_item, TRAIT_BORG_GIVE)) && !HAS_TRAIT(offered_item, TRAIT_OFFERED_WHEN_PULLED) && !(offered_item.item_flags & HAND_ITEM))) to_chat(src, span_warning("You're not holding anything to offer!")) return @@ -187,7 +187,7 @@ * * offerer - The living mob giving the original item * * offered_item - The item being given by the offerer */ -/mob/living/proc/take(mob/living/offerer, obj/item/offered_item) +/mob/living/proc/take(mob/living/offerer, obj/item/offered_item, bypass) clear_alert("[offerer]") if(IS_DEAD_OR_INCAP(src)) to_chat(src, span_warning("You're unable to take anything in your current state!")) @@ -195,7 +195,7 @@ if(get_dist(src, offerer) > 1) to_chat(src, span_warning("[offerer] is out of range!")) return - if(!offered_item || offerer.get_active_held_item() != offered_item) + if(!offered_item || offerer.get_active_held_item() != offered_item && !bypass) to_chat(src, span_warning("[offerer] is no longer holding the item they were offering!")) return if(!get_empty_held_indexes()) diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index d2bda6c96fbb..f56773199848 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -240,6 +240,23 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( //Get which verb is prefixed to the message before radio but after most modifications message_mods[SAY_MOD_VERB] = say_mod(message, message_mods) + var/identifier = "invalid" + var/tts_message_to_use = tts_message || message + + + if(SStts.tts_enabled && voice && !message_mods[MODE_CUSTOM_SAY_ERASE_INPUT] && !HAS_TRAIT(src, TRAIT_SIGN_LANG) && !HAS_TRAIT(src, TRAIT_UNKNOWN_VOICE)) + var/list/filter = list() + var/list/special_filter = list() + if(length(voice_filter) > 0) + filter += voice_filter + + if(length(tts_filter) > 0) + filter += tts_filter.Join(",") + + var/shell_scrubbed_input = tts_speech_filter(html_decode(tts_message_to_use)) + identifier = "[sha1(get_tts_voice(filter, special_filter) + filter.Join(",") + num2text(pitch) + special_filter.Join("|") + shell_scrubbed_input + blip_base + num2text(blip_number))].[world.time]" + message_mods[MODE_TTS_IDENTIFIER] = identifier + //This is before anything that sends say a radio message, and after all important message type modifications, so you can scumb in alien chat or something if(saymode && (saymode.handle_message(src, message, spans, language, message_mods) & SAYMODE_MESSAGE_HANDLED)) return @@ -369,8 +386,12 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( message = deaf_message - var/show_message_success = show_message(message, MSG_VISUAL, deaf_message, deaf_type, avoid_highlight) - return understood && show_message_success + var/hearflags = NONE + if(show_message(message, MSG_VISUAL, deaf_message, deaf_type, avoid_highlight)) + hearflags |= HEAR_HEARD + if(understood) + hearflags |= HEAR_UNDERSTOOD + return hearflags if(speaker != src) if(!radio_freq) //These checks have to be separate, else people talking on the radio will make "You can't hear yourself!" appear when hearing people over the radio while deaf. @@ -389,8 +410,13 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( // Recompose message for AI hrefs, language incomprehension. message = compose_message(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods, source = source) // DARKPACK EDIT CHANGE - ORIGINAL: message = compose_message(speaker, message_language, raw_message, radio_freq, radio_freq_name, radio_freq_color, spans, message_mods) - var/show_message_success = show_message(message, MSG_AUDIBLE, deaf_message, deaf_type, avoid_highlight) - return understood && show_message_success + + var/hearflags = NONE + if(show_message(message, MSG_AUDIBLE, deaf_message, deaf_type, avoid_highlight)) + hearflags |= HEAR_HEARD + if(understood) + hearflags |= HEAR_UNDERSTOOD + return hearflags /mob/living/send_speech(message_raw, message_range = 6, obj/source = src, bubble_type = bubble_icon, list/spans, datum/language/message_language = null, list/message_mods = list(), forced = null, tts_message, list/tts_filter) var/whisper_range = 0 @@ -427,44 +453,27 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( continue listening |= player_mob + var/tts_message_to_use = tts_message || message_raw + // this signal ignores whispers or language translations (only used by beetlejuice component) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_LIVING_SAY_SPECIAL, src, message_raw) - var/list/listened = list() for(var/atom/movable/listening_movable as anything in listening) if(!listening_movable) stack_trace("somehow theres a null returned from get_hearers_in_view() in send_speech!") continue - if(listening_movable.Hear(src, message_language, message_raw, null, null, null, spans, message_mods, message_range)) + if(listening_movable.Hear(src, message_language, message_raw, null, null, null, spans, message_mods, message_range) & HEAR_HEARD) listened += listening_movable //speech bubble var/list/speech_bubble_recipients = list() - var/found_client = FALSE var/talk_icon_state = say_test(message_raw) for(var/mob/M in listening) if(M.client) if(!M.client.prefs.read_preference(/datum/preference/toggle/enable_runechat) || (SSlag_switch.measures[DISABLE_RUNECHAT] && !HAS_TRAIT(src, TRAIT_BYPASS_MEASURES))) speech_bubble_recipients.Add(M.client) - found_client = TRUE - if(SStts.tts_enabled && voice && found_client && !message_mods[MODE_CUSTOM_SAY_ERASE_INPUT] && !HAS_TRAIT(src, TRAIT_SIGN_LANG) && !HAS_TRAIT(src, TRAIT_UNKNOWN_VOICE)) - var/tts_message_to_use = tts_message - if(!tts_message_to_use) - tts_message_to_use = message_raw - - var/list/filter = list() - var/list/special_filter = list() - if(length(voice_filter) > 0) - filter += voice_filter - - if(length(tts_filter) > 0) - filter += tts_filter.Join(",") - - var/voice_to_use = get_tts_voice(filter, special_filter) - if (!CONFIG_GET(flag/tts_no_whisper) || (CONFIG_GET(flag/tts_no_whisper) && !message_mods[WHISPER_MODE])) - INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), src, html_decode(tts_message_to_use), message_language, voice_to_use, filter.Join(","), listened, message_range = message_range, pitch = pitch, special_filters = special_filter.Join("|")) - + do_tts_message(tts_message_to_use, message_language, message_mods, tts_filter, listened) var/image/say_popup = image('icons/mob/effects/talk.dmi', src, "[bubble_type][talk_icon_state]", FLY_LAYER) SET_PLANE_EXPLICIT(say_popup, ABOVE_GAME_PLANE, src) say_popup.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA @@ -472,7 +481,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( LAZYADD(update_on_z, say_popup) addtimer(CALLBACK(src, PROC_REF(clear_saypopup), say_popup), 3.5 SECONDS) -/mob/living/proc/get_tts_voice(list/filter, list/special_filter) +/mob/living/get_tts_voice(list/filter, list/special_filter) . = voice var/obj/item/clothing/mask/mask = get_item_by_slot(ITEM_SLOT_MASK) if(!istype(mask) || mask.up) @@ -524,19 +533,6 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( message = capitalize(message) tts_message = capitalize(tts_message) - ///caps the length of individual letters to 3: ex: heeeeeeyy -> heeeyy - /// prevents TTS from choking on unrealistic text while keeping emphasis - var/static/regex/length_regex = regex(@"(.+)\1\1\1", "gi") - while(length_regex.Find(tts_message)) - var/replacement = tts_message[length_regex.index]+tts_message[length_regex.index]+tts_message[length_regex.index] - tts_message = replacetext(tts_message, length_regex.match, replacement, length_regex.index) - - // removes repeated consonants at the start of a word: ex: sss - var/static/regex/word_start_regex = regex(@"\b([^aeiou\L])\1", "gi") - while(word_start_regex.Find(tts_message)) - var/replacement = tts_message[word_start_regex.index] - tts_message = replacetext(tts_message, word_start_regex.match, replacement, word_start_regex.index) - return list("message" = message, "tts_message" = tts_message, "tts_filter" = tts_filter) /mob/living/proc/radio(message, list/message_mods = list(), list/spans, language) diff --git a/code/modules/mob/living/living_update_icons.dm b/code/modules/mob/living/living_update_icons.dm index e11457a49a23..8850129e9486 100644 --- a/code/modules/mob/living/living_update_icons.dm +++ b/code/modules/mob/living/living_update_icons.dm @@ -60,14 +60,17 @@ var/is_opposite_angle = REVERSE_ANGLE(lying_angle) == lying_prev var/animate_time = is_opposite_angle ? 0 : UPDATE_TRANSFORM_ANIMATION_TIME animate(src, transform = ntransform, time = animate_time, dir = final_dir, easing = SINE_EASING) + readjust_atom_huds(animate_time) + + SEND_SIGNAL(src, COMSIG_LIVING_POST_UPDATE_TRANSFORM, resize, lying_angle, is_opposite_angle) + return TRUE + +/mob/living/proc/readjust_atom_huds(animate_time = null) for (var/hud_key in hud_list) var/image/hud_image = hud_list[hud_key] if (istype(hud_image)) adjust_hud_position(hud_image, animate_time = animate_time) - SEND_SIGNAL(src, COMSIG_LIVING_POST_UPDATE_TRANSFORM, resize, lying_angle, is_opposite_angle) - return TRUE - /// Calculates how far vertically the mob's transform should translate according to its size (1 being "default") /mob/living/proc/get_transform_translation_size(value) return (value - 1) * 16 diff --git a/code/modules/mob/living/navigation.dm b/code/modules/mob/living/navigation.dm index c63b4594b65f..7d0ef67d107a 100644 --- a/code/modules/mob/living/navigation.dm +++ b/code/modules/mob/living/navigation.dm @@ -8,9 +8,7 @@ /// Images of the path created by navigate(). var/list/navigation_images = list() -/mob/living/verb/navigate() - set name = "Navigate" - set hidden = TRUE +GAME_VERB_HIDDEN(/mob/living, navigate, "Navigate") if(incapacitated) return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index aa960b3444a4..8752023b0403 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -2,7 +2,7 @@ #define CHARACTER_TYPE_SELF "My Character" #define CHARACTER_TYPE_CREWMEMBER "Station Member" -/mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) +/mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai, latejoining = FALSE) . = ..() if(!target_ai) //If there is no player/brain inside. new/obj/structure/ai_core(loc, CORE_STATE_FINISHED) //New empty terminal. @@ -23,7 +23,7 @@ create_eye() - if((target_ai.mind && target_ai.mind.active) || SSticker.current_state == GAME_STATE_SETTING_UP) + if((target_ai.mind && target_ai.mind.active) || SSticker.current_state == GAME_STATE_SETTING_UP || latejoining) target_ai.mind.transfer_to(src) if(is_antag()) to_chat(src, span_userdanger("You have been installed as an AI! ")) @@ -60,7 +60,7 @@ spark_system = new /datum/effect_system/basic/spark_spread(src, 5, FALSE) spark_system.attach(src) - add_verb(src, /mob/living/silicon/ai/proc/show_laws_verb) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, show_laws_verb) aiMulti = new(src) aicamera = new/obj/item/camera/siliconcam/ai_camera(src) @@ -68,13 +68,11 @@ deploy_action.Grant(src) if(isturf(loc)) - add_verb(src, list( - /mob/living/silicon/ai/proc/ai_network_change, - /mob/living/silicon/ai/proc/ai_hologram_change, - /mob/living/silicon/ai/proc/botcall, - /mob/living/silicon/ai/proc/control_integrated_radio, - /mob/living/silicon/ai/proc/set_automatic_say_channel, - )) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, ai_network_change) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, ai_hologram_change) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, botcall) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, control_integrated_radio) + ASSIGN_GAME_VERB(src, /mob/living/silicon/ai, set_automatic_say_channel) GLOB.ai_list += src GLOB.shuttle_caller_list += src @@ -93,6 +91,7 @@ RegisterSignal(alert_control.listener, COMSIG_ALARM_LISTENER_CLEARED, PROC_REF(alarm_cleared)) ai_tracking_tool = new(src) + RegisterSignal(ai_tracking_tool, COMSIG_TRACKABLE_TRACKING_STARTED, PROC_REF(on_track_started)) RegisterSignal(ai_tracking_tool, COMSIG_TRACKABLE_TRACKING_TARGET, PROC_REF(on_track_target)) RegisterSignal(ai_tracking_tool, COMSIG_TRACKABLE_GLIDE_CHANGED, PROC_REF(tracked_glidesize_changed)) @@ -224,10 +223,7 @@ ai_display.emotion = emote ai_display.update() -/mob/living/silicon/ai/verb/pick_icon() - set category = "AI Commands" - set name = "Set AI Core Display" - set desc = "Choose what appears on your AI core display" +GAME_VERB_DESC(/mob/living/silicon/ai, pick_icon, "Set AI Core Display", "Choose what appears on your AI core display", "AI Commands") if(incapacitated) to_chat(src, span_warning("You cannot access the core display controls in your current state.")) @@ -241,10 +237,7 @@ var/obj/item/aicard/card = loc card.update_appearance() -/mob/living/silicon/ai/verb/pick_status_display() - set category = "AI Commands" - set name = "Set AI Status Display" - set desc = "Choose what appears on status displays around the station" +GAME_VERB_DESC(/mob/living/silicon/ai, pick_status_display, "Set AI Status Display", "Choose what appears on status displays around the station", "AI Commands") if(incapacitated) to_chat(src, span_warning("You cannot access the status display controls in your current state.")) @@ -335,12 +328,16 @@ /mob/living/silicon/ai/cancel_camera() view_core() -/mob/living/silicon/ai/verb/ai_camera_track() - set name = "track" - set hidden = TRUE //Don't display it on the verb lists. This verb exists purely so you can type "track Oldman Robustin" and follow his ass +GAME_VERB_HIDDEN(/mob/living/silicon/ai, ai_camera_track, "track") //Don't display it on the verb lists. This verb exists purely so you can type "track Oldman Robustin" and follow his ass ai_tracking_tool.track_input(src) +///Called when an AI starts tracking a new target, before the eye moves. Saves the return point for the "last camera" hotkey. +/mob/living/silicon/ai/proc/on_track_started(datum/trackable/source, mob/living/target) + SIGNAL_HANDLER + if(eyeobj) + cam_prev = get_turf(eyeobj) + ///Called when an AI finds their tracking target. /mob/living/silicon/ai/proc/on_track_target(datum/trackable/source, mob/living/target) SIGNAL_HANDLER @@ -355,9 +352,7 @@ if(eyeobj) eyeobj.glide_size = new_glide_size -/mob/living/silicon/ai/verb/toggle_anchor() - set category = "AI Commands" - set name = "Toggle Floor Bolts" +GAME_VERB(/mob/living/silicon/ai, toggle_anchor, "Toggle Floor Bolts", "AI Commands") if(!isturf(loc)) // if their location isn't a turf return // stop if(stat == DEAD) @@ -517,10 +512,7 @@ eyeobj.setLoc(get_turf(C)) return TRUE -/mob/living/silicon/ai/proc/botcall() - set category = "AI Commands" - set name = "Access Robot Control" - set desc = "Wirelessly control various automatic robots." +GAME_VERB_PROC_DESC(/mob/living/silicon/ai, botcall, "Access Robot Control", "Wirelessly control various automatic robots.", "AI Commands") if(!robot_control) robot_control = new(src) @@ -541,13 +533,8 @@ var/mob/living/bot = bot_ref?.resolve() if(!bot) return - var/summon_success - if(isbasicbot(bot)) - var/mob/living/basic/bot/basic_bot = bot - summon_success = basic_bot.summon_bot(src, waypoint, grant_all_access = TRUE) - else - var/mob/living/simple_animal/bot/simple_bot = bot - summon_success = simple_bot.call_bot(src, waypoint) + var/mob/living/basic/bot/basic_bot = bot + var/summon_success = basic_bot.summon_bot(src, waypoint, grant_all_access = TRUE) var/chat_message = summon_success ? "Sending command to bot..." : "Interface error. Unit is already in use." to_chat(src, span_notice("[chat_message]")) @@ -579,9 +566,7 @@ //Replaces /mob/living/silicon/ai/verb/change_network() in ai.dm & camera.dm //Adds in /mob/living/silicon/ai/proc/ai_network_change() instead //Addition by Mord_Sith to define AI's network change ability -/mob/living/silicon/ai/proc/ai_network_change() - set category = "AI Commands" - set name = "Jump To Network" +GAME_VERB_PROC(/mob/living/silicon/ai, ai_network_change, "Jump To Network", "AI Commands") ai_tracking_tool.reset_tracking() var/cameralist[0] @@ -622,10 +607,7 @@ //End of code by Mord_Sith //I am the icon meister. Bow fefore me. //>fefore -/mob/living/silicon/ai/proc/ai_hologram_change() - set name = "Change Hologram" - set desc = "Change the default hologram available to AI to something else." - set category = "AI Commands" +GAME_VERB_PROC_DESC(/mob/living/silicon/ai, ai_hologram_change, "Change Hologram", "Change the default hologram available to AI to something else.", "AI Commands") if(incapacitated) return @@ -769,10 +751,7 @@ C.Togglelight(1) lit_cameras |= C -/mob/living/silicon/ai/proc/control_integrated_radio() - set name = "Transceiver Settings" - set desc = "Allows you to change settings of your radio." - set category = "AI Commands" +GAME_VERB_PROC_DESC(/mob/living/silicon/ai, control_integrated_radio, "Transceiver Settings", "Allows you to change settings of your radio.", "AI Commands") if(incapacitated) return @@ -785,10 +764,7 @@ if(radio) radio.make_syndie() -/mob/living/silicon/ai/proc/set_automatic_say_channel() - set name = "Set Auto Announce Mode" - set desc = "Modify the default radio setting for your automatic announcements." - set category = "AI Commands" +GAME_VERB_PROC_DESC(/mob/living/silicon/ai, set_automatic_say_channel, "Set Auto Announce Mode", "Modify the default radio setting for your automatic announcements.", "AI Commands") if(incapacitated) return @@ -900,9 +876,8 @@ to_chat(src, "You are also capable of hacking APCs, which grants you more points to spend on your Malfunction powers. The drawback is that a hacked APC will give you away if spotted by the crew. Hacking an APC takes 60 seconds.") view_core() //A BYOND bug requires you to be viewing your core before your verbs update malf_picker = new /datum/module_picker - if(!IS_MALF_AI(src)) //antagonists have their modules built into their antag info panel. this is for adminbus and the combat upgrade - modules_action = new(malf_picker) - modules_action.Grant(src) + modules_action = new(malf_picker) + modules_action.Grant(src) /mob/living/silicon/ai/reset_perspective(atom/new_eye) SHOULD_CALL_PARENT(FALSE) // I hate you all @@ -987,10 +962,7 @@ playsound(get_turf(src), 'sound/machines/ding.ogg', 50, TRUE, ignore_walls = FALSE) to_chat(src, "Hack complete. [apc] is now under your exclusive control.") -/mob/living/silicon/ai/verb/deploy_to_shell() - set category = "AI Commands" - set desc = "Transfer to an available remote body." - set name = "Deploy to Shell" +GAME_VERB_DESC(/mob/living/silicon/ai, deploy_to_shell, "Deploy to Shell", "Transfer to an available remote body.", "AI Commands") select_shell() @@ -1285,6 +1257,31 @@ . += emissive_appearance(icon, lights_state, src) +/mob/living/silicon/ai/point_at(atom/pointed_atom, intentional = FALSE) + if(pointed_atom in src) + return FALSE + var/turf/target_turf = get_turf(pointed_atom) + if(!target_turf) + return FALSE + var/obj/machinery/holopad/best_pad + for(var/obj/machinery/holopad/pad as anything in SSmachines.get_machines_by_type(/obj/machinery/holopad)) + if(!pad.on_network || !pad.is_operational || pad.pointing) + continue + if(!pad.validate_location(target_turf)) + continue + var/turf/pad_turf = get_turf(pad) + if(!SScameras.is_visible_by_cameras(pad_turf)) + continue + if(!best_pad || get_dist(pad_turf, target_turf) < get_dist(get_turf(best_pad), target_turf)) + best_pad = pad + if(!best_pad) + return FALSE + var/obj/visual = best_pad.holo_point(pointed_atom, invisibility) + if(!visual) + return FALSE + SEND_SIGNAL(src, COMSIG_MOVABLE_POINTED, pointed_atom, visual, intentional) + return TRUE + #undef HOLOGRAM_CHOICE_CHARACTER #undef CHARACTER_TYPE_SELF #undef CHARACTER_TYPE_CREWMEMBER diff --git a/code/modules/mob/living/silicon/ai/ai_say.dm b/code/modules/mob/living/silicon/ai/ai_say.dm index 88abc47ab378..a2864ca7cd4c 100644 --- a/code/modules/mob/living/silicon/ai/ai_say.dm +++ b/code/modules/mob/living/silicon/ai/ai_say.dm @@ -30,14 +30,17 @@ return FALSE . = ..() if(.) + do_tts_message(message, language, message_mods, list(), list()) return . if(message_mods[MODE_HEADSET]) if(radio) radio.talk_into(src, message, , spans, language, message_mods) + do_tts_message(message, language, message_mods, list(), list()) return NOPASS else if(message_mods[RADIO_EXTENSION] in GLOB.default_radio_channels) if(radio) radio.talk_into(src, message, message_mods[RADIO_EXTENSION], spans, language, message_mods) + do_tts_message(message, language, message_mods, list(), list()) return NOPASS return FALSE @@ -65,11 +68,7 @@ // Make sure that the code compiles with AI_VOX undefined #ifdef AI_VOX #define VOX_DELAY 600 -/mob/living/silicon/ai/verb/announcement_help() - - set name = "Announcement Help" - set desc = "Display a list of vocal words to announce to the crew." - set category = "AI Commands" +GAME_VERB_DESC(/mob/living/silicon/ai, announcement_help, "Announcement Help", "Display a list of vocal words to announce to the crew.", "AI Commands") if(incapacitated) return diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 3068b3342c1e..772a87eef689 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -75,7 +75,7 @@ // Camera updates will never be second guessed. // Track the number of times the camera has queued an update instead of opacity (just for fun) if(istype(update_source, /obj/machinery/camera)) - update_sources[update_source] += 1 + update_sources[update_key] += 1 // Otherwise track this atom's opacity at time of queue else if(isnull(update_sources[update_key])) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 8e245b45d7c1..ccfd406449b3 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -211,9 +211,7 @@ else eyeobj.RemoveInvisibility(type) -/mob/living/silicon/ai/verb/toggle_acceleration() - set category = "AI Commands" - set name = "Toggle Camera Acceleration" +GAME_VERB(/mob/living/silicon/ai, toggle_acceleration, "Toggle Camera Acceleration", "AI Commands") if(incapacitated) return diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index 2d21fd260dc9..97d855d6bb9a 100644 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -1,9 +1,5 @@ -/mob/living/silicon/ai/proc/show_laws_verb() - set category = "AI Commands" - set name = "Show Laws" - set desc = "Check what your laws are privately. \ - Also ensures all synced cyborgs are up to date with your laws, reminds them of your laws." +GAME_VERB_PROC_DESC(/mob/living/silicon/ai, show_laws_verb, "Show Laws", "Check what your laws are privately. Also ensures all synced cyborgs are up to date with your laws, reminds them of your laws.", "AI Commands") if(usr.stat == DEAD) return //won't work if dead src.show_laws() diff --git a/code/modules/mob/living/silicon/ai/robot_control.dm b/code/modules/mob/living/silicon/ai/robot_control.dm index 94c99369b6c8..1884804afe4e 100644 --- a/code/modules/mob/living/silicon/ai/robot_control.dm +++ b/code/modules/mob/living/silicon/ai/robot_control.dm @@ -35,37 +35,22 @@ var/turf/ai_current_turf = get_turf(owner) data["robots"] = list() - for(var/mob/living/our_bot as anything in GLOB.bots_list) + for(var/mob/living/basic/bot/our_bot as anything in GLOB.bots_list) if(!isbot(our_bot) || !is_valid_z_level(ai_current_turf, get_turf(our_bot))) continue - if(isbasicbot(our_bot)) - var/mob/living/basic/bot/basic_bot = our_bot - if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) - continue - var/list/basic_bot_data = list( - name = basic_bot.name, - model = basic_bot.bot_type, - mode = basic_bot.mode, - hacked = !!(basic_bot.bot_access_flags & BOT_COVER_HACKED), - location = get_area_name(basic_bot, TRUE), - ref = REF(basic_bot), - ) - data["robots"] += list(basic_bot_data) - continue - - var/mob/living/simple_animal/bot/simple_bot = our_bot - if(!(simple_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) + var/mob/living/basic/bot/basic_bot = our_bot + if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) continue - var/list/simple_bot_data = list( - name = simple_bot.name, - model = simple_bot.bot_type, - mode = simple_bot.get_mode(), - hacked = !!(simple_bot.bot_cover_flags & BOT_COVER_HACKED), - location = get_area_name(simple_bot, TRUE), - ref = REF(simple_bot), + var/list/basic_bot_data = list( + name = basic_bot.name, + model = basic_bot.bot_type, + mode = basic_bot.mode, + hacked = !!(basic_bot.bot_access_flags & BOT_COVER_HACKED), + location = get_area_name(basic_bot, TRUE), + ref = REF(basic_bot), ) - data["robots"] += list(simple_bot_data) + data["robots"] += list(basic_bot_data) return data @@ -84,28 +69,19 @@ switch(action) if("callbot") //Command a bot to move to a selected location. - if(isbasicbot(bot)) - var/mob/living/basic/bot/basic_bot = bot - if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) - return - else - var/mob/living/simple_animal/bot/simple_bot = bot - if(!(simple_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) - return + var/mob/living/basic/bot/basic_bot = bot + if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) + return owner.bot_ref = WEAKREF(bot) owner.setting_waypoint = TRUE to_chat(our_user, span_notice("Set your waypoint by clicking on a valid location free of obstructions.")) if("interface") //Remotely connect to a bot! owner.bot_ref = WEAKREF(bot) - if(isbasicbot(bot)) - var/mob/living/basic/bot/basic_bot = bot - if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) - return - else - var/mob/living/basic/bot/simple_bot = bot - if(!(simple_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) - return + var/mob/living/basic/bot/basic_bot = bot + if(!(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) + return + bot.attack_ai(our_user) return TRUE diff --git a/code/modules/mob/living/silicon/damage_procs.dm b/code/modules/mob/living/silicon/damage_procs.dm index d2608e89427e..83012e32f3d4 100644 --- a/code/modules/mob/living/silicon/damage_procs.dm +++ b/code/modules/mob/living/silicon/damage_procs.dm @@ -22,7 +22,7 @@ /mob/living/silicon/set_organ_loss(slot, amount) return FALSE -/mob/living/silicon/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype, required_respiration_type) //immune to oxygen damage +/mob/living/silicon/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype) //immune to oxygen damage if(isAI(src)) //ais are snowflakes and use oxyloss for being in AI cards and having no battery return ..() diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index e5e3e6f867d2..a2d30cdac46a 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -257,7 +257,6 @@ if(module && module_active != held_items[module_num]) module.icon_state = "[module.base_icon_state] +a" module_active = held_items[module_num] - SEND_SIGNAL(module_active, COMSIG_SILICON_MODULE_ACTIVATION, TRUE) return TRUE /** @@ -269,8 +268,6 @@ var/atom/movable/screen/robot/module_slot/module = hud_used?.screen_objects[HUD_KEY_HAND_SLOT(module_num)] if(module) module.icon_state = module.base_icon_state - if(module_active) - SEND_SIGNAL(module_active, COMSIG_SILICON_MODULE_ACTIVATION, FALSE) module_active = null return TRUE diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm index c4cf75317d9b..267c01db5fde 100644 --- a/code/modules/mob/living/silicon/robot/robot_defines.dm +++ b/code/modules/mob/living/silicon/robot/robot_defines.dm @@ -13,7 +13,6 @@ health = 100 bubble_icon = "robot" designation = "Default" //used for displaying the prefix & getting the current model of cyborg - has_limbs = TRUE hud_type = /datum/hud/robot unique_name = TRUE mouse_drop_zone = TRUE diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index af9b1e6d49fa..4b2a7174fb4f 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -389,6 +389,7 @@ /obj/item/construction/rcd/borg, /obj/item/pipe_dispenser, /obj/item/extinguisher, + /obj/item/weldingtool/largetank/cyborg, /obj/item/borg/cyborg_omnitool/engineering, /obj/item/borg/cyborg_omnitool/engineering, /obj/item/t_scanner, @@ -412,6 +413,7 @@ model_select_icon = "engineer" model_traits = list(TRAIT_NEGATES_GRAVITY) hat_offset = list("north" = list(0, -4), "south" = list(0, -4), "east" = list(4, -4), "west" = list(-4, -4)) + ///Weakref to the night vision action var/datum/weakref/night_vision_ref /datum/action/cooldown/borg_meson @@ -428,10 +430,12 @@ borg.update_sight() /obj/item/robot_model/engineering/be_transformed_to(obj/item/robot_model/old_model, forced = FALSE) - var/datum/action/cooldown/borg_meson/night_vision = new(loc) . = ..() if(!.) return + + //Grant night vision action + var/datum/action/cooldown/borg_meson/night_vision = new(loc) night_vision.Grant(loc) night_vision_ref = WEAKREF(night_vision) @@ -443,6 +447,7 @@ name = "Janitor" basic_modules = list( /obj/item/assembly/flash/cyborg, + /obj/item/borg/cleaner_box, /obj/item/screwdriver/cyborg, /obj/item/crowbar/cyborg, /obj/item/stack/tile/iron/base/cyborg, // haha jani will have old tiles >:D @@ -920,6 +925,9 @@ ..() var/mob/living/silicon/robot/cyborg = loc cyborg.remove_faction(FACTION_SILICON) //ai turrets + add_minimap_blip(cyborg, MINIMAP_NUKEOP_BORG_BLIP, "combatborg") + var/datum/action/minimap/nuclear/tacmap_action = new + tacmap_action.Grant(cyborg) /obj/item/robot_model/syndicate/remove_module(obj/item/removed_module) ..() @@ -952,6 +960,13 @@ model_traits = list(TRAIT_PUSHIMMUNE) hat_offset = list("north" = list(0, 3), "south" = list(0, 3), "east" = list(-1, 3), "west" = list(1, 3)) +/obj/item/robot_model/syndicate_medical/rebuild_modules() + ..() + var/mob/living/silicon/robot/cyborg = loc + add_minimap_blip(cyborg, MINIMAP_NUKEOP_BORG_BLIP, "mediborg") + var/datum/action/minimap/nuclear/tacmap_action = new + tacmap_action.Grant(cyborg) + /obj/item/robot_model/saboteur name = "Syndicate Saboteur" basic_modules = list( @@ -960,6 +975,7 @@ /obj/item/pipe_dispenser, /obj/item/restraints/handcuffs/cable/zipties, /obj/item/extinguisher, + /obj/item/weldingtool/largetank/cyborg, /obj/item/analyzer, /obj/item/borg/cyborg_omnitool/engineering, /obj/item/borg/cyborg_omnitool/engineering, @@ -982,6 +998,13 @@ canDispose = TRUE var/datum/weakref/thermal_vision_ref +/obj/item/robot_model/saboteur/rebuild_modules() + ..() + var/mob/living/silicon/robot/cyborg = loc + add_minimap_blip(cyborg, MINIMAP_NUKEOP_BORG_BLIP, "engiborg") + var/datum/action/minimap/nuclear/tacmap_action = new + tacmap_action.Grant(cyborg) + /datum/action/cooldown/borg_thermal name = "Toggle Thermal Night Vision" button_icon = 'icons/mob/actions/actions_mecha.dmi' diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm index b81d44983d61..e7160433f1aa 100644 --- a/code/modules/mob/living/silicon/silicon_say.dm +++ b/code/modules/mob/living/silicon/silicon_say.dm @@ -31,7 +31,6 @@ if(istype(brain)) namepart = brain.mainframe.name designation = brain.mainframe.job - for(var/mob/hearing_mob in GLOB.player_list) if(hearing_mob.binarycheck()) if(isAI(hearing_mob)) @@ -88,14 +87,16 @@ /mob/living/silicon/radio(message, list/message_mods = list(), list/spans, language) . = ..() if(.) + do_tts_message(message, language, message_mods, list(), list()) return if(message_mods[MODE_HEADSET]) if(radio) - radio.talk_into(src, message, , spans, language, message_mods) + radio.talk_into(src, message, null, spans, language, message_mods) + do_tts_message(message, language, message_mods, list(), list()) return NOPASS else if(message_mods[RADIO_EXTENSION] in GLOB.default_radio_channels) if(radio) radio.talk_into(src, message, message_mods[RADIO_EXTENSION], spans, language, message_mods) + do_tts_message(message, language, message_mods, list(), list()) return NOPASS - return FALSE diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm deleted file mode 100644 index 86f50e6246ad..000000000000 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ /dev/null @@ -1,1231 +0,0 @@ -// AI (i.e. game AI, not the AI player) controlled bots -/mob/living/simple_animal/bot - abstract_type = /mob/living/simple_animal/bot - icon = 'icons/mob/silicon/aibots.dmi' - layer = MOB_LAYER - gender = NEUTER - mob_biotypes = MOB_ROBOTIC - stop_automated_movement = TRUE - wander = FALSE - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, STAMINA = 0, OXY = 0) - atmos_requirements = null - unsuitable_atmos_damage = 0 - hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_PATH_HUD = HUD_LIST_LIST) - maxbodytemp = INFINITY - minbodytemp = 0 - sentience_type = SENTIENCE_ARTIFICIAL - status_flags = NONE //no default canpush - pass_flags = PASSFLAPS - verb_say = "states" - verb_ask = "queries" - verb_exclaim = "declares" - verb_yell = "alarms" - initial_language_holder = /datum/language_holder/synthetic - bubble_icon = "machine" - speech_span = SPAN_ROBOT - faction = list(FACTION_NEUTRAL, FACTION_SILICON, FACTION_TURRET) - light_system = OVERLAY_LIGHT - light_range = 3 - light_power = 0.6 - del_on_death = TRUE - req_one_access = list(ACCESS_ROBOTICS) - interaction_flags_click = ALLOW_SILICON_REACH - - ///Cooldown between salutations for commissioned bots - COOLDOWN_DECLARE(next_salute_check) - - ///The Robot arm attached to this robot - has a 50% chance to drop on death. - var/robot_arm = /obj/item/bodypart/arm/right/robot - ///The inserted (if any) pAI in this bot. - var/obj/item/pai_card/paicard - ///The type of bot it is, for radio control. - var/bot_type = NONE - - ///Additonal access given to player-controlled bots. - var/list/player_access = list() - ///All initial access this bot started with. - var/list/prev_access = list() - - ///Bot-related mode flags on the Bot indicating how they will act. BOT_MODE_ON | BOT_MODE_AUTOPATROL | BOT_MODE_REMOTE_ENABLED | BOT_MODE_CAN_BE_SAPIENT | BOT_MODE_ROUNDSTART_POSSESSION - var/bot_mode_flags = BOT_MODE_ON | BOT_MODE_REMOTE_ENABLED | BOT_MODE_CAN_BE_SAPIENT | BOT_MODE_ROUNDSTART_POSSESSION - - ///Bot-related cover flags on the Bot to deal with what has been done to their cover, including emagging. BOT_COVER_MAINTS_OPEN | BOT_COVER_LOCKED | BOT_COVER_EMAGGED | BOT_COVER_HACKED - var/bot_cover_flags = BOT_COVER_LOCKED - - ///Small name of what the bot gets messed with when getting hacked/emagged. - var/hackables = "system circuits" - ///Used by some bots for tracking failures to reach their target. - var/frustration = 0 - ///The speed at which the bot moves, or the number of times it moves per process() tick. - var/base_speed = 2 - ///The end point of a bot's path, or the target location. - var/turf/ai_waypoint - ///The bot is on a custom set path. - var/pathset = FALSE - ///List of turfs through which a bot 'steps' to reach the waypoint, associated with the path image, if there is one. - var/list/path = list() - ///List of unreachable targets for an ignore-list enabled bot to ignore. - var/list/ignore_list = list() - ///Standardizes the vars that indicate the bot is busy with its function. - var/mode = BOT_IDLE - ///Number of times the bot tried and failed to move. - var/tries = 0 - ///Links a bot to the AI calling it. - var/mob/living/silicon/ai/calling_ai - ///The bot's radio, for speaking to people. - var/obj/item/radio/internal_radio - ///which channels can the bot listen to - var/radio_key = null - ///The bot's default radio channel - var/radio_channel = RADIO_CHANNEL_COMMON - ///Turf a bot is summoned to navitage towards. - var/turf/patrol_target - ///Turf of a user summoning a bot towards their location. - var/turf/summon_target - ///Pending new destination (waiting for beacon response) - var/new_destination - ///Destination description tag - var/destination - ///The next destination in the patrol route - var/next_destination - - /// the nearest beacon's tag - var/nearest_beacon - ///The nearest beacon's location - var/turf/nearest_beacon_loc - - ///The type of data HUD the bot uses. Diagnostic by default. - var/data_hud_type = TRAIT_DIAGNOSTIC_HUD - var/datum/atom_hud/data/bot_path/private/path_hud - var/path_image_icon = 'icons/mob/silicon/aibots.dmi' - var/path_image_icon_state = "path_indicator" - var/path_image_color = COLOR_WHITE - var/reset_access_timer_id - var/ignorelistcleanuptimer = 1 // This ticks up every automated action, at 300 we clean the ignore list - - /// If true we will allow ghosts to control this mob - var/can_be_possessed = FALSE - /// If true we will offer this - COOLDOWN_DECLARE(offer_ghosts_cooldown) - /// Message to display upon possession - var/possessed_message = "You're a generic bot. How did one of these even get made?" - /// List of strings to sound effects corresponding to automated messages the bot can play - var/list/automated_announcements - /// Action we use to say voice lines out loud, also we just pass anything we try to say through here just in case it plays a voice line - var/datum/action/cooldown/bot_announcement/pa_system - // The faction of the bot before it inherited the pai's faction - var/list/original_faction - // The allies of the bot before it inherited the pai's faction - var/list/original_allies - - ///Innate access uses an internal ID card. - var/obj/item/card/id/access_card = null - -/mob/living/simple_animal/bot/proc/get_mode() - if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player. - return paicard ? "pAI Controlled" : "Autonomous" - if(!(bot_mode_flags & BOT_MODE_ON)) - return span_bad("Inactive") - return span_average("[mode]") - -/** - * Returns a status string about the bot's current status, if it's moving, manually controlled, or idle. - */ -/mob/living/simple_animal/bot/proc/get_mode_ui() - if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player. - return paicard ? "pAI Controlled" : "Autonomous" - if(!(bot_mode_flags & BOT_MODE_ON)) - return "Inactive" - return "[mode]" - -/** - * Returns a string of flavor text for emagged bots as defined by policy. - */ -/mob/living/simple_animal/bot/proc/get_emagged_message() - return get_policy(ROLE_EMAGGED_BOT) || "You are a malfunctioning bot! Disrupt everyone and cause chaos!" - -/mob/living/simple_animal/bot/proc/turn_on() - if(stat) - return FALSE - bot_mode_flags |= BOT_MODE_ON - remove_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), POWER_LACK_TRAIT) - set_light_on(bot_mode_flags & BOT_MODE_ON ? TRUE : FALSE) - update_appearance() - balloon_alert(src, "turned on") - diag_hud_set_botstat() - return TRUE - -/mob/living/simple_animal/bot/proc/turn_off() - bot_mode_flags &= ~BOT_MODE_ON - add_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), POWER_LACK_TRAIT) - set_light_on(bot_mode_flags & BOT_MODE_ON ? TRUE : FALSE) - bot_reset() //Resets an AI's call, should it exist. - balloon_alert(src, "turned off") - update_appearance() - -/mob/living/simple_animal/bot/proc/get_bot_flag(checked_mode, checked_flag) - if(checked_mode & checked_flag) - return TRUE - return FALSE - -/mob/living/simple_animal/bot/Initialize(mapload) - . = ..() - GLOB.bots_list += src - add_traits(list(TRAIT_SILICON_ACCESS, TRAIT_REAGENT_SCANNER, TRAIT_UNOBSERVANT), INNATE_TRAIT) - LoadComponent(/datum/component/bloodysoles/bot) - - path_hud = new /datum/atom_hud/data/bot_path/private() - for(var/hud in path_hud.hud_icons) // You get to see your own path - set_hud_image_active(hud, exclusive_hud = path_hud) - - // Give bots a fancy new ID card that can hold any access. - access_card = new /obj/item/card/id/advanced/simple_bot(src) - // This access is so bots can be immediately set to patrol and leave Robotics, instead of having to be let out first. - access_card.set_access(list(ACCESS_ROBOTICS)) - internal_radio = new /obj/item/radio(src) - if(radio_key) - internal_radio.keyslot = new radio_key - internal_radio.subspace_transmission = TRUE - internal_radio.canhear_range = 0 // anything greater will have the bot broadcast the channel as if it were saying it out loud. - internal_radio.recalculateChannels() - - //Adds bot to the diagnostic HUD system - prepare_huds() - var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] - diag_hud.add_atom_to_hud(src) - diag_hud_set_bothealth() - diag_hud_set_botstat() - diag_hud_set_botmode() - - //If a bot has its own HUD (for player bots), provide it. - if(!isnull(data_hud_type)) - ADD_TRAIT(src, data_hud_type, INNATE_TRAIT) - if(path_hud) - path_hud.add_atom_to_hud(src) - path_hud.show_to(src) - - if(mapload && is_station_level(z) && bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT && bot_mode_flags & BOT_MODE_ROUNDSTART_POSSESSION) - enable_possession(mapload = mapload) - - pa_system = new(src, automated_announcements = automated_announcements) - pa_system.Grant(src) - RegisterSignal(src, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access)) - ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT) - -/mob/living/simple_animal/bot/Destroy() - GLOB.bots_list -= src - QDEL_NULL(paicard) - QDEL_NULL(pa_system) - QDEL_NULL(internal_radio) - QDEL_NULL(access_card) - QDEL_NULL(path_hud) - return ..() - -/// Allows this bot to be controlled by a ghost, who will become its mind -/mob/living/simple_animal/bot/proc/enable_possession(user, mapload = FALSE) - if (paicard) - balloon_alert(user, "already sapient!") - return - can_be_possessed = TRUE - var/can_announce = !mapload && COOLDOWN_FINISHED(src, offer_ghosts_cooldown) - AddComponent( - /datum/component/ghost_direct_control, \ - ban_type = ROLE_BOT, \ - poll_candidates = can_announce, \ - poll_ignore_key = POLL_IGNORE_BOTS, \ - assumed_control_message = (bot_cover_flags & BOT_COVER_EMAGGED) ? get_emagged_message() : possessed_message, \ - extra_control_checks = CALLBACK(src, PROC_REF(check_possession)), \ - after_assumed_control = CALLBACK(src, PROC_REF(post_possession)), \ - ) - if (can_announce) - COOLDOWN_START(src, offer_ghosts_cooldown, 30 SECONDS) - - if (user) - log_silicon("[key_name(user)] enabled sapience for [src] ([initial(src.name)])") // Not technically a silicon but who is counting - -/// Disables this bot from being possessed by ghosts -/mob/living/simple_animal/bot/proc/disable_possession(mob/user) - if (user) - log_silicon("[key_name(user)] disabled sapience for [src] ([initial(src.name)])") - can_be_possessed = FALSE - qdel(GetComponent(/datum/component/ghost_direct_control)) - if (isnull(key)) - return - if (user) - log_combat(user, src, "ejected [key_name(src)] from control of [src] ([initial(src.name)]).") - to_chat(src, span_warning("You feel yourself fade as your personality matrix is reset!")) - ghostize(can_reenter_corpse = FALSE) - playsound(src, 'sound/machines/ping.ogg', 30, TRUE) - speak("Personality matrix reset!") - key = null - -/// Returns true if this mob can be controlled -/mob/living/simple_animal/bot/proc/check_possession(mob/potential_possessor) - if (!can_be_possessed) - to_chat(potential_possessor, span_warning("The bot's personality download has been disabled!")) - return can_be_possessed - -/// Fired after something takes control of this mob -/mob/living/simple_animal/bot/proc/post_possession() - playsound(src, 'sound/machines/ping.ogg', 30, TRUE) - speak("New personality installed successfully!") - rename(src) - -/// Allows renaming the bot to something else -/mob/living/simple_animal/bot/proc/rename(mob/user) - var/new_name = sanitize_name( - reject_bad_text(tgui_input_text( - user = user, - message = "This machine is designated [real_name]. Would you like to update its registration?", - title = "Name change", - default = real_name, - max_length = MAX_NAME_LEN, - )), - allow_numbers = TRUE - ) - if (isnull(new_name) || QDELETED(src)) - return - if (key && user != src) - var/accepted = tgui_alert( - src, - message = "Do you wish to be renamed to [new_name]?", - title = "Name change", - buttons = list("Yes", "No"), - ) - if (accepted != "Yes" || QDELETED(src)) - return - fully_replace_character_name(real_name, new_name) - -/mob/living/simple_animal/bot/allowed(mob/living/user) - if(!(bot_cover_flags & BOT_COVER_LOCKED)) // Unlocked. - return TRUE - return ..() - -/mob/living/simple_animal/bot/bee_friendly() - return TRUE - -/mob/living/simple_animal/bot/death(gibbed) - if(paicard) - ejectpai() - explode() - return ..() - -/mob/living/simple_animal/bot/proc/explode() - visible_message(span_boldnotice("[src] blows apart!")) - do_sparks(3, TRUE, src) - var/atom/location_destroyed = drop_location() - if(prob(50)) - drop_part(robot_arm, location_destroyed) - -/mob/living/simple_animal/bot/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - if(bot_cover_flags & BOT_COVER_LOCKED) //First emag application unlocks the bot's interface. Apply a screwdriver to use the emag again. - bot_cover_flags &= ~BOT_COVER_LOCKED - balloon_alert(user, "cover unlocked") - return TRUE - if(!(bot_cover_flags & BOT_COVER_LOCKED) && bot_cover_flags & BOT_COVER_MAINTS_OPEN) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging. - bot_cover_flags |= BOT_COVER_EMAGGED - bot_cover_flags &= ~BOT_COVER_LOCKED //Manually emagging the bot locks out the panel. - bot_mode_flags &= ~BOT_MODE_REMOTE_ENABLED //Manually emagging the bot also locks the AI from controlling it. - bot_reset() - turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP. - to_chat(src, span_userdanger("(#$*#$^^( OVERRIDE DETECTED")) - to_chat(src, span_boldnotice(get_emagged_message())) - if(user) - log_combat(user, src, "emagged") - return TRUE - else //Bot is unlocked, but the maint panel has not been opened with a screwdriver (or through the UI) yet. - balloon_alert(user, "open maintenance panel first!") - return FALSE - -/mob/living/simple_animal/bot/examine(mob/user) - . = ..() - if(health < maxHealth) - if(health > maxHealth/3) - . += "[src]'s parts look loose." - else - . += "[src]'s parts look very loose!" - else - . += "[src] is in pristine condition." - . += span_notice("[p_Their()] maintenance panel is [bot_cover_flags & BOT_COVER_MAINTS_OPEN ? "open" : "closed"].") - . += span_info("You can use a screwdriver to [bot_cover_flags & BOT_COVER_MAINTS_OPEN ? "close" : "open"] it.") - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - . += span_notice("[p_Their()] control panel is [bot_cover_flags & BOT_COVER_LOCKED ? "locked" : "unlocked"].") - var/is_sillycone = HAS_SILICON_ACCESS(user) - if(!(bot_cover_flags & BOT_COVER_EMAGGED) && (is_sillycone || user.Adjacent(src))) - . += span_info("Alt-click [is_sillycone ? "" : "or use your ID on "]it to [bot_cover_flags & BOT_COVER_LOCKED ? "un" : ""]lock [p_their()] control panel.") - if(paicard) - . += span_notice("[p_They()] has a pAI device installed.") - if(!(bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - . += span_info("You can use a hemostat to remove it.") - if(access_card) - . += "There appears to be [icon2html(access_card, user)] \a [access_card] pinned to [p_them()]." - -/mob/living/simple_animal/bot/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - if(amount > 0 && prob(10)) - new /obj/effect/decal/cleanable/blood/oil(loc) - return ..() - -/mob/living/simple_animal/bot/updatehealth() - ..() - diag_hud_set_bothealth() - -/mob/living/simple_animal/bot/med_hud_set_health() - return //we use a different hud - -/mob/living/simple_animal/bot/med_hud_set_status() - return //we use a different hud - -/mob/living/simple_animal/bot/handle_automated_action() //Master process which handles code common across most bots. - diag_hud_set_botmode() - - if (ignorelistcleanuptimer % 300 == 0) // Every 300 actions, clean up the ignore list from old junk - for(var/ref in ignore_list) - var/atom/referredatom = locate(ref) - if (!referredatom || !istype(referredatom) || QDELETED(referredatom)) - ignore_list -= ref - ignorelistcleanuptimer = 1 - else - ignorelistcleanuptimer++ - - if(!(bot_mode_flags & BOT_MODE_ON) || client) - return FALSE - - if(HAS_TRAIT(src, TRAIT_COMMISSIONED) && COOLDOWN_FINISHED(src, next_salute_check)) - COOLDOWN_START(src, next_salute_check, BOT_COMMISSIONED_SALUTE_DELAY) - for(var/mob/living/simple_animal/bot/nearby_bot in view(5, src)) - if(!HAS_TRAIT(nearby_bot, TRAIT_COMMISSIONED) && nearby_bot.bot_mode_flags & BOT_MODE_ON) - manual_emote("performs an elaborate salute for [nearby_bot]!") - break - - switch(mode) //High-priority overrides are processed first. Bots can do nothing else while under direct command. - if(BOT_RESPONDING) //Called by the AI. - call_mode() - return FALSE - if(BOT_SUMMON) //Called to a location - summon_step() - return FALSE - return TRUE //Successful completion. Used to prevent child process() continuing if this one is ended early. - - -/mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/user, list/modifiers) - if(!user.combat_mode) - ui_interact(user) - else - return ..() - -/mob/living/simple_animal/bot/attack_ai(mob/user) - if(!topic_denied(user)) - ui_interact(user) - else - to_chat(user, span_warning("[src]'s interface is not responding!")) - -/mob/living/simple_animal/bot/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "SimpleBot", name) - ui.open() - -/mob/living/simple_animal/bot/click_alt(mob/user) - unlock_with_id(user) - return CLICK_ACTION_SUCCESS - -/mob/living/simple_animal/bot/proc/unlock_with_id(mob/user) - if(bot_cover_flags & BOT_COVER_EMAGGED) - to_chat(user, span_danger("ERROR")) - return - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - to_chat(user, span_warning("Please close the access panel before [bot_cover_flags & BOT_COVER_LOCKED ? "un" : ""]locking it.")) - return - if(!allowed(user)) - to_chat(user, span_warning("Access denied.")) - return - bot_cover_flags ^= BOT_COVER_LOCKED - to_chat(user, span_notice("Controls are now [bot_cover_flags & BOT_COVER_LOCKED ? "locked" : "unlocked"].")) - return TRUE - -/mob/living/simple_animal/bot/screwdriver_act(mob/living/user, obj/item/tool) - if(bot_cover_flags & BOT_COVER_LOCKED) - to_chat(user, span_warning("The maintenance panel is locked!")) - return ITEM_INTERACT_SUCCESS - - tool.play_tool_sound(src) - bot_cover_flags ^= BOT_COVER_MAINTS_OPEN - to_chat(user, span_notice("The maintenance panel is now [bot_cover_flags & BOT_COVER_MAINTS_OPEN ? "opened" : "closed"].")) - return ITEM_INTERACT_SUCCESS - -/mob/living/simple_animal/bot/welder_act(mob/living/user, obj/item/tool) - user.changeNext_move(CLICK_CD_MELEE) - if(user.combat_mode) - return FALSE - - if(health >= maxHealth) - to_chat(user, span_warning("[src] does not need a repair!")) - return ITEM_INTERACT_SUCCESS - if(!(bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - to_chat(user, span_warning("Unable to repair with the maintenance panel closed!")) - return ITEM_INTERACT_SUCCESS - - if(tool.use_tool(src, user, 0 SECONDS, volume=40)) - adjustHealth(-10) - user.visible_message(span_notice("[user] repairs [src]!"),span_notice("You repair [src].")) - return ITEM_INTERACT_SUCCESS - -/mob/living/simple_animal/bot/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(attacking_item.GetID()) - unlock_with_id(user) - return - if(istype(attacking_item, /obj/item/pai_card)) - insertpai(user, attacking_item) - return - if(attacking_item.tool_behaviour == TOOL_HEMOSTAT && paicard) - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - balloon_alert(user, "open the access panel!") - else - balloon_alert(user, "removing pAI...") - if(!do_after(user, 3 SECONDS, target = src) || !paicard) - return - user.visible_message(span_notice("[user] uses [attacking_item] to pull [paicard] out of [initial(src.name)]!"),span_notice("You pull [paicard] out of [initial(src.name)] with [attacking_item].")) - ejectpai(user) - return - return ..() - -/mob/living/simple_animal/bot/attack_effects(damage_done, hit_zone, armor_block, obj/item/attacking_item, mob/living/attacker) - if(damage_done > 0 && attacking_item.damtype != STAMINA && stat != DEAD) - do_sparks(5, TRUE, src) - . = TRUE - return ..() || . - -/mob/living/simple_animal/bot/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE) - . = ..() - if(prob(25) || . != BULLET_ACT_HIT) - return - if(hitting_projectile.damage_type != BRUTE && hitting_projectile.damage_type != BURN) - return - if(!hitting_projectile.is_hostile_projectile() || hitting_projectile.damage <= 0) - return - do_sparks(5, TRUE, src) - -/mob/living/simple_animal/bot/emp_act(severity) - . = ..() - if(. & EMP_PROTECT_SELF) - return - var/was_on = bot_mode_flags & BOT_MODE_ON ? TRUE : FALSE - stat |= EMPED - new /obj/effect/temp_visual/emp(loc) - if(paicard) - paicard.emp_act(severity) - src.visible_message(span_notice("[paicard] is flies out of [initial(src.name)]!"), span_warning("You are forcefully ejected from [initial(src.name)]!")) - ejectpai() - - if (QDELETED(src)) - return - - if(bot_mode_flags & BOT_MODE_ON) - turn_off() - addtimer(CALLBACK(src, PROC_REF(emp_reset), was_on), severity * 30 SECONDS) - if(!prob(70/severity)) - return - if (!length(GLOB.uncommon_roundstart_languages)) - return - remove_all_languages(source = LANGUAGE_EMP) - grant_random_uncommon_language(source = LANGUAGE_EMP) - -/mob/living/simple_animal/bot/proc/emp_reset(was_on) - stat &= ~EMPED - if(was_on) - turn_on() - -/** - * Pass a message to have the bot say() it, passing through our announcement action to potentially also play a sound. - * Optionally pass a frequency to say it on the radio. - */ -/mob/living/simple_animal/bot/proc/speak(message, channel) - if(!message) - return - pa_system.announce(message, channel) - -/mob/living/simple_animal/bot/radio(message, list/message_mods = list(), list/spans, language) - . = ..() - if(.) - return - - if(message_mods[MODE_HEADSET]) - internal_radio.talk_into(src, message, , spans, language, message_mods) - return REDUCE_RANGE - else if(message_mods[RADIO_EXTENSION] == MODE_DEPARTMENT) - internal_radio.talk_into(src, message, message_mods[RADIO_EXTENSION], spans, language, message_mods) - return REDUCE_RANGE - else if(message_mods[RADIO_EXTENSION] in GLOB.default_radio_channels) - internal_radio.talk_into(src, message, message_mods[RADIO_EXTENSION], spans, language, message_mods) - return REDUCE_RANGE - -/mob/living/simple_animal/bot/proc/drop_part(obj/item/drop_item, dropzone) - var/obj/item/item_to_drop - if(ispath(drop_item)) - item_to_drop = new drop_item(dropzone) - else - item_to_drop = drop_item - item_to_drop.forceMove(dropzone) - - if(istype(item_to_drop, /obj/item/stock_parts/power_store/cell)) - var/obj/item/stock_parts/power_store/cell/dropped_cell = item_to_drop - dropped_cell.charge = 0 - - else if(istype(item_to_drop, /obj/item/storage)) - var/obj/item/storage/storage_to_drop = item_to_drop - storage_to_drop.contents = list() - - else if(istype(item_to_drop, /obj/item/gun/energy)) - var/obj/item/gun/energy/dropped_gun = item_to_drop - dropped_gun.cell.charge = 0 - dropped_gun.update_appearance() - -//Generalized behavior code, override where needed! - -GLOBAL_LIST_EMPTY(scan_typecaches) -/** - * Attempt to scan tiles near [src], first by checking adjacent, then if a target is still not found, nearby. - * - * scan_types - list (of typepaths) that nearby tiles are being scanned for. - * old_target - what has already been scanned, and will early return at checkscan. - * scan_range - how far away from [src] will be scanned, if nothing is found directly adjacent. - */ -/mob/living/simple_animal/bot/proc/scan(list/scan_types, old_target, scan_range = DEFAULT_SCAN_RANGE) - var/key = scan_types.Join(",") - var/list/scan_cache = GLOB.scan_typecaches[key] - if(!scan_cache) - scan_cache = typecacheof(scan_types) - GLOB.scan_typecaches[key] = scan_cache - if(!get_turf(src)) - return - // Nicer behavior, ensures we don't conflict with other bots quite so often - var/list/adjacent = list() - for(var/turf/to_walk in view(1, src)) - adjacent += to_walk - - adjacent = shuffle(adjacent) - - var/list/turfs_to_walk = list() - for(var/turf/victim in view(scan_range, src)) - turfs_to_walk += victim - - turfs_to_walk = turfs_to_walk - adjacent - // Now we prepend adjacent since we want to run those first - turfs_to_walk = adjacent + turfs_to_walk - - for(var/turf/scanned as anything in turfs_to_walk) - // Check bot is inlined here to save cpu time - //Is there another bot there? Then let's just skip it so we dont all atack on top of eachother. - var/bot_found = FALSE - for(var/mob/living/simple_animal/bot/buddy in scanned.contents) - if(istype(buddy, type) && (buddy != src)) - bot_found = TRUE - break - if(bot_found) - continue - - for(var/atom/thing as anything in scanned) - if(!scan_cache[thing.type]) //Check that the thing we found is the type we want! - continue //If not, keep searching! - if(thing == old_target || (REF(thing) in ignore_list)) //Filter for blacklisted elements, usually unreachable or previously processed oness - continue - - var/scan_result = process_scan(thing) //Some bots may require additional processing when a result is selected. - if(!isnull(scan_result)) - return scan_result - -//When the scan finds a target, run bot specific processing to select it for the next step. Empty by default. -/mob/living/simple_animal/bot/proc/process_scan(scan_target) - return scan_target - -/mob/living/simple_animal/bot/proc/check_bot(targ) - var/turf/target_turf = get_turf(targ) - if(!target_turf) - return FALSE - for(var/mob/living/simple_animal/bot/buddy in target_turf.contents) - if(istype(buddy, type) && (buddy != src)) - return TRUE - return FALSE - -/mob/living/simple_animal/bot/proc/add_to_ignore(subject) - if(ignore_list.len < 50) //This will help keep track of them, so the bot is always trying to reach a blocked spot. - ignore_list += REF(subject) - else //If the list is full, insert newest, delete oldest. - ignore_list.Cut(1,2) - ignore_list += REF(subject) - -/* -Movement proc for stepping a bot through a path generated through A-star. -Pass a positive integer as an argument to override a bot's default speed. -*/ -/mob/living/simple_animal/bot/proc/bot_move(dest, move_speed) - if(!dest || !path || path.len == 0) //A-star failed or a path/destination was not set. - set_path(null) - return FALSE - dest = get_turf(dest) //We must always compare turfs, so get the turf of the dest var if dest was originally something else. - var/turf/last_node = get_turf(path[path.len]) //This is the turf at the end of the path, it should be equal to dest. - if(get_turf(src) == dest) //We have arrived, no need to move again. - return TRUE - else if(dest != last_node) //The path should lead us to our given destination. If this is not true, we must stop. - set_path(null) - return FALSE - var/step_count = move_speed ? move_speed : base_speed //If a value is passed into move_speed, use that instead of the default speed var. - - if(step_count >= 1 && tries < BOT_STEP_MAX_RETRIES) - for(var/step_number in 1 to step_count) - addtimer(CALLBACK(src, PROC_REF(bot_step)), BOT_STEP_DELAY*(step_number-1)) - else - return FALSE - return TRUE - -/// Performs a step_towards and increments the path if successful. Returns TRUE if the bot moved and FALSE otherwise. -/mob/living/simple_animal/bot/proc/bot_step() - if(!length(path)) - return FALSE - - if(SEND_SIGNAL(src, COMSIG_MOB_BOT_PRE_STEP) & COMPONENT_MOB_BOT_BLOCK_PRE_STEP) - return FALSE - - if(!step_towards(src, path[1])) - tries++ - return FALSE - - increment_path() - tries = 0 - SEND_SIGNAL(src, COMSIG_MOB_BOT_STEP) - return TRUE - - -/mob/living/simple_animal/bot/proc/check_bot_access() - if(mode != BOT_SUMMON && mode != BOT_RESPONDING) - access_card.set_access(prev_access) - -/mob/living/simple_animal/bot/proc/call_bot(summoner, turf/waypoint, message = TRUE) - if(isAI(summoner) && calling_ai && calling_ai != src) //Prevents an override if another AI is controlling this bot. - return FALSE - - bot_reset() //Reset a bot before setting it to call mode. - - set_path(get_path_to(src, waypoint, max_distance=200, access = REGION_ACCESS_ALL_STATION)) - calling_ai = summoner //Link the AI to the bot! - ai_waypoint = waypoint - - if(path?.len) //Ensures that a valid path is calculated! - var/end_area = get_area_name(waypoint) - if(!(bot_mode_flags & BOT_MODE_ON)) - turn_on() //Saves the AI the hassle of having to activate a bot manually. - access_card.set_access(REGION_ACCESS_ALL_STATION) //Give the bot all-access while under the AI's command. - if(client) - reset_access_timer_id = addtimer(CALLBACK (src, PROC_REF(bot_reset)), 60 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time - to_chat(src, span_notice("[span_big("Priority waypoint set by [icon2html(calling_ai, src)] [summoner]. Proceed to [end_area].")]
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")) - if(message) - to_chat(calling_ai, span_notice("[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.")) - pathset = TRUE - mode = BOT_RESPONDING - tries = 0 - else - if(message) - to_chat(calling_ai, span_danger("Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.")) - calling_ai = null - set_path(null) - - return TRUE - -/mob/living/simple_animal/bot/proc/call_mode() //Handles preparing a bot for a call, as well as calling the move proc. -//Handles the bot's movement during a call. - var/success = bot_move(ai_waypoint, 3) - if(!success) - if(calling_ai) - to_chat(calling_ai, "[icon2html(src, calling_ai)] [get_turf(src) == ai_waypoint ? span_notice("[src] successfully arrived to waypoint.") : span_danger("[src] failed to reach waypoint.")]") - calling_ai = null - bot_reset() - -/mob/living/simple_animal/bot/proc/bot_reset() - if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot. - to_chat(calling_ai, span_danger("Call command to a bot has been reset.")) - calling_ai = null - if(reset_access_timer_id) - deltimer(reset_access_timer_id) - reset_access_timer_id = null - set_path(null) - summon_target = null - pathset = FALSE - access_card.set_access(prev_access) - tries = 0 - mode = BOT_IDLE - ignore_list = list() - diag_hud_set_botstat() - diag_hud_set_botmode() - - - - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -//Patrol and summon code! -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -/mob/living/simple_animal/bot/proc/bot_patrol() - patrol_step() - addtimer(CALLBACK(src, PROC_REF(do_patrol)), 0.5 SECONDS) - -/mob/living/simple_animal/bot/proc/do_patrol() - if(mode == BOT_PATROL) - patrol_step() - -/mob/living/simple_animal/bot/proc/start_patrol() - - if(tries >= BOT_STEP_MAX_RETRIES) //Bot is trapped, so stop trying to patrol. - bot_mode_flags &= ~BOT_MODE_AUTOPATROL - tries = 0 - speak("Unable to start patrol.") - - return - - if(!(bot_mode_flags & BOT_MODE_AUTOPATROL)) //A bot not set to patrol should not be patrolling. - mode = BOT_IDLE - return - - if(patrol_target) // has patrol target - INVOKE_ASYNC(src, PROC_REF(target_patrol)) - else // no patrol target, so need a new one - speak("Engaging patrol mode.") - find_patrol_target() - tries++ - return - -/mob/living/simple_animal/bot/proc/target_patrol() - calc_path() // Find a route to it - if(!path.len) - patrol_target = null - return - mode = BOT_PATROL -// perform a single patrol step - -/mob/living/simple_animal/bot/proc/patrol_step() - - if(client) // In use by player, don't actually move. - return - - if(loc == patrol_target) // reached target - //Find the next beacon matching the target. - if(!get_next_patrol_target()) - find_patrol_target() //If it fails, look for the nearest one instead. - return - - else if(path.len > 0 && patrol_target) // valid path - if(path[1] == loc) - increment_path() - return - - - var/moved = bot_move(patrol_target)//step_towards(src, next) // attempt to move - if(!moved) //Couldn't proceed the next step of the path BOT_STEP_MAX_RETRIES times - addtimer(CALLBACK(src, PROC_REF(patrol_step_not_moved)), 0.2 SECONDS) - - else // no path, so calculate new one - mode = BOT_START_PATROL - -/mob/living/simple_animal/bot/proc/patrol_step_not_moved() - calc_path() - if(!length(path)) - find_patrol_target() - tries = 0 - -// finds the nearest beacon to self -/mob/living/simple_animal/bot/proc/find_patrol_target() - nearest_beacon = null - new_destination = null - find_nearest_beacon() - if(nearest_beacon) - patrol_target = nearest_beacon_loc - destination = next_destination - else - bot_mode_flags &= ~BOT_MODE_AUTOPATROL - mode = BOT_IDLE - speak("Disengaging patrol mode.") - -/mob/living/simple_animal/bot/proc/get_next_patrol_target() - // search the beacon list for the next target in the list. - for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) - if(NB.location == next_destination) //Does the Beacon location text match the destination? - destination = new_destination //We now know the name of where we want to go. - patrol_target = NB.loc //Get its location and set it as the target. - next_destination = NB.codes[NAVBEACON_PATROL_NEXT] //Also get the name of the next beacon in line. - return TRUE - -/mob/living/simple_animal/bot/proc/find_nearest_beacon() - for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) - var/dist = get_dist(src, NB) - if(nearest_beacon) //Loop though the beacon net to find the true closest beacon. - //Ignore the beacon if were are located on it. - if(dist>1 && dist 1) //Begin the search, save this one for comparison on the next loop. - nearest_beacon = NB.location - nearest_beacon_loc = NB.loc - patrol_target = nearest_beacon_loc - destination = nearest_beacon - -//PDA control. Some bots, especially MULEs, may have more parameters. -/mob/living/simple_animal/bot/proc/bot_control(command, mob/user, list/user_access = list()) - if(!(bot_mode_flags & BOT_MODE_ON) || bot_cover_flags & BOT_COVER_EMAGGED || !(bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. - return TRUE //ACCESS DENIED - if(client) - bot_control_message(command, user) - // process control input - switch(command) - if("patroloff") - bot_reset() //HOLD IT!! //OBJECTION!! - bot_mode_flags &= ~BOT_MODE_AUTOPATROL - - if("patrolon") - bot_mode_flags |= BOT_MODE_AUTOPATROL - - if("summon") - bot_reset() - summon_target = get_turf(user) - if(user_access.len != 0) - access_card.set_access(user_access + prev_access) //Adds the user's access, if any. - mode = BOT_SUMMON - speak("Responding.", radio_channel) - if("ejectpai") - ejectpairemote(user) - return - - -/mob/living/simple_animal/bot/proc/bot_control_message(command, user) - switch(command) - if("patroloff") - to_chat(src, "STOP PATROL") - if("patrolon") - to_chat(src, "START PATROL") - if("summon") - to_chat(src, "PRIORITY ALERT:[user] in [get_area_name(user)]!") - if("stop") - to_chat(src, "STOP!") - - if("go") - to_chat(src, "GO!") - - if("home") - to_chat(src, "RETURN HOME!") - if("ejectpai") - return - else - to_chat(src, span_warning("Unidentified control sequence received:[command]")) - -// calculates a path to the current destination -// given an optional turf to avoid -/mob/living/simple_animal/bot/proc/calc_path(turf/avoid) - check_bot_access() - set_path(get_path_to(src, patrol_target, max_distance=120, access=access_card.GetAccess(), exclude=avoid, diagonal_handling=DIAGONAL_REMOVE_ALL)) - -/mob/living/simple_animal/bot/proc/calc_summon_path(turf/avoid) - check_bot_access() - var/datum/callback/path_complete = CALLBACK(src, PROC_REF(on_summon_path_finish)) - SSpathfinder.pathfind(src, summon_target, max_distance=150, access=access_card.GetAccess(), exclude=avoid, diagonal_handling=DIAGONAL_REMOVE_ALL, on_finish=list(path_complete)) - -/mob/living/simple_animal/bot/proc/on_summon_path_finish(list/path) - set_path(path) - if(!length(path)) //Cannot reach target. Give up and announce the issue. - speak("Summon command failed, destination unreachable.",radio_channel) - bot_reset() - -/mob/living/simple_animal/bot/proc/summon_step() - - if(client) // In use by player, don't actually move. - return - - if(loc == summon_target) // Arrived to summon location. - bot_reset() - return - - else if(path.len > 0 && summon_target) //Proper path acquired! - if(path[1] == loc) - increment_path() - return - - var/moved = bot_move(summon_target, 3) // Move attempt - if(!moved) - addtimer(CALLBACK(src, PROC_REF(summon_step_not_moved)), 0.2 SECONDS) - - else // no path, so calculate new one - calc_summon_path() - -/mob/living/simple_animal/bot/proc/summon_step_not_moved() - calc_summon_path() - tries = 0 - -/mob/living/simple_animal/bot/proc/attempt_access(mob/bot, obj/door_attempt) - SIGNAL_HANDLER - - if(door_attempt.check_access(access_card)) - frustration = 0 - return ACCESS_ALLOWED - return ACCESS_DISALLOWED - -/mob/living/simple_animal/bot/ui_data(mob/user) - var/list/data = list() - data["can_hack"] = HAS_SILICON_ACCESS(user) - data["custom_controls"] = list() - data["emagged"] = bot_cover_flags & BOT_COVER_EMAGGED - data["has_access"] = allowed(user) - data["locked"] = bot_cover_flags & BOT_COVER_LOCKED - data["settings"] = list() - if(!(bot_cover_flags & BOT_COVER_LOCKED) || HAS_SILICON_ACCESS(user)) - data["settings"]["pai_inserted"] = !!paicard - data["settings"]["allow_possession"] = bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT - data["settings"]["possession_enabled"] = can_be_possessed - data["settings"]["airplane_mode"] = !(bot_mode_flags & BOT_MODE_REMOTE_ENABLED) - data["settings"]["maintenance_lock"] = !(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - data["settings"]["power"] = bot_mode_flags & BOT_MODE_ON - data["settings"]["patrol_station"] = bot_mode_flags & BOT_MODE_AUTOPATROL - return data - -// Actions received from TGUI -/mob/living/simple_animal/bot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - var/mob/user = ui.user - if(!allowed(user)) - to_chat(user, span_warning("Access denied.")) - return - - if(action == "lock") - bot_cover_flags ^= BOT_COVER_LOCKED - - switch(action) - if("power") - if(bot_mode_flags & BOT_MODE_ON) - turn_off() - else - turn_on() - if("maintenance") - bot_cover_flags ^= BOT_COVER_MAINTS_OPEN - if("patrol") - bot_mode_flags ^= BOT_MODE_AUTOPATROL - bot_reset() - if("airplane") - bot_mode_flags ^= BOT_MODE_REMOTE_ENABLED - if("hack") - if(!HAS_SILICON_ACCESS(user)) - return - if(!(bot_cover_flags & BOT_COVER_EMAGGED)) - bot_cover_flags |= (BOT_COVER_EMAGGED|BOT_COVER_HACKED|BOT_COVER_LOCKED) - to_chat(user, span_warning("You overload [src]'s [hackables].")) - message_admins("Safety lock of [ADMIN_LOOKUPFLW(src)] was disabled by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") - user.log_message("disabled safety lock of [src]", LOG_GAME) - bot_reset() - to_chat(src, span_userdanger("(#$*#$^^( OVERRIDE DETECTED")) - to_chat(src, span_boldnotice(get_emagged_message())) - return - if(!(bot_cover_flags & BOT_COVER_HACKED)) - to_chat(user, span_bolddanger("You fail to repair [src]'s [hackables].")) - return - bot_cover_flags &= ~(BOT_COVER_EMAGGED|BOT_COVER_HACKED) - to_chat(user, span_notice("You reset the [src]'s [hackables].")) - user.log_message("re-enabled safety lock of [src]", LOG_GAME) - bot_reset() - to_chat(src, span_userdanger("Software restored to standard.")) - to_chat(src, span_boldnotice(possessed_message)) - if("eject_pai") - if(!paicard) - return - to_chat(user, span_notice("You eject [paicard] from [initial(src.name)].")) - ejectpai(user) - if("toggle_personality") - if (can_be_possessed) - disable_possession(user) - else - enable_possession(user) - if("rename") - rename(user) - -/mob/living/simple_animal/bot/update_icon_state() - icon_state = "[isnull(base_icon_state) ? initial(icon_state) : base_icon_state][get_bot_flag(bot_mode_flags, BOT_MODE_ON)]" - return ..() - -/// Access check proc for bot topics! Remember to place in a bot's individual Topic if desired. -/mob/living/simple_animal/bot/proc/topic_denied(mob/user) - if(!user.can_perform_action(src, ALLOW_SILICON_REACH)) - return TRUE - // 0 for access, 1 for denied. - if(bot_cover_flags & BOT_COVER_EMAGGED) //An emagged bot cannot be controlled by humans, silicons can if one hacked it. - if(!(bot_cover_flags & BOT_COVER_HACKED)) //Manually emagged by a human - access denied to all. - return TRUE - else if(!HAS_SILICON_ACCESS(user)) //Bot is hacked, so only silicons and admins are allowed access. - return TRUE - return FALSE - -/// Places a pAI in control of this mob -/mob/living/simple_animal/bot/proc/insertpai(mob/user, obj/item/pai_card/card) - if(paicard) - balloon_alert(user, "slot occupied!") - return - if(key) - balloon_alert(user, "personality already present!") - return - if(bot_cover_flags & BOT_COVER_LOCKED || !(bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - balloon_alert(user, "slot inaccessible!") - return - if(!(bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT)) - balloon_alert(user, "incompatible firmware!") - return - if(!card.pai || !card.pai.mind) - balloon_alert(user, "pAI is inactive!") - return - if(!user.transferItemToLoc(card, src)) - return - paicard = card - disable_possession() - if(paicard.pai.holoform) - paicard.pai.fold_in() - copy_languages(paicard.pai, source_override = LANGUAGE_PAI) - set_active_language(paicard.pai.get_selected_language()) - user.visible_message(span_notice("[user] inserts [card] into [src]!"), span_notice("You insert [card] into [src].")) - paicard.pai.mind.transfer_to(src) - to_chat(src, span_notice("You sense your form change as you are uploaded into [src].")) - name = paicard.pai.name - original_faction = get_faction() - original_allies = allies - SET_FACTION_AND_ALLIES_FROM(src, user) - log_combat(user, paicard.pai, "uploaded to [initial(src.name)],") - return TRUE - -/mob/living/simple_animal/bot/ghost() - if(stat != DEAD) // Only ghost if we're doing this while alive, the pAI probably isn't dead yet. - return ..() - if(paicard && (!client || stat == DEAD)) - ejectpai() - -/// Ejects a pAI from this bot -/mob/living/simple_animal/bot/proc/ejectpai(mob/user = null, announce = TRUE) - if(!paicard) - return - if(mind && paicard.pai) - mind.transfer_to(paicard.pai) - else if(paicard.pai) - paicard.pai.PossessByPlayer(key) - else - ghostize(FALSE) // The pAI card that just got ejected was dead. - key = null - paicard.forceMove(loc) - if(user) - log_combat(user, paicard.pai, "ejected from [initial(src.name)],") - else - log_combat(src, paicard.pai, "ejected") - if(announce) - to_chat(paicard.pai, span_notice("You feel your control fade as [paicard] ejects from [initial(src.name)].")) - paicard = null - name = initial(src.name) - set_faction(original_faction) - set_allies(original_allies) - remove_all_languages(source = LANGUAGE_PAI) - get_selected_language() - -/// Ejects the pAI remotely. -/mob/living/simple_animal/bot/proc/ejectpairemote(mob/user) - if(!allowed(user) || !paicard) - return - speak("Ejecting personality chip.", radio_channel) - ejectpai(user) - -/mob/living/simple_animal/bot/Login() - . = ..() - if(!. || !client) - return FALSE - // If we have any bonus player accesses, add them to our internal ID card. - if(length(player_access)) - access_card.add_access(player_access) - diag_hud_set_botmode() - -/mob/living/simple_animal/bot/Logout() - . = ..() - bot_reset() - -/mob/living/simple_animal/bot/revive(full_heal_flags = NONE, excess_healing = 0, force_grab_ghost = FALSE) - . = ..() - if(!.) - return - update_appearance() - -/mob/living/simple_animal/bot/sentience_act() - remove_faction(FACTION_SILICON) - -/mob/living/simple_animal/bot/proc/set_path(list/newpath) - path = newpath ? newpath : list() - if(!path_hud) - return - var/list/path_huds_watching_me = list(GLOB.huds[DATA_HUD_DIAGNOSTIC], GLOB.huds[DATA_HUD_BOT_PATH]) - if(path_hud) - path_huds_watching_me += path_hud - for(var/datum/atom_hud/hud as anything in path_huds_watching_me) - hud.remove_atom_from_hud(src) - - var/list/path_images = active_hud_list[DIAG_PATH_HUD] - LAZYCLEARLIST(path_images) - if(length(newpath)) - var/mutable_appearance/path_image = mutable_appearance(path_image_icon, path_image_icon_state, BOT_PATH_LAYER, appearance_flags = RESET_COLOR|RESET_TRANSFORM|KEEP_APART) - path_image.color = path_image_color - for(var/i in 1 to newpath.len) - var/turf/T = newpath[i] - if(T == loc) //don't bother putting an image if it's where we already exist. - continue - var/direction = get_dir(src, T) - if(i > 1) - var/turf/prevT = path[i - 1] - var/image/prevI = path[prevT] - direction = get_dir(prevT, T) - if(i > 2 && prevI) // make sure we actually have an image to manipulate at index > 2 - var/turf/prevprevT = path[i - 2] - var/prevDir = get_dir(prevprevT, prevT) - var/mixDir = direction|prevDir - if(ISDIAGONALDIR(mixDir)) - prevI.dir = mixDir - if(prevDir & (NORTH|SOUTH)) - var/matrix/ntransform = matrix() - ntransform.Turn(90) - if((mixDir == NORTHWEST) || (mixDir == SOUTHEAST)) - ntransform.Scale(-1, 1) - else - ntransform.Scale(1, -1) - prevI.transform = ntransform - - SET_PLANE(path_image, GAME_PLANE, T) - path_image.dir = direction - var/image/I = image(loc = T) - I.appearance = path_image - path[T] = I - path_images += I - - for(var/datum/atom_hud/hud as anything in path_huds_watching_me) - hud.add_atom_to_hud(src) - -/mob/living/simple_animal/bot/proc/increment_path() - if(!length(path)) - return - var/image/I = path[path[1]] - if(I) - animate(I, alpha = 0, time = 3) - path.Cut(1, 2) - - if(!length(path)) - addtimer(CALLBACK(src, PROC_REF(set_path), null), 0.6 SECONDS) // Enough time for the animate to finish - -/mob/living/simple_animal/bot/rust_heretic_act() - adjust_brute_loss(400) - -/mob/living/simple_animal/bot/get_hit_area_message(input_area) - // we just get hit, there's no complexity for hitting an arm (if it exists) or anything. - // we also need to return an empty string as otherwise it would falsely say that we get hit in the chest or something strange like that (bots don't have "chests") - return "" - -//Will always check hands first, because access_card is internal to the mob and can't be removed or swapped. -/mob/living/simple_animal/bot/get_idcard(hand_first) - return (..() || access_card) diff --git a/code/modules/mob/living/simple_animal/bot/bot_announcement.dm b/code/modules/mob/living/simple_animal/bot/bot_announcement.dm index 0a9f8d8d59c2..10161dddfd9d 100644 --- a/code/modules/mob/living/simple_animal/bot/bot_announcement.dm +++ b/code/modules/mob/living/simple_animal/bot/bot_announcement.dm @@ -51,7 +51,7 @@ /datum/action/cooldown/bot_announcement/ui_data(mob/user) var/list/data = list() - var/mob/living/simple_animal/bot/bot_owner = owner + var/mob/living/basic/bot/bot_owner = owner if(istype(bot_owner)) var/list/channels = list() for(var/channel in bot_owner.internal_radio.channels) @@ -149,7 +149,7 @@ /// Speak the provided line on the provided radio channel /datum/action/cooldown/bot_announcement/proc/announce(line, channel) - var/mob/living/simple_animal/bot/bot_owner = owner + var/mob/living/basic/bot/bot_owner = owner if (!(bot_owner.bot_mode_flags & BOT_MODE_ON)) return diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 7934d9ab858a..b29484fb77a5 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -678,7 +678,7 @@ if(!can_finish_build(tool, user)) return ITEM_INTERACT_BLOCKING balloon_alert(user, "assembly finished") - var/obj/vehicle/sealed/car/vim/new_vim = new(drop_location()) + var/obj/vehicle/sealed/mecha/vim/new_vim = new(drop_location()) new_vim.name = created_name qdel(tool) qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm deleted file mode 100644 index 5095a1e4baa7..000000000000 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ /dev/null @@ -1,873 +0,0 @@ - - -// Mulebot - carries crates around for Quartermaster -// Navigates via floor navbeacons -// Remote Controlled from QM's PDA - -#define SIGH 0 -#define ANNOYED 1 -#define DELIGHT 2 -#define CHIME 3 - -/mob/living/simple_animal/bot/mulebot - name = "\improper MULEbot" - desc = "A Multiple Utility Load Effector bot." - icon_state = "mulebot0" - light_color = "#ffcc99" - light_power = 0.8 - density = TRUE - move_resist = MOVE_FORCE_STRONG - animate_movement = SLIDE_STEPS - health = 50 - maxHealth = 50 - speed = 3 - damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, STAMINA = 0, OXY = 0) - combat_mode = TRUE //No swapping - buckle_lying = 0 - mob_size = MOB_SIZE_LARGE - buckle_prevents_pull = TRUE // No pulling loaded shit - bot_mode_flags = ~BOT_MODE_ROUNDSTART_POSSESSION - req_one_access = list(ACCESS_ROBOTICS, ACCESS_CARGO) - radio_key = /obj/item/encryptionkey/headset_cargo - radio_channel = RADIO_CHANNEL_SUPPLY - bot_type = MULE_BOT - path_image_color = "#7F5200" - possessed_message = "You are a MULEbot! Do your best to make sure that packages get to their destination!" - - /// unique identifier in case there are multiple mulebots. - var/id - - var/base_icon = "mulebot" /// icon_state to use in update_icon_state - var/atom/movable/load /// what we're transporting - var/mob/living/passenger /// who's riding us - var/turf/target /// this is turf to navigate to (location of beacon) - var/loaddir = 0 /// this the direction to unload onto/load from - var/home_destination = "" /// tag of home delivery beacon - - var/reached_target = TRUE ///true if already reached the target - ///Number of times retried a blocked path - var/blockcount = 0 - - ///flags of mulebot mode - var/mulebot_delivery_flags = MULEBOT_RETURN_MODE | MULEBOT_AUTO_PICKUP_MODE | MULEBOT_REPORT_DELIVERY_MODE - - var/obj/item/stock_parts/power_store/cell /// Internal Powercell - var/cell_move_power_usage = 1///How much power we use when we move. - var/num_steps = 0 ///The amount of steps we should take until we rest for a time. - - - -/mob/living/simple_animal/bot/mulebot/Initialize(mapload) - . = ..() - - RegisterSignal(src, COMSIG_MOB_BOT_PRE_STEP, PROC_REF(check_pre_step)) - RegisterSignal(src, COMSIG_MOB_CLIENT_PRE_MOVE, PROC_REF(check_pre_step)) - RegisterSignal(src, COMSIG_MOB_BOT_STEP, PROC_REF(on_bot_step)) - RegisterSignal(src, COMSIG_MOB_CLIENT_MOVED, PROC_REF(on_bot_step)) - - ADD_TRAIT(src, TRAIT_NOMOBSWAP, INNATE_TRAIT) - - if(prob(0.666) && mapload) - new /mob/living/simple_animal/bot/mulebot/paranormal(loc) - return INITIALIZE_HINT_QDEL - set_wires(new /datum/wires/mulebot(src)) - - // Doing this hurts my soul, but simplebot access reworks are for another day. - var/datum/id_trim/job/cargo_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/cargo_technician] - access_card.add_access(cargo_trim.access + cargo_trim.wildcard_access) - prev_access = access_card.access.Copy() - - cell = new /obj/item/stock_parts/power_store/cell/upgraded(src, 2000) - - AddElement(/datum/element/ridable, /datum/component/riding/creature/mulebot) - diag_hud_set_mulebotcell() - - set_id(suffix || assign_random_name()) - suffix = null - if(name == "\improper MULEbot") - name = "\improper MULEbot [id]" - set_home(get_turf(src)) - -/mob/living/simple_animal/bot/mulebot/Exited(atom/movable/gone, direction) - . = ..() - if(gone == load) - unload(0) - if(gone == cell) - turn_off() - cell = null - diag_hud_set_mulebotcell() - -/mob/living/simple_animal/bot/mulebot/examine(mob/user) - . = ..() - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - if(cell) - . += span_notice("[p_They()] [p_have()] \a [cell] installed.") - . += span_info("You can use a crowbar to remove it.") - else - . += span_notice("[p_They()] [p_have()] an empty compartment where a power cell can be installed.") - if(load) //observer check is so we don't show the name of the ghost that's sitting on it to prevent metagaming who's ded. - . += span_notice("\A [isobserver(load) ? "ghostly figure" : load] is on [p_their()] load platform.") - - -/mob/living/simple_animal/bot/mulebot/Destroy() - UnregisterSignal(src, list(COMSIG_MOB_BOT_PRE_STEP, COMSIG_MOB_CLIENT_PRE_MOVE, COMSIG_MOB_BOT_STEP, COMSIG_MOB_CLIENT_MOVED)) - unload(0) - QDEL_NULL(cell) - return ..() - -/mob/living/simple_animal/bot/mulebot/get_cell() - return cell - -/mob/living/simple_animal/bot/mulebot/turn_on() - if(!has_power()) - return - return ..() - -/// returns true if the bot is fully powered. -/mob/living/simple_animal/bot/mulebot/proc/has_power() - return cell && cell.charge > 0 && (!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) - -/mob/living/simple_animal/bot/mulebot/attack_hand(mob/living/carbon/human/user, list/modifiers) - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN && !HAS_AI_ACCESS(user)) - wires.interact(user) - return - if(wires.is_cut(WIRE_RX) && HAS_AI_ACCESS(user)) - return - - return ..() - -/mob/living/simple_animal/bot/mulebot/proc/set_id(new_id) - id = new_id - -/mob/living/simple_animal/bot/mulebot/proc/set_home(turf/home_loc) - if(!istype(home_loc)) - CRASH("MULEbot [id] was requested to set a home location to [home_loc ? "an invalid home loc ([home_loc.type])" : "null"]") - - var/obj/machinery/navbeacon/home_beacon = locate() in home_loc - if(!isnull(home_beacon)) - home_destination = home_beacon.location - log_transport("[id]: MULEbot successfuly set home location to ID [home_destination] at [home_beacon.x], [home_beacon.y], [home_beacon.z]") - return - - log_transport("[id]: MULEbot failed to set home at [home_loc.x], [home_loc.y], [home_loc.z]") - -/mob/living/simple_animal/bot/mulebot/bot_reset() - ..() - reached_target = FALSE - -/mob/living/simple_animal/bot/mulebot/screwdriver_act(mob/living/user, obj/item/tool) - . = ..() - update_appearance() - -/mob/living/simple_animal/bot/mulebot/crowbar_act(mob/living/user, obj/item/tool) - if(!(bot_cover_flags & BOT_COVER_MAINTS_OPEN) || user.combat_mode) - return - if(!cell) - to_chat(user, span_warning("[src] doesn't have a power cell!")) - return ITEM_INTERACT_BLOCKING - cell.add_fingerprint(user) - user.visible_message( - span_notice("[user] crowbars [cell] out from [src]."), - span_notice("You pry [cell] out of [src]."), - ) - if(Adjacent(user) && !issilicon(user)) - user.put_in_hands(cell) - else - cell.forceMove(drop_location()) - return ITEM_INTERACT_SUCCESS - -/mob/living/simple_animal/bot/mulebot/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(istype(tool, /obj/item/stock_parts/power_store/cell) && (bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - if(cell) - to_chat(user, span_warning("[src] already has a power cell!")) - return ITEM_INTERACT_BLOCKING - if(!user.transferItemToLoc(tool, src)) - return ITEM_INTERACT_BLOCKING - cell = tool - diag_hud_set_mulebotcell() - user.visible_message( - span_notice("[user] inserts \a [cell] into [src]."), - span_notice("You insert [cell] into [src]."), - ) - return ITEM_INTERACT_SUCCESS - if(is_wire_tool(tool) && (bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - attack_hand(user) - return ITEM_INTERACT_SUCCESS - return ..() - -/mob/living/simple_animal/bot/mulebot/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() - if(ismob(load) && prob(1 + attacking_item.force * 2)) - user.visible_message( - span_danger("[user] knocks [load] off [src] with \the [attacking_item]!"), - span_danger("You knock [load] off [src] with \the [attacking_item]!"), - ) - unload(0) - return TRUE - -/mob/living/simple_animal/bot/mulebot/emag_act(mob/user, obj/item/card/emag/emag_card) - if(!(bot_cover_flags & BOT_COVER_EMAGGED)) - bot_cover_flags |= BOT_COVER_EMAGGED - if(!(bot_cover_flags & BOT_COVER_MAINTS_OPEN)) - bot_cover_flags ^= BOT_COVER_LOCKED - balloon_alert(user, "controls [bot_cover_flags & BOT_COVER_LOCKED ? "locked" : "unlocked"]") - flick("[base_icon]-emagged", src) - playsound(src, SFX_SPARKS, 100, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) - return TRUE - -/mob/living/simple_animal/bot/mulebot/update_icon_state() //if you change the icon_state names, please make sure to update /datum/wires/mulebot/on_pulse() as well. <3 - . = ..() - icon_state = "[base_icon][(bot_mode_flags & BOT_MODE_ON) ? wires.is_cut(WIRE_AVOIDANCE) : 0]" - -/mob/living/simple_animal/bot/mulebot/update_overlays() - . = ..() - if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - . += "[base_icon]-hatch" - if(!load || ismob(load)) //mob offsets and such are handled by the riding component / buckling - return - var/mutable_appearance/load_overlay = mutable_appearance(load.icon, load.icon_state, layer + 0.01) - load_overlay.pixel_z = initial(load.pixel_z) + 11 - . += load_overlay - -/mob/living/simple_animal/bot/mulebot/ex_act(severity) - unload(0) - switch(severity) - if(EXPLODE_DEVASTATE) - qdel(src) - if(EXPLODE_HEAVY) - wires.cut_random() - wires.cut_random() - if(EXPLODE_LIGHT) - wires.cut_random() - - return TRUE - - -/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/proj) - . = ..() - if(. && !QDELETED(src)) //Got hit and not blown up yet. - if(prob(50) && !isnull(load)) - unload(0) - if(prob(25)) - visible_message(span_danger("Something shorts out inside [src]!")) - wires.cut_random(source = proj.firer) - -/mob/living/simple_animal/bot/mulebot/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Mule", name) - ui.open() - -/mob/living/simple_animal/bot/mulebot/ui_data(mob/user) - var/list/data = list() - data["powerStatus"] = bot_mode_flags & BOT_MODE_ON - data["locked"] = bot_cover_flags & BOT_COVER_LOCKED - data["siliconUser"] = HAS_SILICON_ACCESS(user) - data["mode"] = mode ? "[mode]" : "Ready" - data["modeStatus"] = "" - switch(mode) - if(BOT_IDLE, BOT_DELIVER, BOT_GO_HOME) - data["modeStatus"] = "good" - if(BOT_BLOCKED, BOT_NAV, BOT_WAIT_FOR_NAV) - data["modeStatus"] = "average" - if(BOT_NO_ROUTE) - data["modeStatus"] = "bad" - data["load"] = get_load_name() - data["destination"] = destination - data["homeDestination"] = home_destination - data["destinationsList"] = GLOB.deliverybeacontags - data["cellPercent"] = cell?.percent() - data["autoReturn"] = mulebot_delivery_flags & MULEBOT_RETURN_MODE - data["autoPickup"] = mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE - data["reportDelivery"] = mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE - data["botId"] = id - data["allowPossession"] = bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT - data["possessionEnabled"] = can_be_possessed - data["paiInserted"] = !!paicard - return data - -/mob/living/simple_animal/bot/mulebot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - var/mob/user = ui.user - if(. || (bot_cover_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(user))) - return - - switch(action) - if("lock") - if(HAS_SILICON_ACCESS(user)) - bot_cover_flags ^= BOT_COVER_LOCKED - return TRUE - if("on") - if(bot_mode_flags & BOT_MODE_ON) - turn_off() - else if(bot_cover_flags & BOT_COVER_MAINTS_OPEN) - to_chat(user, span_warning("[name]'s maintenance panel is open!")) - return - else if(cell) - if(!turn_on()) - to_chat(user, span_warning("You can't switch on [src]!")) - return - return TRUE - else - bot_control(action, user, params) // Kill this later. // Kill PDAs in general please - return TRUE - -/mob/living/simple_animal/bot/mulebot/bot_control(command, mob/user, list/params = list(), pda = FALSE) - if(pda && wires.is_cut(WIRE_RX)) // MULE wireless is controlled by wires. - return - - switch(command) - if("stop") - if(mode != BOT_IDLE) - bot_reset() - if("go") - if(mode == BOT_IDLE) - start() - if("home") - if(mode == BOT_IDLE || mode == BOT_DELIVER) - start_home() - if("destination") - var/new_dest - if(pda) - new_dest = tgui_input_list(user, "Enter Destination", "Mulebot Settings", GLOB.deliverybeacontags, destination) - else - new_dest = params["value"] - if(new_dest) - set_destination(new_dest) - if("setid") - var/new_id = tgui_input_text(user, "Enter ID", "ID Assignment", id, max_length = MAX_NAME_LEN) - if(new_id) - set_id(new_id) - name = "\improper MULEbot [new_id]" - if("sethome") - var/new_home = tgui_input_list(user, "Enter Home", "Mulebot Settings", GLOB.deliverybeacontags, home_destination) - if(new_home) - home_destination = new_home - if("unload") - if(load && mode != BOT_HUNT) - if(loc == target) - unload(loaddir) - else - unload(0) - if("autoret") - mulebot_delivery_flags ^= MULEBOT_RETURN_MODE - if("autopick") - mulebot_delivery_flags ^= MULEBOT_AUTO_PICKUP_MODE - if("report") - mulebot_delivery_flags ^= MULEBOT_REPORT_DELIVERY_MODE - -/mob/living/simple_animal/bot/mulebot/proc/buzz(type) - switch(type) - if(SIGH) - audible_message(span_hear("[src] makes a sighing buzz.")) - playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE) - if(ANNOYED) - audible_message(span_hear("[src] makes an annoyed buzzing sound.")) - playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE) - if(DELIGHT) - audible_message(span_hear("[src] makes a delighted ping!")) - playsound(src, 'sound/machines/ping.ogg', 50, FALSE) - if(CHIME) - audible_message(span_hear("[src] makes a chiming sound!")) - playsound(src, 'sound/machines/chime.ogg', 50, FALSE) - flick("[base_icon]1", src) - - -// mousedrop a crate to load the bot -// can load anything if hacked -/mob/living/simple_animal/bot/mulebot/mouse_drop_receive(atom/movable/AM, mob/user, params) - if(!isliving(user)) - return - - if(!istype(AM) || isdead(AM) || iseyemob(AM) || istype(AM, /obj/effect/dummy/phased_mob)) - return - - load(AM) - -// called to load a crate -/mob/living/simple_animal/bot/mulebot/proc/load(atom/movable/AM) - if(load || AM.anchored) - return - - if(!isturf(AM.loc)) //To prevent the loading from stuff from someone's inventory or screen icons. - return - - var/obj/structure/closet/crate/crate = AM - if(!istype(crate)) - if(!wires.is_cut(WIRE_LOADCHECK)) - buzz(SIGH) - return // if not hacked, only allow crates to be loaded - crate = null - - if(crate || isobj(AM)) - var/obj/O = AM - if(O.has_buckled_mobs() || (locate(/mob) in AM)) //can't load non crates objects with mobs buckled to it or inside it. - buzz(SIGH) - return - - if(crate) - crate.close() //make sure the crate is closed - - O.forceMove(src) - - else if(isliving(AM)) - if(!load_mob(AM)) //forceMove() is handled in buckling - return - - load = AM - mode = BOT_IDLE - update_appearance() - -///resolves the name to display for the loaded mob. primarily needed for the paranormal subtype since we don't want to show the name of ghosts riding it. -/mob/living/simple_animal/bot/mulebot/proc/get_load_name() - return load ? load.name : null - -/mob/living/simple_animal/bot/mulebot/proc/load_mob(mob/living/M) - can_buckle = TRUE - if(buckle_mob(M)) - passenger = M - load = M - can_buckle = FALSE - return TRUE - -/mob/living/simple_animal/bot/mulebot/post_unbuckle_mob(mob/living/M) - load = null - return ..() - -// called to unload the bot -// argument is optional direction to unload -// if zero, unload at bot's location -/mob/living/simple_animal/bot/mulebot/proc/unload(dirn) - if(QDELETED(load)) - if(load) //if our thing was qdel'd, there's likely a leftover reference. just clear it and remove the overlay. we'll let the bot keep moving around to prevent it abruptly stopping somewhere. - load = null - update_appearance() - return - - mode = BOT_IDLE - - var/atom/movable/cached_load = load //cache the load since unbuckling mobs clears the var. - - unbuckle_all_mobs() - - if(load) //don't have to do any of this for mobs. - load = null - cached_load.forceMove(loc) - cached_load.pixel_y = initial(cached_load.pixel_y) - cached_load.layer = initial(cached_load.layer) - SET_PLANE_EXPLICIT(cached_load, initial(cached_load.plane), src) - - if(dirn) //move the thing to the delivery point. - cached_load.Move(get_step(loc,dirn), dirn) - - update_appearance() - -/mob/living/simple_animal/bot/mulebot/get_status_tab_items() - . = ..() - if(cell) - . += "Charge Left: [cell.charge]/[cell.maxcharge]" - else - . += "No Cell Inserted!" - if(load) - . += "Current Load: [get_load_name()]" - - -/mob/living/simple_animal/bot/mulebot/call_bot() - ..() - if(path && length(path)) - target = ai_waypoint //Target is the end point of the path, the waypoint set by the AI. - destination = get_area_name(target, TRUE) - pathset = TRUE //Indicates the AI's custom path is initialized. - start() - -/mob/living/simple_animal/bot/mulebot/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) - . = ..() - if(has_gravity()) - for(var/mob/living/carbon/human/future_pancake in loc) - if(future_pancake.body_position == LYING_DOWN) - run_over(future_pancake) - - diag_hud_set_mulebotcell() - -/mob/living/simple_animal/bot/mulebot/handle_automated_action() - if(!(bot_mode_flags & BOT_MODE_ON)) - return - if(!has_power()) - turn_off() - return - if(mode == BOT_IDLE) - return - if(HAS_TRAIT(src, TRAIT_IMMOBILIZED)) - return - - var/speed = (wires.is_cut(WIRE_MOTOR1) ? 0 : 2) + (wires.is_cut(WIRE_MOTOR2) ? 0 : 1) - if(!speed)//Devide by zero man bad - return - num_steps = round(10/speed) //10, 5, or 3 steps, depending on how many wires we have cut - START_PROCESSING(SSfastprocess, src) - -/mob/living/simple_animal/bot/mulebot/process() - if(!(bot_mode_flags & BOT_MODE_ON) || client || (num_steps <= 0) || !has_power()) - return PROCESS_KILL - num_steps-- - - switch(mode) - if(BOT_IDLE) // idle - return - - if(BOT_DELIVER, BOT_GO_HOME, BOT_BLOCKED) // navigating to deliver,home, or blocked - if(loc == target) // reached target - at_target() - return - - else if(length(path) && target) // valid path - var/turf/next = path[1] - reached_target = FALSE - if(next == loc) - path -= next - return - if(isturf(next)) - if(SEND_SIGNAL(src, COMSIG_MOB_BOT_PRE_STEP) & COMPONENT_MOB_BOT_BLOCK_PRE_STEP) - return - var/oldloc = loc - var/moved = step_towards(src, next) // attempt to move - if(moved && oldloc != loc) // successful move - SEND_SIGNAL(src, COMSIG_MOB_BOT_STEP) - blockcount = 0 - path -= loc - if(destination == home_destination) - mode = BOT_GO_HOME - else - mode = BOT_DELIVER - - else // failed to move - - blockcount++ - mode = BOT_BLOCKED - if(blockcount == 3) - buzz(ANNOYED) - - if(blockcount > 10) // attempt 10 times before recomputing - // find new path excluding blocked turf - buzz(SIGH) - mode = BOT_WAIT_FOR_NAV - blockcount = 0 - addtimer(CALLBACK(src, PROC_REF(process_blocked), next), 2 SECONDS) - return - return - else - buzz(ANNOYED) - mode = BOT_NAV - return - else - mode = BOT_NAV - return - - if(BOT_NAV) // calculate new path - mode = BOT_WAIT_FOR_NAV - INVOKE_ASYNC(src, PROC_REF(process_nav)) - -/mob/living/simple_animal/bot/mulebot/proc/process_blocked(turf/next) - calc_path(avoid=next) - if(length(path)) - buzz(DELIGHT) - mode = BOT_BLOCKED - -/mob/living/simple_animal/bot/mulebot/proc/process_nav() - calc_path() - - if(length(path)) - blockcount = 0 - mode = BOT_BLOCKED - buzz(DELIGHT) - - else - buzz(SIGH) - - mode = BOT_NO_ROUTE - -// calculates a path to the current destination -// given an optional turf to avoid -/mob/living/simple_animal/bot/mulebot/calc_path(turf/avoid = null) - path = get_path_to(src, target, max_distance=250, access=access_card.GetAccess(), exclude=avoid, diagonal_handling=DIAGONAL_REMOVE_ALL) - -// sets the current destination -// signals all beacons matching the delivery code -// beacons will return a signal giving their locations -/mob/living/simple_animal/bot/mulebot/proc/set_destination(new_dest) - new_destination = new_dest - get_nav() - -// starts bot moving to current destination -/mob/living/simple_animal/bot/mulebot/proc/start() - if(!(bot_mode_flags & BOT_MODE_ON)) - return - if(destination == home_destination) - mode = BOT_GO_HOME - else - mode = BOT_DELIVER - get_nav() - -// starts bot moving to home -// sends a beacon query to find -/mob/living/simple_animal/bot/mulebot/proc/start_home() - if(!(bot_mode_flags & BOT_MODE_ON)) - return - INVOKE_ASYNC(src, PROC_REF(do_start_home)) - -/mob/living/simple_animal/bot/mulebot/proc/do_start_home() - set_destination(home_destination) - mode = BOT_BLOCKED - -// called when bot reaches current target -/mob/living/simple_animal/bot/mulebot/proc/at_target() - if(!reached_target) - radio_channel = RADIO_CHANNEL_SUPPLY //Supply channel - buzz(CHIME) - reached_target = TRUE - - if(pathset) //The AI called us here, so notify it of our arrival. - loaddir = dir //The MULE will attempt to load a crate in whatever direction the MULE is "facing". - if(calling_ai) - to_chat(calling_ai, span_notice("[icon2html(src, calling_ai)] [src] wirelessly plays a chiming sound!")) - calling_ai.playsound_local(calling_ai, 'sound/machines/chime.ogg', 40, FALSE) - calling_ai = null - radio_channel = RADIO_CHANNEL_AI_PRIVATE //Report on AI Private instead if the AI is controlling us. - - if(load) // if loaded, unload at target - if(mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE) - speak("Destination [RUNECHAT_BOLD("[destination]")] reached. Unloading [load].",radio_channel) - unload(loaddir) - else - // not loaded - if(mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE) // find a crate - var/atom/movable/AM - if(wires.is_cut(WIRE_LOADCHECK)) // if hacked, load first unanchored thing we find - for(var/atom/movable/A in get_step(loc, loaddir)) - if(!A.anchored) - AM = A - break - else // otherwise, look for crates only - AM = locate(/obj/structure/closet/crate) in get_step(loc,loaddir) - if(AM?.Adjacent(src)) - load(AM) - if(mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE) - speak("Now loading [load] at [RUNECHAT_BOLD("[get_area_name(src)]")].", radio_channel) - // whatever happened, check to see if we return home - - if((mulebot_delivery_flags & MULEBOT_RETURN_MODE) && home_destination && destination != home_destination) - // auto return set and not at home already - start_home() - mode = BOT_BLOCKED - else - bot_reset() // otherwise go idle - - -/mob/living/simple_animal/bot/mulebot/MobBump(mob/M) // called when the bot bumps into a mob - if(mind || !isliving(M)) //if there's a sentience controlling the bot, they aren't allowed to harm folks. - return ..() - var/mob/living/L = M - if(wires.is_cut(WIRE_AVOIDANCE)) // usually just bumps, but if the avoidance wire is cut, knocks them over. - if(iscyborg(L)) - visible_message(span_danger("[src] bumps into [L]!")) - else if(L.Knockdown(8 SECONDS)) - log_combat(src, L, "knocked down") - visible_message(span_danger("[src] knocks over [L]!")) - return ..() - -// when mulebot is in the same loc -/mob/living/simple_animal/bot/mulebot/proc/run_over(mob/living/carbon/human/crushed) - if (!(bot_cover_flags & BOT_COVER_EMAGGED) && !wires.is_cut(WIRE_AVOIDANCE)) - if (!has_status_effect(/datum/status_effect/careful_driving)) - crushed.visible_message(span_notice("[src] slows down to avoid crushing [crushed].")) - apply_status_effect(/datum/status_effect/careful_driving) - return // Player mules must be emagged before they can trample - - log_combat(src, crushed, "run over", addition = "(DAMTYPE: [uppertext(BRUTE)])") - crushed.visible_message( - span_danger("[src] drives over [crushed]!"), - span_userdanger("[src] drives over you!"), - ) - - playsound(src, 'sound/effects/splat.ogg', 50, TRUE) - - var/damage = rand(5, 15) - crushed.apply_damage(2 * damage, BRUTE, BODY_ZONE_HEAD, run_armor_check(BODY_ZONE_HEAD, MELEE)) - crushed.apply_damage(2 * damage, BRUTE, BODY_ZONE_CHEST, run_armor_check(BODY_ZONE_CHEST, MELEE)) - crushed.apply_damage(0.5 * damage, BRUTE, BODY_ZONE_L_LEG, run_armor_check(BODY_ZONE_L_LEG, MELEE)) - crushed.apply_damage(0.5 * damage, BRUTE, BODY_ZONE_R_LEG, run_armor_check(BODY_ZONE_R_LEG, MELEE)) - crushed.apply_damage(0.5 * damage, BRUTE, BODY_ZONE_L_ARM, run_armor_check(BODY_ZONE_L_ARM, MELEE)) - crushed.apply_damage(0.5 * damage, BRUTE, BODY_ZONE_R_ARM, run_armor_check(BODY_ZONE_R_ARM, MELEE)) - - add_mob_blood(crushed) - - var/turf/below_us = get_turf(src) - below_us.add_mob_blood(crushed) - - AddComponent(/datum/component/blood_walk, \ - blood_type = /obj/effect/decal/cleanable/blood/tracks, \ - target_dir_change = TRUE, \ - transfer_blood_dna = TRUE, \ - max_blood = 4) - -// player on mulebot attempted to move -/mob/living/simple_animal/bot/mulebot/relaymove(mob/living/user, direction) - if(user.incapacitated) - return - if(load == user) - unload(0) - - -//Update navigation data. Called when commanded to deliver, return home, or a route update is needed... -/mob/living/simple_animal/bot/mulebot/proc/get_nav() - if(!(bot_mode_flags & BOT_MODE_ON) || wires.is_cut(WIRE_BEACON)) - return - - for(var/obj/machinery/navbeacon/NB in GLOB.deliverybeacons) - if(NB.location == new_destination) // if the beacon location matches the set destination - // the we will navigate there - destination = new_destination - target = NB.loc - var/direction = NB.codes[NAVBEACON_DELIVERY_DIRECTION] // this will be the load/unload dir - if(!direction) - direction = NB.dir // fallback - if(direction) - loaddir = text2num(direction) - else - loaddir = 0 - if(destination) // No need to calculate a path if you do not have a destination set! - calc_path() - -/mob/living/simple_animal/bot/mulebot/emp_act(severity) - . = ..() - if(cell && !(. & EMP_PROTECT_CONTENTS)) - cell.emp_act(severity) - if(load) - load.emp_act(severity) - - -/mob/living/simple_animal/bot/mulebot/explode() - var/atom/Tsec = drop_location() - - new /obj/item/assembly/prox_sensor(Tsec) - new /obj/item/stack/rods(Tsec) - new /obj/item/stack/rods(Tsec) - new /obj/item/stack/cable_coil/cut(Tsec) - if(cell) - cell.forceMove(Tsec) - cell = null - - new /obj/effect/decal/cleanable/blood/oil(loc) - return ..() - -/mob/living/simple_animal/bot/mulebot/remove_air(amount) //To prevent riders suffocating - return loc ? loc.remove_air(amount) : null - -/mob/living/simple_animal/bot/mulebot/execute_resist() - . = ..() - if(load) - unload() - -/mob/living/simple_animal/bot/mulebot/UnarmedAttack(atom/A, proximity_flag, list/modifiers) - if(!can_unarmed_attack()) - return - if(isturf(A) && isturf(loc) && loc.Adjacent(A) && load) - unload(get_dir(loc, A)) - else - return ..() - -/// Checks whether the bot can complete a step_towards, checking whether the bot is on and has the charge to do the move. Returns COMPONENT_MOB_BOT_CANCELSTEP if the bot should not step. -/mob/living/simple_animal/bot/mulebot/proc/check_pre_step(datum/source) - SIGNAL_HANDLER - - if(!(bot_mode_flags & BOT_MODE_ON)) - return COMPONENT_MOB_BOT_BLOCK_PRE_STEP - - if((cell && (cell.charge < cell_move_power_usage)) || !has_power()) - turn_off() - return COMPONENT_MOB_BOT_BLOCK_PRE_STEP - -/// Uses power from the cell when the bot steps. -/mob/living/simple_animal/bot/mulebot/proc/on_bot_step(datum/source) - SIGNAL_HANDLER - - cell?.use(cell_move_power_usage) - -/mob/living/simple_animal/bot/mulebot/post_possession() - . = ..() - visible_message(span_notice("[src]'s safeties are locked on.")) - -/mob/living/simple_animal/bot/mulebot/paranormal//allows ghosts only unless hacked to actually be useful - name = "\improper GHOULbot" - desc = "A rather ghastly looking... Multiple Utility Load Effector bot? It only seems to accept paranormal forces, and for this reason is fucking useless." - icon_state = "paranormalmulebot0" - base_icon = "paranormalmulebot" - -/mob/living/simple_animal/bot/mulebot/paranormal/mouse_drop_receive(atom/movable/AM, mob/user, params) - var/mob/living/L = user - - if(user.incapacitated || (istype(L) && L.body_position == LYING_DOWN)) - return - - if(!istype(AM) || iseyemob(AM) || istype(AM, /obj/effect/dummy/phased_mob)) //allows ghosts! - return - - load(AM) - -/mob/living/simple_animal/bot/mulebot/paranormal/load(atom/movable/movable_atom) - if(load || movable_atom.anchored) - return - - if(!isturf(movable_atom.loc)) //To prevent the loading from stuff from someone's inventory or screen icons. - return - - if(isobserver(movable_atom)) - visible_message(span_warning("A ghostly figure appears on [src]!")) - movable_atom.forceMove(src) - RegisterSignal(movable_atom, COMSIG_MOVABLE_MOVED, PROC_REF(ghostmoved)) - - else if(!wires.is_cut(WIRE_LOADCHECK)) - buzz(SIGH) - return // if not hacked, only allow ghosts to be loaded - - else if(isobj(movable_atom)) - if(movable_atom.has_buckled_mobs() || (locate(/mob) in movable_atom)) //can't load non crates objects with mobs buckled to it or inside it. - buzz(SIGH) - return - - if(istype(movable_atom, /obj/structure/closet/crate)) - var/obj/structure/closet/crate/crate = movable_atom - crate.close() //make sure it's closed - - movable_atom.forceMove(src) - - else if(isliving(movable_atom) && !load_mob(movable_atom)) - return - - load = movable_atom - mode = BOT_IDLE - update_appearance() - -/mob/living/simple_animal/bot/mulebot/paranormal/update_overlays() - . = ..() - if(!isobserver(load)) - return - var/mutable_appearance/ghost_overlay = mutable_appearance('icons/mob/simple/mob.dmi', "ghost", layer + 0.01) //use a generic ghost icon, otherwise you can metagame who's dead if they have a custom ghost set - ghost_overlay.pixel_z = 12 - . += ghost_overlay - -/mob/living/simple_animal/bot/mulebot/paranormal/get_load_name() //Don't reveal the name of ghosts so we can't metagame who died and all that. - . = ..() - if(. && isobserver(load)) - return "Unknown" - -/mob/living/simple_animal/bot/mulebot/paranormal/proc/ghostmoved() - SIGNAL_HANDLER - visible_message(span_notice("The ghostly figure vanishes...")) - UnregisterSignal(load, COMSIG_MOVABLE_MOVED) - unload(0) - -#undef SIGH -#undef ANNOYED -#undef DELIGHT -#undef CHIME diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm index 2d62e8f314f5..d908364ce7b6 100644 --- a/code/modules/mob/living/simple_animal/damage_procs.dm +++ b/code/modules/mob/living/simple_animal/damage_procs.dm @@ -41,8 +41,8 @@ else if(damage_coeff[BURN]) . = adjustHealth(amount * damage_coeff[BURN] * CONFIG_GET(number/damage_multiplier), updating_health, forced) -/mob/living/simple_animal/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype, required_respiration_type) - if(!can_adjust_oxy_loss(amount, forced, required_biotype, required_respiration_type)) +/mob/living/simple_animal/adjust_oxy_loss(amount, updating_health = TRUE, forced = FALSE, required_biotype) + if(!can_adjust_oxy_loss(amount, forced, required_biotype)) return 0 if(forced) . = adjustHealth(amount * CONFIG_GET(number/damage_multiplier), updating_health, forced) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 8ddcdf02aa55..5e992bced04f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -442,7 +442,7 @@ Difficulty: Hard blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff. visible_message(span_hierophant("\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"")) visible_message(span_hierophant_warning("[src] shrinks, releasing a massive burst of energy!")) - hierophant_burst(null, get_turf(src), 10) + INVOKE_ASYNC(src, PROC_REF(hierophant_burst), null, get_turf(src), 10) set_stat(CONSCIOUS) // deathgasp won't run if dead, stupid ..() diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index 4bb2858bce17..749f60e58d20 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -11,7 +11,7 @@ emote_see = list("jiggles", "bounces in place") speak_emote = list("blorbles") atmos_requirements = null - hud_type = /datum/hud/ooze + hud_type = /datum/hud/living/ooze minbodytemp = 250 maxbodytemp = INFINITY faction = list(FACTION_SLIME) @@ -322,7 +322,7 @@ ///Ability that allows the owner to fire healing globules at mobs, targeting specific limbs. /datum/action/cooldown/globules name = "Fire Mending globule" - desc = "Fires a mending globule at someone, healing a specific limb of theirs." + desc = "Fires a mending globule at someone, healing a specific limb of theirs. Costs 5 nutrition." background_icon_state = "bg_hive" overlay_icon_state = "bg_hive_border" button_icon = 'icons/mob/actions/actions_slime.dmi' @@ -332,10 +332,16 @@ click_to_activate = TRUE /datum/action/cooldown/globules/set_click_ability(mob/on_who) + var/mob/living/simple_animal/hostile/ooze/oozy_owner = owner + if(istype(oozy_owner)) + if(oozy_owner.ooze_nutrition < 5) + to_chat(oozy_owner, span_warning("You need at least 5 nutrition to launch a mending globule.")) + return . = ..() if(!.) return + oozy_owner.adjust_ooze_nutrition(-5) to_chat(on_who, span_notice("You prepare to launch a mending globule. Left-click to fire at a target!")) /datum/action/cooldown/globules/unset_click_ability(mob/on_who, refund_cooldown = TRUE) @@ -344,21 +350,10 @@ return if(refund_cooldown) + var/mob/living/simple_animal/hostile/ooze/oozy_owner = owner + oozy_owner.adjust_ooze_nutrition(5) to_chat(on_who, span_notice("You stop preparing your mending globules.")) -/datum/action/cooldown/globules/Activate(atom/target) - . = ..() - if(!.) - return FALSE - - var/mob/living/simple_animal/hostile/ooze/oozy_owner = owner - if(istype(oozy_owner)) - if(oozy_owner.ooze_nutrition < 5) - to_chat(oozy_owner, span_warning("You need at least 5 nutrition to launch a mending globule.")) - return FALSE - - return TRUE - /datum/action/cooldown/globules/InterceptClickOn(mob/living/clicker, params, atom/target) . = ..() if(!.) @@ -426,7 +421,7 @@ ///This action lets you put a mob inside of a cacoon that will inject it with some chemicals. /datum/action/cooldown/gel_cocoon name = "Gel Cocoon" - desc = "Puts a mob inside of a cocoon, allowing it to slowly heal." + desc = "Puts a mob inside of a cocoon, allowing it to slowly heal. Costs 30 nutrition." background_icon_state = "bg_hive" overlay_icon_state = "bg_hive_border" button_icon = 'icons/mob/actions/actions_slime.dmi' diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 167deedd9569..ed834f938cae 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -199,9 +199,7 @@ /** * Some kind of debug verb that gives atmosphere environment details */ -/mob/proc/Cell() - set category = "Admin" - set hidden = TRUE +GAME_VERB_PROC(/mob, Cell, "Cell", "Admin") if(!loc) return @@ -210,10 +208,10 @@ var/t = "[span_notice("Coordinates: [x],[y] ")]\n" t += "[span_danger("Temperature: [environment.temperature] ")]\n" - for(var/id in environment.gases) - var/gas = environment.gases[id] - if(gas[MOLES]) - t+="[span_notice("[gas[GAS_META][META_GAS_NAME]]: [gas[MOLES]] ")]\n" + var/list/cached_gas_name = GAS_META[META_GAS_NAME] + for(var/gas_id, gas_moles in environment.moles) + if(gas_moles) + t += "[span_notice("[cached_gas_name[gas_id]]: [gas_moles] ")]\n" to_chat(usr, t) @@ -465,6 +463,11 @@ /mob/proc/get_item_by_slot(slot_id) as /obj/item return null +/mob/proc/get_items_by_slots(slot_ids) + . = list() + for (var/slot_id in bitfield_to_list(slot_ids)) + . += get_item_by_slot(slot_id) + /// Gets what slot the item on the mob is held in. /// Returns null if the item isn't in any slots on our mob. /// Does not check if the passed item is null, which may result in unexpected outcoms. @@ -562,8 +565,7 @@ * [this byond forum post](https://secure.byond.com/forum/?post=1326139&page=2#comment8198716) * for why this isn't atom/verb/examine() */ -/mob/verb/examinate(atom/examinify as mob|obj|turf in view()) //It used to be oview(12), but I can't really say why - set name = "Examine" +GAME_VERB(/mob, examinate, "Examine", null, atom/examinify as mob|obj|turf in view()) //It used to be oview(12), but I can't really say why DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(run_examinate), examinify)) @@ -825,9 +827,7 @@ * * Only works if flag/allow_respawn is allowed in config */ -/mob/verb/abandon_mob() - set name = "Respawn" - set category = "OOC" +GAME_VERB(/mob, abandon_mob, "Respawn", "OOC") switch(CONFIG_GET(flag/allow_respawn)) if(RESPAWN_FLAG_NEW_CHARACTER) @@ -893,31 +893,21 @@ /** * Sometimes helps if the user is stuck in another perspective or camera */ -/mob/verb/cancel_camera() - set name = "Cancel Camera View" - set category = "OOC" +GAME_VERB(/mob, cancel_camera, "Cancel Camera View", "OOC") reset_perspective(null) /** * Helpful for when a players uplink window gets glitched to above their screen. * preventing them from moving the UPLINK window. */ -/mob/verb/reset_ui_positions_for_mob() - set name = "Reset UI Positions" - set category = "OOC" +GAME_VERB(/mob, reset_ui_positions_for_mob, "Reset UI Positions", "OOC") SStgui.reset_ui_position(src) //suppress the .click/dblclick macros so people can't use them to identify the location of items or aimbot -/mob/verb/DisClick(argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num) - set name = ".click" - set hidden = TRUE - set category = null +GAME_VERB_HIDDEN(/mob, DisClick, ".click", argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num) return -/mob/verb/DisDblClick(argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num) - set name = ".dblclick" - set hidden = TRUE - set category = null +GAME_VERB_HIDDEN(/mob, DisDblClick, ".dblclick", argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num) return /// Adds this list to the output to the stat browser diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 43585ef78867..e4c205428e00 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -216,3 +216,7 @@ /// A ref of the area we're taking our ambient loop from. var/area/ambience_tracked_area + + /// Sound tokens currently playing for this mob. + /// Managed by /datum/sound_token and the soundtoken subsystem + var/list/datum/sound_token/sound_tokens diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index ebb9920abf30..4ec5c93af4ae 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -3,8 +3,7 @@ * * This is a hidden verb, likely for binding with winset for hotkeys */ -/client/verb/drop_item() - set hidden = TRUE +GAME_VERB_HIDDEN(/client, drop_item, "drop item") if(!iscyborg(mob) && mob.stat == CONSCIOUS) mob.dropItemToGround(mob.get_active_held_item()) return @@ -416,9 +415,7 @@ */ ///Hidden verb to cycle through head zone with repeated presses, head - eyes - mouth. Bound to 8 -/client/verb/body_toggle_head() - set name = "body-toggle-head" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_toggle_head, "body-toggle-head") if(!check_has_body_select()) return @@ -436,9 +433,7 @@ selector.set_selected_zone(next_in_line, mob) ///Hidden verb to target the head, unbound by default. -/client/verb/body_head() - set name = "body-head" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_head, "body-head") if(!check_has_body_select()) return @@ -447,9 +442,7 @@ selector.set_selected_zone(BODY_ZONE_HEAD, mob) ///Hidden verb to target the eyes, bound to 7 -/client/verb/body_eyes() - set name = "body-eyes" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_eyes, "body-eyes") if(!check_has_body_select()) return @@ -458,9 +451,7 @@ selector.set_selected_zone(BODY_ZONE_PRECISE_EYES, mob) ///Hidden verb to target the mouth, bound to 9 -/client/verb/body_mouth() - set name = "body-mouth" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_mouth, "body-mouth") if(!check_has_body_select()) return @@ -469,9 +460,7 @@ selector.set_selected_zone(BODY_ZONE_PRECISE_MOUTH, mob) ///Hidden verb to target the right arm, bound to 4 -/client/verb/body_r_arm() - set name = "body-r-arm" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_r_arm, "body-r-arm") if(!check_has_body_select()) return @@ -480,9 +469,7 @@ selector.set_selected_zone(BODY_ZONE_R_ARM, mob) ///Hidden verb to target the chest, bound to 5 -/client/verb/body_chest() - set name = "body-chest" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_chest, "body-chest") if(!check_has_body_select()) return @@ -491,9 +478,7 @@ selector.set_selected_zone(BODY_ZONE_CHEST, mob) ///Hidden verb to target the left arm, bound to 6 -/client/verb/body_l_arm() - set name = "body-l-arm" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_l_arm, "body-l-arm") if(!check_has_body_select()) return @@ -502,9 +487,7 @@ selector.set_selected_zone(BODY_ZONE_L_ARM, mob) ///Hidden verb to target the right leg, bound to 1 -/client/verb/body_r_leg() - set name = "body-r-leg" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_r_leg, "body-r-leg") if(!check_has_body_select()) return @@ -513,9 +496,7 @@ selector.set_selected_zone(BODY_ZONE_R_LEG, mob) ///Hidden verb to target the groin, bound to 2 -/client/verb/body_groin() - set name = "body-groin" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_groin, "body-groin") if(!check_has_body_select()) return @@ -524,9 +505,7 @@ selector.set_selected_zone(BODY_ZONE_PRECISE_GROIN, mob) ///Hidden verb to target the left leg, bound to 3 -/client/verb/body_l_leg() - set name = "body-l-leg" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, body_l_leg, "body-l-leg") if(!check_has_body_select()) return @@ -535,10 +514,7 @@ selector.set_selected_zone(BODY_ZONE_L_LEG, mob) ///Verb to toggle the walk or run status -/client/verb/toggle_walk_run() - set name = "toggle-walk-run" - set hidden = TRUE - set instant = TRUE +GAME_VERB_HIDDEN_INSTANT(/client, toggle_walk_run, "toggle-walk-run") if(isliving(mob)) var/mob/living/user_mob = mob user_mob.toggle_move_intent() @@ -615,5 +591,5 @@ /mob/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) . = ..() - if(client?.sound_tokens.len) + if(client && LAZYLEN(sound_tokens)) SSsound_tokens.clients_needing_update[client] = TRUE diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 901fd8fd1322..9d564daae61e 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -1,8 +1,7 @@ //Speech verbs. ///what clients use to speak. when you type a message into the chat bar in say mode, this is the first thing that goes off serverside. -/mob/verb/say_verb(message as text) - set name = VERB_SAY +GAME_VERB(/mob, say_verb, VERB_SAY, null, message as text) if(GLOB.say_disabled) //This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) @@ -14,8 +13,7 @@ QUEUE_OR_CALL_VERB_FOR(VERB_CALLBACK(src, TYPE_PROC_REF(/atom/movable, say), message), SSspeech_controller) ///Whisper verb -/mob/verb/whisper_verb(message as text) - set name = VERB_WHISPER +GAME_VERB(/mob, whisper_verb, VERB_WHISPER, null, message as text) if(GLOB.say_disabled) //This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) @@ -35,8 +33,7 @@ say(message, language = language) ///The me emote verb -/mob/verb/me_verb(message as text) - set name = VERB_ME +GAME_VERB(/mob, me_verb, VERB_ME, null, message as text) if(GLOB.say_disabled) //This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) @@ -172,7 +169,7 @@ return FALSE ///The amount of items we are looking for in the message -#define MESSAGE_MODS_LENGTH 6 +#define MESSAGE_MODS_LENGTH 7 /mob/proc/check_for_custom_say_emote(message, list/mods) var/customsaypos = findtext(message, "*") diff --git a/code/modules/mob_spawn/corpses/nonhuman_corpses.dm b/code/modules/mob_spawn/corpses/nonhuman_corpses.dm index e5864db94e45..42d7640eb2b6 100644 --- a/code/modules/mob_spawn/corpses/nonhuman_corpses.dm +++ b/code/modules/mob_spawn/corpses/nonhuman_corpses.dm @@ -35,7 +35,7 @@ /obj/effect/mob_spawn/corpse/facehugger/create(mob/user, newname, apply_prefs) var/obj/item/clothing/mask/facehugger/spawned_facehugger = new mob_type(loc) - spawned_facehugger.Die() + spawned_facehugger.die() qdel(src) ///dead goliath spawner diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index 2734fe4dca91..067107fee242 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -198,7 +198,7 @@ prompt_fail = tgui_alert(user, prompt, buttons = list("Yes", "No"), timeout = 10 SECONDS) != "Yes" var/species_pref = user.client.prefs.read_preference(/datum/preference/choiced/species) || /datum/species/human - if(!prompt_fail && user.started_as_observer && allow_custom_character && (GLOB.species_prototypes[species_pref].inherent_respiration_type & RESPIRATION_OXYGEN)) + if(!prompt_fail && user.started_as_observer && allow_custom_character && (GLOB.species_prototypes[species_pref].get_breath_type() == GAS_O2)) var/static_prompt = "Because you haven't taken a role so far, you may spawn in as \ [((allow_custom_character & GHOSTROLE_TAKE_PREFS_SPECIES) || species_pref == /datum/species/human) ? "" : "a human version of"] \ your customized character with a random name. Would you like to?" diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index c3674801e36e..0bb4d4342d0e 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -81,7 +81,7 @@ var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags) if(istype(overslot, /obj/item/clothing)) part_datum.overslotting = overslot - wearer.transferItemToLoc(overslot, part, force = TRUE) + transfer_part_to_loc(overslot, part, force = TRUE, preserve_suit_storage = can_preserve_suit_storage(part, wearer.s_store)) RegisterSignal(part, COMSIG_ATOM_EXITED, PROC_REF(on_overslot_exit)) if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) @@ -112,6 +112,27 @@ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE +/obj/item/mod/control/proc/can_preserve_suit_storage(obj/item/new_suit, obj/item/stored_item) + if(!istype(new_suit, /obj/item/clothing) || !stored_item) + return FALSE + if(HAS_TRAIT(stored_item, TRAIT_NODROP)) + return FALSE + var/obj/item/clothing/new_clothing = new_suit + if(is_type_in_typecache(stored_item, GLOB.any_suit_storage) || stored_item.w_class == WEIGHT_CLASS_TINY) + return TRUE + if(stored_item.w_class > WEIGHT_CLASS_BULKY) + return FALSE + return is_type_in_list(stored_item, new_clothing.allowed) + +/// Moves a MOD part between the wearer and the suit without forcing valid suit-storage contents to drop. +/obj/item/mod/control/proc/transfer_part_to_loc(obj/item/part, atom/newloc, force = FALSE, preserve_suit_storage = FALSE) + if(!preserve_suit_storage) + return wearer.transferItemToLoc(part, newloc, force = force) + if(!wearer.temporarilyRemoveItemFromInventory(part, force, idrop = FALSE, newloc = newloc)) + return FALSE + part.forceMove(newloc) + return TRUE + /// Retract a part of the suit from the user. /obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE) var/datum/mod_part/part_datum = get_part_datum(part) @@ -133,7 +154,8 @@ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) - wearer.transferItemToLoc(part, src, force = TRUE) + var/preserve_suit_storage = part_datum.overslotting && can_preserve_suit_storage(part_datum.overslotting, wearer.s_store) + transfer_part_to_loc(part, src, force = TRUE, preserve_suit_storage = preserve_suit_storage) if(part_datum.overslotting) var/obj/item/overslot = part_datum.overslotting if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm index da27123ba927..c7bf37c1fc48 100644 --- a/code/modules/mod/mod_construction.dm +++ b/code/modules/mod/mod_construction.dm @@ -6,6 +6,7 @@ /obj/item/mod/construction/helmet name = "MOD helmet" icon_state = "helmet" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mod/construction/helmet/examine(mob/user) . = ..() @@ -14,6 +15,7 @@ /obj/item/mod/construction/chestplate name = "MOD chestplate" icon_state = "chestplate" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mod/construction/chestplate/examine(mob/user) . = ..() @@ -22,6 +24,7 @@ /obj/item/mod/construction/gauntlets name = "MOD gauntlets" icon_state = "gauntlets" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mod/construction/gauntlets/examine(mob/user) . = ..() @@ -30,6 +33,7 @@ /obj/item/mod/construction/boots name = "MOD boots" icon_state = "boots" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mod/construction/boots/examine(mob/user) . = ..() @@ -83,6 +87,7 @@ name = "MOD external plating" desc = "External plating used to finish a MOD control unit." icon_state = "standard-plating" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) var/datum/mod_theme/theme = /datum/mod_theme /obj/item/mod/construction/plating/Initialize(mapload) @@ -94,24 +99,30 @@ /obj/item/mod/construction/plating/civilian theme = /datum/mod_theme/civilian + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/construction/plating/portable_suit theme = /datum/mod_theme/portable_suit + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/construction/plating/engineering theme = /datum/mod_theme/engineering + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/construction/plating/atmospheric theme = /datum/mod_theme/atmospheric + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/construction/plating/medical theme = /datum/mod_theme/medical + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/construction/plating/security theme = /datum/mod_theme/security /obj/item/mod/construction/plating/cosmohonk theme = /datum/mod_theme/cosmohonk + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/bananium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) #define START_STEP "start" #define CORE_STEP "core" @@ -127,6 +138,7 @@ name = "MOD shell" icon_state = "mod-construction_start" desc = "A MOD shell." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5) var/obj/item/core var/obj/item/helmet var/obj/item/chestplate diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index e9d0f5f3dbfc..5c6eac13c7b5 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -302,7 +302,7 @@ liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \ times less energy usage." /// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits. - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.05) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05) var/charge_modifier = 0.1 /obj/item/mod/core/ethereal/charge_source() diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 31797198dc85..1306d568e044 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -143,6 +143,7 @@ desc = "An intricate piece of machinery that creates a holographic video call with another MODlink-compatible device. Essentially a video necklace." icon_state = "modlink" actions_types = list(/datum/action/item_action/call_link) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) /// The installed power cell. var/obj/item/stock_parts/power_store/cell /// The MODlink datum we operate. @@ -260,7 +261,7 @@ balloon_alert(user, "frequency set") . = ITEM_INTERACT_SUCCESS -/obj/item/clothing/neck/link_scryer/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/neck/link_scryer/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!QDELETED(mod_link.link_call)) . += mutable_appearance('icons/mob/clothing/neck.dmi', "modlink_active") @@ -276,8 +277,8 @@ call_link(user, mod_link) /obj/item/clothing/neck/link_scryer/proc/get_user() - var/mob/living/carbon/user = loc - return istype(user) && user.wear_neck == src ? user : null + var/mob/living/user = loc + return istype(user) && user.get_item_by_slot(ITEM_SLOT_NECK) == src ? user : null /obj/item/clothing/neck/link_scryer/proc/can_call() var/mob/living/user = loc diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm index 5446884ec8b0..94f44635628a 100644 --- a/code/modules/mod/mod_paint.dm +++ b/code/modules/mod/mod_paint.dm @@ -10,6 +10,7 @@ desc = "This kit will repaint your MODsuit to something unique." icon = 'icons/obj/clothing/modsuit/mod_construction.dmi' icon_state = "paintkit" + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5) var/obj/item/mod/control/editing_mod var/atom/movable/screen/map_view/proxy_view var/list/current_color diff --git a/code/modules/mod/mod_part.dm b/code/modules/mod/mod_part.dm index a184df7f7a05..d74a6f247206 100644 --- a/code/modules/mod/mod_part.dm +++ b/code/modules/mod/mod_part.dm @@ -30,7 +30,7 @@ RegisterSignal(part_item, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, PROC_REF(get_separate_worn_overlays)) // If we're overslotting an item, add its visual as an underlay -/datum/mod_part/proc/get_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/datum/mod_part/proc/get_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (!overslotting || sealed) @@ -40,7 +40,7 @@ if (ismob(source.loc)) var/mob/as_mob = source.loc checked_slot = as_mob.get_slot_by_item(source) - var/mutable_appearance/worn_overlay = overslotting.build_worn_icon(default_layer = -draw_target.layer + 0.1, default_icon_file = get_default_icon_by_slot(checked_slot)) + var/mutable_appearance/worn_overlay = overslotting.build_worn_icon(default_layer = -draw_target.layer + 0.1, default_icon_file = get_default_icon_by_slot(checked_slot), bodyshape = bodyshape) for (var/mutable_appearance/overlay in worn_overlay.overlays) overlay.layer = draw_target.layer + 0.1 overlays += worn_overlay diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 3656cb5718f4..9943d24dc3e7 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -288,6 +288,7 @@ /obj/item/construction/rcd, /obj/item/fireaxe/metal_h2_axe, /obj/item/storage/bag/construction, + /obj/item/gun/ballistic/rifle/rebarxbow, ) variants = list( "engineering" = list( @@ -355,6 +356,7 @@ /obj/item/fireaxe/metal_h2_axe, /obj/item/pipe_dispenser, /obj/item/t_scanner, + /obj/item/gun/ballistic/rifle/rebarxbow, ) variants = list( "atmospheric" = list( @@ -427,6 +429,7 @@ /obj/item/pipe_dispenser, /obj/item/storage/bag/construction, /obj/item/t_scanner, + /obj/item/gun/ballistic/rifle/rebarxbow, ) variants = list( "advanced" = list( diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 432a26766538..a6d812f462b1 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -381,7 +381,7 @@ qdel(src) /// Adds the worn overlays to the suit. -/obj/item/mod/module/proc/add_module_overlay(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +/obj/item/mod/module/proc/add_module_overlay(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file, bodyshape = NONE) SIGNAL_HANDLER if (isinhands) diff --git a/code/modules/mod/modules/module_holding.dm b/code/modules/mod/modules/module_holding.dm index 1d8c86423332..06f3a8c5f24a 100644 --- a/code/modules/mod/modules/module_holding.dm +++ b/code/modules/mod/modules/module_holding.dm @@ -9,6 +9,7 @@ icon_state = "storage_holding" complexity = 4 storage_type = null // core-less modules should be safe to insert into bags of holding + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5) var/prebuilt = FALSE var/core_removable = TRUE var/datum/component/anomaly_locked_module/anomalock diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm index f79701e7961f..027bbf587bf6 100644 --- a/code/modules/mod/modules/module_kinesis.dm +++ b/code/modules/mod/modules/module_kinesis.dm @@ -16,6 +16,7 @@ overlay_state_active = "module_kinesis_on" accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav) required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /// Range of the knesis grab. var/grab_range = 8 /// Time between us hitting objects with kinesis. diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm index 657aa42b084c..e179f12390e2 100644 --- a/code/modules/mod/modules/module_pathfinder.dm +++ b/code/modules/mod/modules/module_pathfinder.dm @@ -18,6 +18,7 @@ incompatible_modules = list(/obj/item/mod/module/pathfinder) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) allow_flags = list(MODULE_ALLOW_INACTIVE|MODULE_ALLOW_UNWORN) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT) /// The pathfinding implant. var/obj/item/implant/mod/implant /// Whether the implant has been used or not @@ -196,6 +197,7 @@ desc = "Lets you recall a MODsuit to you at any time." actions_types = list(/datum/action/item_action/mod_recall) allow_multiple = TRUE // Surgrey is annoying if you loose your MOD + custom_materials = null /// The pathfinder module we are linked to. var/obj/item/mod/module/pathfinder/module implant_info = "Activated manually. Allows for the recall of a Modular Outerwear Device by the implant owner at any time." diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index f7d28ed13410..e75565e43a91 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -540,11 +540,16 @@ /obj/item/mod/module/stealth/wraith/unstealth(datum/source) if(!stealth_active) return - . = ..() - if(mod.active) - COOLDOWN_START(src, recloak_timer, 20 SECONDS) - addtimer(CALLBACK(src, PROC_REF(start_stealth)), 20 SECONDS) - stealth_active = FALSE + to_chat(mod.wearer, span_warning("[src] gets discharged from contact!")) + do_sparks(2, TRUE, src) + drain_power(use_energy_cost) + // Don't deactivate() directly as the module may not be active in the first place when stealthing + on_deactivation() + if(!mod.active) + return + COOLDOWN_START(src, recloak_timer, 20 SECONDS) + addtimer(CALLBACK(src, PROC_REF(start_stealth)), 20 SECONDS) + stealth_active = FALSE /obj/item/mod/module/stealth/wraith/examine_more(mob/user) . = ..() diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index 9b24c5b7dc3f..4bbf420b55b8 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -11,6 +11,7 @@ incompatible_modules = list(/obj/item/mod/module/welding) overlay_state_inactive = "module_welding" required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/welding/on_part_activation() var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) @@ -68,6 +69,7 @@ active_power_cost = DEFAULT_CHARGE_DRAIN * 0.5 incompatible_modules = list(/obj/item/mod/module/t_ray) required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// T-ray scan range. var/range = 4 @@ -87,6 +89,7 @@ active_power_cost = DEFAULT_CHARGE_DRAIN * 0.5 incompatible_modules = list(/obj/item/mod/module/magboot, /obj/item/mod/module/atrocinator) required_slots = list(ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5) /// Slowdown added onto the suit. var/slowdown_active = 0.5 /// A list of traits to add to the wearer when we're active (see: Magboots) @@ -132,6 +135,7 @@ incompatible_modules = list(/obj/item/mod/module/tether) cooldown_time = 1.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/tether/used() if(HAS_TRAIT_FROM(mod.wearer, TRAIT_TETHER_ATTACHED, REF(src))) @@ -376,6 +380,7 @@ incompatible_modules = list(/obj/item/mod/module/rad_protection) tgui_id = "rad_counter" required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING|ITEM_SLOT_ICLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5) /// Radiation threat level being perceived. var/perceived_threat_level @@ -421,6 +426,7 @@ incompatible_modules = list(/obj/item/mod/module/constructor, /obj/item/mod/module/quick_carry) cooldown_time = 11 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/constructor/on_part_activation() ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) @@ -444,6 +450,7 @@ complexity = 1 incompatible_modules = list(/obj/item/mod/module/welding/syndicate, /obj/item/mod/module/infiltrator) required_slots = list(ITEM_SLOT_HEAD) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/headprotector/on_part_activation() ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) @@ -476,6 +483,7 @@ desc = "An atmospheric resin mister, able to fix up areas quickly." device = /obj/item/extinguisher/mini/nozzle/mod volume = 250 + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mod/module/mister/atmos/Initialize(mapload) . = ..() diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 9cc733599ba6..6a6862e918bf 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -9,6 +9,7 @@ complexity = 1 incompatible_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/plate_compression) required_slots = list(ITEM_SLOT_BACK) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// The storage type to create for the module var/datum/storage/storage_type = /datum/storage/mod_storage @@ -38,7 +39,7 @@ UnregisterSignal(suit, COMSIG_ITEM_PRE_UNEQUIP) /obj/item/mod/module/storage/proc/on_suit_unequip(obj/item/source, force, atom/newloc, no_move, invdrop, silent) - if(QDELETED(source) || !mod.wearer || newloc == mod.wearer || !mod.wearer.s_store) + if(QDELETED(source) || !invdrop || !mod.wearer || newloc == mod.wearer || !mod.wearer.s_store) return if(!atom_storage?.attempt_insert(mod.wearer.s_store, mod.wearer, override = TRUE)) balloon_alert(mod.wearer, "storage failed!") @@ -55,6 +56,7 @@ complexity = 3 icon_state = "storage_large" storage_type = /datum/storage/mod_storage/expanded + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT) /obj/item/mod/module/storage/syndicate name = "MOD syndicate storage module" @@ -98,6 +100,7 @@ overlay_state_inactive = "module_jetpack" overlay_state_active = "module_jetpack_on" required_slots = list(ITEM_SLOT_BACK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /// Do we have stabilizers? If yes the user won't move from inertia. var/stabilize = TRUE /// Callback to see if we can thrust the user. @@ -228,6 +231,7 @@ incompatible_modules = list(/obj/item/mod/module/status_readout) tgui_id = "status_readout" required_slots = list(ITEM_SLOT_BACK) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2) /// Does this show damage types, body temp, satiety? var/display_detailed_vitals = TRUE /// Does this show DNA data? @@ -319,6 +323,7 @@ complexity = 1 incompatible_modules = list(/obj/item/mod/module/mouthhole) required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5) /// Former flags of the helmet. var/former_helmet_flags = NONE /// Former visor flags of the helmet. @@ -376,6 +381,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/emp_shield) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/emp_shield/on_install() . = ..() @@ -416,6 +422,7 @@ light_power = 1 light_on = FALSE required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// Charge drain per range amount. var/base_power = DEFAULT_CHARGE_DRAIN * 0.1 /// Minimum range we can set. @@ -526,6 +533,7 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN * 5 incompatible_modules = list(/obj/item/mod/module/longfall) required_slots = list(ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/longfall/on_part_activation() RegisterSignal(mod.wearer, COMSIG_LIVING_Z_IMPACT, PROC_REF(z_impact_react)) @@ -564,6 +572,7 @@ active_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/thermal_regulator) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// The temperature we are regulating to. var/temperature_setting = BODYTEMP_NORMAL /// Minimum temperature we can set. @@ -595,6 +604,7 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN * 3 incompatible_modules = list(/obj/item/mod/module/dna_lock, /obj/item/mod/module/eradication_lock) cooldown_time = 0.5 SECONDS + custom_materials = list(/datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// The DNA we lock with. var/dna = null @@ -671,6 +681,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/plasma_stabilizer) required_slots = list(ITEM_SLOT_HEAD) + custom_materials = list(/datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/plasma_stabilizer/generate_worn_overlay(obj/item/source, mutable_appearance/standing) . = ..() @@ -742,6 +753,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/signlang_radio) required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/signlang_radio/on_part_activation() ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src)) @@ -756,6 +768,7 @@ icon_state = "joint_torsion" complexity = 1 required_slots = list(ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT) var/power_per_step = DEFAULT_CHARGE_DRAIN * 0.45 /obj/item/mod/module/joint_torsion/on_part_activation() @@ -799,6 +812,7 @@ overlay_state_inactive = "module_recycler" overlay_state_active = "module_recycler" required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) /// A multiplier of the amount of material extracted from the item var/efficiency = 1 /// Items that will be collected @@ -935,6 +949,7 @@ overlay_state_inactive = "fishing_glove" incompatible_modules = list(/obj/item/mod/module/fishing_glove) required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) var/obj/item/fishing_rod/equipped /obj/item/mod/module/fishing_glove/Initialize(mapload) diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index c2e0a64deb95..eaa5f5176b22 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -67,7 +67,7 @@ var/turf/wearer_turf = get_turf(src) var/datum/gas_mixture/air = wearer_turf.return_air() - if(!(air.gases[/datum/gas/water_vapor] && (air.gases[/datum/gas/water_vapor][MOLES]) >= 5)) + if(air.moles[/datum/gas/water_vapor] < 5) return //return if there aren't more than 5 Moles of Water Vapor in the air snap_signal() @@ -341,7 +341,7 @@ RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk)) RegisterSignal(mod.wearer, COMSIG_MOVABLE_PREBUCKLE, PROC_REF(on_someone_buckled)) ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) - passtable_on(mod.wearer, REF(src)) + ADD_TRAIT(mod.wearer, TRAIT_PASSTABLE, REF(src)) check_upstairs() //todo at some point flip your screen around /obj/item/mod/module/atrocinator/deactivate(mob/activator, display_message = TRUE, deleting = FALSE) @@ -359,7 +359,7 @@ UnregisterSignal(mod.wearer, COMSIG_MOVABLE_PREBUCKLE) step_count = 0 REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) - passtable_off(mod.wearer, REF(src)) + REMOVE_TRAIT(mod.wearer, TRAIT_PASSTABLE, REF(src)) var/turf/open/openspace/current_turf = get_turf(mod.wearer) if(istype(current_turf)) current_turf.zFall(mod.wearer, falling_from_move = TRUE) diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 16e3bbe9061e..3e36b1734bfb 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -18,6 +18,7 @@ cooldown_time = 0.5 SECONDS tgui_id = "health_analyzer" required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// Scanning mode, changes how we scan something. var/mode = HEALTH_SCAN @@ -73,6 +74,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/quick_carry, /obj/item/mod/module/constructor) required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5) var/quick_carry_trait = TRAIT_QUICK_CARRY /obj/item/mod/module/quick_carry/on_part_activation() @@ -105,6 +107,7 @@ incompatible_modules = list(/obj/item/mod/module/injector) cooldown_time = 0.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/syringe/mod name = "MOD injector syringe" @@ -116,6 +119,7 @@ possible_transfer_amounts = list(5, 10, 15, 20, 30) volume = 30 inject_flags = INJECT_CHECK_PENETRATE_THICK + custom_materials = null /obj/item/reagent_containers/syringe/mod/update_reagent_overlay() if(reagents?.total_volume) @@ -138,6 +142,7 @@ incompatible_modules = list(/obj/item/mod/module/organizer, /obj/item/mod/module/microwave_beam) cooldown_time = 0.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// How many organs the module can hold. var/max_organs = 5 /// A list of all our organs. @@ -225,6 +230,7 @@ bodybag_type = /obj/structure/closet/body_bag/environmental/hardlight capture_time = 1.5 SECONDS packup_time = 0.5 SECONDS + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) ///Defibrillator - Gives the suit an extendable pair of shock paddles. /obj/item/mod/module/defibrillator @@ -245,6 +251,7 @@ incompatible_modules = list(/obj/item/mod/module/defibrillator) cooldown_time = 0.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5) var/defib_cooldown = 5 SECONDS /obj/item/mod/module/defibrillator/Initialize(mapload) @@ -307,6 +314,7 @@ cooldown_time = 1.5 SECONDS overlay_state_inactive = "module_threadripper" required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5) /// An associated list of ripped clothing and the body part covering slots they covered before var/list/ripped_clothing = list() @@ -380,9 +388,11 @@ device = /obj/item/surgical_processor/mod incompatible_modules = list(/obj/item/mod/module/surgical_processor) cooldown_time = 0.5 SECONDS + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/surgical_processor/mod name = "MOD surgical processor" + custom_materials = null /obj/item/mod/module/surgical_processor/preloaded desc = "A module using an onboard surgical computer which can be connected to other computers to download and \ diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index 04df80eb5408..83f698a23d94 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -14,6 +14,7 @@ incompatible_modules = list(/obj/item/mod/module/stealth) cooldown_time = 5 SECONDS required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING|ITEM_SLOT_ICLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) /// Whether or not the cloak turns off on bumping. var/bumpoff = TRUE /// The alpha applied when the cloak is on. @@ -547,7 +548,7 @@ return COMPONENT_CANCEL_ATTACK_CHAIN //BOTS, overloads them and causes a explosion -/mob/living/simple_animal/bot/ninjadrain_act(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) +/mob/living/basic/bot/ninjadrain_act(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) to_chat(src, span_boldwarning("Your circutry suddenly begins heating up!")) if(!do_after(ninja, 1.5 SECONDS, target = src, hidden = TRUE)) return COMPONENT_CANCEL_ATTACK_CHAIN diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm index 8a41d449edf8..3cae66ab525c 100644 --- a/code/modules/mod/modules/modules_science.dm +++ b/code/modules/mod/modules/modules_science.dm @@ -12,6 +12,7 @@ active_power_cost = DEFAULT_CHARGE_DRAIN * 0.2 incompatible_modules = list(/obj/item/mod/module/reagent_scanner) required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/reagent_scanner/on_activation(mob/activator) ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) @@ -60,6 +61,7 @@ incompatible_modules = list(/obj/item/mod/module/atrocinator, /obj/item/mod/module/anomaly_locked/antigrav) accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT) /obj/item/mod/module/anomaly_locked/antigrav/on_activation(mob/activator) if(mod.wearer.has_gravity()) @@ -93,6 +95,7 @@ incompatible_modules = list(/obj/item/mod/module/anomaly_locked/teleporter) accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/bluespace) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT) /// Time it takes to teleport var/teleport_time = 1 SECONDS /// Maximum turf range diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index 9f5f1a257b96..9446bb4e5528 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -9,6 +9,7 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN incompatible_modules = list(/obj/item/mod/module/magnetic_harness) required_slots = list(ITEM_SLOT_OCLOTHING) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5) /// Time before we activate the magnet. var/magnet_delay = 0.5 SECONDS /// The typecache of all guns we allow. @@ -116,6 +117,7 @@ incompatible_modules = list(/obj/item/mod/module/holster) cooldown_time = 0.5 SECONDS allow_flags = MODULE_ALLOW_INACTIVE + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) /// Gun we have holstered. var/obj/item/gun/holstered @@ -198,6 +200,7 @@ incompatible_modules = list(/obj/item/mod/module/criminalcapture) cooldown_time = 0.5 SECONDS required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) /// Time to capture a prisoner. var/capture_time = 2.5 SECONDS /// Time to dematerialize a bodybag. @@ -275,6 +278,7 @@ icon_state = "mirage_grenade" cooldown_time = 20 SECONDS overlay_state_inactive = "module_mirage_grenade" + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) dispense_type = /obj/item/grenade/mirage /obj/item/mod/module/dispenser/mirage/on_use(mob/activator) @@ -313,6 +317,7 @@ incompatible_modules = list(/obj/item/mod/module/projectile_dampener) cooldown_time = 1.5 SECONDS required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5) /// Radius of the dampening field. var/field_radius = 2 /// Damage multiplier on projectiles. @@ -354,6 +359,7 @@ incompatible_modules = list(/obj/item/mod/module/active_sonar) cooldown_time = 15 SECONDS required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5) /// Time between us displaying radial scans var/scan_cooldown_time = 0.5 SECONDS /// The current slice we're going to scan @@ -468,6 +474,7 @@ complexity = 3 incompatible_modules = list(/obj/item/mod/module/shooting_assistant) required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT) var/selected_mode = SHOOTING_ASSISTANT_OFF ///Association list, the assoc values are the balloon alerts shown to the user when the mode is set. var/static/list/available_modes = list( diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 1ef5a55b5c5f..0e23f8adb101 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -11,6 +11,7 @@ use_energy_cost = DEFAULT_CHARGE_DRAIN incompatible_modules = list(/obj/item/mod/module/bikehorn) cooldown_time = 1 SECONDS + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/bikehorn/on_use(mob/activator) playsound(src, 'sound/items/bikehorn.ogg', 100, FALSE) @@ -38,6 +39,7 @@ incompatible_modules = list(/obj/item/mod/module/microwave_beam, /obj/item/mod/module/organizer) cooldown_time = 4 SECONDS required_slots = list(ITEM_SLOT_GLOVES) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/microwave_beam/on_select_use(atom/target) . = ..() @@ -71,6 +73,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.2 incompatible_modules = list(/obj/item/mod/module/waddle) required_slots = list(ITEM_SLOT_FEET) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5) /obj/item/mod/module/waddle/on_part_activation() var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET) @@ -95,6 +98,7 @@ device = /obj/item/reagent_containers/spray/mister/janitor volume = 100 active_power_cost = DEFAULT_CHARGE_DRAIN + custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mod/module/mister/cleaner/Initialize(mapload) . = ..() diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 9fe1b8a137bb..2e3d21141f12 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -13,6 +13,7 @@ incompatible_modules = list(/obj/item/mod/module/gps) cooldown_time = 0.5 SECONDS allow_flags = MODULE_ALLOW_INACTIVE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mod/module/gps/Initialize(mapload) . = ..() @@ -36,6 +37,7 @@ overlay_state_inactive = "module_clamp" overlay_state_active = "module_clamp_on" required_slots = list(ITEM_SLOT_GLOVES, ITEM_SLOT_BACK) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) /// Time it takes to load a crate. var/load_time = 3 SECONDS /// The max amount of crates you can carry. @@ -136,6 +138,7 @@ overlay_state_active = "module_drill" required_slots = list(ITEM_SLOT_GLOVES) toolspeed = 0.25 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /// Are we currently in passive sphere mode? var/ballin = FALSE /// Last tick when we bumpmined. Prevents diagonal bumpnining being thrice as fast as normal @@ -209,7 +212,7 @@ var/has_ore = !isnull(rock.mineral_type) if (has_ore) toolspeed /= 2 - rock.attackby(src, bumper, null, null, exp_multiplier) + rock.manual_mine(bumper, src, exp_multiplier) if (has_ore) toolspeed *= 2 @@ -250,6 +253,7 @@ cooldown_time = 0.5 SECONDS allow_flags = MODULE_ALLOW_INACTIVE required_slots = list(ITEM_SLOT_BACK) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5) /// Are we currently dropping off ores? Used to prevent the bag from instantly picking up ores after dropping them var/dropping_ores = FALSE @@ -370,6 +374,7 @@ complexity = 2 idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 incompatible_modules = list(/obj/item/mod/module/disposal_connector) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT) var/disposal_tag = NONE /obj/item/mod/module/disposal_connector/Initialize(mapload) @@ -576,8 +581,8 @@ /obj/item/mod/module/sphere_transform name = "MOD sphere transform module" - desc = "A module able to move the suit's parts around, turning it and the user into a sphere. \ - The sphere can move quickly, even through lava, and launch mining micromissile to decimate terrain and fauna alike." + desc = "A module able to move the suit's parts around, turning it and the user into a sphere. If the modsuit is insulated with bileworm skin, the user will be protected from lava while active. \ + The sphere can move quickly, even through lava, and launch mining micromissiles to decimate terrain and fauna alike." icon_state = "sphere" module_type = MODULE_ACTIVE removable = FALSE @@ -658,6 +663,8 @@ mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere) RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange)) + RegisterSignal(mod.wearer, COMSIG_CARBON_GET_FIRE_OVERLAY, PROC_REF(replace_fire_overlay)) + mod.wearer.update_appearance(UPDATE_ICON) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().add_other_armor(armor_mod)) @@ -672,10 +679,23 @@ mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere) - UnregisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE) + UnregisterSignal(mod.wearer, list(COMSIG_MOB_STATCHANGE, COMSIG_CARBON_GET_FIRE_OVERLAY)) + mod.wearer.update_appearance(UPDATE_ICON) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(armor_mod)) +/obj/item/mod/module/sphere_transform/proc/replace_fire_overlay(datum/source, stacks, on_fire, fire_icon, list/overrides) + SIGNAL_HANDLER + + var/mutable_appearance/fire_overlay = mutable_appearance( + 'icons/mob/effects/onfire.dmi', + fire_icon, + -HIGHEST_LAYER, + appearance_flags = RESET_COLOR|KEEP_APART, + ) + fire_overlay.add_filter("mod_ball", 1, alpha_mask_filter(icon = icon('icons/mob/clothing/modsuit/mod_modules.dmi', "ball_mask"), flags = MASK_INVERSE)) + overrides += fire_overlay + /obj/item/mod/module/sphere_transform/used(mob/activator) if(!lavaland_equipment_pressure_check(get_turf(src))) balloon_alert(activator, "too much pressure!") diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm index 443db90c51c7..edb880d74ba0 100644 --- a/code/modules/mod/modules/modules_visor.dm +++ b/code/modules/mod/modules/modules_visor.dm @@ -30,6 +30,7 @@ access data such as patient files in a convenient readout. They say these also let you see behind you." icon_state = "medhud_visor" visor_traits = list(TRAIT_MEDICAL_HUD) + custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) //Diagnostic Visor - Gives you a diagnostic HUD. /obj/item/mod/module/visor/diaghud @@ -39,6 +40,7 @@ and integrity of such. They say these also let you see behind you." icon_state = "diaghud_visor" visor_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD) + custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) //Security Visor - Gives you a security HUD. /obj/item/mod/module/visor/sechud @@ -48,6 +50,7 @@ and generally know who to shoot. They say these also let you see behind you." icon_state = "sechud_visor" visor_traits = list(TRAIT_SECURITY_HUD) + custom_materials = list(/datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) //Meson Visor - Gives you meson vision. /obj/item/mod/module/visor/meson @@ -57,6 +60,7 @@ through walls, regardless of lighting conditions. They say these also let you see behind you." icon_state = "meson_visor" visor_traits = list(TRAIT_MESON_VISION, TRAIT_MADNESS_IMMUNE) + custom_materials = list(/datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) //Thermal Visor - Gives you thermal vision. /obj/item/mod/module/visor/thermal diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 1225479d73bf..f02176d50b15 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -13,6 +13,7 @@ armor_type = /datum/armor/item_modular_computer light_system = OVERLAY_LIGHT_DIRECTIONAL interaction_flags_mouse_drop = NEED_HANDS | ALLOW_RESTING + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" ///The ID currently stored in the computer. var/obj/item/card/id/stored_id @@ -153,6 +154,11 @@ install_default_programs() register_context() update_appearance() + return INITIALIZE_HINT_LATELOAD + +/obj/item/modular_computer/LateInitialize() + if(SStts.tts_enabled) + voice = SStts.computer_voice ///Initialize the shell for this item, or the physical machinery it belongs to. /obj/item/modular_computer/proc/add_shell_component(capacity = SHELL_CAPACITY_MEDIUM, shell_flags = NONE) @@ -412,6 +418,15 @@ if(response == "Yes") turn_on(user) +/obj/item/modular_computer/emp_act(severity) + . = ..() + if (. & EMP_PROTECT_CONTENTS) + return + + if(internal_cell) + internal_cell.emp_act(severity) + handle_power(1 SECONDS) + /obj/item/modular_computer/emag_act(mob/user, obj/item/card/emag/emag_card, forced) if(!enabled && !forced) balloon_alert(user, "turn it on first!") @@ -781,6 +796,7 @@ if(looping_sound) soundloop.stop() if(physical && loud) + playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE) physical.visible_message(span_notice("\The [src] shuts down.")) enabled = FALSE update_appearance() diff --git a/code/modules/modular_computers/computers/item/computer_power.dm b/code/modules/modular_computers/computers/item/computer_power.dm index 5cfc65803424..2dd51d3ab2a6 100644 --- a/code/modules/modular_computers/computers/item/computer_power.dm +++ b/code/modules/modular_computers/computers/item/computer_power.dm @@ -6,20 +6,14 @@ /obj/item/modular_computer/proc/use_energy(amount = 0, check_programs = TRUE) if(check_power_override(amount)) return TRUE - if(!internal_cell) return FALSE if(!amount || internal_cell.use(amount)) return TRUE if(!check_programs) return FALSE - internal_cell.use(min(amount, internal_cell.charge)) //drain it anyways. - if(active_program?.program_flags & PROGRAM_RUNS_WITHOUT_POWER) - return TRUE + INVOKE_ASYNC(src, PROC_REF(close_all_programs)) - for(var/datum/computer_file/program/programs as anything in stored_files) - if((programs.program_flags & PROGRAM_RUNS_WITHOUT_POWER) && open_program(program = programs)) - return TRUE return FALSE /obj/item/modular_computer/proc/give_power(amount) @@ -37,7 +31,7 @@ set_light_on(FALSE) for(var/datum/computer_file/program/programs as anything in idle_threads) programs.event_powerfailure() - shutdown_computer(loud = FALSE) + shutdown_computer() ///Takes the charge necessary from the Computer, shutting it off if it's unable to provide it. ///Charge depends on whether the PC is on, and what programs are running/idle on it. @@ -59,9 +53,8 @@ return FALSE ///Returns TRUE if the PC should not be using any power, FALSE otherwise. -///Checks to see if the current app allows to be ran without power, if so we'll run with it. /obj/item/modular_computer/proc/check_power_override(amount) - return !amount && !internal_cell?.charge && (active_program?.program_flags & PROGRAM_RUNS_WITHOUT_POWER) + return !amount && !internal_cell?.charge //Integrated (Silicon) tablets don't drain power, because the tablet is required to state laws, so it being disabled WILL cause problems. /obj/item/modular_computer/pda/silicon/check_power_override() diff --git a/code/modules/modular_computers/computers/item/disks/computer_disk.dm b/code/modules/modular_computers/computers/item/disks/computer_disk.dm index 6740aefbe126..84de84c3065c 100644 --- a/code/modules/modular_computers/computers/item/disks/computer_disk.dm +++ b/code/modules/modular_computers/computers/item/disks/computer_disk.dm @@ -1,4 +1,5 @@ /obj/item/disk/computer + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) /// The amount of free storage space var/max_capacity = 16 /// The amount of storage space occupied @@ -49,9 +50,11 @@ name = "advanced data disk" icon_state = "datadisk5" max_capacity = 64 + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2) /obj/item/disk/computer/super name = "super data disk" desc = "Removable disk used to store large amounts of data." icon_state = "datadisk3" max_capacity = 256 + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index d366e6b74ff1..628960587478 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -7,6 +7,7 @@ icon_state_powered = "laptop" icon_state_unpowered = "laptop-off" icon_state_menu = "menu" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4.5) hardware_flag = PROGRAM_LAPTOP max_idle_programs = 3 @@ -70,9 +71,7 @@ else return ..() -/obj/item/modular_computer/laptop/verb/open_computer() - set name = "Toggle Open" - set src in view(1) +GAME_VERB_SRC(/obj/item/modular_computer/laptop, open_computer, view(1), "Toggle Open", null) try_toggle_open(usr) diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 2f655ac1d0cb..e24e1b8ae84f 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -7,11 +7,15 @@ greyscale_config = /datum/greyscale_config/tablet/head greyscale_colors = "#67A364#a92323" max_capacity = parent_type::max_capacity * 2 + /// Fax type for a relevant head's tp connect their PDA to (for use with fax notification app) + var/fax_type = null + var/static/list/datum/computer_file/head_programs = list( /datum/computer_file/program/status, /datum/computer_file/program/science, /datum/computer_file/program/robocontrol, /datum/computer_file/program/budgetorders, + /datum/computer_file/program/faxbond, ) /obj/item/modular_computer/pda/heads/Initialize(mapload) @@ -20,12 +24,19 @@ var/datum/computer_file/program/program_type = new programs store_file(program_type) + if (ispath(fax_type, /obj/machinery/fax)) + var/datum/computer_file/program/faxbond/fax_notifier = locate() in stored_files + var/list/faxes_list = SSmachines.get_machines_by_type(fax_type) + var/obj/machinery/fax/heads_fax = length(faxes_list) ? pick(faxes_list) : null //there really shouldnt be more than one + fax_notifier.connect_fax(heads_fax) + /obj/item/modular_computer/pda/heads/captain name = "captain PDA" icon_state = "/obj/item/modular_computer/pda/heads/captain" greyscale_config = /datum/greyscale_config/tablet/captain greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B" inserted_item = /obj/item/pen/fountain/captain + fax_type = /obj/machinery/fax/heads/captain /obj/item/modular_computer/pda/heads/captain/Initialize(mapload) . = ..() @@ -42,6 +53,7 @@ icon_state = "/obj/item/modular_computer/pda/heads/hop" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#374f7e#a52f29#a52f29" + fax_type = /obj/machinery/fax/heads/hop starting_programs = list( /datum/computer_file/program/records/security, /datum/computer_file/program/job_management, @@ -53,6 +65,7 @@ greyscale_config = /datum/greyscale_config/tablet/head greyscale_colors = "#EA3232#0000CC" inserted_item = /obj/item/pen/red/security + fax_type = /obj/machinery/fax/heads/hos starting_programs = list( /datum/computer_file/program/records/security, ) @@ -62,6 +75,7 @@ icon_state = "/obj/item/modular_computer/pda/heads/ce" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#D99A2E#69DBF3#FAFAFA" + fax_type = /obj/machinery/fax/heads/ce starting_programs = list( /datum/computer_file/program/atmosscan, /datum/computer_file/program/alarm_monitor, @@ -73,6 +87,7 @@ icon_state = "/obj/item/modular_computer/pda/heads/cmo" greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#FAFAFA#000099#3F96CC" + fax_type = /obj/machinery/fax/heads/cmo starting_programs = list( /datum/computer_file/program/maintenance/phys_scanner, /datum/computer_file/program/records/medical, @@ -84,6 +99,7 @@ greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head greyscale_colors = "#FAFAFA#000099#B347BC" inserted_item = /obj/item/pen/fountain + fax_type = /obj/machinery/fax/heads/rd starting_programs = list( /datum/computer_file/program/borg_monitor, /datum/computer_file/program/scipaper_program, @@ -97,6 +113,7 @@ greyscale_colors = "#c4b787#18191e#8b4c31" inserted_item = /obj/item/pen/survival stored_paper = 20 + fax_type = /obj/machinery/fax/heads/qm starting_programs = list( /datum/computer_file/program/shipping, /datum/computer_file/program/restock_tracker, @@ -309,6 +326,9 @@ icon_state = "/obj/item/modular_computer/pda/botanist" greyscale_config = /datum/greyscale_config/tablet/stripe_thick greyscale_colors = "#50E193#E26F41#71A7CA" + starting_programs = list( + /datum/computer_file/program/botanical_encyclopedia + ) /obj/item/modular_computer/pda/cook name = "cook PDA" diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm index 768b2c29ebb4..a13618c17b91 100644 --- a/code/modules/modular_computers/file_system/computer_file.dm +++ b/code/modules/modular_computers/file_system/computer_file.dm @@ -87,8 +87,6 @@ * * background - Whether the app is running in the background. */ /datum/computer_file/program/proc/event_powerfailure() - if(program_flags & PROGRAM_RUNS_WITHOUT_POWER) - return kill_program() /** diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 215849b02c1c..84e3c78aa84e 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -8,7 +8,7 @@ /// (PROGRAM_ALL | PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_PDA) var/can_run_on_flags = PROGRAM_ALL /// Program-specific bitflags that tells the ModPC what the app is able to do special. - /// (PROGRAM_REQUIRES_NTNET|PROGRAM_ON_NTNET_STORE|PROGRAM_ON_SYNDINET_STORE|PROGRAM_UNIQUE_COPY|PROGRAM_HEADER|PROGRAM_RUNS_WITHOUT_POWER) + /// (PROGRAM_REQUIRES_NTNET|PROGRAM_ON_NTNET_STORE|PROGRAM_ON_SYNDINET_STORE|PROGRAM_UNIQUE_COPY|PROGRAM_HEADER) var/program_flags = PROGRAM_ON_NTNET_STORE ///How much power running this program costs. var/power_cell_use = PROGRAM_BASIC_CELL_USE diff --git a/code/modules/modular_computers/file_system/programs/botanical_encyclopedia.dm b/code/modules/modular_computers/file_system/programs/botanical_encyclopedia.dm new file mode 100644 index 000000000000..ded932f8434c --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/botanical_encyclopedia.dm @@ -0,0 +1,52 @@ +/datum/computer_file/program/botanical_encyclopedia + filename = "botanyapp" + filedesc = "Botanical Encyclopedia" + downloader_category = PROGRAM_CATEGORY_SERVICE + program_open_overlay = "bountyboard" + extended_desc = "A program for browsing knowledge about plants." + size = 2 + tgui_id = "NtosBotanicalEncyclopedia" + program_icon = FA_ICON_SEEDLING + + /// Lazy list of all seed data for valid seed types. + /// Generated when first needed to display the UI. + var/static/list/all_seed_data = null + +/datum/computer_file/program/botanical_encyclopedia/proc/generate_all_seed_data() + all_seed_data = list() + + for(var/obj/item/seeds/seed_type as anything in valid_subtypesof(/obj/item/seeds)) + if (ispath(seed_type, /obj/item/seeds/random)) + continue + + var/obj/item/seeds/seeds = new seed_type + + var/list/seed_data = generate_seed_data_from(seeds) + + seed_data["name"] = full_capitalize(initial(seed_type.plantname)) + seed_data["icon"] = initial(seed_type.growing_icon) + seed_data["icon_state"] = initial(seed_type.icon_harvest) || "[initial(seed_type.species)]-harvest" + + all_seed_data += list(seed_data) + + qdel(seeds) + +/datum/computer_file/program/botanical_encyclopedia/ui_static_data(mob/user) + if(isnull(all_seed_data)) + generate_all_seed_data() + + var/list/data = list() + + data["seeds"] = all_seed_data + data["cycle_seconds"] = HYDROTRAY_CYCLE_DELAY / 10 + data["trait_db"] = list() + + for(var/datum/plant_gene/trait as anything in GLOB.plant_traits) + data["trait_db"] += list(list( + "path" = trait.type, + "name" = trait.get_name(), + "icon" = trait.icon, + "description" = trait.description + )) + + return data diff --git a/code/modules/modular_computers/file_system/programs/emojipedia.dm b/code/modules/modular_computers/file_system/programs/emojipedia.dm index 84daee76cecf..3db7d4560414 100644 --- a/code/modules/modular_computers/file_system/programs/emojipedia.dm +++ b/code/modules/modular_computers/file_system/programs/emojipedia.dm @@ -11,11 +11,6 @@ /// Store the list of potential emojis here. var/static/list/emoji_list = icon_states(icon(EMOJI_SET)) -/datum/computer_file/program/emojipedia/New() - . = ..() - // Sort the emoji list so it's easier to find things and we don't have to keep sorting on ui_data since the number of emojis can not change in-game. - sortTim(emoji_list, /proc/cmp_text_asc) - /datum/computer_file/program/emojipedia/ui_static_data(mob_user) var/list/data = list() for(var/emoji in emoji_list) diff --git a/code/modules/modular_computers/file_system/programs/faxnotif.dm b/code/modules/modular_computers/file_system/programs/faxnotif.dm new file mode 100644 index 000000000000..7b359f9f52ce --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/faxnotif.dm @@ -0,0 +1,93 @@ +/datum/computer_file/program/faxbond + filename = "faxbond" + filedesc = "FaxBond" + can_run_on_flags = PROGRAM_PDA + downloader_category = PROGRAM_CATEGORY_DEVICE + program_open_overlay = "generic" + extended_desc = "A lightweight piece of software designed to decrease fax response time. \ + Will send a notification as soon as one of connected faxes receives a message. \ + Recommended by 9 out of 10 CentCom officers." + size = 1 + tgui_id = "NtosFaxBond" + program_icon = "fa-fax" + /// All relevant info of every connected fax, including weak ref for cleaning after ourself + name, area name and muted bool + var/list/connected_faxes = list() + +/** + * Proc for subscribing to faxes. Adds weakref to fax's listeners and updates fax related vars for program. Includes type checking. + * Arguments: + * * target - [/datum/computer_file/program/proc/tap] proc target, can be anything + */ +/datum/computer_file/program/faxbond/proc/connect_fax(obj/machinery/fax/target) + if(!istype(target)) + return FALSE + + var/our_id = target.fax_id + + if(!connected_faxes[our_id]) + LAZYSET(target.fax_listeners, REF(src), WEAKREF(src)) + + var/list/fax_info = list() + var/area/our_area = get_area(target) + fax_info["ref"] = WEAKREF(target) + fax_info["name"] = target.fax_name + fax_info["area_name"] = our_area.name + fax_info["muted"] = FALSE + connected_faxes[our_id] += fax_info + + return TRUE + +/** + * Disconnects a fax given its ID (if it was connected before), removing it from the relevant lists. + * Arguments: + * * fax_id - fax id to disconnect from our PDA + */ +/datum/computer_file/program/faxbond/proc/disconnect_fax(fax_id) + if(!connected_faxes[fax_id]) + return + + var/list/fax_info = connected_faxes[fax_id] + var/datum/weakref/fax_ref = fax_info["ref"] + var/obj/machinery/fax/our_fax = fax_ref.resolve() + if (our_fax) + LAZYREMOVE(our_fax.fax_listeners, REF(src)) + + connected_faxes -= fax_id + +/datum/computer_file/program/faxbond/Destroy() + . = ..() + for(var/fax in connected_faxes) + disconnect_fax(fax) + +/datum/computer_file/program/faxbond/tap(atom/tapped_atom, mob/living/user, list/modifiers) + return connect_fax(tapped_atom) + +/datum/computer_file/program/faxbond/ui_data(mob/user) + var/list/data = list() + + data["faxes_info"] = list() + for(var/fax_id in connected_faxes) + var/list/fax_info = connected_faxes[fax_id] + var/list/fax_data = list( + "id" = fax_id, + "name" = fax_info["name"], + "location" = fax_info["area_name"], + "muted" = fax_info["muted"], + ) + data["faxes_info"] += list(fax_data) + return data + +/datum/computer_file/program/faxbond/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("unsubscribe") + disconnect_fax(params["id"]) + return TRUE + if("mute") + var/list/fax_info = connected_faxes[params["id"]] + if (!fax_info) + return FALSE + fax_info["muted"] = !fax_info["muted"] + return TRUE diff --git a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm index 8db2d1ddc542..0a08bcb25ac5 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm @@ -17,7 +17,7 @@ return var/mob/living/carbon/carbon = tapped_atom carbon.visible_message(span_notice("[user] analyzes [tapped_atom]'s vitals.")) - last_record = healthscan(user, carbon, 1, tochat = FALSE) + last_record = healthscan(user, carbon, SCANNER_VERBOSE, tochat = FALSE) var/datum/tgui/active_ui = SStgui.get_open_ui(user, computer) if(active_ui) active_ui.send_full_update(force = TRUE) diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm index e393ff2a60fb..9096314200ca 100644 --- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm +++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm @@ -14,7 +14,7 @@ size = 0 undeletable = TRUE // It comes by default in tablets, can't be downloaded, takes no space and should obviously not be able to be deleted. power_cell_use = NONE - program_flags = PROGRAM_HEADER | PROGRAM_RUNS_WITHOUT_POWER | PROGRAM_CIRCUITS_RUN_WHEN_CLOSED + program_flags = PROGRAM_HEADER | PROGRAM_CIRCUITS_RUN_WHEN_CLOSED can_run_on_flags = PROGRAM_PDA ui_header = "ntnrc_idle.gif" tgui_id = "NtosMessenger" diff --git a/code/modules/modular_computers/file_system/programs/notepad.dm b/code/modules/modular_computers/file_system/programs/notepad.dm index af1659528300..2a84ae20cd6d 100644 --- a/code/modules/modular_computers/file_system/programs/notepad.dm +++ b/code/modules/modular_computers/file_system/programs/notepad.dm @@ -9,6 +9,10 @@ program_icon = "book" can_run_on_flags = PROGRAM_ALL circuit_comp_type = /obj/item/circuit_component/mod_program/notepad + + var/opened_file_uid + var/opened_file_on_disk = FALSE + var/opened_file_name = "Untitled" var/written_note = "Congratulations on your station upgrading to the new NtOS and Thinktronic based collaboration effort, \ bringing you the best in electronics and software since 2467!\n\ To help with navigation, we have provided the following definitions:\n\ @@ -19,17 +23,99 @@ Quarter - Either sides of Aft\n\ Bow - Either sides of Fore" +/datum/computer_file/program/notepad/proc/get_target_disk(opened_on_disk) + if(opened_on_disk && computer?.inserted_disk) + return computer.inserted_disk + return null + +/datum/computer_file/program/notepad/proc/find_text_file(uid, opened_on_disk, name) + var/obj/item/disk/computer/target_disk = get_target_disk(opened_on_disk) + var/datum/computer_file/data/text/file + if(uid) + file = computer.find_file_by_uid(uid, target_disk) + if(!file && length(name)) + file = computer.find_file_by_full_name("[name].TXT", target_disk) + return file + +/datum/computer_file/program/notepad/proc/load_text_file(datum/computer_file/data/text/file) + written_note = file.stored_text + opened_file_uid = file.uid + opened_file_on_disk = !!file.disk_host + opened_file_name = file.filename + +/datum/computer_file/program/notepad/proc/save_text_file(mob/user, name, extension, note, uid, opened_on_disk) + var/obj/item/disk/computer/target_disk = get_target_disk(opened_on_disk) + var/datum/computer_file/data/text/file = find_text_file(uid, opened_on_disk, name) + if(file) + file.stored_text = note + file.calculate_size() + load_text_file(file) + return + + var/datum/computer_file/data/text/new_file = create_text_file(extension) + new_file.filename = name + new_file.stored_text = note + new_file.calculate_size() + var/file_stored = target_disk ? target_disk.add_file(new_file) : computer.store_file(new_file, user) + if(!file_stored) + to_chat(user, span_warning("Error occured while saving the file!")) + qdel(new_file) + return + + load_text_file(new_file) + +/datum/computer_file/program/notepad/proc/create_text_file(extension) + if(extension == "LOG") + return new /datum/computer_file/data/text/logfile() + return new /datum/computer_file/data/text() + /datum/computer_file/program/notepad/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() + var/mob/user = ui.user switch(action) if("UpdateNote") written_note = params["newnote"] return TRUE + if("SaveNote") + written_note = params["newnote"] || written_note + save_text_file(user, opened_file_name, null, written_note, opened_file_uid, opened_file_on_disk) + return TRUE + if("Save") + written_note = params["note"] || written_note + save_text_file(user, opened_file_name, null, written_note, opened_file_uid, opened_file_on_disk) + return TRUE + if("SaveAs") + var/new_name = trim(params["name"], MAX_MESSAGE_LEN) + var/extension = params["extension"] + if(!length(new_name) || !filter_filename_pda(new_name)) + return + written_note = params["note"] || written_note + save_text_file(user, new_name, extension, written_note, params["uid"], opened_file_on_disk) + return TRUE + if("Open") + var/datum/computer_file/data/text/file = find_text_file(params["uid"], params["onDisk"], params["name"]) + if(!file) + return + load_text_file(file) + return TRUE /datum/computer_file/program/notepad/ui_data(mob/user) var/list/data = list() data["note"] = written_note + data["documentName"] = opened_file_name + data["files"] = list() + if(computer) + for(var/datum/computer_file/file in computer.get_files(TRUE)) + if(!istype(file, /datum/computer_file/data/text)) + continue + data["files"] += list(list( + "uid" = file.uid, + "name" = file.filename, + "filetype" = file.filetype, + "onDisk" = !!file.disk_host, + "displayName" = "[file.filename].[file.filetype]", + )) return data diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index 5e6659627170..08dc6217f8bd 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -30,6 +30,7 @@ PROGRAM_CATEGORY_ENGINEERING, PROGRAM_CATEGORY_SUPPLY, PROGRAM_CATEGORY_SCIENCE, + PROGRAM_CATEGORY_SERVICE, ) /datum/computer_file/program/ntnetdownload/kill_program(mob/user) diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm index 1176ce92114a..f7278fa3008e 100644 --- a/code/modules/modular_computers/file_system/programs/robocontrol.dm +++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm @@ -32,32 +32,32 @@ botcount = 0 - for(var/mob/living/simple_animal/bot/simple_bot as anything in GLOB.bots_list) - if(!is_valid_z_level(current_turf, get_turf(simple_bot)) || !(simple_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) //Only non-emagged bots on the same Z-level are detected! + for(var/mob/living/basic/bot/basic_bot as anything in GLOB.bots_list) + if(!is_valid_z_level(current_turf, get_turf(basic_bot)) || !(basic_bot.bot_mode_flags & BOT_MODE_REMOTE_ENABLED)) //Only non-emagged bots on the same Z-level are detected! continue - if(!simple_bot.allowed(user) && !simple_bot.check_access(computer.stored_id)) // Only check Bots we can access + if(!basic_bot.allowed(user) && !basic_bot.check_access(computer.stored_id)) // Only check Bots we can access continue var/list/newbot = list( - "name" = simple_bot.name, - "mode" = simple_bot.get_mode_ui(), - "model" = simple_bot.bot_type, - "locat" = get_area(simple_bot), - "bot_ref" = REF(simple_bot), + "name" = basic_bot.name, + "mode" = basic_bot.get_mode_ui(), + "model" = basic_bot.bot_type, + "locat" = get_area(basic_bot), + "bot_ref" = REF(basic_bot), "mule_check" = FALSE, ) - if(simple_bot.bot_type == MULE_BOT) - var/mob/living/simple_animal/bot/mulebot/simple_mulebot = simple_bot + if(basic_bot.bot_type == MULE_BOT) + var/mob/living/basic/bot/mulebot/basic_mulebot = basic_bot mulelist += list(list( - "name" = simple_mulebot.name, - "id" = simple_mulebot.id, - "dest" = simple_mulebot.destination, - "power" = simple_mulebot.cell ? simple_mulebot.cell.percent() : 0, - "home" = simple_mulebot.home_destination, - "autoReturn" = simple_mulebot.mulebot_delivery_flags & MULEBOT_RETURN_MODE, - "autoPickup" = simple_mulebot.mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE, - "reportDelivery" = simple_mulebot.mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE, - "mule_ref" = REF(simple_mulebot), - "load" = simple_mulebot.get_load_name(), + "name" = basic_mulebot.name, + "id" = basic_mulebot.id, + "dest" = basic_mulebot.ai_controller.blackboard[BB_MULEBOT_DESTINATION_BEACON], + "power" = basic_mulebot.cell ? basic_mulebot.cell.percent() : 0, + "home" = basic_mulebot.ai_controller.blackboard[BB_MULEBOT_HOME_BEACON], + "autoReturn" = basic_mulebot.mulebot_delivery_flags & MULEBOT_RETURN_MODE, + "autoPickup" = basic_mulebot.mulebot_delivery_flags & MULEBOT_AUTO_PICKUP_MODE, + "reportDelivery" = basic_mulebot.mulebot_delivery_flags & MULEBOT_REPORT_DELIVERY_MODE, + "mule_ref" = REF(basic_mulebot), + "load" = basic_mulebot.get_load_name(), )) newbot["mule_check"] = TRUE botlist += list(newbot) @@ -106,15 +106,15 @@ "report", "ejectpai", ) - var/mob/living/simple_animal/bot/simple_bot = locate(params["robot"]) in GLOB.bots_list + var/mob/living/basic/bot/basic_bot = locate(params["robot"]) in GLOB.bots_list if (action in standard_actions) - simple_bot.bot_control(action, current_user, id_card?.GetAccess()) + basic_bot.bot_control(action, current_user, id_card?.GetAccess()) if (action in MULE_actions) - simple_bot.bot_control(action, current_user, id_card?.GetAccess(), TRUE) + basic_bot.bot_control(action, current_user, id_card?.GetAccess(), TRUE) switch(action) if("summon") - simple_bot.bot_control(action, current_user, id_card ? id_card.access : id_card?.GetAccess()) + basic_bot.bot_control(action, current_user, id_card ? id_card.access : id_card?.GetAccess()) if("ejectcard") if(!computer || !computer.stored_id) return diff --git a/code/modules/modular_computers/file_system/programs/techweb.dm b/code/modules/modular_computers/file_system/programs/techweb.dm index 3f9afa610799..9e6230200731 100644 --- a/code/modules/modular_computers/file_system/programs/techweb.dm +++ b/code/modules/modular_computers/file_system/programs/techweb.dm @@ -39,7 +39,8 @@ /datum/computer_file/program/science/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet_batched/research_designs) + get_asset_datum(/datum/asset/spritesheet_batched/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet_batched/research_designs), ) // heavy data from this proc should be moved to static data when possible @@ -168,8 +169,17 @@ var/datum/design/design = SSresearch.techweb_designs[design_id] || SSresearch.error_design var/compressed_id = "[compress_id(design.id)]" var/size = spritesheet.icon_size_id(design.id) + + var/cost = list() + var/list/materials = design.materials + for(var/datum/material/mat in materials) + cost[mat.name] = OPTIMAL_COST(materials[mat]) + design_cache[compressed_id] = list( design.name, + cost, + design.build_type, + design.departmental_flags, "[size == size32x32 ? "" : "[size] "][design.id]" ) @@ -178,10 +188,23 @@ for (var/id in id_cache) flat_id_cache += id + var/list/department_flags = list() + for (var/datum/job_department/department as anything in subtypesof(/datum/job_department)) + if (department::department_bitflags) + department_flags["[department::department_bitflags]"] = department::department_name + + // Don't pass away flags as those are irrelevant to the station + var/list/build_types = GLOB.build_types_to_string.Copy() + build_types -= "[AWAY_IMPRINTER]" + build_types -= "[AWAY_LATHE]" + .["static_data"] = list( "node_cache" = node_cache, "design_cache" = design_cache, - "id_cache" = flat_id_cache + "id_cache" = flat_id_cache, + "SHEET_MATERIAL_AMOUNT" = SHEET_MATERIAL_AMOUNT, + "build_types" = build_types, + "department_flags" = department_flags, ) /** diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index a94dc9ade5e1..7f5b80f7adcb 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -11,6 +11,9 @@ /datum/movespeed_modifier/jetpack/wings multiplicative_slowdown = -0.3 +/datum/movespeed_modifier/jetpack/shoes + multiplicative_slowdown = -0.2 + /datum/movespeed_modifier/jetpack/raptor multiplicative_slowdown = 0.2 diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 3eec563c671d..2a77e8864134 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -162,9 +162,6 @@ /datum/movespeed_modifier/grown_killer_tomato variable = TRUE -/datum/movespeed_modifier/goliath_mount - multiplicative_slowdown = -9.5 - /datum/movespeed_modifier/goldgrub_mount multiplicative_slowdown = -4.5 diff --git a/code/modules/pai/card.dm b/code/modules/pai/card.dm index b5d2e183c9f8..be057d5a5175 100644 --- a/code/modules/pai/card.dm +++ b/code/modules/pai/card.dm @@ -14,6 +14,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// Spam alert prevention var/alert_cooldown diff --git a/code/modules/pai/debug.dm b/code/modules/pai/debug.dm index 1cc0115c7474..0677e10cc7a4 100644 --- a/code/modules/pai/debug.dm +++ b/code/modules/pai/debug.dm @@ -1,13 +1,9 @@ -/client/proc/makepAI(turf/target in GLOB.mob_list) - set category = "Admin.Fun" - set name = "Make pAI" - set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI" - +ADMIN_VERB(makepAI, R_FUN, "Make pAI", "Specify a location to spawn a pAI device, then specify a key to play that pAI", ADMIN_CATEGORY_FUN, turf/target in GLOB.mob_list) var/list/available = list() for(var/mob/player as anything in GLOB.player_list) if(player.client && player.key) available.Add(player) - var/mob/choice = tgui_input_list(usr, "Choose a player to play the pAI", "Spawn pAI", sort_names(available)) + var/mob/choice = tgui_input_list(user, "Choose a player to play the pAI", "Spawn pAI", sort_names(available)) if(isnull(choice)) return @@ -16,7 +12,7 @@ return if(!isobserver(choice)) - var/confirm = tgui_alert(usr, "[choice.key] isn't ghosting right now. Are you sure you want to yank them out of their body and place them in this pAI?", "Spawn pAI Confirmation", list("Yes", "No")) + var/confirm = tgui_alert(user, "[choice.key] isn't ghosting right now. Are you sure you want to yank them out of their body and place them in this pAI?", "Spawn pAI Confirmation", list("Yes", "No")) if(confirm != "Yes") return var/obj/item/pai_card/card = new(target) @@ -26,8 +22,8 @@ pai.real_name = pai.name pai.PossessByPlayer(choice.key) card.set_personality(pai) - if(SSpai.candidates[key]) - SSpai.candidates -= key + if(SSpai.candidates[user.key]) + SSpai.candidates -= user.key BLACKBOX_LOG_ADMIN_VERB("Make pAI") /** diff --git a/code/modules/pai/door_jack.dm b/code/modules/pai/door_jack.dm index 856306f0b3a4..759b0ada3d8d 100644 --- a/code/modules/pai/door_jack.dm +++ b/code/modules/pai/door_jack.dm @@ -114,6 +114,8 @@ balloon_alert(src, "failed! retracting...") QDEL_NULL(hacking_cable) return FALSE + if(!hacking_cable?.hacking_machine) + return FALSE var/obj/machinery/door/door = hacking_cable.hacking_machine balloon_alert(src, "success") door.open() diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index 37c9e943debf..b5b1099aabee 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -1,5 +1,4 @@ /mob/living/silicon/pai - can_be_held = TRUE can_buckle_to = FALSE density = FALSE desc = "A generic pAI hard-light holographics emitter." @@ -203,6 +202,7 @@ /mob/living/silicon/pai/Initialize(mapload) . = ..() AddComponent(/datum/component/holographic_nature) + AddElement(/datum/element/can_be_held) if(istype(loc, /obj/item/modular_computer)) give_messenger_ability() START_PROCESSING(SSfastprocess, src) diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 6bd119eef7b3..fe3b7535c542 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -44,7 +44,7 @@ */ var/obj/item/paper/top_paper -/obj/item/clipboard/suicide_act(mob/living/carbon/user) +/obj/item/clipboard/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins putting [user.p_their()] head into the clip of \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS //The clipboard's clip is very strong. Industrial duty. Can kill a man easily. @@ -121,25 +121,35 @@ return TRUE . = ..() -/obj/item/clipboard/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/paper)) +/obj/item/clipboard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/paper)) //Add paper into the clipboard - if(!user.transferItemToLoc(weapon, src)) - return + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING if(top_paper) UnregisterSignal(top_paper, COMSIG_ATOM_UPDATED_ICON) - RegisterSignal(weapon, COMSIG_ATOM_UPDATED_ICON, PROC_REF(on_top_paper_change)) - top_paper = weapon - to_chat(user, span_notice("You clip [weapon] onto [src].")) - else if(istype(weapon, /obj/item/pen) && !pen) + RegisterSignal(tool, COMSIG_ATOM_UPDATED_ICON, PROC_REF(on_top_paper_change)) + top_paper = tool + to_chat(user, span_notice("You clip [tool] onto [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/pen) && !pen) //Add a pen into the clipboard, attack (write) if there is already one - if(!usr.transferItemToLoc(weapon, src)) - return - pen = weapon - to_chat(usr, span_notice("You slot [weapon] into [src].")) - else if(top_paper) - top_paper.attackby(user.get_active_held_item(), user) - update_appearance() + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + pen = tool + to_chat(user, span_notice("You slot [tool] into [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(top_paper) + top_paper.item_interaction(user, user.get_active_held_item()) + update_appearance() + return ITEM_INTERACT_SUCCESS + + return NONE + /obj/item/clipboard/attack_self(mob/user) add_fingerprint(usr) diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index deb2adc4e11f..8723473f82da 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -32,12 +32,15 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) var/allow_exotic_faxes = FALSE /// This is where the dispatch and reception history for each fax is stored. var/list/fax_history = list() + /// Lazy assoc list of (FaxBond ref string = FaxBond weakref) connected to us + var/list/fax_listeners /// List of types which should always be allowed to be faxed var/static/list/allowed_types = list( /obj/item/canvas, /obj/item/paper, /obj/item/photo, /obj/item/tcgcard, + /obj/item/paperplane, ) /// List of types which should be allowed to be faxed if hacked var/static/list/exotic_types = list( @@ -71,6 +74,41 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) fax_name = "[current_area.name]" return ..() +/obj/machinery/fax/heads + abstract_type = /obj/machinery/fax/heads + +/obj/machinery/fax/heads/Initialize(mapload) + . = ..() + REGISTER_REQUIRED_MAP_ITEM(1, 1) + +/obj/machinery/fax/heads/captain + name = "Captain's Fax Machine" + fax_name = "Captain's Office" + +/obj/machinery/fax/heads/hop + name = "Head of Personnel's Fax Machine" + fax_name = "Head of Personnel's Office" + +/obj/machinery/fax/heads/hos + name = "Head of Security's Fax Machine" + fax_name = "Head of Security's Office" + +/obj/machinery/fax/heads/cmo + name = "Chief Medical Officer's Fax Machine" + fax_name = "Chief Medical Officer's Office" + +/obj/machinery/fax/heads/rd + name = "Research Director's Fax Machine" + fax_name = "Research Director's Office" + +/obj/machinery/fax/heads/ce + name = "Chief Engineer's Fax Machine" + fax_name = "Chief Engineer's Office" + +/obj/machinery/fax/heads/qm + name = "Quartermaster's Fax Machine" + fax_name = "Quartermaster's Office" + /obj/machinery/fax/admin/syndicate name = "Syndicate Fax Machine" @@ -183,20 +221,23 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) fax_name = new_fax_name return ITEM_INTERACT_SUCCESS -/obj/machinery/fax/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if (jammed && clear_jam(item, user)) - return - if (panel_open) - if (is_wire_tool(item)) - wires.interact(user) - return - if (can_load_item(item)) - if (!loaded_item_ref?.resolve()) - loaded_item_ref = WEAKREF(item) - item.forceMove(src) - update_appearance() - return - return ..() +/obj/machinery/fax/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK + if(jammed && clear_jam(tool, user)) + return ITEM_INTERACT_SUCCESS + if(panel_open && is_wire_tool(tool)) + wires.interact(user) + return ITEM_INTERACT_SUCCESS + if(can_load_item(tool)) + if(loaded_item_ref?.resolve()) + balloon_alert(user, "item already loaded!") + return ITEM_INTERACT_BLOCKING + loaded_item_ref = WEAKREF(tool) + tool.forceMove(src) + update_appearance() + return ITEM_INTERACT_SUCCESS + return NONE /** * Attempts to clean out a jammed machine using a passed item. @@ -403,6 +444,37 @@ GLOBAL_VAR_INIT(fax_autoprinting, FALSE) say("Received correspondence from [sender_name].") history_add("Receive", sender_name) addtimer(CALLBACK(src, PROC_REF(vend_item), loaded), 1.9 SECONDS) + SEND_SIGNAL(src, COMSIG_FAX_MESSAGE_RECEIVED, sender_name) + if(LAZYLEN(fax_listeners)) + alert_listeners(sender_name) + +/** + * Called when a fax is received, iterates through subscribed Faxbonds and notifies them. + * Arguments: + * * sender_name - Name of fax sender, used in the PDA message. +*/ +/obj/machinery/fax/proc/alert_listeners(sender_name) + set waitfor = FALSE + + var/list/targets = list() + for(var/refstring, weakref in fax_listeners) + var/datum/weakref/app_ref = weakref + var/datum/computer_file/program/faxbond/app = app_ref?.resolve() + if(!app || app.connected_faxes[fax_id]["muted"]) + continue + var/datum/computer_file/program/messenger/messenger = locate() in app.computer.stored_files + if(messenger) + targets += messenger + if(!length(targets)) + return + var/datum/signal/subspace/messaging/tablet_message/signal = new(src, list( + "fakename" = "Fax Notificator", + "fakejob" = "PDA Program", + "message" = "Your fax [fax_name] has received a new message from [sender_name]", + "targets" = targets, + "automated" = TRUE + )) + signal.send_to_receivers() /** * Procedure for animating an object entering or leaving the fax machine. diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 7f51baea891e..d0877cdd259f 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -43,23 +43,27 @@ for(var/obj/item/obj in src) obj.forceMove(loc) -/obj/structure/filingcabinet/attackby(obj/item/P, mob/living/user, list/modifiers, list/attack_modifiers) - if(P.tool_behaviour == TOOL_WRENCH && LAZYACCESS(modifiers, RIGHT_CLICK)) - to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) - if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) - set_anchored(!anchored) - else if(P.w_class < WEIGHT_CLASS_NORMAL) - if(!user.transferItemToLoc(P, src)) - return - to_chat(user, span_notice("You put [P] in [src].")) +/obj/structure/filingcabinet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.w_class < WEIGHT_CLASS_NORMAL) + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You put [tool] in [src].")) icon_state = "[initial(icon_state)]-open" sleep(0.5 SECONDS) icon_state = initial(icon_state) - else if(!user.combat_mode || (P.item_flags & NOBLUDGEON)) - to_chat(user, span_warning("You can't put [P] in [src]!")) - else - return ..() + return ITEM_INTERACT_SUCCESS + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + to_chat(user, span_warning("You can't put [tool] in [src]!")) + return ITEM_INTERACT_BLOCKING + return NONE + +/obj/structure/filingcabinet/wrench_act_secondary(mob/living/user, obj/item/tool) + to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) + if(!tool.use_tool(src, user, 20, volume=50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) + set_anchored(!anchored) + return ITEM_INTERACT_SUCCESS /obj/structure/filingcabinet/attack_hand(mob/living/carbon/user, list/modifiers) . = ..() diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 5ffe1ccbaf2f..b3bc4f087fc5 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -162,6 +162,7 @@ resistance_flags = FLAMMABLE max_integrity = 100 item_flags = NOBLUDGEON + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2) /// The label item applied when labelling something /obj/item/label diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 5b2459d3caf2..bdba1f80a84d 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -325,9 +325,7 @@ icon_state = initial(icon_state) return ..() -/obj/item/paper/verb/rename() - set name = "Rename paper" - set src in usr +GAME_VERB_SRC(/obj/item/paper, rename, usr, "Rename paper", null) if(!usr.can_read(src) || usr.is_blind() || INCAPACITATED_IGNORING(usr, INCAPABLE_RESTRAINTS|INCAPABLE_GRAB) || (isobserver(usr) && !isAdminGhostAI(usr))) return @@ -417,44 +415,44 @@ user.put_in_hands(new_plane) return new_plane -/obj/item/paper/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/item/paper/item_interaction(mob/living/user, obj/item/tool, list/modifiers) // Enable picking paper up by clicking on it with the clipboard or paper bin - if(istype(attacking_item, /obj/item/clipboard) || istype(attacking_item, /obj/item/paper_bin)) - attacking_item.attackby(src, user) - return + if(istype(tool, /obj/item/clipboard) || istype(tool, /obj/item/paper_bin)) + tool.item_interaction(user, src) + return ITEM_INTERACT_SUCCESS // Handle writing items. - var/writing_stats = attacking_item.get_writing_implement_details() + var/writing_stats = tool.get_writing_implement_details() if(!writing_stats) ui_interact(user) - return ..() + return NONE if(writing_stats["interaction_mode"] == MODE_WRITING) - if(!user.can_write(attacking_item)) - return + if(!user.can_write(tool)) + return ITEM_INTERACT_BLOCKING if(get_total_length() >= MAX_PAPER_LENGTH) to_chat(user, span_warning("This sheet of paper is full!")) - return + return ITEM_INTERACT_BLOCKING ui_interact(user) - return + return ITEM_INTERACT_SUCCESS // Handle stamping items. if(writing_stats["interaction_mode"] == MODE_STAMPING) if(!user.can_read(src) || user.is_blind()) //The paper's stampable window area is assumed approx 300x400 add_stamp(writing_stats["stamp_class"], rand(0, 300), rand(0, 400), rand(0, 360), writing_stats["stamp_icon_state"], stamp_icon = writing_stats["stamp_icon"]) - user.visible_message(span_notice("[user] blindly stamps [src] with \the [attacking_item]!")) - to_chat(user, span_notice("You stamp [src] with \the [attacking_item] the best you can!")) + user.visible_message(span_notice("[user] blindly stamps [src] with \the [tool]!")) + to_chat(user, span_notice("You stamp [src] with \the [tool] the best you can!")) playsound(src, 'sound/items/handling/standard_stamp.ogg', 50, vary = TRUE) else to_chat(user, span_notice("You ready your stamp over the paper! ")) ui_interact(user) - return + return ITEM_INTERACT_SUCCESS ui_interact(user) - return ..() + return NONE /// Secondary right click interaction to quickly stamp things /obj/item/paper/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) @@ -695,6 +693,7 @@ playsound(src, 'sound/items/handling/standard_stamp.ogg', 50, vary = TRUE) update_appearance() + ui.close() update_static_data_for_all_viewers() return TRUE if("add_text") diff --git a/code/modules/paperwork/paper_biscuit.dm b/code/modules/paperwork/paper_biscuit.dm index 75d14f551d2c..88f4a0067e88 100644 --- a/code/modules/paperwork/paper_biscuit.dm +++ b/code/modules/paperwork/paper_biscuit.dm @@ -10,6 +10,7 @@ contents_hidden = TRUE paper_overlay_state = "paperbiscuit_paper" folder_type_name = "biscuit" + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.2) /// Is biscuit cracked open or not? var/cracked = FALSE /// The paper slip inside, if there is one @@ -110,6 +111,7 @@ On the back, DO NOT DIGEST is printed in large lettering." icon_state = "paperbiscuit_secret" bg_color = "#355e9f" + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3) /obj/item/folder/biscuit/confidential/spare_id_safe_code name = "spare ID safe code biscuit card" @@ -164,3 +166,4 @@ icon_state = "paperbiscuit_secret_cracked" bg_color = "#355e9f" sealed_icon = "paperbiscuit_secret" + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index d1b6e776990c..9226a944401e 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -118,27 +118,29 @@ add_fingerprint(user) return ..() -/obj/item/paper_bin/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/paper_bin/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(at_overlay_limit()) dump_contents(drop_location(), TRUE) - return - if(istype(I, /obj/item/paper)) - var/obj/item/paper/paper = I - if(!user.transferItemToLoc(paper, src, silent = FALSE)) - return - to_chat(user, span_notice("You put [paper] in [src].")) - paper_stack += paper + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/paper)) + if(!user.transferItemToLoc(tool, src, silent = FALSE)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You put [tool] in [src].")) + paper_stack += tool total_paper += 1 update_appearance() - else if(istype(I, /obj/item/pen) && !bin_pen) - var/obj/item/pen/pen = I - if(!user.transferItemToLoc(pen, src, silent = FALSE)) - return - to_chat(user, span_notice("You put [pen] in [src].")) - bin_pen = pen + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/pen) && !bin_pen) + if(!user.transferItemToLoc(tool, src, silent = FALSE)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You put [tool] in [src].")) + bin_pen = tool update_appearance() - else - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/paper_bin/proc/at_overlay_limit() return overlays.len >= MAX_ATOM_OVERLAYS - 1 @@ -253,16 +255,19 @@ /obj/item/paper_bin/bundlenatural/fire_act(exposed_temperature, exposed_volume) qdel(src) -/obj/item/paper_bin/bundlenatural/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/paper/carbon)) - to_chat(user, span_warning("[W] won't fit into [src].")) - return - if(W.get_sharpness()) - if(W.use_tool(src, user, 1 SECONDS)) - to_chat(user, span_notice("You slice the cable from [src].")) - deconstruct(TRUE) - else - ..() +/obj/item/paper_bin/bundlenatural/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/paper/carbon)) + to_chat(user, span_warning("[tool] won't fit into [src].")) + return ITEM_INTERACT_BLOCKING + + if(tool.get_sharpness()) + if(!tool.use_tool(src, user, 1 SECONDS)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You slice the cable from [src].")) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + + return ..() /obj/item/paper_bin/carbon name = "carbon paper bin" diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 8c1a2ba42c9a..3cdd28a9ada0 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -80,16 +80,16 @@ user.put_in_hands(released_paper) -/obj/item/paperplane/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(IS_WRITING_UTENSIL(attacking_item)) +/obj/item/paperplane/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(IS_WRITING_UTENSIL(tool)) to_chat(user, span_warning("You should unfold [src] before changing it!")) - return - else if(istype(attacking_item, /obj/item/stamp)) //we don't randomize stamps on a paperplane - internal_paper.attackby(attacking_item, user) //spoofed attack to update internal paper. + return ITEM_INTERACT_BLOCKING + if(istype(tool, /obj/item/stamp)) //we don't randomize stamps on a paperplane + internal_paper.item_interaction(user, tool) //spoofed attack to update internal paper. update_appearance() add_fingerprint(user) - return - return ..() + return ITEM_INTERACT_SUCCESS + return NONE /obj/item/paperplane/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(iscarbon(hit_atom) && HAS_TRAIT(hit_atom, TRAIT_PAPER_MASTER)) diff --git a/code/modules/paperwork/paperwork.dm b/code/modules/paperwork/paperwork.dm index cec9076027af..68688589b73f 100644 --- a/code/modules/paperwork/paperwork.dm +++ b/code/modules/paperwork/paperwork.dm @@ -39,27 +39,27 @@ detailed_desc = span_notice("As you sift through the papers, you slowly start to piece together what you're reading.") -/obj/item/paperwork/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - if(.) - return +/obj/item/paperwork/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stamp)) + return NONE - if(stamped || !istype(attacking_item, /obj/item/stamp)) - return + if(stamped) + return ITEM_INTERACT_BLOCKING - if(istype(attacking_item, stamp_requested)) + if(istype(tool, stamp_requested)) add_stamp() to_chat(user, span_notice("You skim through the papers until you find a field reading 'STAMP HERE', and complete the paperwork.")) - return TRUE - var/datum/action/item_action/chameleon/change/stamp/stamp_action = locate() in attacking_item.actions + return ITEM_INTERACT_SUCCESS + + var/datum/action/item_action/chameleon/change/stamp/stamp_action = locate() in tool.actions if(isnull(stamp_action)) - to_chat(user, span_warning("You hunt through the papers for somewhere to use [attacking_item], but can't find anything.")) - return TRUE + to_chat(user, span_warning("You hunt through the papers for somewhere to use [tool], but can't find anything.")) + return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("[attacking_item] morphs into the appropriate stamp, which you use to complete the paperwork.")) + to_chat(user, span_notice("[tool] morphs into the appropriate stamp, which you use to complete the paperwork.")) stamp_action.update_look(stamp_requested) add_stamp() - return TRUE + return ITEM_INTERACT_SUCCESS /obj/item/paperwork/examine_more(mob/user) . = ..() @@ -233,16 +233,15 @@ else . += span_notice("These appear to just be a photocopy of the original documents.") -/obj/item/paperwork/photocopy/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(attacking_item, /obj/item/stamp/void) && !stamped && !voided) - to_chat(user, span_notice("You plant the [attacking_item] firmly onto the front of the documents.")) - stamp_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paper_stamp-void") - add_overlay(stamp_overlay) - voided = TRUE - stamped = TRUE //It won't get you any money, but it also can't LOSE you money now. - return - - return ..() +/obj/item/paperwork/photocopy/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stamp/void) || stamped || voided) + return ..() + to_chat(user, span_notice("You plant the [tool] firmly onto the front of the documents.")) + stamp_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paper_stamp-void") + add_overlay(stamp_overlay) + voided = TRUE + stamped = TRUE //It won't get you any money, but it also can't LOSE you money now. + return ITEM_INTERACT_SUCCESS //Ancient paperwork is a subtype of paperwork, meant to be used for any paperwork not spawned by the event. //It doesn't have any of the flavor text that the event ones spawn with. diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index deae5f862d29..2580e11bd4e2 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -574,6 +574,7 @@ desc = "This is a red ink pen exclusively provided to members of the Security Department. Its opposite end features a built-in holographic projector designed for issuing arrest prompts to individuals." icon_state = "pen_sec" COOLDOWN_DECLARE(holosign_cooldown) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT) /obj/item/pen/red/security/examine(mob/user) . = ..() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index ff6a78c92e2f..021cd69bd49b 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -882,6 +882,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) icon = 'icons/obj/service/bureaucracy.dmi' icon_state = "tonercartridge" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1) var/charges = 5 var/max_charges = 5 @@ -895,6 +896,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) /obj/item/toner/large name = "large toner cartridge" desc = "A hefty cartridge of Nanotrasen ValueBrand toner. Fits photocopiers and autopainters alike." + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) charges = 25 max_charges = 25 custom_price = 30 // DARKPACK EDIT ADD - ECONOMY @@ -905,6 +907,8 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) /obj/item/toner/extreme name = "extremely large toner cartridge" desc = "Why would ANYONE need THIS MUCH TONER?" + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) charges = 200 max_charges = 200 diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 256926e7d52e..734c9f9284ab 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -77,6 +77,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32) icon_state = "ticketmachine_off" result_path = /obj/machinery/ticket_machine pixel_shift = 32 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) ///Increments the counter by one, if there is a ticket after the current one we are serving. ///If we have a current ticket, remove it from the top of our tickets list and replace it with the next one if applicable @@ -87,7 +88,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32) QDEL_NULL(current_ticket) if(LAZYLEN(tickets)) current_ticket = tickets[1] - current_number++ //Increment the one we're serving. + current_number = current_ticket.number //Destroyed tickets are removed from the queue, so the next ticket's number may have skipped ahead. playsound(src, 'sound/announcer/announcement/announce_dig.ogg', 50, FALSE) say("Now serving [current_ticket]!") if(!(obj_flags & EMAGGED)) @@ -178,26 +179,30 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32) maptext_x = 4 maptext = MAPTEXT(current_number) //Finally, apply the maptext -/obj/machinery/ticket_machine/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - ..() - if(istype(I, /obj/item/hand_labeler_refill)) - if(!(ticket_number >= max_number)) - to_chat(user, span_notice("[src] refuses [I]! There [max_number - ticket_number == 1 ? "is" : "are"] still [max_number - ticket_number] ticket\s left!")) - return - to_chat(user, span_notice("You start to refill [src]'s ticket holder (doing this will reset its ticket count!).")) - if(do_after(user, 3 SECONDS, target = src)) - to_chat(user, span_notice("You insert [I] into [src] as it whirs nondescriptly.")) - qdel(I) - ticket_number = 0 - current_number = 0 - if(tickets.len) - for(var/obj/item/ticket_machine_ticket/ticket in tickets) - ticket.audible_message(span_notice("\the [ticket] disperses!"), hearing_distance = SAMETILE_MESSAGE_RANGE) - qdel(ticket) - tickets.Cut() - max_number = initial(max_number) - update_appearance() - return +/obj/machinery/ticket_machine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/hand_labeler_refill)) + return NONE + + if(!(ticket_number >= max_number)) + to_chat(user, span_notice("[src] refuses [tool]! There [max_number - ticket_number == 1 ? "is" : "are"] still [max_number - ticket_number] ticket\s left!")) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You start to refill [src]'s ticket holder (doing this will reset its ticket count!).")) + if(!do_after(user, 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You insert [tool] into [src] as it whirs nondescriptly.")) + qdel(tool) + ticket_number = 0 + current_number = 0 + if(tickets.len) + for(var/obj/item/ticket_machine_ticket/ticket in tickets) + ticket.audible_message(span_notice("\the [ticket] disperses!"), hearing_distance = SAMETILE_MESSAGE_RANGE) + qdel(ticket) + tickets.Cut() + max_number = initial(max_number) + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/ticket_machine/proc/reset_cooldown() ready = TRUE diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 7689a4ec7b3c..3f541335fa5a 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -17,7 +17,7 @@ w_class = WEIGHT_CLASS_SMALL obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_NECK - custom_materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*1.5) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) custom_price = PAYCHECK_CREW * 2 /// Cooldown before we can take another picture. @@ -129,15 +129,15 @@ if(loc != user) to_chat(user, span_warning("You must be holding the camera to continue!")) return FALSE - desired_x = tgui_input_number(user, "Set camera half width Aperture", "Zoom", picture_size_x, CAMERA_PICTURE_SIZE_HARD_LIMIT, 2) + desired_x = tgui_input_number(user, "Set camera half width Aperture", "Zoom", picture_size_x, CAMERA_PICTURE_SIZE_HARD_LIMIT, 1) if(!desired_x || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH|ALLOW_PAI) || loc != user) return FALSE - desired_y = tgui_input_number(user, "Set camera half height Aperture", "Zoom", picture_size_y, CAMERA_PICTURE_SIZE_HARD_LIMIT, 2) + desired_y = tgui_input_number(user, "Set camera half height Aperture", "Zoom", picture_size_y, CAMERA_PICTURE_SIZE_HARD_LIMIT, 1) if(!desired_y || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH|ALLOW_PAI) || loc != user) return FALSE - picture_size_x = clamp(desired_x, 2, CAMERA_PICTURE_SIZE_HARD_LIMIT) - picture_size_y = clamp(desired_y, 2, CAMERA_PICTURE_SIZE_HARD_LIMIT) + picture_size_x = clamp(desired_x, 1, CAMERA_PICTURE_SIZE_HARD_LIMIT) + picture_size_y = clamp(desired_y, 1, CAMERA_PICTURE_SIZE_HARD_LIMIT) if(user) to_chat(user, span_notice("The dimensions of the picture will be [EXAMINE_HINT("[APERTURE_TO_METERS(picture_size_x)]x[APERTURE_TO_METERS(picture_size_y)]")]")) diff --git a/code/modules/photography/photos/frame.dm b/code/modules/photography/photos/frame.dm index 983cb00977d2..58f9202791c8 100644 --- a/code/modules/photography/photos/frame.dm +++ b/code/modules/photography/photos/frame.dm @@ -12,16 +12,17 @@ var/obj/item/photo/displayed pixel_shift = 30 -/obj/item/wallframe/picture/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/photo)) - if(!displayed) - if(!user.transferItemToLoc(I, src)) - return - displayed = I - update_appearance() - else - to_chat(user, span_warning("\The [src] already contains a photo.")) - ..() +/obj/item/wallframe/picture/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/photo)) + return NONE + if(displayed) + to_chat(user, span_warning("\The [src] already contains a photo.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + displayed = tool + update_appearance() + return ITEM_INTERACT_SUCCESS //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/wallframe/picture/attack_hand(mob/user, list/modifiers) @@ -145,19 +146,17 @@ return ITEM_INTERACT_SUCCESS -/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - - if(istype(I, /obj/item/photo)) - if(framed) - to_chat(user, span_warning("\The [src] already contains a photo.")) - return TRUE - var/obj/item/photo/P = I - if(!user.transferItemToLoc(P, src)) - return - set_and_save_framed(P) - update_appearance() - return TRUE - ..() +/obj/structure/sign/picture_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/photo)) + return NONE + if(framed) + to_chat(user, span_warning("\The [src] already contains a photo.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + set_and_save_framed(tool) + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/structure/sign/picture_frame/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 1d98d728b298..6f981e5fb47a 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -68,27 +68,25 @@ icon = I return ..() -/obj/item/photo/suicide_act(mob/living/carbon/human/user) +/obj/item/photo/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!"))//when you wanna look at photo of waifu one last time before you die... - if (!ishuman(user) || user.physique == MALE) - playsound(user, 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg', 50, TRUE)//EVERY TIME I DO IT MAKES ME LAUGH - else - playsound(user, 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg', 50, TRUE) + user.emote("laugh", intentional = FALSE, forced = TRUE) // EVERY TIME I DO IT MAKES ME LAUGH return OXYLOSS /obj/item/photo/attack_self(mob/user) user.examinate(src) -/obj/item/photo/attackby(obj/item/P, mob/user, list/modifiers, list/attack_modifiers) - if(IS_WRITING_UTENSIL(P)) - if(!user.can_write(P)) - return - var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing", max_length = 128) - if(txt && user.can_perform_action(src)) - playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) - scribble = txt - else - return ..() +/obj/item/photo/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!IS_WRITING_UTENSIL(tool)) + return NONE + if(!user.can_write(tool)) + return ITEM_INTERACT_BLOCKING + var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing", max_length = 128) + if(!txt || !user.can_perform_action(src)) + return ITEM_INTERACT_BLOCKING + playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) + scribble = txt + return ITEM_INTERACT_SUCCESS /obj/item/photo/examine(mob/user) . = ..() @@ -114,9 +112,7 @@ + "", "window=photo_showing;size=[scribble ? "480x580" : "480x480"]") onclose(user, "[name]") -/obj/item/photo/verb/rename() - set name = "Rename photo" - set src in usr +GAME_VERB_SRC(/obj/item/photo, rename, usr, "Rename photo", null) var/n_name = tgui_input_text(usr, "What would you like to label the photo?", "Photo Labelling", max_length = MAX_NAME_LEN) //loc.loc check is for making possible renaming photos in clipboards diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm index 00b2e995f244..8e8875b3321a 100644 --- a/code/modules/point/point.dm +++ b/code/modules/point/point.dm @@ -7,7 +7,7 @@ * * Not intended as a replacement for the mob verb */ -/atom/movable/proc/point_at(atom/pointed_atom, intentional = FALSE) +/atom/movable/proc/point_at(atom/pointed_atom, intentional = FALSE, pointer_type = /obj/effect/temp_visual/point) if(!isturf(loc)) return FALSE @@ -20,12 +20,12 @@ return FALSE var/turf/our_tile = get_turf(src) - var/obj/visual = new /obj/effect/temp_visual/point(our_tile, invisibility) + var/obj/visual = new pointer_type(our_tile, invisibility) SEND_SIGNAL(src, COMSIG_MOVABLE_POINTED, pointed_atom, visual, intentional) animate(visual, pixel_x = (tile.x - our_tile.x) * ICON_SIZE_X + pointed_atom.pixel_x, pixel_y = (tile.y - our_tile.y) * ICON_SIZE_Y + pointed_atom.pixel_y, time = 1.7, easing = EASE_OUT) - return TRUE + return visual /mob/point_at(atom/pointed_atom, intentional = FALSE) . = ..() @@ -84,6 +84,13 @@ pixel_y = old_loc.pixel_y SetInvisibility(set_invis) +/obj/effect/temp_visual/point/holo + icon_state = "arrow_large_white" + +/obj/effect/temp_visual/point/holo/Initialize(mapload, set_invis = 0) + . = ..() + makeHologram() + #undef POINT_TIME /** @@ -99,8 +106,7 @@ * * overridden here and in /mob/dead/observer for different point span classes and sanity checks */ -/mob/verb/pointed(atom/A as mob|obj|turf in view(client.view, src)) - set name = "Point To" +GAME_VERB(/mob, pointed, "Point To", null, atom/A as mob|obj|turf in view(client.view, src)) if(isnull(A) || istype(A, /obj/effect/temp_visual/point) || isarea(A)) return FALSE diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index 7335f9a9c442..eae4e3f181e8 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -660,11 +660,12 @@ equipment = autoset(equipment, AUTOSET_ON) lighting = autoset(lighting, AUTOSET_ON) environ = autoset(environ, AUTOSET_ON) - //If nightlights are on, and we're recovering from low power/nightlight event, we'll remove it. - var/nightshift_disabled = !(locate(/datum/round_event/nightshift) in SSevents.running) - if(nightshift_lights && (nightshift_disabled || low_power_nightshift_lights)) + //At this point the APC is fully powered. If we've swapped to night lights because of low power then + //that gets undone here. The night lights are disabled depending on nightshift or security level. + if(nightshift_lights && low_power_nightshift_lights) low_power_nightshift_lights = FALSE - if(nightshift_disabled) + var/nightshift_disabled = !(locate(/datum/round_event/nightshift) in SSevents.running) + if(nightshift_disabled || SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) INVOKE_ASYNC(src, PROC_REF(set_nightshift), FALSE) if(cell_percent > APC_CHANNEL_ALARM_TRESHOLD) alarm_manager.clear_alarm(ALARM_POWER) @@ -807,6 +808,7 @@ name = "power control module" icon_state = "power_mod" desc = "Heavy-duty switching circuits for power control." + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /// Returns the amount of time it will take the APC at its current trickle charge rate to reach a charge level. If the APC is functionally not charging, returns null. /obj/machinery/power/apc/proc/time_to_charge(joules) diff --git a/code/modules/power/battery.dm b/code/modules/power/battery.dm index 3f0256129b3c..1d8318d7c884 100644 --- a/code/modules/power/battery.dm +++ b/code/modules/power/battery.dm @@ -12,7 +12,7 @@ throwforce = 5 throw_speed = 2 throw_range = 2 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*12, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2) + custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2) rating_base = STANDARD_BATTERY_CHARGE maxcharge = STANDARD_BATTERY_CHARGE chargerate = STANDARD_BATTERY_RATE @@ -27,14 +27,13 @@ name = "upgraded megacell" desc = "A battery with a slightly higher capacity than normal!" maxcharge = STANDARD_BATTERY_CHARGE * 2.5 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*2.5) chargerate = STANDARD_BATTERY_RATE * 0.5 /obj/item/stock_parts/power_store/battery/high name = "high-capacity megacell" icon_state = "hcellbig" maxcharge = STANDARD_BATTERY_CHARGE * 10 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) chargerate = STANDARD_BATTERY_RATE * 0.75 /obj/item/stock_parts/power_store/battery/high/empty @@ -44,7 +43,7 @@ name = "super-capacity megacell" icon_state = "scellbig" maxcharge = STANDARD_BATTERY_CHARGE * 20 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) chargerate = STANDARD_BATTERY_RATE /obj/item/stock_parts/power_store/battery/super/empty @@ -54,7 +53,7 @@ name = "hyper-capacity megacell" icon_state = "hpcellbig" maxcharge = STANDARD_BATTERY_CHARGE * 30 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5) chargerate = STANDARD_BATTERY_RATE * 1.5 /obj/item/stock_parts/power_store/battery/hyper/empty @@ -65,7 +64,14 @@ desc = "A rechargeable transdimensional megacell." icon_state = "bscellbig" maxcharge = STANDARD_BATTERY_CHARGE * 40 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6) + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, + /datum/material/bluespace = SMALL_MATERIAL_AMOUNT, + ) chargerate = STANDARD_BATTERY_RATE * 2 /obj/item/stock_parts/power_store/battery/bluespace/empty @@ -75,7 +81,6 @@ name = "\improper Nanotrasen brand rechargeable AA megacell" desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT maxcharge = STANDARD_BATTERY_CHARGE * 0.5 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*1) /obj/item/stock_parts/power_store/battery/crap/empty empty = TRUE diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index c9cdd89d6b51..d0d3eeabf59f 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -118,7 +118,7 @@ icon_state = "hcell" emp_damage_modifier = 3 maxcharge = STANDARD_CELL_CHARGE * 10 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.6) chargerate = STANDARD_CELL_RATE * 0.75 @@ -130,7 +130,7 @@ icon_state = "scell" emp_damage_modifier = 5 maxcharge = STANDARD_CELL_CHARGE * 20 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) chargerate = STANDARD_CELL_RATE /obj/item/stock_parts/power_store/cell/super/empty @@ -141,7 +141,7 @@ icon_state = "hpcell" emp_damage_modifier = 5 maxcharge = STANDARD_CELL_CHARGE * 30 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) chargerate = STANDARD_CELL_RATE * 1.5 /obj/item/stock_parts/power_store/cell/hyper/empty @@ -153,7 +153,14 @@ icon_state = "bscell" emp_damage_modifier = 5 maxcharge = STANDARD_CELL_CHARGE * 40 - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6) + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.6, + /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, + /datum/material/bluespace = SMALL_MATERIAL_AMOUNT, + ) chargerate = STANDARD_CELL_RATE * 2 /obj/item/stock_parts/power_store/cell/bluespace/empty diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 4a4d47be62d9..3b92db4c6101 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -98,31 +98,33 @@ return ITEM_INTERACT_SUCCESS -/obj/structure/floodlight_frame/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(istype(O, /obj/item/stack/cable_coil) && state == FLOODLIGHT_NEEDS_WIRES) - var/obj/item/stack/S = O - if(S.use(5)) - icon_state = "floodlight_c2" - state = FLOODLIGHT_NEEDS_SECURING - return - else +/obj/structure/floodlight_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/cable_coil) && state == FLOODLIGHT_NEEDS_WIRES) + var/obj/item/stack/coil = tool + if(!coil.use(5)) balloon_alert(user, "need 5 cable pieces!") - return + return ITEM_INTERACT_BLOCKING + + icon_state = "floodlight_c2" + state = FLOODLIGHT_NEEDS_SECURING + return ITEM_INTERACT_SUCCESS - if(istype(O, /obj/item/light/tube)) + + if(istype(tool, /obj/item/light/tube)) if(state != FLOODLIGHT_NEEDS_LIGHTS) balloon_alert(user, "construction not completed!") - return - var/obj/item/light/tube/L = O - if(L.status != LIGHT_BROKEN) // light tube not broken. - new /obj/machinery/power/floodlight(loc) - qdel(src) - qdel(O) - return - else //A minute of silence for all the accidentally broken light tubes. + return ITEM_INTERACT_BLOCKING + + if(astype(tool, /obj/item/light/tube).status == LIGHT_BROKEN) // light tube broken. balloon_alert(user, "light tube is broken!") - return - ..() + return ITEM_INTERACT_BLOCKING + + new /obj/machinery/power/floodlight(loc) + qdel(src) + qdel(tool) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/structure/floodlight_frame/completed name = "floodlight frame" @@ -262,7 +264,6 @@ return ..() /obj/machinery/power/floodlight/wrench_act(mob/living/user, obj/item/tool) - . = ..() default_unfasten_wrench(user, tool) change_setting(FLOODLIGHT_OFF) if(anchored) @@ -272,11 +273,14 @@ return ITEM_INTERACT_SUCCESS /obj/machinery/power/floodlight/screwdriver_act(mob/living/user, obj/item/tool) - . = ..() + if(panel_open) + panel_open = FALSE + balloon_alert(user, "closed panel") + return ITEM_INTERACT_SUCCESS change_setting(FLOODLIGHT_OFF) panel_open = TRUE balloon_alert(user, "opened panel") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/power/floodlight/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index ccff4b0bdbd1..d97d13e4bc7e 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -83,10 +83,10 @@ GLOBAL_LIST_EMPTY(gravity_generators) main_part = null return ..() -/obj/machinery/gravity_generator/part/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/gravity_generator/part/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!main_part) - return - return main_part.attackby(weapon, user) + return NONE + return main_part.item_interaction(user, tool) /obj/machinery/gravity_generator/part/get_status() if(!main_part) @@ -235,42 +235,48 @@ GLOBAL_LIST_EMPTY(gravity_generators) . += span_notice("The new plating just needs to be bolted into place now.") // Fixing the gravity generator. -/obj/machinery/gravity_generator/main/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(machine_stat & BROKEN) - switch(broken_state) - if(GRAV_NEEDS_SCREWDRIVER) - if(weapon.tool_behaviour == TOOL_SCREWDRIVER) - to_chat(user, span_notice("You secure the screws of the framework.")) - weapon.play_tool_sound(src) - broken_state++ - update_appearance() - return - if(GRAV_NEEDS_WELDING) - if(weapon.tool_behaviour == TOOL_WELDER) - if(weapon.use_tool(src, user, 0, volume=50)) - to_chat(user, span_notice("You mend the damaged framework.")) - broken_state++ - update_appearance() - return - if(GRAV_NEEDS_PLASTEEL) - if(istype(weapon, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/PS = weapon - if(PS.get_amount() >= 10) - PS.use(10) - to_chat(user, span_notice("You add the plating to the framework.")) - playsound(src.loc, 'sound/machines/click.ogg', 75, TRUE) - broken_state++ - update_appearance() - else - to_chat(user, span_warning("You need 10 sheets of plasteel!")) - return - if(GRAV_NEEDS_WRENCH) - if(weapon.tool_behaviour == TOOL_WRENCH) - to_chat(user, span_notice("You secure the plating to the framework.")) - weapon.play_tool_sound(src) - set_fix() - return - return ..() +/obj/machinery/gravity_generator/main/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!(machine_stat & BROKEN) || (broken_state != GRAV_NEEDS_PLASTEEL)) + return NONE + if(!istype(tool, /obj/item/stack/sheet/plasteel)) + return NONE + var/obj/item/stack/sheet/plasteel/metal = tool + if(metal.get_amount() < 10) + to_chat(user, span_warning("You need 10 sheets of plasteel!")) + return ITEM_INTERACT_BLOCKING + metal.use(10) + to_chat(user, span_notice("You add the plating to the framework.")) + playsound(src.loc, 'sound/machines/click.ogg', 75, TRUE) + broken_state++ + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/gravity_generator/main/welder_act(mob/living/user, obj/item/tool) + if(!(machine_stat & BROKEN) || (broken_state != GRAV_NEEDS_WELDING)) + return NONE + if(!tool.use_tool(src, user, 0, volume=50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You mend the damaged framework.")) + broken_state++ + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/gravity_generator/main/wrench_act(mob/living/user, obj/item/tool) + if(!(machine_stat & BROKEN) || (broken_state != GRAV_NEEDS_WRENCH)) + return NONE + to_chat(user, span_notice("You secure the plating to the framework.")) + tool.play_tool_sound(src) + set_fix() + return ITEM_INTERACT_SUCCESS + +/obj/machinery/gravity_generator/main/screwdriver_act(mob/living/user, obj/item/tool) + if(!(machine_stat & BROKEN) || (broken_state != GRAV_NEEDS_SCREWDRIVER)) + return NONE + to_chat(user, span_notice("You secure the screws of the framework.")) + tool.play_tool_sound(src) + broken_state++ + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/gravity_generator/main/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 26e01f2dd801..089d270d733b 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -352,7 +352,11 @@ // attempt to set the light's on/off status // will not switch on if broken/burned/empty /obj/machinery/light/proc/set_on(turn_on) + var/was_on = on on = (turn_on && status == LIGHT_OK) + if(on == was_on) + return + SEND_SIGNAL(src, COMSIG_LIGHT_FIXTURE_TOGGLED, on) update() /obj/machinery/light/get_cell() @@ -379,21 +383,20 @@ -// attack with item - insert light (if right type), otherwise try to break the light - -/obj/machinery/light/attackby(obj/item/tool, mob/living/user, list/modifiers, list/attack_modifiers) +// insert light (if right type), otherwise try to break the light +/obj/machinery/light/item_interaction(mob/living/user, obj/item/tool, list/modifiers) // attempt to insert light if(istype(tool, /obj/item/light)) if(status == LIGHT_OK) to_chat(user, span_warning("There is a [fitting] already inserted!")) - return + return ITEM_INTERACT_BLOCKING add_fingerprint(user) var/obj/item/light/light_object = tool if(!istype(light_object, light_type)) to_chat(user, span_warning("This type of light requires a [fitting]!")) - return + return ITEM_INTERACT_BLOCKING if(!user.temporarilyRemoveItemFromInventory(light_object)) - return + return ITEM_INTERACT_BLOCKING add_fingerprint(user) if(status != LIGHT_EMPTY) @@ -412,26 +415,31 @@ qdel(light_object) - return + return ITEM_INTERACT_SUCCESS // attempt to stick weapon into light socket if(status != LIGHT_EMPTY || user.combat_mode) - return ..() - if(tool.tool_behaviour == TOOL_SCREWDRIVER) //If it's a screwdriver open it. - tool.play_tool_sound(src, 75) - user.visible_message(span_notice("[user.name] opens [src]'s casing."), \ - span_notice("You open [src]'s casing."), span_hear("You hear a noise.")) - deconstruct(disassembled = TRUE) - return + return NONE if(tool.item_flags & ABSTRACT) - return + return NONE to_chat(user, span_userdanger("You stick \the [tool] into the light socket!")) if(has_power() && (tool.obj_flags & CONDUCTS_ELECTRICITY)) do_sparks(3, TRUE, src) if (prob(75)) electrocute_mob(user, get_area(src), src, (rand(7,10) * 0.1), TRUE) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/light/screwdriver_act(mob/living/user, obj/item/tool) + if(status != LIGHT_EMPTY || user.combat_mode) + return NONE + tool.play_tool_sound(src, 75) + user.visible_message(span_notice("[user.name] opens [src]'s casing."), \ + span_notice("You open [src]'s casing."), \ + span_hear("You hear unscrewing.")) + deconstruct(disassembled = TRUE) + return ITEM_INTERACT_SUCCESS /obj/machinery/light/on_deconstruction(disassembled) @@ -687,6 +695,7 @@ var/was_ok = (status == LIGHT_OK || status == LIGHT_BURNED) status = LIGHT_BROKEN + SEND_SIGNAL(src, COMSIG_LIGHT_FIXTURE_BROKEN, was_ok) if(!skip_sound_and_sparks) if(was_ok) playsound(loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE) @@ -743,6 +752,11 @@ continue INVOKE_ASYNC(src, PROC_REF(flicker)) +/obj/machinery/light/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + if(!QDELING(src)) + update(FALSE) + /obj/machinery/light/floor name = "floor light" desc = "A lightbulb you can walk on without breaking it, amazing." diff --git a/code/modules/power/lighting/light_construct.dm b/code/modules/power/lighting/light_construct.dm index 8dbadb5d06cd..f90f39d2a1c5 100644 --- a/code/modules/power/lighting/light_construct.dm +++ b/code/modules/power/lighting/light_construct.dm @@ -80,89 +80,101 @@ cell_reference.forceMove(drop_location()) return cell_reference.attack_tk(user) -/obj/structure/light_construct/attackby(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/light_construct/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) if(istype(tool, /obj/item/stock_parts/power_store/cell)) if(!cell_connectors) to_chat(user, span_warning("This [name] can't support a power cell!")) - return - if(HAS_TRAIT(tool, TRAIT_NODROP)) + return ITEM_INTERACT_BLOCKING + + if(!user.temporarilyRemoveItemFromInventory(tool)) to_chat(user, span_warning("[tool] is stuck to your hand!")) - return + return ITEM_INTERACT_BLOCKING + if(cell) to_chat(user, span_warning("There is a power cell already installed!")) - return - if(user.temporarilyRemoveItemFromInventory(tool)) - user.visible_message(span_notice("[user] hooks up [tool] to [src]."), \ - span_notice("You add [tool] to [src].")) - playsound(src, 'sound/machines/click.ogg', 50, TRUE) - tool.forceMove(src) - cell = tool - add_fingerprint(user) - return + return ITEM_INTERACT_BLOCKING + + user.visible_message(span_notice("[user] hooks up [tool] to [src]."), \ + span_notice("You add [tool] to [src].")) + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + tool.forceMove(src) + cell = tool + add_fingerprint(user) + return ITEM_INTERACT_SUCCESS + if(istype(tool, /obj/item/light)) to_chat(user, span_warning("This [name] isn't finished being setup!")) - return - + return ITEM_INTERACT_BLOCKING + + if(stage == LIGHT_CONSTRUCT_EMPTY && istype(tool, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = tool + if(!coil.use(1)) + to_chat(user, span_warning("You need one length of cable to wire [src]!")) + return ITEM_INTERACT_BLOCKING + icon_state = "[fixture_type]-construct-stage2" + stage = LIGHT_CONSTRUCT_WIRED + user.visible_message(span_notice("[user.name] adds wires to [src]."), \ + span_notice("You add wires to [src].")) + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/structure/light_construct/wrench_act(mob/living/user, obj/item/tool) switch(stage) if(LIGHT_CONSTRUCT_EMPTY) - if(tool.tool_behaviour == TOOL_WRENCH) - if(cell) - to_chat(user, span_warning("You have to remove the cell first!")) - return - to_chat(user, span_notice("You begin deconstructing [src]...")) - if (tool.use_tool(src, user, 30, volume=50)) - user.visible_message(span_notice("[user.name] deconstructs [src]."), \ - span_notice("You deconstruct [src]."), span_hear("You hear a ratchet.")) - playsound(src, 'sound/items/deconstruct.ogg', 75, TRUE) - deconstruct() - return - - if(istype(tool, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = tool - if(coil.use(1)) - icon_state = "[fixture_type]-construct-stage2" - stage = LIGHT_CONSTRUCT_WIRED - user.visible_message(span_notice("[user.name] adds wires to [src]."), \ - span_notice("You add wires to [src].")) - else - to_chat(user, span_warning("You need one length of cable to wire [src]!")) - return + if(cell) + to_chat(user, span_warning("You have to remove the cell first!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You begin deconstructing [src]...")) + if (!tool.use_tool(src, user, 30, volume=50)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user.name] deconstructs [src]."), \ + span_notice("You deconstruct [src]."), \ + span_hear("You hear a ratchet.")) + playsound(src, 'sound/items/deconstruct.ogg', 75, TRUE) + deconstruct() + return ITEM_INTERACT_SUCCESS if(LIGHT_CONSTRUCT_WIRED) - if(tool.tool_behaviour == TOOL_WRENCH) - to_chat(usr, span_warning("You have to remove the wires first!")) - return - - if(tool.tool_behaviour == TOOL_WIRECUTTER) - stage = LIGHT_CONSTRUCT_EMPTY - icon_state = "[fixture_type]-construct-stage1" - new /obj/item/stack/cable_coil(drop_location(), 1, "red") - user.visible_message(span_notice("[user.name] removes the wiring from [src]."), \ - span_notice("You remove the wiring from [src]."), span_hear("You hear clicking.")) - tool.play_tool_sound(src, 100) - return - - if(tool.tool_behaviour == TOOL_SCREWDRIVER) - user.visible_message(span_notice("[user.name] closes [src]'s casing."), \ - span_notice("You close [src]'s casing."), span_hear("You hear screwing.")) - tool.play_tool_sound(src, 75) - switch(fixture_type) - if("tube") - new_light = new /obj/machinery/light/empty(loc) - if("bulb") - new_light = new /obj/machinery/light/small/empty(loc) - if("floor") - new_light = new /obj/machinery/light/floor/empty(loc) - new_light.setDir(dir) - new_light.find_and_mount_on_atom() - transfer_fingerprints_to(new_light) - if(!QDELETED(cell)) - new_light.cell = cell - cell.forceMove(new_light) - cell = null - qdel(src) - return - return ..() + to_chat(usr, span_warning("You have to remove the wires first!")) + return ITEM_INTERACT_BLOCKING + return NONE + +/obj/structure/light_construct/screwdriver_act(mob/living/user, obj/item/tool) + if(stage != LIGHT_CONSTRUCT_WIRED) + return NONE + user.visible_message(span_notice("[user.name] closes [src]'s casing."), \ + span_notice("You close [src]'s casing."), \ + span_hear("You hear screwing.")) + tool.play_tool_sound(src, 75) + switch(fixture_type) + if("tube") + new_light = new /obj/machinery/light/empty(loc) + if("bulb") + new_light = new /obj/machinery/light/small/empty(loc) + if("floor") + new_light = new /obj/machinery/light/floor/empty(loc) + new_light.setDir(dir) + new_light.find_and_mount_on_atom() + transfer_fingerprints_to(new_light) + if(!QDELETED(cell)) + new_light.cell = cell + cell.forceMove(new_light) + cell = null + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/structure/light_construct/wirecutter_act(mob/living/user, obj/item/tool) + if(stage != LIGHT_CONSTRUCT_WIRED) + return NONE + stage = LIGHT_CONSTRUCT_EMPTY + icon_state = "[fixture_type]-construct-stage1" + new /obj/item/stack/cable_coil(drop_location(), 1, "red") + user.visible_message(span_notice("[user.name] removes the wiring from [src]."), \ + span_notice("You remove the wiring from [src]."), \ + span_hear("You hear clicking.")) + tool.play_tool_sound(src, 100) + return ITEM_INTERACT_SUCCESS /obj/structure/light_construct/blob_act(obj/structure/blob/attacking_blob) if(attacking_blob && attacking_blob.loc == loc) diff --git a/code/modules/power/lighting/light_items.dm b/code/modules/power/lighting/light_items.dm index e82a85ff7fd1..dd48495606dd 100644 --- a/code/modules/power/lighting/light_items.dm +++ b/code/modules/power/lighting/light_items.dm @@ -33,18 +33,17 @@ /obj/item/light/grind_results() return list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) -/obj/item/light/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - - if(istype(attacking_item, /obj/item/lightreplacer)) - var/obj/item/lightreplacer/lightreplacer = attacking_item - lightreplacer.attackby(src, user) +/obj/item/light/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/lightreplacer)) + return NONE + tool.item_interaction(user, src) + return ITEM_INTERACT_SUCCESS /// Returns true if bulb is intact /obj/item/light/proc/is_intact() return status == LIGHT_OK -/obj/item/light/suicide_act(mob/living/carbon/user) +/obj/item/light/suicide_act(mob/living/user) if (status == LIGHT_BROKEN) user.visible_message(span_suicide("[user] begins to stab [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) else diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index d6b6f0dbc2b6..6f0c19933526 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -131,19 +131,16 @@ By design, d1 is the smallest direction and d2 is the highest // - Wirecutters : cut it duh ! // - pipe cleaner coil : merge pipe cleaners // -/obj/structure/pipe_cleaner/proc/handlecable(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_WIRECUTTER) - cut_pipe_cleaner(user) - return - - else if(istype(W, /obj/item/stack/pipe_cleaner_coil)) - var/obj/item/stack/pipe_cleaner_coil/coil = W - if (coil.get_amount() < 1) - to_chat(user, span_warning("Not enough pipe cleaner!")) - return - coil.pipe_cleaner_join(src, user) - +/obj/structure/pipe_cleaner/proc/handlecable(obj/item/tool, mob/user, params) add_fingerprint(user) + if(!istype(tool, /obj/item/stack/pipe_cleaner_coil)) + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/pipe_cleaner_coil/coil = tool + if (coil.get_amount() < 1) + to_chat(user, span_warning("Not enough pipe cleaner!")) + return ITEM_INTERACT_BLOCKING + coil.pipe_cleaner_join(src, user) + return ITEM_INTERACT_SUCCESS /obj/structure/pipe_cleaner/proc/cut_pipe_cleaner(mob/user) user.visible_message(span_notice("[user] pulls up the pipe cleaner."), span_notice("You pull up the pipe cleaner.")) @@ -151,8 +148,12 @@ By design, d1 is the smallest direction and d2 is the highest investigate_log("was pulled up by [key_name(usr)] in [AREACOORD(src)]", INVESTIGATE_WIRES) deconstruct() -/obj/structure/pipe_cleaner/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - handlecable(W, user, modifiers) +/obj/structure/pipe_cleaner/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return handlecable(tool, user, modifiers) + +/obj/structure/pipe_cleaner/wirecutter_act(mob/living/user, obj/item/tool) + cut_pipe_cleaner(user) + return ITEM_INTERACT_SUCCESS /obj/structure/pipe_cleaner/singularity_pull(atom/singularity, current_size) ..() diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index a7f0d3a2c0b2..cd964e5af852 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -175,39 +175,44 @@ else disconnect_from_network() -/obj/machinery/power/port_gen/pacman/attackby(obj/item/O, mob/user, list/modifiers, list/attack_modifiers) - if(istype(O, sheet_path)) - var/obj/item/stack/addstack = O - var/amount = min((max_sheets - sheets), addstack.amount) - if(amount < 1) - to_chat(user, span_notice("\The [src] is full!")) - return - to_chat(user, span_notice("You add [amount] sheets to \the [src].")) - sheets += amount - addstack.use(amount) - return - else if(!active) - if(O.tool_behaviour == TOOL_WRENCH) - if(!anchored && !isinspace()) - set_anchored(TRUE) - to_chat(user, span_notice("You secure the generator to the floor.")) - else if(anchored) - set_anchored(FALSE) - to_chat(user, span_notice("You unsecure the generator from the floor.")) - - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - return - else if(O.tool_behaviour == TOOL_SCREWDRIVER) - toggle_panel_open() - O.play_tool_sound(src) - if(panel_open) - to_chat(user, span_notice("You open the access panel.")) - else - to_chat(user, span_notice("You close the access panel.")) - return - else if(default_deconstruction_crowbar(user, O)) - return - return ..() +/obj/machinery/power/port_gen/pacman/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, sheet_path)) + return ..() + var/obj/item/stack/addstack = tool + var/amount = min((max_sheets - sheets), addstack.amount) + if(amount < 1) + to_chat(user, span_notice("\The [src] is full!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You add [amount] sheets to \the [src].")) + sheets += amount + addstack.use(amount) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/power/port_gen/screwdriver_act(mob/living/user, obj/item/tool) + if(active) + return NONE + toggle_panel_open() + tool.play_tool_sound(src) + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the access panel.")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/power/port_gen/wrench_act(mob/living/user, obj/item/tool) + if(active) + return NONE + if(!anchored && !isinspace()) + set_anchored(TRUE) + to_chat(user, span_notice("You secure the generator to the floor.")) + return ITEM_INTERACT_SUCCESS + + set_anchored(FALSE) + to_chat(user, span_notice("You unsecure the generator from the floor.")) + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/power/port_gen/crowbar_act(mob/living/user, obj/item/tool) + if(active) + return NONE + return default_deconstruction_crowbar(user, tool) /obj/machinery/power/port_gen/pacman/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 82ea13b43097..3520f13190f1 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -324,18 +324,17 @@ // attach a wire to a power machine - leads from the turf you are standing on //almost never called, overwritten by all power machines but terminal and generator -/obj/machinery/power/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = W - var/turf/T = user.loc - if(T.underfloor_accessibility < UNDERFLOOR_INTERACTABLE || !isfloorturf(T)) - return - if(get_dist(src, user) > 1) - return - coil.place_turf(T, user) - else - return ..() - +/obj/machinery/power/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/cable_coil)) + return NONE + var/obj/item/stack/cable_coil/coil = tool + var/turf/userturf = user.loc + if(userturf.underfloor_accessibility < UNDERFLOOR_INTERACTABLE || !isfloorturf(userturf)) + return ITEM_INTERACT_BLOCKING + if(get_dist(src, user) > 1) + return ITEM_INTERACT_BLOCKING + coil.place_turf(userturf, user) + return ITEM_INTERACT_SUCCESS /////////////////////////////////////////// // Powernet handling helpers @@ -484,7 +483,7 @@ if(!in_range(source, victim)) return FALSE - if(victim.wearing_shock_proof_gloves()) + if(victim.get_item_by_slot(ITEM_SLOT_GLOVES)?.siemens_coefficient == 0) SEND_SIGNAL(victim, COMSIG_LIVING_SHOCK_PREVENTED, power_source, source, siemens_coeff, dist_check) return FALSE //to avoid spamming with insulated gloves on diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index af4e7fa98acb..d554e911e06f 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -351,25 +351,34 @@ locked = !locked to_chat(user, span_notice("You [src.locked ? "lock" : "unlock"] the controls.")) -/obj/machinery/power/emitter/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(item.GetID()) +/obj/machinery/power/emitter/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.GetID()) togglelock(user) - return + return ITEM_INTERACT_SUCCESS + + if(!panel_open) + return NONE - if(is_wire_tool(item) && panel_open) + if(is_wire_tool(tool)) wires.interact(user) - return - if(panel_open && !gun && istype(item,/obj/item/gun/energy)) + return ITEM_INTERACT_SUCCESS + + if(gun) + return NONE + + if(istype(tool, /obj/item/gun/energy)) if(diskie) to_chat(user, span_warning("Remove the Diode Disk before inserting a gun.")) - return - if(integrate(item,user)) - return - if(panel_open && !gun && istype(item,/obj/item/emitter_disk)) - var/obj/item/emitter_disk/config_disk = item + return ITEM_INTERACT_BLOCKING + if(!integrate(tool,user)) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/emitter_disk)) + var/obj/item/emitter_disk/config_disk = tool if(!user.transferItemToLoc(config_disk, src)) balloon_alert(user, "stuck in hand!") - return + return ITEM_INTERACT_BLOCKING if(diskie) user.put_in_hands(diskie) balloon_alert(user, "disks swapped!") @@ -385,7 +394,9 @@ update_appearance() if(diskie.consumable) qdel(diskie) - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE /obj/machinery/power/emitter/proc/integrate(obj/item/gun/energy/energy_gun, mob/user) @@ -644,6 +655,7 @@ consumed_on_removal = FALSE consumable = FALSE laser_color = COLOR_TRUE_BLUE + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/emitter_disk/healing name = "\improper Diode Disk: Bioregenerative" @@ -652,6 +664,7 @@ consumed_on_removal = FALSE consumable = FALSE laser_color = COLOR_YELLOW + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/emitter_disk/incendiary name = "\improper Diode Disk: Conflagratory" @@ -660,7 +673,7 @@ consumed_on_removal = FALSE consumable = FALSE laser_color = COLOR_RED_LIGHT - + custom_materials = list(/datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/emitter_disk/sanity name = "\improper Diode Disk: Psychosiphoning" @@ -669,7 +682,7 @@ consumed_on_removal = FALSE consumable = FALSE laser_color = COLOR_TONGUE_PINK - + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/emitter_disk/magnetic name = "\improper Diode Disk: Magnetogenerative" @@ -678,6 +691,7 @@ consumed_on_removal = FALSE consumable = FALSE laser_color = COLOR_SILVER + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/emitter_disk/blast name = "\improper Diode Disk: Hyperconcussive" diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 72e6b3985dd4..8f1c31e195a7 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -266,6 +266,7 @@ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_BULKY // Pretty big! anchored = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/tracker = 0 var/glass_type = null var/random_offset = 6 //amount in pixels an unanchored assembly may be offset by @@ -289,63 +290,34 @@ return randomise_offset(anchored ? 0 : random_offset) -/obj/item/solar_assembly/attackby(obj/item/item_used, mob/user, list/modifiers, list/attack_modifiers) +/obj/item/solar_assembly/item_interaction(mob/living/user, obj/item/tool, list/modifiers) var/turf/solarturf = get_turf(src) - if(item_used.tool_behaviour == TOOL_WRENCH && isturf(loc)) - if(!solarturf.can_have_cabling()) //allows catwalks - balloon_alert(user, "can't secure in space!") - return - for(var/obj/stuff_in_the_way in solarturf) //prevent anchoring on other machinery or solar assemblies - if(stuff_in_the_way == src) - continue - if(istype(stuff_in_the_way, /obj/item/solar_assembly) && stuff_in_the_way.anchored) - balloon_alert(user, "secured assembly in the way!") - return - if((stuff_in_the_way.density) && !(stuff_in_the_way.flags_1 & ON_BORDER_1)) - balloon_alert(user, "something in the way!") - return - set_anchored(!anchored) - user.visible_message( - span_notice("[user] [anchored ? null : "un"]wrenches the solar assembly[anchored ? " into place" : null]."), - span_notice("You [anchored ? null : "un"]wrench the solar assembly[anchored ? " into place" : null]."), - ) - item_used.play_tool_sound(src, 75) - return TRUE - if(tracker) - if(item_used.tool_behaviour == TOOL_CROWBAR) - new /obj/item/electronics/tracker(src.loc) - tracker = FALSE - update_appearance() - user.visible_message(span_notice("[user] takes out the electronics from the solar assembly."), span_notice("You take out the electronics from the solar assembly.")) - return TRUE - //prevent construction if something dense's on our tile if(solarturf.is_blocked_turf(exclude_mobs = TRUE, source_atom = src)) balloon_alert(user, "something in the way!") - return - if(!istype(item_used, /obj/item/stack/sheet/glass)) + return ITEM_INTERACT_BLOCKING + if(!istype(tool, /obj/item/stack/sheet/glass)) to_chat(user, span_warning("The tracker only accepts standard, un-reinforced glass.")) - return - var/obj/item/stack/sheet/my_sheet = item_used + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/sheet/my_sheet = tool if(!my_sheet.use(2)) to_chat(user, span_warning("You don't have enough glass to complete the tracker.")) - return + return ITEM_INTERACT_BLOCKING playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) user.visible_message(span_notice("[user] places the glass on the solar assembly."),span_notice("You place the glass on the solar assembly.")) new /obj/machinery/power/tracker/(get_turf(src), src) - return TRUE + return ITEM_INTERACT_SUCCESS - if(!tracker) - if(istype(item_used, /obj/item/electronics/tracker)) - if(!user.temporarilyRemoveItemFromInventory(item_used)) - return - tracker = TRUE - update_appearance() - qdel(item_used) - user.visible_message(span_notice("[user] inserts the electronics into the solar assembly."), span_notice("You insert the electronics into the solar assembly.")) - return TRUE + if(istype(tool, /obj/item/electronics/tracker)) + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + tracker = TRUE + update_appearance() + qdel(tool) + user.visible_message(span_notice("[user] inserts the electronics into the solar assembly."), span_notice("You insert the electronics into the solar assembly.")) + return ITEM_INTERACT_SUCCESS //make a list of all the glass var/static/list/acceptable_glass_list = typecacheof(list( @@ -355,23 +327,23 @@ /obj/item/stack/sheet/plastitaniumglass, )) - if(!acceptable_glass_list[item_used.type]) + if(!acceptable_glass_list[tool.type]) //items that arent used above, or arent usable glass will make it here. //so we check if its reinfocred glass, or some other item - if(istype(item_used, /obj/item/stack/sheet/rglass) || istype(item_used, /obj/item/stack/sheet/plasmarglass)) + if(istype(tool, /obj/item/stack/sheet/rglass) || istype(tool, /obj/item/stack/sheet/plasmarglass)) to_chat(user, span_warning("The solar array will only accept glass or glass alloys that have not been reinforced.")) //an else statement can be put here if you want something to happen to all the misc items that make it this far - return + return ITEM_INTERACT_BLOCKING //prevent construction if something dense's on our tile if(solarturf.is_blocked_turf(exclude_mobs = TRUE, source_atom = src)) balloon_alert(user, "something in the way!") - return + return ITEM_INTERACT_BLOCKING - if(is_glass_sheet(item_used)) + if(is_glass_sheet(tool)) if(!anchored) to_chat(user, span_warning("You need to secure the assembly before you can add glass.")) - return + return ITEM_INTERACT_BLOCKING var/list/glass_material_to_tier = list( /datum/material/glass = 1, @@ -380,10 +352,10 @@ /datum/material/alloy/plastitaniumglass = 4, ) - var/obj/item/stack/sheet/my_sheet = item_used + var/obj/item/stack/sheet/my_sheet = tool if(!my_sheet.use(2)) to_chat(user, span_warning("You need at least two sheets of glass to complete a solar panel!")) - return + return ITEM_INTERACT_BLOCKING var/datum/material/glass_material = my_sheet.material_type playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) @@ -393,8 +365,43 @@ mySolar.material_type = glass_material mySolar.panel.icon_state = "solar_panel_[glass_material.name]" mySolar.panel_edge.icon_state = "solar_panel_[glass_material.name]_edge" - return TRUE - return ..() + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/item/solar_assembly/wrench_act(mob/living/user, obj/item/tool) + var/turf/solarturf = get_turf(src) + if(!isturf(loc)) + return NONE + if(!solarturf.can_have_cabling()) //allows catwalks + balloon_alert(user, "can't secure in space!") + return ITEM_INTERACT_BLOCKING + for(var/obj/stuff_in_the_way in solarturf) //prevent anchoring on other machinery or solar assemblies + if(stuff_in_the_way == src) + continue + if(istype(stuff_in_the_way, /obj/item/solar_assembly) && stuff_in_the_way.anchored) + balloon_alert(user, "secured assembly in the way!") + return ITEM_INTERACT_BLOCKING + if((stuff_in_the_way.density) && !(stuff_in_the_way.flags_1 & ON_BORDER_1)) + balloon_alert(user, "something in the way!") + return ITEM_INTERACT_BLOCKING + set_anchored(!anchored) + user.visible_message( + span_notice("[user] [anchored ? null : "un"]wrenches the solar assembly[anchored ? " into place" : null]."), + span_notice("You [anchored ? null : "un"]wrench the solar assembly[anchored ? " into place" : null]."), + ) + tool.play_tool_sound(src, 75) + return ITEM_INTERACT_SUCCESS + +/obj/item/solar_assembly/crowbar_act(mob/living/user, obj/item/tool) + if(!tracker) + return NONE + new /obj/item/electronics/tracker(src.loc) + tracker = FALSE + update_appearance() + user.visible_message(span_notice("[user] takes out the electronics from the solar assembly."), \ + span_notice("You take out the electronics from the solar assembly.")) + return ITEM_INTERACT_SUCCESS // // Solar Control Computer @@ -558,36 +565,31 @@ return TRUE return FALSE -/obj/machinery/power/solar_control/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(I.tool_behaviour == TOOL_SCREWDRIVER) - if(I.use_tool(src, user, 20, volume=50)) - if (src.machine_stat & BROKEN) - to_chat(user, span_notice("The broken glass falls out.")) - var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc ) - new /obj/item/shard( src.loc ) - var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A ) - for (var/obj/C in src) - C.forceMove(drop_location()) - A.circuit = M - A.state = 3 - A.icon_state = "3" - A.set_anchored(TRUE) - qdel(src) - else - to_chat(user, span_notice("You disconnect the monitor.")) - var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc ) - var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A ) - for (var/obj/C in src) - C.forceMove(drop_location()) - A.circuit = M - A.state = 4 - A.icon_state = "4" - A.set_anchored(TRUE) - qdel(src) - else if(!user.combat_mode && !(I.item_flags & NOBLUDGEON)) - attack_hand(user) - else +/obj/machinery/power/solar_control/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode || (tool.item_flags & NOBLUDGEON)) return ..() + attack_hand(user) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/power/solar_control/screwdriver_act(mob/living/user, obj/item/tool) + if(tool.use_tool(src, user, 20, volume=50)) + return ITEM_INTERACT_BLOCKING + var/obj/structure/frame/computer/new_computer = new /obj/structure/frame/computer(src.loc) + if (src.machine_stat & BROKEN) + to_chat(user, span_notice("The broken glass falls out.")) + new /obj/item/shard( src.loc ) + new_computer.state = 3 + new_computer.icon_state = "3" + else + to_chat(user, span_notice("You disconnect the monitor.")) + new_computer.state = 4 + new_computer.icon_state = "4" + for (var/obj/within in src) + within.forceMove(drop_location()) + new_computer.circuit = new /obj/item/circuitboard/computer/solar_control(new_computer) + new_computer.set_anchored(TRUE) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/machinery/power/solar_control/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index ce521b097524..444823532087 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -292,7 +292,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) // Extra effects should always fire after the compositions are all finished // Some extra effects like [/datum/sm_gas/carbon_dioxide/extra_effects] // needs more than one gas and rely on a fully parsed gas_percentage. - for (var/gas_path in absorbed_gasmix.gases) + for (var/gas_path in absorbed_gasmix.moles) var/datum/sm_gas/sm_gas = current_gas_behavior[gas_path] sm_gas?.extra_effects(src) @@ -340,8 +340,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) merged_gasmix.temperature += device_energy * waste_multiplier / THERMAL_RELEASE_MODIFIER merged_gasmix.temperature = clamp(merged_gasmix.temperature, TCMB, 2500 * waste_multiplier) merged_gasmix.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) - merged_gasmix.gases[/datum/gas/plasma][MOLES] += max(device_energy * waste_multiplier / PLASMA_RELEASE_MODIFIER, 0) - merged_gasmix.gases[/datum/gas/oxygen][MOLES] += max(((device_energy + merged_gasmix.temperature * waste_multiplier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0) + merged_gasmix.moles[/datum/gas/plasma] += max(device_energy * waste_multiplier / PLASMA_RELEASE_MODIFIER, 0) + merged_gasmix.moles[/datum/gas/oxygen] += max(((device_energy + merged_gasmix.temperature * waste_multiplier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0) merged_gasmix.garbage_collect() env.merge(merged_gasmix) air_update_turf(FALSE, FALSE) @@ -659,8 +659,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/total_moles = absorbed_gasmix.total_moles() if(total_moles < MINIMUM_MOLE_COUNT) //it's not worth processing small amounts like these, total_moles can also be 0 in vacuume return - for (var/gas_path in absorbed_gasmix.gases) - var/mole_count = absorbed_gasmix.gases[gas_path][MOLES] + for (var/gas_path, mole_count in absorbed_gasmix.moles) if(mole_count < MINIMUM_MOLE_COUNT) //save processing power from small amounts like these continue gas_percentage[gas_path] = mole_count / total_moles diff --git a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm index 26ebb06fbeb8..aff6bdb43491 100644 --- a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm +++ b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm @@ -9,6 +9,10 @@ GLOBAL_LIST_INIT(sm_delam_list, list( /// Logic holder for supermatter delaminations, goes off the strategy design pattern. /// Selected by [/obj/machinery/power/supermatter_crystal/proc/set_delam] /datum/sm_delam + /// User friendly name for messages and logging + var/name + /// Has a priority announcement been sent since this delam strategy was initialized + var/announcement_triggered = FALSE /// Whether we are eligible for this delamination or not. TRUE if valid, FALSE if not. /// [/obj/machinery/power/supermatter_crystal/proc/set_delam] @@ -38,8 +42,8 @@ GLOBAL_LIST_INIT(sm_delam_list, list( return FALSE if (sm.damage >= sm.emergency_point && sm.damage_archived < sm.emergency_point) - sm.investigate_log("has entered the emergency point.", INVESTIGATE_ENGINE) - message_admins("[sm] has entered the emergency point [ADMIN_VERBOSEJMP(sm)].") + sm.investigate_log("has entered the emergency point: Pending [sm.delamination_strategy.name].", INVESTIGATE_ENGINE) + message_admins("[ADMIN_VERBOSEJMP(sm)] has entered the emergency point: Pending [sm.delamination_strategy.name].") if((REALTIMEOFDAY - sm.lastwarning) < SUPERMATTER_WARNING_DELAY) return FALSE @@ -75,15 +79,24 @@ GLOBAL_LIST_INIT(sm_delam_list, list( SEND_SIGNAL(sm, COMSIG_SUPERMATTER_DELAM_ALARM) return TRUE +/// Generates an admin message and creates an investigate log. +/datum/sm_delam/proc/log_delamination(obj/machinery/power/supermatter_crystal/sm) + message_admins("[ADMIN_VERBOSEJMP(sm)] triggered a [name].") + sm.investigate_log("triggered a [name].", INVESTIGATE_ENGINE) + /// Called when a supermatter switches its strategy from another one to us. /// [/obj/machinery/power/supermatter_crystal/proc/set_delam] /datum/sm_delam/proc/on_select(obj/machinery/power/supermatter_crystal/sm) - return + SHOULD_CALL_PARENT(TRUE) + sm.investigate_log("functional strategy is now [name].", INVESTIGATE_ENGINE) + if(SSticker.HasRoundStarted()) + message_admins("[ADMIN_VERBOSEJMP(sm)] functional strategy is now [name].") /// Called when a supermatter switches its strategy from us to something else. /// [/obj/machinery/power/supermatter_crystal/proc/set_delam] /datum/sm_delam/proc/on_deselect(obj/machinery/power/supermatter_crystal/sm) - return + SHOULD_CALL_PARENT(TRUE) + sm.investigate_log("previous strategy was [name].", INVESTIGATE_ENGINE) /// Added to an examine return value. /// [/obj/machinery/power/supermatter_crystal/examine] diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm index abcc6a3a50ea..4002c68610a5 100644 --- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm +++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm @@ -1,4 +1,5 @@ /datum/sm_delam/cascade + name = "resonance cascade" /datum/sm_delam/cascade/can_select(obj/machinery/power/supermatter_crystal/sm) if(!sm.is_main_engine) @@ -16,6 +17,9 @@ if(!..()) return FALSE + if(!announcement_triggered) + announce_cascade(sm) + sm.radio.talk_into( sm, "DANGER: HYPERSTRUCTURE OSCILLATION FREQUENCY OUT OF BOUNDS.", @@ -33,27 +37,20 @@ return TRUE /datum/sm_delam/cascade/on_select(obj/machinery/power/supermatter_crystal/sm) - message_admins("[sm] is heading towards a cascade. [ADMIN_VERBOSEJMP(sm)]") - sm.investigate_log("is heading towards a cascade.", INVESTIGATE_ENGINE) - + . = ..() sm.warp = new(sm) sm.vis_contents += sm.warp animate(sm.warp, time = 1, transform = matrix().Scale(0.5,0.5)) animate(time = 9, transform = matrix()) - addtimer(CALLBACK(src, PROC_REF(announce_cascade), sm), 2 MINUTES) - /datum/sm_delam/cascade/on_deselect(obj/machinery/power/supermatter_crystal/sm) - message_admins("[sm] will no longer cascade. [ADMIN_VERBOSEJMP(sm)]") - sm.investigate_log("will no longer cascade.", INVESTIGATE_ENGINE) - + . = ..() + message_admins("[ADMIN_VERBOSEJMP(sm)] will no longer cascade.") sm.vis_contents -= sm.warp QDEL_NULL(sm.warp) /datum/sm_delam/cascade/delaminate(obj/machinery/power/supermatter_crystal/sm) - message_admins("Supermatter [sm] at [ADMIN_VERBOSEJMP(sm)] triggered a cascade delam.") - sm.investigate_log("triggered a cascade delam.", INVESTIGATE_ENGINE) - + log_delamination(sm) effect_explosion(sm) effect_emergency_state() effect_cascade_demoralize() @@ -87,9 +84,13 @@ return FALSE if(!can_select(sm)) return FALSE + if(!sm.should_alert_common()) + return FALSE + priority_announce("Attention: Long range anomaly scans indicate abnormal quantities of harmonic flux originating from \ a subject within [station_name()], a resonance collapse may occur.", "Nanotrasen Star Observation Association", 'sound/announcer/alarm/airraid.ogg') + announcement_triggered = TRUE return TRUE /// Signal calls cant sleep, we gotta do this. diff --git a/code/modules/power/supermatter/supermatter_delamination/common_delams.dm b/code/modules/power/supermatter/supermatter_delamination/common_delams.dm index dc4bea0bf4fb..00025579258b 100644 --- a/code/modules/power/supermatter/supermatter_delamination/common_delams.dm +++ b/code/modules/power/supermatter/supermatter_delamination/common_delams.dm @@ -2,6 +2,7 @@ /// When we have too much gas. /datum/sm_delam/singularity + name = "singularity delamination" /datum/sm_delam/singularity/can_select(obj/machinery/power/supermatter_crystal/sm) return (sm.absorbed_gasmix.total_moles() >= MOLE_PENALTY_THRESHOLD) @@ -17,9 +18,7 @@ return TRUE /datum/sm_delam/singularity/delaminate(obj/machinery/power/supermatter_crystal/sm) - message_admins("Supermatter [sm] at [ADMIN_VERBOSEJMP(sm)] triggered a singularity delam.") - sm.investigate_log("triggered a singularity delam.", INVESTIGATE_ENGINE) - + log_delamination(sm) effect_irradiate(sm) effect_demoralize(sm) if(sm.is_main_engine) @@ -63,6 +62,7 @@ /// When we have too much power. /datum/sm_delam/tesla + name = "tesla delamination" /datum/sm_delam/tesla/can_select(obj/machinery/power/supermatter_crystal/sm) return (sm.internal_energy > POWER_PENALTY_THRESHOLD) @@ -78,9 +78,7 @@ return TRUE /datum/sm_delam/tesla/delaminate(obj/machinery/power/supermatter_crystal/sm) - message_admins("Supermatter [sm] at [ADMIN_VERBOSEJMP(sm)] triggered a tesla delam.") - sm.investigate_log("triggered a tesla delam.", INVESTIGATE_ENGINE) - + log_delamination(sm) effect_irradiate(sm) effect_demoralize(sm) if(sm.is_main_engine) @@ -113,14 +111,13 @@ /// Default delam. /datum/sm_delam/explosive + name = "explosive delamination" /datum/sm_delam/explosive/can_select(obj/machinery/power/supermatter_crystal/sm) return TRUE /datum/sm_delam/explosive/delaminate(obj/machinery/power/supermatter_crystal/sm) - message_admins("Supermatter [sm] at [ADMIN_VERBOSEJMP(sm)] triggered a normal delam.") - sm.investigate_log("triggered a normal delam.", INVESTIGATE_ENGINE) - + log_delamination(sm) effect_irradiate(sm) effect_demoralize(sm) if(sm.is_main_engine) diff --git a/code/modules/power/supermatter/supermatter_gas.dm b/code/modules/power/supermatter/supermatter_gas.dm index 01eb977325ea..057cb6086797 100644 --- a/code/modules/power/supermatter/supermatter_gas.dm +++ b/code/modules/power/supermatter/supermatter_gas.dm @@ -105,11 +105,11 @@ GLOBAL_LIST_INIT(sm_gas_behavior, init_sm_gas()) return var/co2_pp = sm.absorbed_gasmix.return_pressure() * sm.gas_percentage[/datum/gas/carbon_dioxide] var/co2_ratio = clamp((1/2 * (co2_pp - CO2_CONSUMPTION_PP) / (co2_pp + CO2_PRESSURE_SCALING)), 0, 1) - var/consumed_co2 = sm.absorbed_gasmix.gases[/datum/gas/carbon_dioxide][MOLES] * co2_ratio + var/consumed_co2 = sm.absorbed_gasmix.moles[/datum/gas/carbon_dioxide] * co2_ratio consumed_co2 = min( consumed_co2, - sm.absorbed_gasmix.gases[/datum/gas/carbon_dioxide][MOLES], - sm.absorbed_gasmix.gases[/datum/gas/oxygen][MOLES] + sm.absorbed_gasmix.moles[/datum/gas/carbon_dioxide], + sm.absorbed_gasmix.moles[/datum/gas/oxygen] ) if(!consumed_co2) return @@ -175,7 +175,7 @@ GLOBAL_LIST_INIT(sm_gas_behavior, init_sm_gas()) return var/miasma_pp = sm.absorbed_gasmix.return_pressure() * sm.gas_percentage[/datum/gas/miasma] var/miasma_ratio = clamp(((miasma_pp - MIASMA_CONSUMPTION_PP) / (miasma_pp + MIASMA_PRESSURE_SCALING)) * (1 + (sm.gas_heat_power_generation * MIASMA_GASMIX_SCALING)), 0, 1) - var/consumed_miasma = sm.absorbed_gasmix.gases[/datum/gas/miasma][MOLES] * miasma_ratio + var/consumed_miasma = sm.absorbed_gasmix.moles[/datum/gas/miasma] * miasma_ratio if(!consumed_miasma) return sm.absorbed_gasmix.adjust_gas(/datum/gas/miasma, -consumed_miasma) diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm index 056081bda7e8..373be30bdb01 100644 --- a/code/modules/power/supermatter/supermatter_hit_procs.dm +++ b/code/modules/power/supermatter/supermatter_hit_procs.dm @@ -75,54 +75,56 @@ qdel(rip_u) return COMPONENT_CANCEL_ATTACK_CHAIN -/obj/machinery/power/supermatter_crystal/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/scalpel/supermatter)) - var/obj/item/scalpel/supermatter/scalpel = item +/obj/machinery/power/supermatter_crystal/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/scalpel/supermatter)) + var/obj/item/scalpel/supermatter/scalpel = tool to_chat(user, span_notice("You carefully begin to scrape \the [src] with \the [scalpel]...")) if(!scalpel.use_tool(src, user, 60, volume=100)) - return - if (scalpel.usesLeft) - to_chat(user, span_danger("You extract a sliver from \the [src]. \The [src] begins to react violently!")) - new /obj/item/nuke_core/supermatter_sliver(src.drop_location()) - supermatter_sliver_removed = TRUE - external_power_trickle += 800 - log_activation(who = user, how = scalpel) - scalpel.usesLeft-- - if (!scalpel.usesLeft) - to_chat(user, span_notice("A tiny piece of \the [scalpel] falls off, rendering it useless!")) - else + return ITEM_INTERACT_BLOCKING + if (!scalpel.usesLeft) to_chat(user, span_warning("You fail to extract a sliver from \the [src]! \The [scalpel] isn't sharp enough anymore.")) - return - - if(istype(item, /obj/item/hemostat/supermatter)) - to_chat(user, span_warning("You poke [src] with [item]'s hyper-noblium tips. Nothing happens.")) - return - - if(istype(item, /obj/item/destabilizing_crystal)) - var/obj/item/destabilizing_crystal/destabilizing_crystal = item + return ITEM_INTERACT_BLOCKING + to_chat(user, span_danger("You extract a sliver from \the [src]. \The [src] begins to react violently!")) + new /obj/item/nuke_core/supermatter_sliver(src.drop_location()) + supermatter_sliver_removed = TRUE + external_power_trickle += 800 + log_activation(who = user, how = scalpel) + scalpel.usesLeft-- + if (!scalpel.usesLeft) + to_chat(user, span_notice("A tiny piece of \the [scalpel] falls off, rendering it useless!")) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/hemostat/supermatter)) + to_chat(user, span_warning("You poke [src] with [tool]'s hyper-noblium tips. Nothing happens.")) + return ITEM_INTERACT_BLOCKING + + if(istype(tool, /obj/item/destabilizing_crystal)) + var/obj/item/destabilizing_crystal/destabilizing_crystal = tool if(!is_main_engine) to_chat(user, span_warning("You can't use \the [destabilizing_crystal] on \a [name].")) - return + return ITEM_INTERACT_BLOCKING if(get_integrity_percent() < SUPERMATTER_CASCADE_PERCENT) to_chat(user, span_warning("You can only apply \the [destabilizing_crystal] to \a [name] that is at least [SUPERMATTER_CASCADE_PERCENT]% intact.")) - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_warning("You begin to attach \the [destabilizing_crystal] to \the [src]...")) - if(do_after(user, 3 SECONDS, src)) - message_admins("[ADMIN_LOOKUPFLW(user)] attached [destabilizing_crystal] to the supermatter at [ADMIN_VERBOSEJMP(src)].") - user.log_message("attached [destabilizing_crystal] to the supermatter", LOG_GAME) - user.investigate_log("attached [destabilizing_crystal] to a supermatter crystal.", INVESTIGATE_ENGINE) - to_chat(user, span_danger("\The [destabilizing_crystal] snaps onto \the [src].")) - set_delam(SM_DELAM_PRIO_IN_GAME, /datum/sm_delam/cascade) - external_damage_immediate += 10 - external_power_trickle += 500 - log_activation(who = user, how = destabilizing_crystal) - qdel(destabilizing_crystal) - return - - return ..() + if(!do_after(user, 3 SECONDS, src)) + return ITEM_INTERACT_BLOCKING + + message_admins("[ADMIN_LOOKUPFLW(user)] attached [destabilizing_crystal] to the supermatter at [ADMIN_VERBOSEJMP(src)].") + user.log_message("attached [destabilizing_crystal] to the supermatter", LOG_GAME) + user.investigate_log("attached [destabilizing_crystal] to a supermatter crystal.", INVESTIGATE_ENGINE) + to_chat(user, span_danger("\The [destabilizing_crystal] snaps onto \the [src].")) + set_delam(SM_DELAM_PRIO_IN_GAME, /datum/sm_delam/cascade) + external_damage_immediate += 10 + external_power_trickle += 500 + log_activation(who = user, how = destabilizing_crystal) + qdel(destabilizing_crystal) + return ITEM_INTERACT_SUCCESS + + return NONE //Do not blow up our internal radio /obj/machinery/power/supermatter_crystal/contents_explosion(severity, target) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index acdac5100654..91ed11bf37b4 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -160,6 +160,7 @@ /obj/item/electronics/tracker name = "tracker electronics" + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT) #undef TRACKER_Z_OFFSET #undef TRACKER_EDGE_Z_OFFSET diff --git a/code/modules/power/turbine/turbine_computer.dm b/code/modules/power/turbine/turbine_computer.dm index 7771bda03f8d..815bed616c18 100644 --- a/code/modules/power/turbine/turbine_computer.dm +++ b/code/modules/power/turbine/turbine_computer.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/turbine_computer name = "gas turbine control computer" desc = "A computer to remotely control a gas turbine." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/turbine_computer") icon_screen = "turbinecomp" icon_keyboard = "tech_key" circuit = /obj/item/circuitboard/computer/turbine_computer diff --git a/code/modules/power/turbine/turbine_parts.dm b/code/modules/power/turbine/turbine_parts.dm index 2da60eff1316..f934f984ee97 100644 --- a/code/modules/power/turbine/turbine_parts.dm +++ b/code/modules/power/turbine/turbine_parts.dm @@ -8,6 +8,7 @@ desc = "you really should call an admin" icon = 'icons/obj/machines/engine/turbine.dmi' icon_state = "inlet_compressor" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) ///Current part tier var/current_tier = TURBINE_PART_TIER_ONE diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index 5b2981d28e91..333efd5f681a 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -139,26 +139,32 @@ if(!loaded_projectile) loaded_projectile = new projectile_type(src, src) -/obj/item/ammo_casing/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/ammo_box)) - var/obj/item/ammo_box/box = I - if(isturf(loc)) - var/boolets = 0 - for(var/obj/item/ammo_casing/bullet in loc) - if (box.stored_ammo.len >= box.max_ammo) - break - if (bullet.loaded_projectile) - if (box.give_round(bullet, 0)) - boolets++ - else - continue - if (boolets > 0) - box.update_appearance() - to_chat(user, span_notice("You collect [boolets] [box.casing_phrasing]\s. [box] now contains [box.stored_ammo.len] [box.casing_phrasing]\s.")) - else - to_chat(user, span_warning("You fail to collect anything!")) - else - return ..() +/obj/item/ammo_casing/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/ammo_box)) + return NONE + if(!isturf(loc)) + return ITEM_INTERACT_BLOCKING + if(!collect_into_box(user, tool)) + return ITEM_INTERACT_BLOCKING + return ITEM_INTERACT_SUCCESS + +/// Collects the casing and its like on its tile into the passed box, TRUE if anything collected. +/obj/item/ammo_casing/proc/collect_into_box(mob/living/user, obj/item/ammo_box/box) + var/boolets = 0 + for(var/obj/item/ammo_casing/bullet in loc) + if (box.stored_ammo.len >= box.max_ammo) + break + if (!bullet.loaded_projectile) + continue + if (box.give_round(bullet, 0)) + boolets++ + + if (!boolets) + to_chat(user, span_warning("You fail to collect anything!")) + return FALSE + box.update_appearance() + to_chat(user, span_notice("You collect [boolets] [box.casing_phrasing]\s. [box] now contains [box.stored_ammo.len] [box.casing_phrasing]\s.")) + return TRUE /obj/item/ammo_casing/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) bounce_away(FALSE, NONE) diff --git a/code/modules/projectiles/ammunition/ballistic/foam.dm b/code/modules/projectiles/ammunition/ballistic/foam.dm index 2a232d4dba76..d2edb488eaf7 100644 --- a/code/modules/projectiles/ammunition/ballistic/foam.dm +++ b/code/modules/projectiles/ammunition/ballistic/foam.dm @@ -42,11 +42,9 @@ . += span_notice("[modified ? "You can" : "If you removed the safety cap with a screwdriver, you could"] insert a small item\ [length(type_initial_names) ? ", such as [english_list(type_initial_names, and_text = "or ", final_comma_text = ", ")]" : ""].") - -/obj/item/ammo_casing/foam_dart/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if (attacking_item.tool_behaviour != TOOL_SCREWDRIVER || modified) - return ..() - +/obj/item/ammo_casing/foam_dart/screwdriver_act(mob/living/user, obj/item/tool) + if(modified) + return NONE var/obj/projectile/bullet/foam_dart/dart = loaded_projectile modified = TRUE dart.modified = TRUE @@ -54,6 +52,7 @@ dart.set_embed(null) // Cap is what makes them sticky to_chat(user, span_notice("You pop the safety cap off [src].")) update_appearance() + return ITEM_INTERACT_SUCCESS /obj/item/ammo_casing/foam_dart/riot name = "riot foam dart" @@ -63,4 +62,4 @@ base_icon_state = "foamdart_riot" tip_color = "red" embed_type = /datum/embedding/foam_dart/riot - custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 1.125) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) diff --git a/code/modules/projectiles/ammunition/ballistic/junk.dm b/code/modules/projectiles/ammunition/ballistic/junk.dm index 2ec346b7d214..71c2983e6c18 100644 --- a/code/modules/projectiles/ammunition/ballistic/junk.dm +++ b/code/modules/projectiles/ammunition/ballistic/junk.dm @@ -6,7 +6,7 @@ icon_state = "improvshell" caliber = CALIBER_JUNK projectile_type = /obj/projectile/bullet/junk - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT) // Junk Shell Spawner; used to spawn in our random shells upon crafting @@ -19,6 +19,7 @@ /obj/item/ammo_casing/junk/incendiary = 20, /obj/item/ammo_casing/junk/shock = 20, /obj/item/ammo_casing/junk/hunter = 20, + /obj/item/ammo_casing/junk/ants = 20, /obj/item/ammo_casing/junk/phasic = 5, /obj/item/ammo_casing/junk/ripper = 5, /obj/item/ammo_casing/junk/reaper = 1, @@ -27,6 +28,9 @@ /obj/item/ammo_casing/junk/incendiary projectile_type = /obj/projectile/bullet/incendiary/fire/junk +/obj/item/ammo_casing/junk/ants + projectile_type = /obj/projectile/bullet/dart/ants + /obj/item/ammo_casing/junk/phasic projectile_type = /obj/projectile/bullet/junk/phasic diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index 55029a1e45a4..819a948d6f1d 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -5,6 +5,7 @@ desc = "A .357 bullet casing." caliber = CALIBER_357 projectile_type = /obj/projectile/bullet/c357 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) /obj/item/ammo_casing/c357/spent projectile_type = null diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 3c06aa139504..0ece2eed5c5e 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -6,6 +6,7 @@ icon_state = "310-casing" caliber = CALIBER_STRILKA310 projectile_type = /obj/projectile/bullet/strilka310 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) /obj/item/ammo_casing/strilka310/Initialize(mapload) . = ..() @@ -56,6 +57,7 @@ name = "40mm rubber shell" desc = "A cased rubber puck. The big brother of the beanbag slug. Made for stopping someone dead in their tracks." projectile_type = /obj/projectile/bullet/shotgun_beanbag/a40mm + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) /obj/item/ammo_casing/a40mm/flak name = "40mm titanium flak shell" @@ -74,6 +76,7 @@ desc = "A cased tear gas grenade that can only be activated once fired out of a ballistic grenade launcher. Spreads a large amount of tear gas into the air upon impact. \ Great for suppressing riots, protests and birthday parties!" projectile_type = /obj/projectile/bullet/a40mm/tear_gas + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2) /obj/item/disk/design_disk/tear_gas_40mm name = "40mm riot suppression grenade shells design disk" @@ -110,6 +113,8 @@ icon_state = "rod_jagged" base_icon_state = "rod_jagged" projectile_type = /obj/projectile/bullet/rebar/syndie + custom_materials = list(/datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT) + /obj/item/ammo_casing/rebar/zaukerite name = "zaukerite sliver" diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 0877e5bfb6d6..00b2a379a2bf 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -31,7 +31,7 @@ name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "bshell" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2.5) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) projectile_type = /obj/projectile/bullet/shotgun_beanbag /obj/item/ammo_casing/shotgun/incendiary @@ -39,6 +39,7 @@ desc = "An incendiary-coated shotgun slug." icon_state = "ishell" projectile_type = /obj/projectile/bullet/incendiary/shotgun + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) /obj/item/ammo_casing/shotgun/incendiary/no_trail name = "precision incendiary slug" @@ -53,6 +54,7 @@ pellets = 6 variance = 15 randomspread = TRUE + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" @@ -66,7 +68,7 @@ desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "mshell" projectile_type = /obj/projectile/bullet/cannonball/meteorslug - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.2) /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" @@ -75,13 +77,14 @@ would have difficulty with." icon_state = "pshell" projectile_type = /obj/projectile/beam/pulse/shotgun - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.65, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "heshell" projectile_type = /obj/projectile/bullet/shotgun_frag12 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) /obj/item/ammo_casing/shotgun/buckshot name = "buckshot shell" @@ -119,7 +122,7 @@ pellets = 6 variance = 15 randomspread = TRUE - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) /obj/item/ammo_casing/shotgun/incapacitate name = "custom incapacitating shot" @@ -136,7 +139,7 @@ into outsides." icon_state = "flechette" projectile_type = /obj/projectile/bullet/pellet/flechette - custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) pellets = 8 variance = 10 @@ -148,7 +151,7 @@ Looks like a donk-pocket! Tastes like death!" icon_state = "flechette_donk" projectile_type = /obj/projectile/bullet/pellet/flechette/donk - custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) pellets = 5 /obj/item/ammo_casing/shotgun/ion @@ -160,7 +163,7 @@ pellets = 4 variance = 15 randomspread = TRUE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/ammo_casing/shotgun/scatterlaser name = "scatter laser shell" @@ -170,6 +173,7 @@ pellets = 6 variance = 15 randomspread = TRUE + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2) /obj/item/ammo_casing/shotgun/scatterlaser/emp_act(severity) . = ..() @@ -185,6 +189,8 @@ desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." icon_state = "cshell" projectile_type = null + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + /* // DARKPACK EDIT REMOVAL /obj/item/ammo_casing/shotgun/techshell/Initialize(mapload) . = ..() @@ -201,24 +207,28 @@ desc = "A dart for use in shotguns. Can be injected with up to 15 units of any chemical." icon_state = "cshell" projectile_type = /obj/projectile/bullet/dart + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3) var/reagent_amount = 15 /obj/item/ammo_casing/shotgun/dart/Initialize(mapload) . = ..() create_reagents(reagent_amount, OPENCONTAINER) -/obj/item/ammo_casing/shotgun/dart/attackby() - return +// Can't be collected into an ammo box from the floor, for whatever reason. +/obj/item/ammo_casing/shotgun/dart/collect_into_box(mob/living/user, obj/item/ammo_box/box) + return FALSE /obj/item/ammo_casing/shotgun/dart/large name = "XL shotgun dart" desc = "A dart for use in shotguns. Can be injected with up to 25 units of any chemical." reagent_amount = 25 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5) /obj/item/ammo_casing/shotgun/dart/bioterror name = "bioterror dart" desc = "An improved shotgun dart filled with deadly toxins. Can be injected with up to 30 units of any chemical." reagent_amount = 30 + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5) /obj/item/ammo_casing/shotgun/dart/bioterror/Initialize(mapload) . = ..() diff --git a/code/modules/projectiles/ammunition/energy/_energy.dm b/code/modules/projectiles/ammunition/energy/_energy.dm index 1ec145650f1f..aed40baf5c57 100644 --- a/code/modules/projectiles/ammunition/energy/_energy.dm +++ b/code/modules/projectiles/ammunition/energy/_energy.dm @@ -4,6 +4,7 @@ caliber = ENERGY projectile_type = /obj/projectile/energy slot_flags = null + custom_materials = null var/e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE) //The amount of energy a cell needs to expend to create this shot. var/select_name = CALIBER_ENERGY fire_sound = 'sound/items/weapons/laser.ogg' diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm index 5ae0e41cfd9a..f23eba19cafe 100644 --- a/code/modules/projectiles/ammunition/special/syringe.dm +++ b/code/modules/projectiles/ammunition/special/syringe.dm @@ -4,6 +4,7 @@ slot_flags = null projectile_type = /obj/projectile/bullet/dart/syringe firing_effect_type = null + custom_materials = null /obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") if(!loaded_projectile) diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 41f9ec154927..612645ce83aa 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -23,10 +23,7 @@ w_class = WEIGHT_CLASS_NORMAL ammo_type = /obj/item/ammo_casing/c38 caliber = CALIBER_38 - custom_materials = list( - /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 4, - /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 1, - ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2) max_ammo = 15 ammo_band_icon = "+38mag_ammo_band" ammo_band_color = null @@ -43,6 +40,7 @@ desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal." ammo_type = /obj/item/ammo_casing/c38/trac ammo_band_color = COLOR_AMMO_TRACK + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ammo_box/magazine/m38/match name = "battle rifle magazine (.38 Match)" @@ -55,12 +53,14 @@ desc = parent_type::desc + " These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." ammo_type = /obj/item/ammo_casing/c38/match/bouncy ammo_band_color = COLOR_AMMO_RUBBER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2) /obj/item/ammo_box/magazine/m38/true name = "battle rifle magazine (.38 True Strike)" desc = parent_type::desc + " Bullets bounce towards new targets with surprising accuracy and can strike through armored target" ammo_type = /obj/item/ammo_casing/c38/match/true ammo_band_color = COLOR_AMMO_TRUESTRIKE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/magazine/m38/dumdum name = "battle rifle magazine (.38 DumDum)" @@ -73,15 +73,18 @@ desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload." ammo_type = /obj/item/ammo_casing/c38/hotshot ammo_band_color = COLOR_AMMO_HOTSHOT + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/magazine/m38/iceblox name = "battle rifle magazine (.38 Iceblox)" desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload." ammo_type = /obj/item/ammo_casing/c38/iceblox ammo_band_color = COLOR_AMMO_ICEBLOX + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/magazine/m38/flare name = "battle rifle magazine (.38 Flare)" desc = parent_type::desc + " Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see." ammo_type = /obj/item/ammo_casing/c38/flare ammo_band_color = COLOR_AMMO_HELLFIRE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75) diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index d85639054758..e8b595d5201b 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -8,6 +8,7 @@ ammo_type = /obj/item/ammo_casing/c46x30mm caliber = CALIBER_46X30MM max_ammo = 20 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2) /obj/item/ammo_box/magazine/wt550m9/update_icon_state() . = ..() @@ -17,11 +18,13 @@ name = "\improper WT-550 magazine (4.6x30mm AP)" MAGAZINE_TYPE_ARMORPIERCE ammo_type = /obj/item/ammo_casing/c46x30mm/ap + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6) /obj/item/ammo_box/magazine/wt550m9/wtic name = "\improper WT-550 magazine (4.6x30mm incendiary)" MAGAZINE_TYPE_INCENDIARY ammo_type = /obj/item/ammo_casing/c46x30mm/inc + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ammo_box/magazine/smartgun diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 2853cecc9bfa..e047c8978f8a 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -45,19 +45,19 @@ max_ammo = 4 /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal - name = "single round magazine" - max_ammo = 1 + name = "rebar crossbow magazine" + max_ammo = 2 caliber = CALIBER_REBAR ammo_type = /obj/item/ammo_casing/rebar -/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force - name = "two round magazine" - max_ammo = 2 +/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/forced + name = "stressed rebar crossbow magazine" + max_ammo = 3 caliber = CALIBER_REBAR ammo_type = /obj/item/ammo_casing/rebar /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie - max_ammo = 3 + max_ammo = 2 caliber = CALIBER_REBAR ammo_type = /obj/item/ammo_casing/rebar/syndie diff --git a/code/modules/projectiles/boxes_magazines/speedloaders.dm b/code/modules/projectiles/boxes_magazines/speedloaders.dm index 0fe437f05b99..2f4e72ea2c73 100644 --- a/code/modules/projectiles/boxes_magazines/speedloaders.dm +++ b/code/modules/projectiles/boxes_magazines/speedloaders.dm @@ -46,9 +46,9 @@ ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 caliber = CALIBER_38 - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) ammo_band_icon = "+38_ammo_band" ammo_band_color = null + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3) /obj/item/ammo_box/speedloader/c38/update_icon_state() . = ..() @@ -67,6 +67,7 @@ desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body." ammo_type = /obj/item/ammo_casing/c38/trac ammo_band_color = COLOR_AMMO_TRACK + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ammo_box/speedloader/c38/match name = "speed loader (.38 Match)" @@ -79,12 +80,14 @@ desc = parent_type::desc + " Rubber rounds are incredibly bouncy and MOSTLY less-lethal, making them great to show off trickshots with." ammo_type = /obj/item/ammo_casing/c38/match/bouncy ammo_band_color = COLOR_AMMO_RUBBER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) /obj/item/ammo_box/speedloader/c38/true name = "speed loader (.38 True Strike)" desc = parent_type::desc + " True Strike bullets bounce towards new targets with surprising accuracy after ricocheting." ammo_type = /obj/item/ammo_casing/c38/match/true ammo_band_color = COLOR_AMMO_TRUESTRIKE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/speedloader/c38/dumdum name = "speed loader (.38 DumDum)" @@ -99,18 +102,21 @@ desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload that ignites struck targets." ammo_type = /obj/item/ammo_casing/c38/hotshot ammo_band_color = COLOR_AMMO_HOTSHOT + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/speedloader/c38/iceblox name = "speed loader (.38 Iceblox)" desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload that lower the body temperature of struck targets." ammo_type = /obj/item/ammo_casing/c38/iceblox ammo_band_color = COLOR_AMMO_ICEBLOX + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ammo_box/speedloader/c38/flare name = "speed loader (.38 Flare)" desc = parent_type::desc + " Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see." ammo_type = /obj/item/ammo_casing/c38/flare ammo_band_color = COLOR_AMMO_HELLFIRE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ammo_box/speedloader/strilka310 name = "stripper clip (.310 Strilka)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index c7a76d851536..7419cce5c81f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -413,7 +413,7 @@ if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can shoot. shoot_with_empty_chamber(user) - return ITEM_INTERACT_BLOCKING + return user.combat_mode ? ITEM_INTERACT_SKIP_TO_ATTACK : ITEM_INTERACT_BLOCKING if(check_botched(user, target)) return NONE @@ -486,33 +486,30 @@ if(iteration > 1 && !(user.is_holding(src))) //for burst firing firing_burst = FALSE return FALSE - if(chambered?.loaded_projectile) - if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. - if(chambered.harmful) // Is the bullet chambered harmful? - to_chat(user, span_warning("[src] is lethally chambered! You don't want to risk harming anyone...")) - firing_burst = FALSE - return FALSE - var/sprd - if(randomspread) - sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (random_spread)) - else //Smart spread - sprd = round((((burst_spread_mult/burst_size) * iteration) - (0.5 + (burst_spread_mult * 0.25))) * (random_spread)) - before_firing(target,user) - if(!chambered.fire_casing(target, user, params, 0, suppressed, zone_override, sprd, src)) - shoot_with_empty_chamber(user) - firing_burst = FALSE - return FALSE - else - if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot - shoot_live_shot(user, TRUE, target, message) - else - shoot_live_shot(user, FALSE, target, message) - if (iteration >= burst_size) - firing_burst = FALSE - else + if(!chambered?.loaded_projectile) shoot_with_empty_chamber(user) firing_burst = FALSE return FALSE + + if(HAS_TRAIT(user, TRAIT_PACIFISM) && chambered.harmful) // Is the bullet chambered harmful? + to_chat(user, span_warning("[src] is lethally chambered! You don't want to risk harming anyone...")) + firing_burst = FALSE + return FALSE + + var/sprd = 0 + if(randomspread) + sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (random_spread)) + else //Smart spread + sprd = round((((burst_spread_mult/burst_size) * iteration) - (0.5 + (burst_spread_mult * 0.25))) * (random_spread)) + before_firing(target,user) + if(!chambered.fire_casing(target, user, params, 0, suppressed, zone_override, sprd, src)) + shoot_with_empty_chamber(user) + firing_burst = FALSE + return FALSE + shoot_live_shot(user, get_dist(user, target) <= 1, target, message) + if (iteration >= burst_size) + firing_burst = FALSE + process_chamber() update_appearance() return TRUE @@ -584,25 +581,21 @@ for(var/i = 1 to burst_size) addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, total_random_spread, burst_spread_mult, i), modified_burst_delay * (i - 1)) addtimer(CALLBACK(src, PROC_REF(reset_fire_cd)), modified_fire_delay) // for the case of fire delay longer than burst + else - if(chambered) - if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. - if(chambered.harmful) // Is the bullet chambered harmful? - to_chat(user, span_warning("[src] is lethally chambered! You don't want to risk harming anyone...")) - return NONE - var/sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * total_random_spread) - before_firing(target,user) - if(!chambered.fire_casing(target, user, params, 0, suppressed, zone_override, sprd, src)) - shoot_with_empty_chamber(user) - return NONE - else - if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot - shoot_live_shot(user, TRUE, target, message) - else - shoot_live_shot(user, FALSE, target, message) - else + if(!chambered) shoot_with_empty_chamber(user) + return user.combat_mode ? ITEM_INTERACT_SKIP_TO_ATTACK : NONE + if(HAS_TRAIT(user, TRAIT_PACIFISM) && chambered.harmful) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. + to_chat(user, span_warning("[src] is lethally chambered! You don't want to risk harming anyone...")) return NONE + var/sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * total_random_spread) + before_firing(target,user) + if(!chambered.fire_casing(target, user, params, 0, suppressed, zone_override, sprd, src)) + shoot_with_empty_chamber(user) + return user.combat_mode ? ITEM_INTERACT_SKIP_TO_ATTACK : NONE + + shoot_live_shot(user, get_dist(user, target) <= 1, target, message) // If gun gets destroyed as a result of firing if (!QDELETED(src)) process_chamber() @@ -610,10 +603,8 @@ fire_cd = TRUE addtimer(CALLBACK(src, PROC_REF(reset_fire_cd)), modified_fire_delay) - if(user) - user.update_held_items() + user?.update_held_items() SSblackbox.record_feedback("tally", "gun_fired", 1, type) - return TRUE /obj/item/gun/proc/reset_fire_cd() @@ -703,7 +694,7 @@ target.visible_message(span_warning("[user] pulls the trigger!"), span_userdanger("[(user == target) ? "You pull" : "[user] pulls"] the trigger!")) if(!chambered?.loaded_projectile) - shoot_with_empty_chamber() + shoot_with_empty_chamber(user) return ITEM_INTERACT_BLOCKING chambered.loaded_projectile.damage *= 5 diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 1ad5fcffe9f6..e2754c6dfde3 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -937,6 +937,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( icon = 'icons/obj/weapons/guns/ballistic.dmi' icon_state = "suppressor" w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /// How quiet should the gun be when we're installed? var/suppression = SUPPRESSED_QUIET diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index b4332f005a11..67d94be72974 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -313,11 +313,11 @@ return ..() -/obj/item/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, list/modifiers, list/attack_modifiers) - if(!cover_open && istype(A, accepted_magazine_type)) +/obj/item/gun/ballistic/automatic/l6_saw/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!cover_open && istype(tool, accepted_magazine_type)) balloon_alert(user, "open the cover!") - return - ..() + return ITEM_INTERACT_BLOCKING + return ..() // Laser rifle (rechargeable magazine) // diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index 53873e8530bc..23f4d43510bc 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -21,9 +21,9 @@ /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted/tear spawn_magazine_type = /obj/item/ammo_box/magazine/internal/grenadelauncher/tear -/obj/item/gun/ballistic/revolver/grenadelauncher/attackby(obj/item/A, mob/user, list/modifiers, list/attack_modifiers) - ..() - if(istype(A, /obj/item/ammo_box) || isammocasing(A)) +/obj/item/gun/ballistic/revolver/grenadelauncher/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if((. = ITEM_INTERACT_SUCCESS) && (istype(tool, /obj/item/ammo_box) || isammocasing(tool))) chamber_round() /obj/item/gun/ballistic/revolver/grenadelauncher/underbarrel diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 08ddb0155ed1..1dd4039a57c4 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -269,7 +269,7 @@ name = "\improper Liberator" desc = "A poorly made 3D printed \"gun\", only capable of firing a single shot." icon_state = "doorhickey" - custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2) + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) bolt_type = BOLT_TYPE_NO_BOLT internal_magazine = TRUE casing_ejector = FALSE diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index d33797802619..92d9c9fd5f3e 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -41,7 +41,7 @@ chamber_round() /obj/item/gun/ballistic/revolver/click_alt(mob/user) - spin() + spin_chamber(user) return CLICK_ACTION_SUCCESS /obj/item/gun/ballistic/revolver/fire_sounds() @@ -57,15 +57,16 @@ if(play_click) playsound(src, 'sound/items/weapons/gun/general/ballistic_click.ogg', fire_sound_volume, vary_fire_sound, frequency = click_frequency_to_use) -/obj/item/gun/ballistic/revolver/verb/spin() - set name = "Spin Chamber" - var/mob/user = usr +GAME_VERB(/obj/item/gun/ballistic/revolver, spin, "Spin Chamber", null) + spin_chamber(usr) - if(user.stat || !in_range(user, src)) +/obj/item/gun/ballistic/revolver/verb/spin_chamber(mob/living/user) + if(!istype(user) || user.stat || !in_range(user, src)) return if (recent_spin > world.time) return + recent_spin = world.time + spin_delay if(do_spin()) @@ -262,7 +263,7 @@ /obj/item/gun/ballistic/revolver/russian/attack_self(mob/user) if(!spun) - spin() + spin_chamber(user) return TRUE return ..() diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 770992e4dff3..760437dd0e55 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -195,6 +195,7 @@ name = "heated rebar crossbow" desc = "A handcrafted crossbow. \ Aside from conventional sharpened iron rods, it can also fire specialty ammo made from the atmos crystalizer - zaukerite, metallic hydrogen, and healium rods all work. \ + A makeshift Quiver can be made with an oxygen tank, wire, and a welder.\ Very slow to reload - you can craft the crossbow with a crowbar to loosen the crossbar, but risk a misfire, or worse..." icon = 'icons/obj/weapons/guns/ballistic.dmi' icon_state = "rebarxbow" @@ -217,8 +218,10 @@ fire_sound = 'sound/items/xbow_lock.ogg' can_be_sawn_off = FALSE tac_reloads = FALSE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2) - var/draw_time = 3 SECONDS + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.62) + var/draw_time = 1.5 SECONDS + var/reload_time = 1.5 SECONDS + var/doafter_flags = NONE SET_BASE_PIXEL(0, 0) /obj/item/gun/ballistic/rifle/rebarxbow/rack(mob/user = null) @@ -232,7 +235,7 @@ update_appearance() /obj/item/gun/ballistic/rifle/rebarxbow/drop_bolt(mob/user = null) - if(!do_after(user, draw_time, target = src)) + if(!do_after(user, draw_time, target = src,timed_action_flags = src.doafter_flags)) return playsound(src, bolt_drop_sound, bolt_drop_sound_volume, FALSE) balloon_alert(user, "bowstring drawn") @@ -267,23 +270,27 @@ /obj/item/gun/ballistic/rifle/rebarxbow/forced name = "stressed rebar crossbow" - desc = "Some idiot decided that they would risk shooting themselves in the face if it meant they could have a draw this crossbow a bit faster. Hopefully, it was worth it." + desc = "Some idiot decided that they would risk shooting themselves in the face if it meant they could rack and reload the crossbow faster. Hopefully, it was worth it." // Feel free to add a recipe to allow you to change it back if you would like, I just wasn't sure if you could have two recipes for the same thing. can_misfire = TRUE - draw_time = 1.5 + draw_time = 0.5 SECONDS + reload_time = 0.5 SECONDS + doafter_flags = IGNORE_USER_LOC_CHANGE + accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/forced misfire_probability = 25 - accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force /obj/item/gun/ballistic/rifle/rebarxbow/syndie name = "syndicate rebar crossbow" desc = "The syndicate liked the bootleg rebar crossbow NT engineers made, so they showed what it could be if properly developed. \ - Holds three shots without a chance of exploding, and features a built in scope. Compatible with all known crossbow ammunition." + auto reloads from backpack quiver when racking." icon_state = "rebarxbowsyndie" inhand_icon_state = "rebarxbowsyndie" worn_icon_state = "rebarxbowsyndie" w_class = WEIGHT_CLASS_NORMAL initial_caliber = CALIBER_REBAR - draw_time = 1 + draw_time = 0.5 SECONDS + reload_time = 1.2 SECONDS + doafter_flags = IGNORE_USER_LOC_CHANGE accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie /obj/item/gun/ballistic/rifle/rebarxbow/syndie/Initialize(mapload) @@ -299,10 +306,10 @@ inhand_icon_state = "pipegun" worn_icon_state = "pipegun" fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg' - custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.05, /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3) accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun - - projectile_damage_multiplier = 1.35 + projectile_damage_multiplier = 1.75 + projectile_speed_multiplier = 1.6 obj_flags = UNIQUE_RENAME can_be_sawn_off = FALSE trigger_guard = TRIGGER_GUARD_ALLOW_ALL @@ -338,9 +345,10 @@ icon_state = "pipepistol" inhand_icon_state = "pipepistol" worn_icon_state = "gun" - custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.25, /datum/material/wood = SHEET_MATERIAL_AMOUNT * 4, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol - projectile_damage_multiplier = 0.50 + projectile_damage_multiplier = 0.625 + projectile_speed_multiplier = 1 spread = 15 //kinda inaccurate burst_size = 3 //but it empties the entire magazine when it fires burst_delay = 0.3 // and by empties, I mean it does it all at once @@ -362,13 +370,14 @@ inhand_icon_state = "regal_pipegun" worn_icon_state = "regal_pipegun" accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/prime - projectile_damage_multiplier = 2 + projectile_damage_multiplier = 3 custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 9.15, - /datum/material/wood = SHEET_MATERIAL_AMOUNT *8, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 9.2, + /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3, ) /obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol/prime @@ -495,7 +504,12 @@ semi_auto = TRUE slot_flags = ITEM_SLOT_BACK projectile_damage_multiplier = 0.5 - custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT) + custom_materials = list( + /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, + /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2, + ) SET_BASE_PIXEL(-8, 0) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 77d61147b676..cf291a528634 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -103,6 +103,7 @@ if(cell && resistance_flags & INDESTRUCTIBLE) cell.resistance_flags |= INDESTRUCTIBLE cell.resistance_flags |= BOMB_PROOF + cell.custom_materials = null //do not give printed energy guns more mats than they already have. update_ammo_types() recharge_newshot(TRUE) if(selfcharge) diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm index e2405192fb7e..138bb45def59 100644 --- a/code/modules/projectiles/guns/energy/crank_guns.dm +++ b/code/modules/projectiles/guns/energy/crank_guns.dm @@ -8,7 +8,7 @@ slot_flags = ITEM_SLOT_BACK obj_flags = UNIQUE_RENAME weapon_weight = WEAPON_HEAVY - custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2) + custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.35, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) light_color = COLOR_PURPLE /obj/item/gun/energy/laser/musket/add_bayonet_point() @@ -40,12 +40,11 @@ custom_materials = list( /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.4, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.35, - /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.55, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45, + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3, ) - /obj/item/gun/energy/disabler/smoothbore name = "smoothbore disabler" desc = "A hand-crafted disabler, using a hard knock on an energy cell to fire the stunner laser. A lack of proper focusing means it has no accuracy whatsoever." @@ -57,9 +56,10 @@ obj_flags = UNIQUE_RENAME custom_materials = list( /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.25, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.35, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, - /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5, + /datum/material/plastic = SMALL_MATERIAL_AMOUNT, ) /obj/item/gun/energy/disabler/smoothbore/Initialize(mapload) @@ -92,10 +92,13 @@ spread = 0 //could be like 5, but having just very tiny spread kinda feels like bullshit custom_materials = list( /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, - /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.25, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5.15, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, - /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.2) + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.3, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, + /datum/material/plastic = SMALL_MATERIAL_AMOUNT, + ) //Inferno and Cryo Pistols @@ -166,9 +169,9 @@ charge_sections = 1 item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.25, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.29 + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45, ) /obj/item/gun/energy/laser/musket/repeater/Initialize(mapload) diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index e579148f03d7..ae2ba6fb7cfc 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -165,16 +165,15 @@ setting_overlay = mutable_appearance(icon,setting_iconstate()) add_overlay(setting_overlay) -/obj/item/gun/energy/dueling/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(istype(W, /obj/item/gun/energy/dueling)) - var/obj/item/gun/energy/dueling/other_gun = W - - if(!check_valid_duel(user, FALSE) && !other_gun.check_valid_duel(user, FALSE)) - var/datum/duel/D = new(src, other_gun) - to_chat(user,span_notice("Pairing established. Pairing code: [D.pairing_code]")) - return - - return ..() +/obj/item/gun/energy/dueling/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/gun/energy/dueling)) + return NONE + var/obj/item/gun/energy/dueling/other_gun = tool + if(check_valid_duel(user, FALSE) || other_gun.check_valid_duel(user, FALSE)) + return ITEM_INTERACT_BLOCKING + var/datum/duel/newduel = new(src, other_gun) + to_chat(user,span_notice("Pairing established. Pairing code: [newduel.pairing_code]")) + return ITEM_INTERACT_SUCCESS /obj/item/gun/energy/dueling/examine_more(mob/user) . = ..() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 0363850860f3..22473f55199f 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -142,12 +142,11 @@ if(istype(arrived, /obj/item/borg/upgrade/modkit)) modkits |= arrived -/obj/item/gun/energy/recharge/kinetic_accelerator/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/borg/upgrade/modkit)) - var/obj/item/borg/upgrade/modkit/MK = I - MK.install(src, user) - else - return ..() +/obj/item/gun/energy/recharge/kinetic_accelerator/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/borg/upgrade/modkit)) + return NONE + astype(tool, /obj/item/borg/upgrade/modkit).install(src, user) + return ITEM_INTERACT_SUCCESS /obj/item/gun/energy/recharge/kinetic_accelerator/proc/get_remaining_mod_capacity() var/current_capacity_used = 0 @@ -320,11 +319,11 @@ . = ..() . += span_notice("Occupies [cost]% of mod capacity.") -/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) - if(istype(A, /obj/item/gun/energy/recharge/kinetic_accelerator) && !issilicon(user)) - install(A, user) - else - return ..() +/obj/item/borg/upgrade/modkit/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/gun/energy/recharge/kinetic_accelerator) || issilicon(user)) + return NONE + install(tool, user) + return ITEM_INTERACT_SUCCESS /obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) . = ..() @@ -398,6 +397,7 @@ desc = "Increases the range of a kinetic accelerator when installed." modifier = 1 cost = 25 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K) K.range += modifier @@ -408,6 +408,7 @@ name = "damage increase" desc = "Increases the damage of kinetic accelerator when installed." modifier = 10 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K) K.damage += modifier @@ -419,6 +420,7 @@ desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use." modifier = 3.2 minebot_upgrade = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT) // Recalculate recharge time after adding or removing cooldown mods. /obj/item/borg/upgrade/modkit/cooldown/proc/get_recharge_time(obj/item/gun/energy/recharge/kinetic_accelerator/KA) @@ -512,6 +514,7 @@ name = "mining explosion" desc = "Causes the kinetic accelerator to destroy rock in an AoE." turf_aoe = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75) // Negates one CD modifier modifier = -/obj/item/borg/upgrade/modkit/cooldown::modifier @@ -525,6 +528,7 @@ desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE." turf_aoe = TRUE modifier = -1 // Slightly better than normal turf AOE as its a rare find + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5) // Minebot passthrough /obj/item/borg/upgrade/modkit/minebot_passthrough @@ -562,6 +566,7 @@ denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss. cost = 50 + custom_materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT) /obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) var/valid_repeat = FALSE @@ -603,6 +608,7 @@ denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts cost = 30 modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it. + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs. @@ -619,6 +625,7 @@ denied_type = /obj/item/borg/upgrade/modkit/bounty modifier = 1.25 cost = 30 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 2) var/maximum_bounty = 25 var/list/bounties_reaped = list() @@ -670,6 +677,7 @@ desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed." cost = 20 denied_type = /obj/item/borg/upgrade/modkit/trigger_guard + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm index c9b4455919a4..f3ca5900ade1 100644 --- a/code/modules/projectiles/guns/energy/laser_gatling.dm +++ b/code/modules/projectiles/guns/energy/laser_gatling.dm @@ -54,11 +54,12 @@ else ..() -/obj/item/minigunpack/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(W == gun) //Don't need armed check, because if you have the gun assume its armed. - user.dropItemToGround(gun, TRUE) - else - ..() +/obj/item/minigunpack/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool != gun) //Don't need armed check, because if you have the gun assume its armed. + return NONE + user.dropItemToGround(gun, TRUE) + return ITEM_INTERACT_SUCCESS + /obj/item/minigunpack/dropped(mob/user) . = ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 8fc3bff10088..2b452d9c461d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -46,6 +46,7 @@ ammo_x_offset = 1 selfcharge = 1 gun_flags = NOT_A_REAL_GUN + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/gun/energy/meteorgun name = "meteor gun" @@ -100,6 +101,7 @@ usesound = list('sound/items/tools/welder.ogg', 'sound/items/tools/welder2.ogg') tool_behaviour = TOOL_WELDER toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 4) /obj/item/gun/energy/plasmacutter/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) @@ -195,6 +197,7 @@ inhand_icon_state = "adv_plasmacutter" force = 15 ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) #define AMMO_SELECT_BLUE 1 #define AMMO_SELECT_ORANGE 2 @@ -209,6 +212,7 @@ icon_state = "wormhole_projector" base_icon_state = "wormhole_projector" automatic_charge_overlays = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT) var/obj/effect/portal/p_blue var/obj/effect/portal/p_orange var/firing_core = FALSE @@ -218,13 +222,17 @@ . = ..() . += span_notice("Left-click to fire blue wormholes and right-click to fire orange wormholes.") -/obj/item/gun/energy/wormhole_projector/attackby(obj/item/C, mob/user) - if(istype(C, /obj/item/assembly/signaler/anomaly/bluespace)) - to_chat(user, span_notice("You insert [C] into the wormhole projector and the weapon gently hums to life.")) - firing_core = TRUE - playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - qdel(C) - return +/obj/item/gun/energy/wormhole_projector/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/assembly/signaler/anomaly/bluespace)) + return NONE + if(firing_core) + user.balloon_alert(user, "already has a core!") + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You insert [tool] into the wormhole projector and the weapon gently hums to life.")) + firing_core = TRUE + playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) + qdel(tool) + return ITEM_INTERACT_SUCCESS /obj/item/gun/energy/wormhole_projector/can_shoot() if(!firing_core) @@ -355,18 +363,29 @@ inhand_icon_state = "gravity_gun" icon_state = "gravity_gun" automatic_charge_overlays = FALSE + custom_materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6, + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.5, + ) var/power = 4 var/firing_core = FALSE gun_flags = NOT_A_REAL_GUN -/obj/item/gun/energy/gravity_gun/attackby(obj/item/C, mob/user) - if(istype(C, /obj/item/assembly/signaler/anomaly/grav)) - to_chat(user, span_notice("You insert [C] into the gravitational manipulator and the weapon gently hums to life.")) - firing_core = TRUE - playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - qdel(C) - return - return ..() +/obj/item/gun/energy/gravity_gun/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/assembly/signaler/anomaly/grav)) + return NONE + if(firing_core) + user.balloon_alert(user, "already has a core!") + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You insert [tool] into the gravitational manipulator and the weapon gently hums to life.")) + firing_core = TRUE + playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) + qdel(tool) + return ITEM_INTERACT_SUCCESS /obj/item/gun/energy/gravity_gun/can_shoot() if(!firing_core) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index f32d53cae10d..d3c85f0f1e04 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -144,7 +144,7 @@ recharge_newshot() return 1 -/obj/item/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) +/obj/item/gun/magic/shoot_with_empty_chamber(mob/living/user) to_chat(user, span_warning("\The [src] whizzles quietly.")) /obj/item/gun/magic/suicide_act(mob/living/user) diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index 3615616f4f39..f8b0a4f429a7 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -11,6 +11,10 @@ /// If FALSE, only wizards or survivalists can use the staff to its full potential - If TRUE, anyone can var/allow_intruder_use = FALSE +/obj/item/gun/magic/staff/Initialize(mapload) + . = ..() + AddComponent(/datum/component/walking_aid) + /obj/item/gun/magic/staff/proc/is_wizard_or_friend(mob/user) if(!HAS_MIND_TRAIT(user, TRAIT_MAGICALLY_GIFTED) && !allow_intruder_use) return FALSE @@ -331,7 +335,7 @@ user.AddComponent(\ /datum/component/face_decal/splat,\ icon_state = "creampie",\ - layers = EXTERNAL_FRONT,\ + layers = list(EXTERNAL_FRONT = BODY_FRONT_LAYER),\ ) return SHAME diff --git a/code/modules/projectiles/guns/special/blastcannon.dm b/code/modules/projectiles/guns/special/blastcannon.dm index 80bf245aa330..3b233409f56f 100644 --- a/code/modules/projectiles/guns/special/blastcannon.dm +++ b/code/modules/projectiles/guns/special/blastcannon.dm @@ -89,24 +89,25 @@ inhand_icon_state = icon_state return ..() -/obj/item/gun/blastcannon/attackby(obj/item/transfer_valve/bomb_to_attach, mob/user) - if(!istype(bomb_to_attach)) - return ..() - +/obj/item/gun/blastcannon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/transfer_valve)) + return NONE + var/obj/item/transfer_valve/bomb_to_attach = tool if(bomb) to_chat(user, span_warning("[bomb] is already attached to [src]!")) - return + return ITEM_INTERACT_BLOCKING if(!bomb_to_attach.ready()) to_chat(user, span_warning("What good would an incomplete bomb do?")) - return FALSE + return ITEM_INTERACT_BLOCKING if(!user.transferItemToLoc(bomb_to_attach, src)) to_chat(user, span_warning("[bomb_to_attach] seems to be stuck to your hand!")) - return FALSE + return ITEM_INTERACT_BLOCKING - user.visible_message(span_warning("[user] attaches [bomb_to_attach] to [src]!")) + user.visible_message(span_warning("[user] attaches [bomb_to_attach] to [src]!"), + span_notice("You attach bomb_to_attach to [src].")) bomb = bomb_to_attach update_appearance() - return TRUE + return ITEM_INTERACT_SUCCESS /obj/item/gun/blastcannon/try_fire_gun(atom/target, mob/living/user, params) if((!bomb && bombcheck) || isnull(target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) diff --git a/code/modules/projectiles/guns/special/grenade_launcher.dm b/code/modules/projectiles/guns/special/grenade_launcher.dm index 57b0ac681d13..79cbbdcbb3cb 100644 --- a/code/modules/projectiles/guns/special/grenade_launcher.dm +++ b/code/modules/projectiles/guns/special/grenade_launcher.dm @@ -25,18 +25,19 @@ max_grenades = reset_fantasy_variable("max_syringes", max_grenades) return ..() -/obj/item/gun/grenadelauncher/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - - if(istype(I, /obj/item/grenade/c4)) - return - if((isgrenade(I))) - if(grenades.len < max_grenades) - if(!user.transferItemToLoc(I, src)) - return - grenades += I - balloon_alert(user, "[grenades.len] / [max_grenades] grenades loaded") - else - balloon_alert(user, "it's already full!") +/obj/item/gun/grenadelauncher/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isgrenade(tool)) + return NONE + if(istype(tool, /obj/item/grenade/c4)) + return NONE + if(grenades.len == max_grenades) + balloon_alert(user, "it's already full!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + grenades += tool + balloon_alert(user, "[grenades.len] / [max_grenades] grenades loaded") + return ITEM_INTERACT_SUCCESS /obj/item/gun/grenadelauncher/can_shoot() return grenades.len diff --git a/code/modules/projectiles/guns/special/hand_of_midas.dm b/code/modules/projectiles/guns/special/hand_of_midas.dm index 863b791672d5..5eb468ad59ac 100644 --- a/code/modules/projectiles/guns/special/hand_of_midas.dm +++ b/code/modules/projectiles/guns/special/hand_of_midas.dm @@ -75,14 +75,15 @@ return ITEM_INTERACT_SUCCESS // If we botch a shot, we have to start over again by inserting gold coins into the gun. Can only be done if it has no charges or gold. -/obj/item/gun/magic/midas_hand/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() +/obj/item/gun/magic/midas_hand/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/coin/gold)) + return NONE if(charges || gold_timer) balloon_alert(user, "already loaded") - return - if(istype(I, /obj/item/coin/gold)) - handle_gold_charges(user, 1.5 SECONDS) - qdel(I) + return ITEM_INTERACT_BLOCKING + handle_gold_charges(user, 1.5 SECONDS) + qdel(tool) + return ITEM_INTERACT_SUCCESS /// Handles recharging & inserting gold amount /obj/item/gun/magic/midas_hand/proc/handle_gold_charges(user, gold_amount) diff --git a/code/modules/projectiles/guns/special/syringe_gun.dm b/code/modules/projectiles/guns/special/syringe_gun.dm index ceecb89044be..9e440c91f1e7 100644 --- a/code/modules/projectiles/guns/special/syringe_gun.dm +++ b/code/modules/projectiles/guns/special/syringe_gun.dm @@ -147,6 +147,7 @@ pixel_x = 0 max_syringes = 6 force = 4 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/gun/syringe/syndicate name = "dart pistol" diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index c262c10575fa..d549acda7a46 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -9,6 +9,7 @@ w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("pokes") attack_verb_simple = list("poke") + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) var/fail_message = "invalid user!" /// Explode when user check is failed. var/selfdestruct = FALSE @@ -134,6 +135,7 @@ desc = "This Security firing pin authorizes the weapon for only mindshield-implanted users." icon_state = "firing_pin_loyalty" req_implant = /obj/item/implant/mindshield + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2) /obj/item/firing_pin/implant/pindicate name = "syndicate firing pin" @@ -150,6 +152,7 @@ color = COLOR_YELLOW fail_message = "honk!" force_replace = TRUE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) /obj/item/firing_pin/clown/pin_auth(mob/living/user) playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) @@ -350,6 +353,7 @@ desc = "A firing pin used by the Australian defense force, retrofit to prevent weapon discharge on the station." icon_state = "firing_pin_explorer" fail_message = "cannot fire while on station, mate!" + custom_materials = list(/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) // This checks that the user isn't on the station Z-level. /obj/item/firing_pin/explorer/pin_auth(mob/living/user) diff --git a/code/modules/projectiles/projectile/bullets/junk.dm b/code/modules/projectiles/projectile/bullets/junk.dm index 35203e9ab66c..d5752cebcb3f 100644 --- a/code/modules/projectiles/projectile/bullets/junk.dm +++ b/code/modules/projectiles/projectile/bullets/junk.dm @@ -3,7 +3,7 @@ /obj/projectile/bullet/junk name = "junk bullet" icon_state = "trashball" - damage = 30 + damage = 40 embed_type = /datum/embedding/bullet/junk /// What biotype does our junk projectile especially harm? var/extra_damage_mob_biotypes = MOB_ROBOTIC @@ -29,7 +29,7 @@ living_target.apply_damage(finalized_damage, damagetype = extra_damage_type, def_zone = BODY_ZONE_CHEST, wound_bonus = wound_bonus) /datum/embedding/bullet/junk - embed_chance = 15 + embed_chance = 30 fall_chance = 3 jostle_chance = 4 ignore_throwspeed_threshold = TRUE @@ -41,10 +41,20 @@ /obj/projectile/bullet/incendiary/fire/junk name = "burning oil" - damage = 30 + damage = 40 fire_stacks = 5 suppressed = SUPPRESSED_NONE +/obj/projectile/bullet/dart/ants + name = "a ball of ants" + icon_state = "trashball" + damage = 40 // Fuck your life. + inject_flags = INJECT_CHECK_PENETRATE_THICK // Fuck your modsuit. + +/obj/projectile/bullet/dart/ants/Initialize(mapload) + . = ..() + reagents.add_reagent(/datum/reagent/ants, damage) // Get fucked, asshole. Ants. + /obj/projectile/bullet/junk/phasic name = "junk phasic bullet" icon_state = "gaussphase" @@ -53,7 +63,7 @@ /obj/projectile/bullet/junk/shock name = "bundle of live electrical parts" icon_state = "tesla_projectile" - damage = 15 + damage = 20 embed_type = null shrapnel_type = null extra_damage_added_damage = 30 @@ -70,14 +80,14 @@ icon_state = "gauss" extra_damage_mob_biotypes = MOB_ROBOTIC | MOB_BEAST | MOB_SPECIAL | MOB_MINING extra_damage_multiplier = 0 - extra_damage_added_damage = 50 + extra_damage_added_damage = 80 /obj/projectile/bullet/junk/ripper name = "junk ripper bullet" icon_state = "redtrac" - damage = 10 + damage = 20 embed_type = /datum/embedding/bullet/junk/ripper - wound_bonus = 10 + wound_bonus = 20 exposed_wound_bonus = 30 /datum/embedding/bullet/junk/ripper diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 85c2ef8e2a40..8b4ca1b21036 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -66,7 +66,7 @@ /obj/projectile/bullet/rebar name = "rebar" icon_state = "rebar" - damage = 30 + damage = 40 speed = 2.5 dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable armour_penetration = 10 @@ -92,9 +92,9 @@ /obj/projectile/bullet/rebar/syndie name = "rebar" icon_state = "rebar" - damage = 45 + damage = 50 dismemberment = 2 //It's a budget sniper rifle. - armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor. + armour_penetration = 35 //A bit better versus armor. Gets past anti laser armor or a sec vest, but doesnt get past proper bulletproof armor. wound_bonus = 10 exposed_wound_bonus = 20 embed_falloff_tile = -3 @@ -109,7 +109,7 @@ pain_stam_pct = 0.4 pain_mult = 3 jostle_pain_mult = 2 - rip_time = 1.4 SECONDS + rip_time = 2 SECONDS /obj/projectile/bullet/rebar/zaukerite name = "zaukerite shard" @@ -139,11 +139,11 @@ /obj/projectile/bullet/rebar/hydrogen name = "metallic hydrogen bolt" icon_state = "rebar_hydrogen" - damage = 35 - speed = 1.6 + damage = 40 //if someone gets this they deserve to twotap with it, metal H2 is that rough to make. + speed = 3 projectile_piercing = PASSMOB|PASSVEHICLE projectile_phasing = ~(PASSMOB|PASSVEHICLE) - max_pierces = 3 + max_pierces = 10 phasing_ignore_direct_target = TRUE dismemberment = 0 //goes through clean. damage_type = BRUTE diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm index 13a293c9a65b..8777c47c71b8 100644 --- a/code/modules/projectiles/projectile/energy/net_snare.dm +++ b/code/modules/projectiles/projectile/energy/net_snare.dm @@ -67,6 +67,7 @@ inhand_icon_state = "beacon" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2) ///Has a security ID been used to lock this in place? var/locked = FALSE diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm index 7207801b22a3..89661caf8614 100644 --- a/code/modules/reagents/chemistry/holder/holder.dm +++ b/code/modules/reagents/chemistry/holder/holder.dm @@ -98,6 +98,9 @@ stack_trace("non finite amount passed to add reagent [amount] [reagent_type]") return FALSE + if(SEND_SIGNAL(src, COMSIG_REAGENTS_PRE_ADD_REAGENT, reagent_type, amount, reagtemp, data, no_react) & COMPONENT_CANCEL_REAGENT_ADD) + return FALSE + var/datum/reagent/glob_reagent = GLOB.chemical_reagents_list[reagent_type] if(!glob_reagent) stack_trace("[my_atom] attempted to add a reagent called '[reagent_type]' which doesn't exist. ([usr])") diff --git a/code/modules/reagents/chemistry/items.dm b/code/modules/reagents/chemistry/items.dm index 34da7832d47f..73d8a8bc8c10 100644 --- a/code/modules/reagents/chemistry/items.dm +++ b/code/modules/reagents/chemistry/items.dm @@ -102,6 +102,7 @@ icon_state = "pHmeter" icon = 'icons/obj/medical/chemical.dmi' w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT) ///level of detail for output for the meter var/scanmode = DETAILED_CHEM_OUTPUT @@ -173,31 +174,35 @@ /obj/item/burner/grind_results() return list(/datum/reagent/consumable/ethanol = 5, /datum/reagent/silicon = 10) -/obj/item/burner/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() - if(is_reagent_container(I)) - if(lit) - var/obj/item/reagent_containers/container = I - container.reagents.expose_temperature(get_temperature()) - to_chat(user, span_notice("You heat up the [I] with the [src].")) - playsound(user.loc, 'sound/effects/chemistry/heatdam.ogg', 50, TRUE) - return - else if(I.is_drainable()) //Transfer FROM it TO us. Special code so it only happens when flame is off. - var/obj/item/reagent_containers/container = I - if(!container.reagents.total_volume) - to_chat(user, span_warning("[container] is empty and can't be poured!")) - return - - if(reagents.holder_full()) - to_chat(user, span_warning("[src] is full.")) - return - - var/trans = container.reagents.trans_to(src, container.amount_per_transfer_from_this, transferred_by = user) - to_chat(user, span_notice("You fill [src] with [trans] unit\s of the contents of [container].")) - if(I.heat < 1000) - return - set_lit(TRUE) - user.visible_message(span_notice("[user] lights up the [src].")) +/obj/item/burner/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_reagent_container(tool)) + if(tool.heat >= 1000) + set_lit(TRUE) + user.visible_message(span_notice("[user] lights up the [src].")) + return ITEM_INTERACT_SUCCESS + return NONE + + if(lit) + tool.reagents.expose_temperature(get_temperature()) + to_chat(user, span_notice("You heat up the [tool] with the [src].")) + playsound(user.loc, 'sound/effects/chemistry/heatdam.ogg', 50, TRUE) + return ITEM_INTERACT_SUCCESS + + if(tool.is_drainable()) //Transfer FROM it TO us. Special code so it only happens when flame is off. + var/obj/item/reagent_containers/container = tool + if(!container.reagents.total_volume) + to_chat(user, span_warning("[container] is empty and can't be poured!")) + return ITEM_INTERACT_BLOCKING + + if(reagents.holder_full()) + to_chat(user, span_warning("[src] is full.")) + return ITEM_INTERACT_BLOCKING + + var/trans = container.reagents.trans_to(src, container.amount_per_transfer_from_this, transferred_by = user) + to_chat(user, span_notice("You fill [src] with [trans] unit\s of the contents of [container].")) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/burner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!lit) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index a3a33ba7f8e7..a5c83ed25199 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -32,6 +32,8 @@ var/printing_speed = 0.75 SECONDS /// Amount of layers which printed pills will be coated in var/pill_layers = 3 + /// Current custom transfer amount + var/custom_transfer_amount = 15 /obj/machinery/chem_master/Initialize(mapload) create_reagents(100) @@ -281,6 +283,7 @@ .["selectedPillDuration"] = pill_layers var/obj/item/held_item = user.get_active_held_item() .["hasBeakerInHand"] = held_item?.is_chem_container() || FALSE + .["customTransferAmount"] = custom_transfer_amount //contents of source beaker var/list/beaker_data = null @@ -414,6 +417,18 @@ return TRUE + if("setCustomTransfer") + var/target = params["target"] + if(isnull(target)) + return FALSE + + target = text2num(target) + if(isnull(target)) + return FALSE + + custom_transfer_amount = clamp(target, 0, beaker.volume) + return TRUE + if("transfer") if(is_printing) say("The buffer is locked while printing.") diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 8bd4c5d1b56e..61af619cd31b 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -10,6 +10,7 @@ base_icon_state = "pandemic" resistance_flags = ACID_PROOF circuit = /obj/item/circuitboard/computer/pandemic + generate_map_preview = FALSE /// Whether the pandemic is ready to make another culture/vaccine var/wait = FALSE @@ -80,33 +81,33 @@ update_appearance() SStgui.update_uis(src) -/obj/machinery/computer/pandemic/attackby(obj/item/held_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/machinery/computer/pandemic/item_interaction(mob/living/user, obj/item/tool, list/modifiers) //Advanced science! Precision instruments (eg droppers and syringes) are precise enough to modify the loaded sample! - if(istype(held_item, /obj/item/reagent_containers/dropper) || istype(held_item, /obj/item/reagent_containers/syringe)) + if(istype(tool, /obj/item/reagent_containers/dropper) || istype(tool, /obj/item/reagent_containers/syringe)) if(!beaker) balloon_alert(user, "no beaker!") - return ..() - if(istype(held_item, /obj/item/reagent_containers/syringe) && LAZYACCESS(modifiers, RIGHT_CLICK)) - held_item.interact_with_atom_secondary(beaker, user) + return ITEM_INTERACT_BLOCKING + if(istype(tool, /obj/item/reagent_containers/syringe) && LAZYACCESS(modifiers, RIGHT_CLICK)) + tool.interact_with_atom_secondary(beaker, user) else - held_item.interact_with_atom(beaker, user) + tool.interact_with_atom(beaker, user) SStgui.update_uis(src) - return TRUE + return ITEM_INTERACT_SUCCESS - if(!is_reagent_container(held_item) || held_item.item_flags & ABSTRACT || !held_item.is_open_container()) - return ..() - . = TRUE //no afterattack + if(!is_reagent_container(tool) || tool.item_flags & ABSTRACT || !tool.is_open_container()) + return NONE if(machine_stat & (NOPOWER|BROKEN)) - return ..() + return ITEM_INTERACT_BLOCKING if(beaker) balloon_alert(user, "beaker swapped") try_put_in_hand(beaker, usr) else balloon_alert(user, "beaker loaded") - user.transferItemToLoc(held_item, src) - beaker = held_item + user.transferItemToLoc(tool, src) + beaker = tool update_appearance() SStgui.update_uis(src) + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/pandemic/on_deconstruction(disassembled) eject_beaker() diff --git a/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm b/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm index e360c24f2702..71e73cf42966 100644 --- a/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm +++ b/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm @@ -12,6 +12,7 @@ interaction_flags_click = FORBID_TELEKINESIS_REACH interaction_flags_mouse_drop = FORBID_TELEKINESIS_REACH storage_type = /datum/storage/portable_chem_mixer + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5) ///Creating an empty slot for a beaker that can be added to dispense into var/obj/item/reagent_containers/beaker diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 81e2a7ae9e62..70afb30fb412 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -75,9 +75,6 @@ /// The affected biotype, if the reagent damages/heals toxin damage of an affected mob. /// See "Mob bio-types flags" in /code/_DEFINES/mobs.dm var/affected_biotype = MOB_ORGANIC - /// The affected respiration type, if the reagent damages/heals oxygen damage of an affected mob. - /// See "Mob bio-types flags" in /code/_DEFINES/mobs.dm - var/affected_respiration_type = ALL /// A list of traits to apply while the reagent is being metabolized. var/list/metabolized_traits /// A list of traits to apply while the reagent is in a mob. diff --git a/code/modules/reagents/chemistry/reagents/atmos_gas_reagents.dm b/code/modules/reagents/chemistry/reagents/atmos_gas_reagents.dm index 6f6989596605..601e28e66bbe 100644 --- a/code/modules/reagents/chemistry/reagents/atmos_gas_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/atmos_gas_reagents.dm @@ -137,13 +137,12 @@ taste_description = "bitter" chemical_flags = REAGENT_NO_RANDOM_RECIPE affected_biotype = MOB_ORGANIC | MOB_MINERAL | MOB_PLANT // "toxic to all living beings" - affected_respiration_type = ALL /datum/reagent/zauker/on_mob_life(mob/living/breather, seconds_per_tick, metabolization_ratio) . = ..() var/need_mob_update need_mob_update = breather.adjust_brute_loss(6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += breather.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += breather.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += breather.adjust_fire_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += breather.adjust_tox_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 13784310a8bf..ae3213470ba3 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -35,10 +35,10 @@ switch(affected_mob.stat) if(CONSCIOUS) //bad thou_shall_heal = max(death_is_coming/20, 3) - need_mob_update += affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype) if(SOFT_CRIT) //meh convert thou_shall_heal = round(death_is_coming/13,0.1) - need_mob_update += affected_mob.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype) good_kind_of_healing = TRUE else //no convert thou_shall_heal = round(death_is_coming/10, 0.1) @@ -272,7 +272,7 @@ if(!overdosed) oxycalc = min(oxycalc, affected_mob.get_oxy_loss() + 0.5) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing. var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(-2 * oxycalc * normalise_creation_purity() * metabolization_ratio * seconds_per_tick , FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(-2 * oxycalc * normalise_creation_purity() * metabolization_ratio * seconds_per_tick , FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_tox_loss(2 * oxycalc * metabolization_ratio * seconds_per_tick / CONVERMOL_RATIO, updating_health = FALSE, required_biotype = affected_biotype) if(SPT_PROB((current_cycle-1) / 2, seconds_per_tick) && affected_mob.losebreath) affected_mob.losebreath-- @@ -302,7 +302,7 @@ /datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(-4.5 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(-4.5 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) if(drowsycd && COOLDOWN_FINISHED(src, drowsycd)) affected_mob.adjust_drowsiness(20 SECONDS) @@ -615,7 +615,7 @@ need_mob_update += affected_mob.adjust_tox_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) affected_mob.losebreath = 0 diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 4f755474024d..aa18369e8236 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -555,7 +555,7 @@ name = "Gin and Tonic" description = "An all time classic, mild cocktail." color = "#cae7ec" // rgb: 202,231,236 - boozepwr = 25 + boozepwr = 20 quality = DRINK_NICE taste_description = "mild and tart" ph = 3 @@ -567,7 +567,7 @@ name = "Rum and Coke" description = "Rum, mixed with cola." taste_description = "cola" - boozepwr = 40 + boozepwr = 30 quality = DRINK_NICE color = "#3E1B00" ph = 4 @@ -591,7 +591,7 @@ need_mob_update = cubano.adjust_brute_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += cubano.adjust_fire_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += cubano.adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += cubano.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += cubano.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -599,7 +599,7 @@ name = "Whiskey Cola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" // rgb: 62, 27, 0 - boozepwr = 70 + boozepwr = 40 quality = DRINK_NICE taste_description = "cola" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -641,7 +641,7 @@ name = "Screwdriver" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" // rgb: 166, 131, 16 - boozepwr = 55 + boozepwr = 40 quality = DRINK_NICE taste_description = "oranges" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -695,6 +695,7 @@ description = "Ewww..." color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 45 + quality = DRINK_GOOD taste_description = "sweet 'n creamy" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS @@ -836,7 +837,7 @@ name = "Irish Cream" description = "Whiskey-imbued cream, what else would you expect from the Irish?" color = "#e3d0b2" // rgb: 227,208,178 - boozepwr = 50 + boozepwr = 35 quality = DRINK_NICE taste_description = "creamy alcohol" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -875,7 +876,7 @@ name = "Long Island Iced Tea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#ff6633" // rgb: 255,102,51 - boozepwr = 35 + boozepwr = 50 quality = DRINK_VERYGOOD taste_description = "a mixture of cola and alcohol" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -909,7 +910,7 @@ name = "Irish Coffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." color = "#874010" // rgb: 135,64,16 - boozepwr = 35 + boozepwr = 30 quality = DRINK_NICE taste_description = "giving up on the day" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -931,7 +932,7 @@ name = "Black Russian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" // rgb: 54, 0, 0 - boozepwr = 70 + boozepwr = 60 quality = DRINK_NICE taste_description = "bitterness" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -941,7 +942,7 @@ name = "Manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#ff3300" // rgb: 255,51,0 - boozepwr = 30 + boozepwr = 50 quality = DRINK_NICE taste_description = "mild dryness" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -952,7 +953,7 @@ name = "Manhattan Project" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = COLOR_MOSTLY_PURE_RED - boozepwr = 45 + boozepwr = 60 quality = DRINK_VERYGOOD taste_description = "death, the destroyer of worlds" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -966,7 +967,7 @@ name = "Whiskey Soda" description = "For the more refined griffon." color = "#ffcc33" // rgb: 255,204,51 - boozepwr = 70 + boozepwr = 40 quality = DRINK_NICE taste_description = "soda" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -990,7 +991,7 @@ name = "Barefoot" description = "Barefoot and pregnant." color = "#fc5acc" // rgb: 252,90,204 - boozepwr = 45 + boozepwr = 30 quality = DRINK_VERYGOOD taste_description = "creamy berries" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1008,7 +1009,7 @@ name = "Snow White" description = "A cold refreshment." color = COLOR_WHITE // rgb: 255, 255, 255 - boozepwr = 35 + boozepwr = 20 quality = DRINK_NICE taste_description = "refreshing cold" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1101,7 +1102,7 @@ name = "Vodka and Tonic" description = "For when a gin and tonic isn't Russian enough." color = "#0064C8" // rgb: 0, 100, 200 - boozepwr = 70 + boozepwr = 40 quality = DRINK_NICE taste_description = "tart bitterness" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1111,7 +1112,7 @@ name = "Gin Fizz" description = "Refreshingly lemony, deliciously dry." color = "#ffffcc" // rgb: 255,255,204 - boozepwr = 45 + boozepwr = 25 quality = DRINK_GOOD taste_description = "dry, tart lemons" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1222,7 +1223,7 @@ name = "Aloe" description = "So very, very, very good." color = "#f8f800" // rgb: 248,248,0 - boozepwr = 35 + boozepwr = 30 quality = DRINK_VERYGOOD taste_description = "sweet 'n creamy" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1234,7 +1235,7 @@ name = "Andalusia" description = "A nice, strangely named drink." color = "#c8f860" // rgb: 200,248,96 - boozepwr = 40 + boozepwr = 45 quality = DRINK_GOOD taste_description = "lemons" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1244,7 +1245,7 @@ name = "Allies Cocktail" description = "A drink made from your allies. Not as sweet as those made from your enemies." color = "#60f8f8" // rgb: 96,248,248 - boozepwr = 45 + boozepwr = 50 quality = DRINK_NICE taste_description = "bitter yet free" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1265,7 +1266,7 @@ name = "Amasec" description = "Official drink of the Nanotrasen Gun-Club!" color = "#e0e058" // rgb: 224,224,88 - boozepwr = 35 + boozepwr = 45 quality = DRINK_GOOD taste_description = "dark and metallic" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1384,7 +1385,7 @@ name = "Drunken Blumpkin" description = "A weird mix of whiskey and blumpkin juice." color = "#1EA0FF" // rgb: 30,160,255 - boozepwr = 50 + boozepwr = 30 quality = DRINK_VERYGOOD taste_description = "molasses and a mouthful of pool water" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1444,7 +1445,7 @@ var/need_mob_update need_mob_update = drinker.adjust_brute_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += drinker.adjust_fire_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += drinker.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += drinker.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += drinker.adjust_tox_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1717,7 +1718,7 @@ name = "Grasshopper" description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this." color = "#00ff00" - boozepwr = 25 + boozepwr = 15 quality = DRINK_GOOD taste_description = "chocolate and mint dancing around your mouth" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1727,7 +1728,7 @@ name = "Stinger" description = "A snappy way to end the day." color = "#ccff99" - boozepwr = 25 + boozepwr = 55 quality = DRINK_NICE taste_description = "a slap on the face in the best possible way" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1756,7 +1757,7 @@ need_mob_update = drinker.adjust_brute_loss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += drinker.adjust_fire_loss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += drinker.adjust_tox_loss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += drinker.adjust_oxy_loss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += drinker.adjust_oxy_loss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype) // heal stamina loss on first metabolization, but only to a max of 20 need_mob_update += drinker.adjust_stamina_loss(max(-heal_amt * 5, -20), updating_stamina = FALSE, required_biotype = affected_biotype) if(need_mob_update) @@ -1772,7 +1773,7 @@ need_mob_update = drinker.adjust_brute_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += drinker.adjust_fire_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += drinker.adjust_tox_loss(-0.125 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += drinker.adjust_oxy_loss(-0.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += drinker.adjust_oxy_loss(-0.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += drinker.adjust_stamina_loss(-1.25 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1952,7 +1953,7 @@ name = "Kamikaze" description = "Divinely windy." color = "#EEF191" - boozepwr = 60 + boozepwr = 35 quality = DRINK_GOOD taste_description = "divine windiness" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -1962,7 +1963,7 @@ name = "Mojito" description = "A drink that looks as refreshing as it tastes." color = "#DFFAD9" - boozepwr = 30 + boozepwr = 20 quality = DRINK_GOOD taste_description = "refreshing mint" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -2206,7 +2207,7 @@ if(drinker?.mind?.has_antag_datum(/datum/antagonist/wizard)) var/need_mob_update need_mob_update = drinker.heal_bodypart_damage(1 * metabolization_ratio * seconds_per_tick, 1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE) - need_mob_update += drinker.adjust_oxy_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += drinker.adjust_oxy_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += drinker.adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += drinker.adjust_stamina_loss(-5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) if(need_mob_update) @@ -2216,7 +2217,7 @@ name = "Bug Spray" description = "A harsh, acrid, bitter drink, for those who need something to brace themselves." color = "#33ff33" - boozepwr = 50 + boozepwr = 45 quality = DRINK_GOOD taste_description = "the pain of ten thousand slain mosquitos" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED @@ -2501,7 +2502,7 @@ /datum/reagent/consumable/ethanol/white_tiziran name = "White Tiziran" description = "A mix of vodka and kortara. The Lizard imbibes." - boozepwr = 65 + boozepwr = 50 color = "#A68340" quality = DRINK_GOOD taste_description = "strikes and gutters" @@ -2652,7 +2653,7 @@ /datum/reagent/consumable/ethanol/admiralty //navy rum, vermouth, fernet name = "Admiralty" description = "A refined, bitter drink made with navy rum, vermouth and fernet." - boozepwr = 100 + boozepwr = 80 color = "#1F0001" quality = DRINK_VERYGOOD taste_description = "haughty arrogance" @@ -2662,7 +2663,7 @@ /datum/reagent/consumable/ethanol/long_haul //Rum, Curacao, Sugar, dash of bitters, lengthened with soda water name = "Long Haul" description = "A favourite amongst freighter pilots, unscrupulous smugglers, and nerf herders." - boozepwr = 35 + boozepwr = 20 color = "#003153" quality = DRINK_VERYGOOD taste_description = "companionship" @@ -2672,7 +2673,7 @@ /datum/reagent/consumable/ethanol/long_john_silver //navy rum, bitters, lemonade name = "Long John Silver" description = "A long drink of navy rum, bitters, and lemonade. Particularly popular aboard the Mothic Fleet as it's light on ration credits and heavy on flavour." - boozepwr = 50 + boozepwr = 45 color = "#c4b35c" quality = DRINK_VERYGOOD taste_description = "rum and spices" @@ -2682,7 +2683,7 @@ /datum/reagent/consumable/ethanol/tropical_storm //dark rum, pineapple juice, triple citrus, curacao name = "Tropical Storm" description = "A taste of the Caribbean in one glass." - boozepwr = 40 + boozepwr = 25 color = "#00bfa3" quality = DRINK_VERYGOOD taste_description = "the tropics" @@ -2692,7 +2693,7 @@ /datum/reagent/consumable/ethanol/dark_and_stormy //rum and ginger beer- simple and classic name = "Dark and Stormy" description = "A classic drink arriving to thunderous applause." //thank you, thank you, I'll be here forever - boozepwr = 50 + boozepwr = 30 color = "#8c5046" quality = DRINK_GOOD taste_description = "ginger and rum" @@ -3150,7 +3151,7 @@ /datum/reagent/consumable/ethanol/french_75 name = "French 75" description = "A sophisticated cocktail made by strengthening champagne with gin, then flavoring with lemon juice and sugar." - boozepwr = 30 + boozepwr = 35 color = "#ffffc1" quality = DRINK_GOOD taste_description = "glory and gunnery" @@ -3315,7 +3316,7 @@ /datum/reagent/consumable/ethanol/casino name = "Casino" description = "A gin-heavy classic. Juniper is tempered by scant amounts of citrus and sweetened with liqueur." - boozepwr = 50 + boozepwr = 45 color = "#fdee65" quality = DRINK_GOOD taste_description = "sweet juniper" diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm index 8dfd8ac2709c..c5aed896bf0c 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm @@ -11,7 +11,7 @@ /datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() if(affected_mob.get_oxy_loss() && SPT_PROB(16, seconds_per_tick)) - if(affected_mob.adjust_oxy_loss(-0.5 * metabolization_ratio, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)) + if(affected_mob.adjust_oxy_loss(-0.5 * metabolization_ratio, FALSE, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH /datum/reagent/consumable/tomatojuice @@ -824,7 +824,7 @@ need_mob_update = affected_mob.adjust_brute_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_tox_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(affected_mob.nutrition && (affected_mob.nutrition - 2 > 0)) var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) if(!(HAS_TRAIT(liver, TRAIT_MEDICAL_METABOLISM))) @@ -1220,7 +1220,7 @@ /datum/reagent/consumable/mushroom_tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() if(islizard(affected_mob)) - if(affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)) + if(affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH //Moth Stuff diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 2e776ebfb06b..912d068cf021 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -114,7 +114,7 @@ . = ..() var/need_mob_update need_mob_update = affected_mob.adjust_tox_loss(0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += affected_mob.adjust_oxy_loss(4.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(4.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -302,7 +302,7 @@ need_mob_update += affected_mob.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(SPT_PROB(30, seconds_per_tick)) affected_mob.losebreath++ - need_mob_update += affected_mob.adjust_oxy_loss(1, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(1, FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index a6575cdab4b1..989a3a970bec 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -1368,3 +1368,13 @@ nutriment_factor = 0.5 randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS +/datum/reagent/consumable/beef_flavour + name = "Beef Space Ramen Flavouring" + description = "Powdered beef flavouring with enough salt to preserve a corpse." + nutriment_factor = 5 + color = "#5f3e00" // rgb: 115, 16, 8 + taste_description = "beef" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + default_container = /obj/item/reagent_containers/condiment/pack/beef_flavour + diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index c536445a37e2..5a8e8395fd65 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -32,7 +32,6 @@ addiction_types = list(/datum/addiction/medicine = 400) ph = 11 affected_biotype = MOB_ORGANIC | MOB_MINERAL | MOB_PLANT // no healing ghosts - affected_respiration_type = ALL //Random healing of the 4 main groups /datum/reagent/impurity/healing/medicine_failure/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) @@ -47,7 +46,7 @@ if("tox") need_mob_update = affected_mob.adjust_tox_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if("oxy") - need_mob_update = affected_mob.adjust_oxy_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -935,6 +934,7 @@ Basically, we fill the time between now and 2s from now with hands based off the metabolization_rate = 0.25 * REAGENTS_METABOLISM tox_damage = 0 metabolized_traits = list(TRAIT_IMMUNODEFICIENCY) + taste_description = "plastic" /datum/reagent/inverse/krokodil name = "Permonid" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 89e74b81a32e..9f1f00b5e48c 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -160,7 +160,7 @@ if(HAS_TRAIT(affected_mob, TRAIT_KNOCKEDOUT)) //Significantly more effective when unconscious power *= 2 var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(-1.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(-1.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(-0.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-0.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_tox_loss(-0.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs @@ -203,7 +203,7 @@ power *= 2 var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(-1 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(-1 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(-0.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-0.75 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_tox_loss(-0.5 * power * metabolization_ratio * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) @@ -424,7 +424,7 @@ var/heal = -2 * healing * metabolization_ratio * seconds_per_tick var/need_mob_update need_mob_update = affected_mob.adjust_tox_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) if(need_mob_update) @@ -435,7 +435,7 @@ var/hurt = 3 * metabolization_ratio * seconds_per_tick var/need_mob_update need_mob_update = affected_mob.adjust_tox_loss(hurt, updating_health = FALSE, required_biotype = affected_biotype) - need_mob_update += affected_mob.adjust_oxy_loss(hurt, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(hurt, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(hurt, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(hurt, updating_health = FALSE, required_bodytype = affected_bodytype) if(need_mob_update) @@ -587,13 +587,8 @@ /datum/reagent/medicine/salbutamol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) - if(affected_mob.losebreath >= 4) - var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) - var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type // use lungs' respiration type or mob_respiration_type if no lungs - if(our_respiration_type & affected_respiration_type) - affected_mob.losebreath -= 4 * metabolization_ratio * seconds_per_tick - need_mob_update = TRUE + need_mob_update = affected_mob.adjust_oxy_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) + affected_mob.losebreath = max(0, affected_mob.losebreath - (4 * metabolization_ratio * seconds_per_tick)) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -997,13 +992,10 @@ need_mob_update = affected_mob.adjust_tox_loss(-4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(-4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(-10 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(-10 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) . = UPDATE_MOB_HEALTH - var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) - var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type - if(our_respiration_type & affected_respiration_type) - affected_mob.losebreath = 0 + affected_mob.losebreath = 0 if(SPT_PROB(10, seconds_per_tick)) affected_mob.set_dizzy_if_lower(10 SECONDS) affected_mob.set_jitter_if_lower(10 SECONDS) @@ -1040,16 +1032,8 @@ need_mob_update = affected_mob.adjust_tox_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) - if(affected_mob.losebreath >= 4) - var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) - var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type - if(our_respiration_type & affected_respiration_type) - affected_mob.losebreath -= 4 * metabolization_ratio * seconds_per_tick - need_mob_update = TRUE - if(affected_mob.losebreath < 0) - affected_mob.losebreath = 0 - need_mob_update = TRUE + need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) + affected_mob.losebreath = max(0, affected_mob.losebreath - (4 * metabolization_ratio * seconds_per_tick)) need_mob_update += affected_mob.adjust_stamina_loss(-4 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE) if(SPT_PROB(10, seconds_per_tick)) affected_mob.AdjustAllImmobility(-20) @@ -1070,11 +1054,7 @@ var/need_mob_update need_mob_update = affected_mob.adjust_stamina_loss(5 * metabolization_ratio, updating_stamina = FALSE) need_mob_update += affected_mob.adjust_tox_loss(2 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype) - var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) - var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type - if(our_respiration_type & affected_respiration_type) - affected_mob.losebreath++ - need_mob_update = TRUE + affected_mob.losebreath++ if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1386,7 +1366,7 @@ var/need_mob_update if(affected_mob.health < 50 && affected_mob.health > 0) var/heal = -1 * metabolization_ratio * seconds_per_tick - need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_tox_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) @@ -1442,7 +1422,6 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS affected_biotype = MOB_ORGANIC | MOB_MINERAL | MOB_PLANT // no healing ghosts - affected_respiration_type = ALL /datum/reagent/medicine/regen_jelly/expose_mob(mob/living/exposed_mob, reac_volume) . = ..() @@ -1459,7 +1438,7 @@ var/need_mob_update need_mob_update = affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_tox_loss(heal, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1507,14 +1486,14 @@ if(current_cycle < 25) //10u has to be processed before u get into THE FUN ZONE need_mob_update = affected_mob.adjust_brute_loss(-0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_tox_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(-1 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * metabolization_ratio * seconds_per_tick, 150, affected_organ_flags) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that! else need_mob_update = affected_mob.adjust_brute_loss(-2.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) //slow to start, but very quick healing once it gets going need_mob_update += affected_mob.adjust_fire_loss(-2.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) - need_mob_update += affected_mob.adjust_oxy_loss(-1.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(-1.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_tox_loss(-1.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(-4 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1 * metabolization_ratio * seconds_per_tick, 150, affected_organ_flags) @@ -1730,7 +1709,7 @@ affected_mob.losebreath++ need_mob_update = TRUE if(41 to 80) - need_mob_update = affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) affected_mob.adjust_jitter_up_to(40 SECONDS * metabolization_ratio * seconds_per_tick, 40 SECONDS) affected_mob.adjust_stutter_up_to(40 SECONDS * metabolization_ratio * seconds_per_tick, 40 SECONDS) @@ -1744,12 +1723,12 @@ affected_mob.Paralyze(20) // you should be in a bad spot at this point unless epipen has been used if(81) to_chat(affected_mob, span_userdanger("You feel too exhausted to continue!")) // at this point you will eventually die unless you get charcoal - need_mob_update = affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) if(82 to INFINITY) REMOVE_TRAIT(affected_mob, TRAIT_SLEEPIMMUNE, type) affected_mob.Sleeping(200 SECONDS * metabolization_ratio * seconds_per_tick) - need_mob_update += affected_mob.adjust_oxy_loss(30 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update += affected_mob.adjust_oxy_loss(30 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_stamina_loss(30 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1918,12 +1897,12 @@ if(SPT_PROB(7.5, seconds_per_tick)) affected_mob.losebreath += rand(2, 4) - affected_mob.adjust_oxy_loss(METABOLIZE_FREE_CONSTANT(1) * rand(1, 3) * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + affected_mob.adjust_oxy_loss(METABOLIZE_FREE_CONSTANT(1) * rand(1, 3) * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype) if(prob(30)) to_chat(affected_mob, span_danger("You can feel your blood clotting up in your veins!")) else if(prob(10)) to_chat(affected_mob, span_userdanger("You feel like your blood has stopped moving!")) - affected_mob.adjust_oxy_loss(METABOLIZE_FREE_CONSTANT(0.5) * rand(3, 4) * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + affected_mob.adjust_oxy_loss(METABOLIZE_FREE_CONSTANT(0.5) * rand(3, 4) * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype) if(prob(50)) var/obj/item/organ/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 92f58ef213ee..bfee741b764f 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -692,6 +692,7 @@ color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = 0.5 * REAGENTS_METABOLISM //metabolizes to prevent micro-dosage taste_description = "slime" + affected_biotype = MOB_ORGANIC|MOB_SKELETAL|MOB_UNDEAD var/race = /datum/species/human var/list/mutationtexts = list( "You don't feel very well." = MUT_MSG_IMMEDIATE, "Your skin feels a bit abnormal." = MUT_MSG_IMMEDIATE, diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 9e73a0be3613..bc1b572dafb1 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -233,7 +233,7 @@ /datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() if(!HAS_TRAIT(affected_mob, TRAIT_NOBREATH)) - affected_mob.adjust_oxy_loss(2.5 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + affected_mob.adjust_oxy_loss(2.5 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, FALSE, required_biotype = affected_biotype) affected_mob.losebreath += 1 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick . = UPDATE_MOB_HEALTH if(SPT_PROB(10, seconds_per_tick)) @@ -371,7 +371,7 @@ /datum/reagent/toxin/zombiepowder/proc/zombify(mob/living/holder_mob) PRIVATE_PROC(TRUE) - holder_mob.adjust_oxy_loss(0.25, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + holder_mob.adjust_oxy_loss(0.25, FALSE, required_biotype = affected_biotype) if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD) holder_mob.apply_status_effect(/datum/status_effect/reagent_effect/fakedeath, type) @@ -416,7 +416,7 @@ /datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() - if(affected_mob.adjust_oxy_loss(0.5 * metabolization_ratio * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)) + if(affected_mob.adjust_oxy_loss(0.5 * metabolization_ratio * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH /datum/reagent/toxin/mindbreaker @@ -496,12 +496,12 @@ if(exposed_mob.adjust_tox_loss(damage * 20, required_biotype = affected_biotype)) return - if(!(methods & VAPOR) || !iscarbon(exposed_mob)) + if(!(methods & VAPOR) || !ishuman(exposed_mob)) return - var/mob/living/carbon/exposed_carbon = exposed_mob - if(!exposed_carbon.wear_mask) - exposed_carbon.adjust_tox_loss(damage, required_biotype = affected_biotype) + var/mob/living/carbon/human/exposed_human = exposed_mob + if(!exposed_human.wear_mask) + exposed_human.adjust_tox_loss(damage, required_biotype = affected_biotype) /datum/reagent/toxin/plantbgone/weedkiller name = "Weed Killer" @@ -806,7 +806,7 @@ . = ..() var/heal = 4 * metabolization_ratio * seconds_per_tick var/need_mob_update - need_mob_update = affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_tox_loss(heal, updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) @@ -988,7 +988,7 @@ affected_mob.Paralyze(60) if(2) affected_mob.losebreath += 10 - affected_mob.adjust_oxy_loss(2 * rand(5,25) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + affected_mob.adjust_oxy_loss(2 * rand(5,25) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update = TRUE if(3) if(!affected_mob.undergoing_cardiac_arrest() && affected_mob.can_heartattack()) @@ -997,7 +997,7 @@ affected_mob.visible_message(span_userdanger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart stopped!")) else affected_mob.losebreath += 10 - need_mob_update = affected_mob.adjust_oxy_loss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + need_mob_update = affected_mob.adjust_oxy_loss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype) if(need_mob_update) return UPDATE_MOB_HEALTH @@ -1158,7 +1158,7 @@ . = ..() if(current_cycle > 11) affected_mob.Paralyze(240 * metabolization_ratio * seconds_per_tick) - if(affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)) + if(affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH /datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic. @@ -1374,7 +1374,7 @@ /datum/reagent/toxin/bonehurtingjuice/on_mob_add(mob/living/carbon/affected_mob) . = ..() - affected_mob.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice) + INVOKE_ASYNC(affected_mob, TYPE_PROC_REF(/atom/movable, say), "oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice) /datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) . = ..() @@ -1501,8 +1501,8 @@ toxpwr = 0 liver_tolerance_multiplier = 0 silent_toxin = TRUE - remove_paralysis() - need_mob_update += affected_mob.adjust_oxy_loss(-3.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type) + remove_paralysis(affected_mob) + need_mob_update += affected_mob.adjust_oxy_loss(-3.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update = affected_mob.adjust_tox_loss(-3.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) need_mob_update += affected_mob.adjust_brute_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) need_mob_update += affected_mob.adjust_fire_loss(-6.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index ee607ca1dc80..32e7a1e66eb0 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -45,7 +45,7 @@ /// How sharp the pH exponential curve is (to the power of value) var/ph_exponent_factor = 2 /// How much the temperature changes per unit of chem used. without REACTION_HEAT_ARBITARY flag the rate of change depends on the holder heat capacity else results are more accurate - var/thermic_constant = 50 + var/thermic_constant = 0 /// pH change per 1u reaction var/H_ion_release = 0.01 /// Optimal/max rate possible if all conditions are perfect diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 8b563bb9b1a4..8ced30587764 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -2,6 +2,7 @@ results = list(/datum/reagent/drug/space_drugs = 3) required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG + thermic_constant = 50 /datum/chemical_reaction/krokodil results = list(/datum/reagent/drug/krokodil = 6) @@ -9,6 +10,7 @@ mix_message = "The mixture dries into a pale blue powder." required_temp = 380 reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG + thermic_constant = 50 /datum/chemical_reaction/methamphetamine results = list(/datum/reagent/drug/methamphetamine = 4) @@ -114,11 +116,13 @@ required_temp = 374 reaction_flags = REACTION_CLEAR_INVERSE reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/aranesp results = list(/datum/reagent/drug/aranesp = 3) required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/happiness results = list(/datum/reagent/drug/happiness = 4) @@ -126,33 +130,39 @@ required_catalysts = list(/datum/reagent/toxin/plasma = 5) reaction_flags = REACTION_CLEAR_INVERSE reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/pumpup results = list(/datum/reagent/drug/pumpup = 5) required_reagents = list(/datum/reagent/medicine/epinephrine = 2, /datum/reagent/consumable/coffee = 5) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/maint_tar1 results = list(/datum/reagent/toxin/acid = 1 ,/datum/reagent/drug/maint/tar = 3) required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/yuck = 1 , /datum/reagent/fuel = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/maint_tar2 results = list(/datum/reagent/toxin/acid = 1 ,/datum/reagent/drug/maint/tar = 3) required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/enzyme = 3 , /datum/reagent/fuel = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/maint_sludge results = list(/datum/reagent/drug/maint/sludge = 1) required_reagents = list(/datum/reagent/drug/maint/tar = 3 , /datum/reagent/toxin/acid/fluacid = 1) required_catalysts = list(/datum/reagent/hydrogen_peroxide = 5) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING + thermic_constant = 50 /datum/chemical_reaction/maint_powder results = list(/datum/reagent/drug/maint/powder = 1) required_reagents = list(/datum/reagent/drug/maint/sludge = 6 , /datum/reagent/toxin/acid/nitracid = 1 , /datum/reagent/consumable/enzyme = 1) required_catalysts = list(/datum/reagent/acetone_oxide = 5) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING + thermic_constant = 50 //These drug item reactions should probably be converted to fermichem in the future. /datum/chemical_reaction/moon_rock //botany is real easy so it requires a lot of kronkus_extract, make it cheaper if it doesnt get made. diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 6ec8cf3a1f0a..5bcc469ba58f 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -8,6 +8,7 @@ purity_min = 0.1 rate_up_lim = 35 reaction_tags = REACTION_TAG_HEALING | REACTION_TAG_EASY + thermic_constant = 50 /datum/chemical_reaction/medicine/leporazine results = list(/datum/reagent/medicine/leporazine = 2) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 00f2a53bd0de..84ea9439e8f6 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -3,11 +3,13 @@ results = list(/datum/reagent/space_cleaner/sterilizine = 3) required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/c2/multiver = 1, /datum/reagent/chlorine = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_OTHER + thermic_constant = 50 /datum/chemical_reaction/lube results = list(/datum/reagent/lube = 4) required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_OTHER + thermic_constant = 50 /datum/chemical_reaction/lube/superlube results = list(/datum/reagent/lube/superlube = 3) @@ -28,11 +30,13 @@ results = list(/datum/reagent/impedrezene = 2) required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_ORGAN + thermic_constant = 50 /datum/chemical_reaction/cryptobiolin results = list(/datum/reagent/cryptobiolin = 3) required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_OTHER + thermic_constant = 50 /datum/chemical_reaction/glycerol results = list(/datum/reagent/glycerol = 1) @@ -43,6 +47,7 @@ results = list(/datum/reagent/consumable/salt = 2) required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) // That's what I said! Sodium Chloride! reaction_tags = REACTION_TAG_EASY | REACTION_TAG_FOOD | REACTION_TAG_COMPONENT + thermic_constant = 50 /datum/chemical_reaction/sodiumchloride/pre_reaction_other_checks(datum/reagents/holder) . = ..() @@ -172,6 +177,7 @@ results = list(/datum/reagent/mulligan = 1) required_reagents = list(/datum/reagent/mutationtoxin/jelly = 1, /datum/reagent/toxin/mutagen = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE + thermic_constant = 50 ////////////////////////////////// VIROLOGY ////////////////////////////////////////// @@ -194,12 +200,10 @@ /datum/chemical_reaction/virus_food_plasma results = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/virus_food = 1) - thermic_constant = 20 // To avoid the plasma boiling /datum/chemical_reaction/virus_food_plasma_synaptizine results = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 2) required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/toxin/plasma/plasmavirusfood = 1) - thermic_constant = 20 // To avoid the plasma boiling /datum/chemical_reaction/virus_food_mutagen_sugar results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) @@ -341,6 +345,7 @@ required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) reaction_flags = REACTION_INSTANT reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE + thermic_constant = 50 /datum/chemical_reaction/foam required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1) @@ -425,11 +430,13 @@ optimal_ph_max = 12 H_ion_release = -0.02 //handmade is more neutral reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT + thermic_constant = 50 /datum/chemical_reaction/diethylamine results = list(/datum/reagent/diethylamine = 2) required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT + thermic_constant = 50 /datum/chemical_reaction/space_cleaner results = list(/datum/reagent/space_cleaner = 2) @@ -464,6 +471,7 @@ results = list(/datum/reagent/acetone = 3) required_reagents = list(/datum/reagent/fuel/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT + thermic_constant = 50 /datum/chemical_reaction/carpet results = list(/datum/reagent/carpet = 2) @@ -570,6 +578,7 @@ results = list(/datum/reagent/phenol = 3) required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/fuel/oil = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT + thermic_constant = 50 /datum/chemical_reaction/ash results = list(/datum/reagent/ash = 1) @@ -658,7 +667,9 @@ else maybe_monkey.vomit(VOMIT_CATEGORY_BLOOD) to_chat(maybe_monkey, span_danger("You vomit out blood, making you feel grossly monkeyish.")) - new /mob/living/carbon/human/species/monkey(location, TRUE) + + if (LAZYLEN(SSmobs.cubemonkeys) < CONFIG_GET(number/monkeycap)) + new /mob/living/carbon/human/species/monkey(location, TRUE) /datum/chemical_reaction/angry_monkey required_reagents = list(/datum/reagent/monkey_powder = 50, /datum/reagent/inverse/bath_salts = 10) @@ -675,7 +686,9 @@ else maybe_monkey.vomit(VOMIT_CATEGORY_BLOOD) to_chat(maybe_monkey, span_danger("You vomit out blood, making you feel grossly monkeyish.")) - new /mob/living/carbon/human/species/monkey/angry(location, TRUE) + + if (LAZYLEN(SSmobs.cubemonkeys) < CONFIG_GET(number/monkeycap)) + new /mob/living/carbon/human/species/monkey/angry(location, TRUE) //water electrolysis /datum/chemical_reaction/electrolysis @@ -933,7 +946,6 @@ overheat_temp = 0 optimal_ph_min = 0 optimal_ph_max = 14 - thermic_constant = 0 H_ion_release = 0 rate_up_lim = 50 purity_min = 0 @@ -949,7 +961,6 @@ overheat_temp = NO_OVERHEAT optimal_ph_min = 0 optimal_ph_max = 14 - thermic_constant = 0 H_ion_release = 0 rate_up_lim = 50 purity_min = 0 @@ -966,7 +977,6 @@ overheat_temp = NO_OVERHEAT optimal_ph_min = 0 optimal_ph_max = 14 - thermic_constant = 0 H_ion_release = 0 rate_up_lim = 50 purity_min = 0 @@ -1040,7 +1050,7 @@ var/list/items = list() for(var/obj/item/item in range(location, 3)) items += item - shuffle(items) + shuffle_inplace(items) for(var/obj/item/item in items) do_teleport(item, location, 3, no_effects=TRUE) lets_not_go_crazy -= 1 diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 4323f78efd46..2eb81e5ae2f6 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -6,6 +6,7 @@ volume = 200 //fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) DARKPACK EDIT REMOVAL obj_flags = UNIQUE_RENAME | RENAME_NO_DESC + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) var/blood_type = null var/labeled = FALSE var/start_blood_amount = 200 // DARKPACK EDIT ADD diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm index abe9d39dab9f..d1f4c66c82d3 100644 --- a/code/modules/reagents/reagent_containers/chem_pack.dm +++ b/code/modules/reagents/reagent_containers/chem_pack.dm @@ -10,6 +10,7 @@ fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) has_variable_transfer_amount = FALSE interaction_flags_click = NEED_DEXTERITY + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/chem_pack/click_alt(mob/living/user) if(reagents.flags & SEALED_CONTAINER) diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm index 565f1539b32c..88869a3fad9b 100644 --- a/code/modules/reagents/reagent_containers/condiment.dm +++ b/code/modules/reagents/reagent_containers/condiment.dm @@ -36,7 +36,7 @@ icon_state = icon_empty return ..() -/obj/item/reagent_containers/condiment/suicide_act(mob/living/carbon/user) +/obj/item/reagent_containers/condiment/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is trying to eat the entire [src]! It looks like [user.p_they()] forgot how food works!")) return OXYLOSS @@ -253,6 +253,16 @@ fill_icon_thresholds = null custom_price = 3 // DARKPACK EDIT ADD - ECONOMY +/obj/item/reagent_containers/condiment/korta_flour + name = "korta flour sack" + desc = "A big bag of lizards' favorite korta nut flour. Made in Tiriza!" + icon_state = "korta_flour" + inhand_icon_state = "carton" + lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi' + list_reagents = list(/datum/reagent/consumable/korta_flour = 30) + fill_icon_thresholds = null + /obj/item/reagent_containers/condiment/bbqsauce name = "bbq sauce" desc = "Hand wipes not included." @@ -504,7 +514,7 @@ desc = temp_list[3] else icon_state = "condi_mixed" - desc = "A small condiment pack. The label says it contains [originalname]" + desc = "A small condiment pack. The label says it contains [originalname]." //Ketchup /obj/item/reagent_containers/condiment/pack/ketchup @@ -552,3 +562,9 @@ originalname = "mayonnaise" volume = 5 list_reagents = list(/datum/reagent/consumable/mayonnaise = 5) + +/obj/item/reagent_containers/condiment/pack/beef_flavour + name = "beef space ramen flavouring" + originalname = "beef flavour" + volume = 5 + list_reagents = list(/datum/reagent/consumable/beef_flavour = 5) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index d2983989813a..3ca6d9d85d0e 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -44,12 +44,31 @@ . = ..() if(heatable) AddElement(/datum/element/reagents_item_heatable) + register_context() /obj/item/reagent_containers/cup/Destroy(force) QDEL_NULL(lid_assembly) QDEL_NULL(attached_cell) return ..() +/obj/item/reagent_containers/cup/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(cell_wired && held_item.tool_behaviour == TOOL_WIRECUTTER) + context[SCREENTIP_CONTEXT_LMB] = "Cut wires" + return CONTEXTUAL_SCREENTIP_SET + + if(!can_lid) + return + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_ALT_LMB] = lid_assembly ? "Detach assembly" : "Toggle lid" + return CONTEXTUAL_SCREENTIP_SET + if(isnull(lid_assembly) && istype(held_item, /obj/item/assembly_holder)) + context[SCREENTIP_CONTEXT_LMB] = "Attach assembly" + return CONTEXTUAL_SCREENTIP_SET + if(isnull(attached_cell) && !isnull(lid_assembly) && istype(held_item, /obj/item/stock_parts/power_store/cell)) + context[SCREENTIP_CONTEXT_LMB] = "Attach cell" + return CONTEXTUAL_SCREENTIP_SET + /obj/item/reagent_containers/cup/examine(mob/user) . = ..() if(drink_type) @@ -355,6 +374,10 @@ update_appearance() return TRUE +/obj/item/reagent_containers/cup/on_found(mob/finder) + . = ..() + lid_assembly?.on_found(finder) + /obj/item/reagent_containers/cup/Exited(atom/movable/gone, direction) . = ..() if (gone == lid_assembly) @@ -470,7 +493,7 @@ 300 units." icon_state = "beakerbluespace" inhand_icon_state = "beaker_bluespace" - custom_materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace =HALF_SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) @@ -730,6 +753,7 @@ icon_state = "coffeepot" fill_icon_state = "coffeepot" fill_icon_thresholds = list(0, 1, 30, 60, 100) + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/cup/coffeepot/bluespace name = "bluespace coffeepot" @@ -737,6 +761,7 @@ volume = 240 icon_state = "coffeepot_bluespace" fill_icon_thresholds = null + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) ///Test tubes created by chem master and pandemic and placed in racks /obj/item/reagent_containers/cup/tube diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index 9246bdb50f64..1ca466bb9e3e 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -518,10 +518,10 @@ possible_transfer_amounts = list(5, 10) amount_per_transfer_from_this = 5 can_lid = FALSE + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/cup/bottle/syrup_bottle/Initialize(mapload) . = ..() - register_context() // this is not done via initial_reagent_flags because it represents state update_container_flags(SEALED_CONTAINER | TRANSPARENT) diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index 7e7f1a529d8b..4ebcfd4b7ef7 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -130,10 +130,6 @@ lid_open = TRUE /* // DARKPACK EDIT REMOVAL - Our coffee sprites only have one state -/obj/item/reagent_containers/cup/glass/coffee/Initialize(mapload) - . = ..() - register_context() - /obj/item/reagent_containers/cup/glass/coffee/examine(mob/user) . = ..() . += span_notice("Alt-click to toggle cup lid.") @@ -443,7 +439,6 @@ /obj/item/reagent_containers/cup/glass/shaker/Initialize(mapload) . = ..() - register_context() if(prob(10)) name = "\improper Nanotrasen 20th Anniversary Shaker" desc += " It has an emblazoned Nanotrasen logo on it." diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index 3edb69eef254..f807ac6b4b12 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -34,7 +34,6 @@ . = ..() var/static/list/recipes = list(/datum/crafting_recipe/molotov) AddElement(/datum/element/slapcrafting, recipes) - register_context() register_item_context() /obj/item/reagent_containers/cup/glass/bottle/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) @@ -994,6 +993,7 @@ icon = 'icons/obj/service/janitor.dmi' icon_state = "trashbag" list_reagents = list(/datum/reagent/consumable/prunomix = 50) + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) var/fermentation_time = 30 SECONDS /// time it takes to ferment var/fermentation_time_remaining /// for partial fermentation var/fermentation_timer /// store the timer id of fermentation diff --git a/code/modules/reagents/reagent_containers/cups/mauna_mug.dm b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm index dcee96829dd3..06137d6dd6f2 100644 --- a/code/modules/reagents/reagent_containers/cups/mauna_mug.dm +++ b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm @@ -7,6 +7,7 @@ initial_reagent_flags = OPENCONTAINER fill_icon_state = "maunafilling" fill_icon_thresholds = list(25) + custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5) var/obj/item/stock_parts/power_store/cell var/open = FALSE var/on = FALSE diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm index dec92cda9373..1877e290f556 100644 --- a/code/modules/reagents/reagent_containers/cups/soda.dm +++ b/code/modules/reagents/reagent_containers/cups/soda.dm @@ -40,35 +40,39 @@ new T(loc) return INITIALIZE_HINT_QDEL -/obj/item/reagent_containers/cup/soda_cans/suicide_act(mob/living/carbon/human/H) +/obj/item/reagent_containers/cup/soda_cans/suicide_act(mob/living/user) if(!reagents.total_volume) - H.visible_message(span_warning("[H] is trying to take a big sip from [src]... The can is empty!")) + user.visible_message(span_warning("[user] is trying to take a big sip from [src]... The can is empty!")) return SHAME if(!is_drainable()) - open_soda(H) + open_soda(user) sleep(1 SECONDS) - H.visible_message(span_suicide("[H] takes a big sip from [src]! It looks like [H.p_theyre()] trying to commit suicide!")) - playsound(H,'sound/items/drink.ogg', 80, TRUE) - reagents.trans_to(H, src.reagents.total_volume, transferred_by = H) //a big sip + user.visible_message(span_suicide("[user] takes a big sip from [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(user,'sound/items/drink.ogg', 80, TRUE) + reagents.trans_to(user, src.reagents.total_volume, transferred_by = user) //a big sip sleep(0.5 SECONDS) - H.say(pick( + user.say(pick( "Now, Outbomb Cuban Pete, THAT was a game.", "All these new fangled arcade games are too slow. I prefer the classics.", "They don't make 'em like Orion Trail anymore.", "You know what they say. Worst day of spess carp fishing is better than the best day at work.", "They don't make 'em like good old-fashioned singularity engines anymore.", )) - if(H.age >= 30) - H.Stun(50) - sleep(5 SECONDS) - playsound(H,'sound/items/drink.ogg', 80, TRUE) - H.say(pick( - "Another day, another dollar.", - "I wonder if I should hold?", - "Diversifying is for young'ns.", - "Yeap, times were good back then.", - )) - return MANUAL_SUICIDE_NONLETHAL + + if(ishuman(user)) + var/mob/living/carbon/human/drinker = user + if (drinker.age >= 30) + drinker.Stun(50) + sleep(5 SECONDS) + playsound(drinker,'sound/items/drink.ogg', 80, TRUE) + drinker.say(pick( + "Another day, another dollar.", + "I wonder if I should hold?", + "Diversifying is for young'ns.", + "Yeap, times were good back then.", + )) + return MANUAL_SUICIDE_NONLETHAL + sleep(2 SECONDS) //dramatic pause return TOXLOSS diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 6702fcf4fe66..d13741380be1 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -10,7 +10,7 @@ volume = 5 initial_reagent_flags = TRANSPARENT custom_price = PAYCHECK_CREW - custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1) /obj/item/reagent_containers/dropper/interact_with_atom(atom/target, mob/living/user, list/modifiers) if(!target.reagents) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 09aedfb8460f..73a7aa31c46a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -158,7 +158,7 @@ var/label_examine = TRUE var/label_text -/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) +/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return OXYLOSS//ironic. he could save others from oxyloss, but not himself. diff --git a/code/modules/reagents/reagent_containers/jerrycan.dm b/code/modules/reagents/reagent_containers/jerrycan.dm index 2d8ff2583402..b92dc7ec85c9 100644 --- a/code/modules/reagents/reagent_containers/jerrycan.dm +++ b/code/modules/reagents/reagent_containers/jerrycan.dm @@ -85,7 +85,7 @@ if(cap_type) . += mutable_appearance(icon, "[base_icon_state]_cap_[cap_type]") -/obj/item/reagent_containers/cup/jerrycan/worn_overlays(mutable_appearance/standing, isinhands, icon_file) +/obj/item/reagent_containers/cup/jerrycan/worn_overlays(mutable_appearance/standing, isinhands, icon_file, bodyshape = NONE) . = ..() if(!isinhands) return diff --git a/code/modules/reagents/reagent_containers/medigel.dm b/code/modules/reagents/reagent_containers/medigel.dm index 12ee08f0d306..ff8db553f800 100644 --- a/code/modules/reagents/reagent_containers/medigel.dm +++ b/code/modules/reagents/reagent_containers/medigel.dm @@ -46,6 +46,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10) volume = 60 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/can_fill_from_container = TRUE var/apply_type = PATCH var/apply_method = "spray" //the thick gel is sprayed and then dries into patch like film. diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 4d19c5b5f187..22bd3c3d0570 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -190,6 +190,12 @@ icon_state = "pill17" list_reagents = list(/datum/reagent/medicine/spaceacillin = 1.5) //1 minute since 0.05 every tick. +/obj/item/reagent_containers/applicator/pill/sepsisillin + name = "sepsisillin pill" + desc = "Not to be confused with spaceacillin. Increases vulnerability to viruses, bacteria, and parasites." + icon_state = "pill11" + list_reagents = list(/datum/reagent/inverse/spaceacillin = 10) + /obj/item/reagent_containers/applicator/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" diff --git a/code/modules/reagents/reagent_containers/rag.dm b/code/modules/reagents/reagent_containers/rag.dm index 2f334f9b2faa..c91574453e8f 100644 --- a/code/modules/reagents/reagent_containers/rag.dm +++ b/code/modules/reagents/reagent_containers/rag.dm @@ -131,7 +131,8 @@ if(isturf(clean_target) && !HAS_TRAIT(cleaned, TRAIT_MOPABLE)) continue // collect dna FIRST - all_blood_dna |= all_cleaned[cleaned] + if (!isnull(all_cleaned[cleaned])) // Check if there was any blood on it, we don't want nulls in our list + all_blood_dna |= all_cleaned[cleaned] // THEN pass on dna (though in some cases the cleaned item is being deleted) if(blood_level > 0 && !QDELING(cleaned)) cleaned.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 7becd3ac981b..fecc88b09059 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -14,6 +14,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) var/stream_mode = FALSE //whether we use the more focused mode var/current_range = 3 //the range of tiles the sprayer will reach. var/spray_range = 3 //the range of tiles the sprayer will reach when in spray mode. @@ -137,9 +138,8 @@ current_range = spray_range to_chat(user, span_notice("You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""].")) -/obj/item/reagent_containers/spray/verb/empty() - set name = "Empty Spray Bottle" - set src in usr +GAME_VERB_SRC(/obj/item/reagent_containers/spray, empty, usr, "Empty Spray Bottle", null) + if(usr.incapacitated) return if (tgui_alert(usr, "Are you sure you want to empty that?", "Empty Bottle:", list("Yes", "No")) != "Yes") @@ -228,11 +228,12 @@ pickup_sound = 'sound/items/handling/pepper_spray/pepper_spray_pick_up.ogg' drop_sound = 'sound/items/handling/pepper_spray/pepper_spray_drop.ogg' custom_price = 200 // DARKPACK EDIT ADD - ECONOMY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/spray/pepper/empty //for protolathe printing list_reagents = null -/obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/carbon/user) +/obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!")) return OXYLOSS @@ -449,6 +450,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' volume = 100 + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/spray/medical/setup_reskins() AddComponent(/datum/component/reskinable_item, /datum/atom_skin/med_spray) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 4136687774ea..f3cb6eb68d77 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -11,7 +11,7 @@ amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5, 10, 15) volume = 15 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1) initial_reagent_flags = TRANSPARENT custom_price = PAYCHECK_CREW * 0.5 sharpness = SHARP_POINTY @@ -331,6 +331,7 @@ volume = 60 dart_insert_casing_icon_state = "overlay_syringe_bluespace" dart_insert_projectile_icon_state = "overlay_syringe_bluespace_proj" + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/reagent_containers/syringe/piercing name = "piercing syringe" @@ -345,6 +346,7 @@ dart_insert_casing_icon_state = "overlay_syringe_piercing" dart_insert_projectile_icon_state = "overlay_syringe_piercing_proj" embed_type = /datum/embedding/syringe/piercing + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT) /datum/embedding/syringe/piercing embed_chance = 100 diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index efc98614861d..2beeef71ce3f 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -85,21 +85,19 @@ if(tank_volume && (damage_flag == BULLET || damage_flag == LASER)) boom() -/obj/structure/reagent_dispensers/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(attacking_item.is_refillable()) - return FALSE //so we can refill them via their afterattack. - if(istype(attacking_item, /obj/item/assembly_holder) && accepts_rig) +/obj/structure/reagent_dispensers/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/assembly_holder) && accepts_rig) if(rig) balloon_alert(user, "another device is in the way!") - return ..() - var/obj/item/assembly_holder/holder = attacking_item + return ITEM_INTERACT_BLOCKING + var/obj/item/assembly_holder/holder = tool if(!(locate(/obj/item/assembly/igniter) in holder.assemblies)) - return ..() + return ITEM_INTERACT_BLOCKING user.balloon_alert_to_viewers("attaching rig...") add_fingerprint(user) if(!do_after(user, 2 SECONDS, target = src) || !user.transferItemToLoc(holder, src)) - return + return ITEM_INTERACT_BLOCKING rig = holder holder.master = src holder.on_attach() @@ -111,10 +109,10 @@ log_bomber(user, "attached [holder.name] to ", src) last_rigger = user user.balloon_alert_to_viewers("attached rig") - return + return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/stack/sheet/iron) && can_be_tanked) - var/obj/item/stack/sheet/iron/metal_stack = attacking_item + if(istype(tool, /obj/item/stack/sheet/iron) && can_be_tanked) + var/obj/item/stack/sheet/iron/metal_stack = tool metal_stack.use(1) var/obj/structure/reagent_dispensers/plumbed/storage/new_tank = new /obj/structure/reagent_dispensers/plumbed/storage(drop_location()) new_tank.reagents.maximum_volume = reagents.maximum_volume @@ -123,9 +121,9 @@ new_tank.update_appearance(UPDATE_OVERLAYS) new_tank.set_anchored(anchored) qdel(src) - return FALSE + return ITEM_INTERACT_SUCCESS - return ..() + return NONE /obj/structure/reagent_dispensers/Exited(atom/movable/gone, direction) . = ..() @@ -294,39 +292,37 @@ // if this sucks, feel free to change it, but make sure the damn thing will log. thanks. return ..() -/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(attacking_item.tool_behaviour != TOOL_WELDER) - return ..() - - var/obj/item/weldingtool/refilling_welder = attacking_item +/obj/structure/reagent_dispensers/fueltank/welder_act(mob/living/user, obj/item/tool) + var/obj/item/weldingtool/refilling_welder = tool if(istype(refilling_welder) && !refilling_welder.welding) if(refilling_welder.reagents.has_reagent(/datum/reagent/fuel, refilling_welder.max_fuel)) to_chat(user, span_warning("Your [refilling_welder.name] is already full!")) - return + return ITEM_INTERACT_BLOCKING reagents.trans_to(refilling_welder, refilling_welder.max_fuel, transferred_by = user) user.visible_message(span_notice("[user] refills [user.p_their()] [refilling_welder.name]."), span_notice("You refill [refilling_welder].")) playsound(src, 'sound/effects/refill.ogg', 50, TRUE) refilling_welder.update_appearance() - return + return ITEM_INTERACT_SUCCESS - var/obj/item/lighter/refilling_lighter = attacking_item + var/obj/item/lighter/refilling_lighter = tool if(istype(refilling_lighter) && !refilling_lighter.lit) if(refilling_lighter.reagents.has_reagent(/datum/reagent/fuel, refilling_lighter.maximum_fuel)) to_chat(user, span_warning("Your [refilling_lighter.name] is already full!")) - return + return ITEM_INTERACT_BLOCKING reagents.trans_to(refilling_lighter, refilling_lighter.maximum_fuel, transferred_by = user) user.visible_message(span_notice("[user] refills [user.p_their()] [refilling_lighter.name]."), span_notice("You refill [refilling_lighter].")) playsound(src, 'sound/effects/refill.ogg', 25, TRUE) - return + return ITEM_INTERACT_SUCCESS if(!reagents.has_reagent(/datum/reagent/fuel)) to_chat(user, span_warning("[src] is out of fuel!")) - return + return ITEM_INTERACT_BLOCKING user.visible_message( - span_danger("[user] catastrophically fails at refilling [user.p_their()] [attacking_item.name]!"), + span_danger("[user] catastrophically fails at refilling [user.p_their()] [tool.name]!"), span_userdanger("That was stupid of you.")) - log_bomber(user, "detonated a", src, "via [attacking_item.name]") + log_bomber(user, "detonated a", src, "via [tool.name]") boom() + return ITEM_INTERACT_SUCCESS /obj/structure/reagent_dispensers/fueltank/large name = "high capacity fuel tank" @@ -377,7 +373,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 if(prob(2) && mapload) reagents.convert_reagent(/datum/reagent/water, /datum/reagent/consumable/fruit_punch) create_jug() - refresh_appearance() + update_appearance() /obj/structure/reagent_dispensers/water_cooler/Destroy() . = ..() @@ -403,7 +399,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 if(!do_after(user, 5 SECONDS, src)) return tipped = FALSE - refresh_appearance() + update_appearance() return @@ -422,6 +418,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 user.put_in_hands(new_cup) paper_cups-- +/obj/structure/reagent_dispensers/water_cooler/update_icon_state() + . = ..() + if(tipped) + icon_state = "water_cooler_disgraced" + else + if(!our_jug) + icon_state = "water_cooler_forlorn" + else + icon_state = "water_cooler" + /obj/structure/reagent_dispensers/water_cooler/update_overlays() . = ..() if(!reagents) @@ -511,7 +517,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 balloon_alert(user, "attached") user.log_message("attached a [new_jug] to [src] at [AREACOORD(src)] containing ([new_jug.reagents.get_reagent_log_string()])", LOG_ATTACK) add_fingerprint(user) - refresh_appearance() + update_appearance() return ITEM_INTERACT_SUCCESS /obj/structure/reagent_dispensers/water_cooler/boom() @@ -524,18 +530,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 playsound(src, 'sound/effects/glass/glassbash.ogg', 100) tip_over() -/obj/structure/reagent_dispensers/water_cooler/proc/refresh_appearance() - if(tipped) - icon_state = "water_cooler_disgraced" - else - if(!our_jug) - icon_state = "water_cooler_forlorn" - else - icon_state = "water_cooler" - - update_overlays() - update_appearance() - ///Creates an empty jug inside of the cooler. Doesn't need to be filled bc it absorbs the cooler's reagent on eject. /obj/structure/reagent_dispensers/water_cooler/proc/create_jug() our_jug = new /obj/item/reagent_containers/cooler_jug(src) @@ -558,12 +552,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 reagents.trans_to(our_jug.reagents, tank_volume) our_jug = null - refresh_appearance() + update_appearance() ///Handles the visual stuff related to the cooler itself tipping. /obj/structure/reagent_dispensers/water_cooler/proc/tip_over() tipped = TRUE - refresh_appearance() + update_appearance() ///Pre-tipped version for mapping. /obj/structure/reagent_dispensers/water_cooler/fallen @@ -591,18 +585,76 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3 desc = "A machine that dispenses fruit punch to drink. This juice is unbearably sweet, and can only be safely consumed in the presence of a liquid cooler. Engage with caution." reagent_id = /datum/reagent/consumable/fruit_punch -/obj/structure/reagent_dispensers/beerkeg - name = "beer keg" - desc = "Beer is liquid bread, it's good for you..." - icon_state = "beer" - reagent_id = /datum/reagent/consumable/ethanol/beer +/obj/structure/reagent_dispensers/keg + name = "keg" + desc = "A keg, usually filled with some low-grade, Nanotrasen brewed alcoholic drink." + icon_state = "keg" openable = TRUE + var/keg_print + +/obj/structure/reagent_dispenders/keg/Initialize(mapload) + . = ..() + update_appearance(UPDATE_OVERLAYS) + +/obj/structure/reagent_dispensers/keg/update_overlays() + . = ..() + if(keg_print) + . += keg_print -/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B) +/obj/structure/reagent_dispensers/keg/blob_act(obj/structure/blob/B) explosion(src, heavy_impact_range = 3, light_impact_range = 5, flame_range = 10, flash_range = 7) if(!QDELETED(src)) qdel(src) +/obj/structure/reagent_dispensers/keg/beer + name = "beer keg" + desc = "Beer is liquid bread, it's good for you..." + keg_print = "keg_beer" + reagent_id = /datum/reagent/consumable/ethanol/beer + +/obj/structure/reagent_dispensers/keg/whiskey + name = "irish whiskey keg" + desc = "Too much of anything is bad, but too much good whiskey is barely enough.\" - Mark Twain" + keg_print = "keg_irish" + reagent_id = /datum/reagent/consumable/ethanol/whiskey + +/obj/structure/reagent_dispensers/keg/rum + name = "rum keg" + desc = "A keg of not just any rum, oh no. It's the famous Captain Pete's Spiced Rum. It's GRIFF in a bottle... or keg, dare I say." + keg_print = "keg_pirate" + reagent_id = /datum/reagent/consumable/ethanol/rum/aged + +/obj/structure/reagent_dispensers/keg/gold + name = "gold keg" + desc = "A gaudy, gold-coated keg. It's easy to assume that whatever is inside it must be quite valuable indeed." + icon_state = "keg_gold" + +/obj/structure/reagent_dispensers/keg/gold/rum + name = "vintage rum keg" + desc = "A keg of Captain Pete's Spiced Rum from over half a century ago. Old recipe, strong and authentic flavor, y'aaarrrr..." + keg_print = "keg_pirate" + reagent_id = /datum/reagent/consumable/ethanol/rum/aged + +/obj/structure/reagent_dispensers/keg/gold/irish + name = "special irish drink keg" + desc = "A keg full of a cocktail drink made from imported irish whiskey." + keg_print = "keg_irish" + +/obj/structure/reagent_dispensers/keg/gold/irish/Initialize(mapload) + reagent_id = pick( + /datum/reagent/consumable/ethanol/irishcoffee, + /datum/reagent/consumable/ethanol/irish_cream, + /datum/reagent/consumable/ethanol/irishcarbomb, + /datum/reagent/consumable/ethanol/b52, + ) + return ..() + +/obj/structure/reagent_dispensers/keg/gold/trappist + name = "trappist beer keg" + desc = "A keg of Mont de Requin Trappistes Bleu. A beer normally brewed under guidelines so strict that there are only a handful of two of certified trappist beer breweries, none in the Spinward Sector." + keg_print = "keg_beer" + reagent_id = /datum/reagent/consumable/ethanol/trappist + /obj/structure/reagent_dispensers/wall/virusfood name = "virus food dispenser" desc = "A dispenser of low-potency virus mutagenic." @@ -629,6 +681,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/virusfood, 30 icon = 'icons/obj/service/kitchen.dmi' icon_state = "serving" reagent_id = /datum/reagent/consumable/nutraslop + anchored = TRUE + +/obj/structure/reagent_dispensers/servingdish/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool) + return ITEM_INTERACT_SUCCESS + +/obj/structure/reagent_dispensers/servingdish/unanchored + anchored = FALSE /obj/structure/reagent_dispensers/plumbed name = "stationary water tank" diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm index d050b9745735..aa4c2a8f6a94 100644 --- a/code/modules/recycling/conveyor.dm +++ b/code/modules/recycling/conveyor.dm @@ -293,75 +293,85 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) GLOB.move_manager.stop_looping(thing, SSconveyors) // attack with item, place item on conveyor -/obj/machinery/conveyor/attackby(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(attacking_item.tool_behaviour == TOOL_CROWBAR) - user.visible_message(span_notice("[user] struggles to pry up [src] with [attacking_item]."), \ - span_notice("You struggle to pry up [src] with [attacking_item].")) - - if(!attacking_item.use_tool(src, user, 4 SECONDS, volume = 40)) - return - set_operating(FALSE) - var/obj/item/stack/conveyor/belt_item = new /obj/item/stack/conveyor(loc, 1, TRUE, null, null, id) - if(!QDELETED(belt_item)) //God I hate stacks - transfer_fingerprints_to(belt_item) - - to_chat(user, span_notice("You remove [src].")) - qdel(src) - - else if(attacking_item.tool_behaviour == TOOL_WRENCH) - attacking_item.play_tool_sound(src) - setDir(turn(dir, -45)) - to_chat(user, span_notice("You rotate [src].")) - - else if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER) - attacking_item.play_tool_sound(src) - inverted = !inverted - update_move_direction() - to_chat(user, span_notice("You set [src]'s direction [inverted ? "backwards" : "back to default"].")) - else if(attacking_item.tool_behaviour == TOOL_MULTITOOL) - attacking_item.play_tool_sound(src) - wire_mode = !wire_mode - update_cable() - power_change() - if(wire_mode) - START_PROCESSING(SSmachines, src) - else - STOP_PROCESSING(SSmachines, src) - to_chat(user, span_notice("You set [src]'s wire mode [wire_mode ? "on" : "off"].")) - else if(istype(attacking_item, /obj/item/stack/conveyor)) +/obj/machinery/conveyor/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/stack/conveyor)) // We should place a new conveyor belt machine on the output turf the conveyor is pointing to. var/turf/target_turf = get_step(get_turf(src), forwards) - if(!target_turf) - return ..() + if(!target_turf || isclosedturf(target_turf)) + return ITEM_INTERACT_BLOCKING for(var/obj/machinery/conveyor/belt in target_turf) to_chat(user, span_warning("You cannot place a conveyor belt on top of another conveyor belt.")) - return ..() + return ITEM_INTERACT_BLOCKING - var/obj/item/stack/conveyor/belt_item = attacking_item + var/obj/item/stack/conveyor/belt_item = tool belt_item.use(1) new /obj/machinery/conveyor(target_turf, forwards, id) + return ITEM_INTERACT_SUCCESS - else if(!user.combat_mode || (attacking_item.item_flags & NOBLUDGEON)) - user.transfer_item_to_turf(attacking_item, drop_location()) - else - return ..() + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + user.transfer_item_to_turf(tool, drop_location()) + return ITEM_INTERACT_SUCCESS -/obj/machinery/conveyor/attackby_secondary(obj/item/attacking_item, mob/living/user, list/modifiers, list/attack_modifiers) - if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER) - attacking_item.play_tool_sound(src) - flipped = !flipped - update_move_direction() - to_chat(user, span_notice("You flip [src]'s belt [flipped ? "around" : "back to normal"].")) + return NONE - else if(attacking_item.tool_behaviour == TOOL_WRENCH) - attacking_item.play_tool_sound(src) - setDir(turn(dir, 45)) - to_chat(user, span_notice("You rotate [src].")) +/obj/machinery/conveyor/crowbar_act(mob/living/user, obj/item/tool) + user.visible_message(span_notice("[user] struggles to pry up [src] with [tool]."), \ + span_notice("You struggle to pry up [src] with [tool].")) - else if(!user.combat_mode) - user.transferItemToLoc(attacking_item, drop_location()) + if(!tool.use_tool(src, user, 4 SECONDS, volume = 40)) + return ITEM_INTERACT_BLOCKING + set_operating(FALSE) + var/obj/item/stack/conveyor/belt_item = new /obj/item/stack/conveyor(loc, 1, TRUE, null, null, id) + if(!QDELETED(belt_item)) //God I hate stacks + transfer_fingerprints_to(belt_item) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + to_chat(user, span_notice("You remove [src].")) + qdel(src) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/wrench_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + setDir(turn(dir, -45)) + to_chat(user, span_notice("You rotate [src].")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/screwdriver_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + inverted = !inverted + update_move_direction() + to_chat(user, span_notice("You set [src]'s direction [inverted ? "backwards" : "back to default"].")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/multitool_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + wire_mode = !wire_mode + update_cable() + power_change() + if(wire_mode) + START_PROCESSING(SSmachines, src) + else + STOP_PROCESSING(SSmachines, src) + to_chat(user, span_notice("You set [src]'s wire mode [wire_mode ? "on" : "off"].")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) + return NONE + user.transferItemToLoc(tool, drop_location()) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/screwdriver_act_secondary(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + flipped = !flipped + update_move_direction() + to_chat(user, span_notice("You flip [src]'s belt [flipped ? "around" : "back to normal"].")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/conveyor/wrench_act_secondary(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + setDir(turn(dir, 45)) + to_chat(user, span_notice("You rotate [src].")) + return ITEM_INTERACT_SUCCESS /obj/machinery/conveyor/powered(chan = power_channel, ignore_use_power = FALSE) if(!wire_mode) @@ -548,10 +558,11 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor_switch/attack_robot_secondary(mob/user, list/modifiers) return attack_hand_secondary(user, modifiers) -/obj/machinery/conveyor_switch/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) - if(is_wire_tool(attacking_item)) - wires.interact(user) - return TRUE +/obj/machinery/conveyor_switch/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!is_wire_tool(tool)) + return NONE + wires.interact(user) + return ITEM_INTERACT_SUCCESS /obj/machinery/conveyor_switch/multitool_act(mob/living/user, obj/item/I) var/input_speed = tgui_input_number(user, "Set the speed of the conveyor belts in seconds", "Speed", conveyor_speed, 20, 0.2, round_value = FALSE) @@ -606,6 +617,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) icon = 'icons/obj/machines/recycling.dmi' icon_state = "switch-off" w_class = WEIGHT_CLASS_BULKY + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) // ID of the switch-in-the-making, to link conveyor belts to it. var/id = "" @@ -644,6 +656,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) singular_name = "conveyor belt" w_class = WEIGHT_CLASS_BULKY merge_type = /obj/item/stack/conveyor + mats_per_unit = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) /// ID for linking a belt to one or more switches, all conveyors with the same ID will be controlled the same switch(es). var/id = "" @@ -663,12 +676,13 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) use(1) return ITEM_INTERACT_SUCCESS -/obj/item/stack/conveyor/attackby(obj/item/item_used, mob/user, list/modifiers, list/attack_modifiers) - ..() - if(istype(item_used, /obj/item/conveyor_switch_construct)) - to_chat(user, span_notice("You link the switch to the conveyor belt assembly.")) - var/obj/item/conveyor_switch_construct/switch_construct = item_used - id = switch_construct.id +/obj/item/stack/conveyor/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/conveyor_switch_construct)) + return NONE + to_chat(user, span_notice("You link the switch to the conveyor belt assembly.")) + var/obj/item/conveyor_switch_construct/switch_construct = tool + id = switch_construct.id + return ITEM_INTERACT_SUCCESS /obj/item/stack/conveyor/update_weight() return FALSE diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index dfbed0e37f5e..0b36785f681a 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -119,32 +119,35 @@ GLOBAL_VAR_INIT(disposals_animals_spawned, 0) air_contents.merge(removed) trunk_check() -/obj/machinery/disposal/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) +/obj/machinery/disposal/item_interaction(mob/living/user, obj/item/tool, list/modifiers) add_fingerprint(user) - if(!pressure_charging && !full_pressure && !flush) - if(I.tool_behaviour == TOOL_SCREWDRIVER) - toggle_panel_open() - I.play_tool_sound(src) - to_chat(user, span_notice("You [panel_open ? "remove":"attach"] the screws around the power connection.")) - return - else if(I.tool_behaviour == TOOL_WELDER && panel_open) - if(!I.tool_start_check(user, amount=1, heat_required = HIGH_TEMPERATURE_REQUIRED)) - return - - to_chat(user, span_notice("You start slicing the floorweld off \the [src]...")) - if(I.use_tool(src, user, 20, volume=SMALL_MATERIAL_AMOUNT) && panel_open) - to_chat(user, span_notice("You slice the floorweld off \the [src].")) - deconstruct() - return - - if(!user.combat_mode || (I.item_flags & NOBLUDGEON)) - if(I.item_flags & ABSTRACT) - return - if(place_item_in_disposal(I, user)) + if(!user.combat_mode || (tool.item_flags & NOBLUDGEON)) + if(tool.item_flags & ABSTRACT) + return ITEM_INTERACT_BLOCKING + if(place_item_in_disposal(tool, user)) update_appearance() - return TRUE //no afterattack - else - return ..() + return ITEM_INTERACT_SUCCESS + return NONE + +/obj/machinery/disposal/screwdriver_act(mob/living/user, obj/item/tool) + if(pressure_charging || full_pressure || flush) + return NONE + toggle_panel_open() + tool.play_tool_sound(src) + to_chat(user, span_notice("You [panel_open ? "remove":"attach"] the screws around the power connection.")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/disposal/welder_act(mob/living/user, obj/item/tool) + if(pressure_charging || full_pressure || flush || !panel_open) + return NONE + if(!tool.tool_start_check(user, amount=1, heat_required = HIGH_TEMPERATURE_REQUIRED)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You start slicing the floorweld off \the [src]...")) + if(!tool.use_tool(src, user, 20, volume=SMALL_MATERIAL_AMOUNT) || !panel_open) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You slice the floorweld off \the [src].")) + deconstruct() + return ITEM_INTERACT_SUCCESS /// The regal rat spawns ratty treasures from the disposal /obj/machinery/disposal/proc/rat_rummage(mob/living/basic/regal_rat/king) @@ -438,7 +441,8 @@ GLOBAL_VAR_INIT(disposals_animals_spawned, 0) var/obj/item/dest_tagger/mounted_tagger ///a weighted list of all the possible animals we can have var/static/list/weighted_animal_list = list( - /mob/living/basic/stoat = 1, + /mob/living/basic/stoat = 5, + /mob/living/basic/stoat/kit = 1, ) /// do we contain an animal? var/contained_animal @@ -448,35 +452,31 @@ GLOBAL_VAR_INIT(disposals_animals_spawned, 0) if(mapload && prob(CONTAINS_ANIMAL_CHANCE) && GLOB.disposals_animals_spawned < MAXIMUM_ANIMAL_SPAWNS) spawn_contained_animal() -// attack by item places it in to disposal -/obj/machinery/disposal/bin/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. - var/obj/item/storage/bag/trash/bag = weapon - to_chat(user, span_warning("You empty the bag.")) - bag.atom_storage.remove_all(src) - update_appearance() - else +/obj/machinery/disposal/bin/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/storage/bag/trash)) return ..() -// handle machine interaction + var/obj/item/storage/bag/trash/bag = tool + to_chat(user, span_warning("You empty the bag.")) + bag.atom_storage.remove_all(src) + update_appearance() + return ITEM_INTERACT_SUCCESS -/obj/machinery/disposal/bin/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - if(istype(weapon, /obj/item/dest_tagger)) - var/obj/item/dest_tagger/new_tagger = weapon - if(mounted_tagger) - balloon_alert(user, "already has a tagger!") - return - if(HAS_TRAIT(new_tagger, TRAIT_NODROP) || !user.transferItemToLoc(new_tagger, src)) - balloon_alert(user, "stuck to your hand!") - return - new_tagger.moveToNullspace() - user.visible_message(span_notice("[user] snaps \the [new_tagger] onto [src]!")) - balloon_alert(user, "tagger returned") - playsound(src, 'sound/machines/click.ogg', 50, TRUE) - mounted_tagger = new_tagger - update_appearance() - return - else +/obj/machinery/disposal/bin/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/dest_tagger)) return ..() + if(mounted_tagger) + balloon_alert(user, "already has a tagger!") + return ITEM_INTERACT_BLOCKING + if(HAS_TRAIT(tool, TRAIT_NODROP) || !user.transferItemToLoc(tool, src)) + balloon_alert(user, "stuck to your hand!") + return ITEM_INTERACT_BLOCKING + tool.moveToNullspace() + user.visible_message(span_notice("[user] snaps \the [tool] onto [src]!")) + balloon_alert(user, "tagger returned") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + mounted_tagger = tool + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/disposal/bin/attack_hand_secondary(mob/user, list/modifiers) . = ..() diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 9f0333d46906..9fba6f38c469 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -123,8 +123,7 @@ if(isfloorturf(T) && T.overfloor_placed) // pop the tile if present floorturf = T - if(floorturf.floor_tile) - new floorturf.floor_tile(T) + floorturf.spawn_tile() floorturf.make_plating(TRUE) if(direction) // direction is specified diff --git a/code/modules/recycling/disposal/pipe_sorting.dm b/code/modules/recycling/disposal/pipe_sorting.dm index b438e88e4d72..d5bf8f8899bb 100644 --- a/code/modules/recycling/disposal/pipe_sorting.dm +++ b/code/modules/recycling/disposal/pipe_sorting.dm @@ -55,20 +55,21 @@ else . += "It has no sorting tags set." -/obj/structure/disposalpipe/sorting/mail/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/dest_tagger)) - var/obj/item/dest_tagger/O = I - - if(O.currTag)// Tagger has a tag set - if(O.currTag in sortTypes) - sortTypes -= O.currTag - to_chat(user, span_notice("Removed \"[GLOB.TAGGERLOCATIONS[O.currTag]]\" filter.")) - else - sortTypes |= O.currTag - to_chat(user, span_notice("Added \"[GLOB.TAGGERLOCATIONS[O.currTag]]\" filter.")) - playsound(src, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE) +/obj/structure/disposalpipe/sorting/mail/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/dest_tagger)) + return NONE + var/relevant_tag = astype(tool, /obj/item/dest_tagger).currTag + + if(!relevant_tag)// Tagger has a tag set + return ITEM_INTERACT_BLOCKING + if(relevant_tag in sortTypes) + sortTypes -= relevant_tag + to_chat(user, span_notice("Removed \"[GLOB.TAGGERLOCATIONS[relevant_tag]]\" filter.")) else - return ..() + sortTypes |= relevant_tag + to_chat(user, span_notice("Added \"[GLOB.TAGGERLOCATIONS[relevant_tag]]\" filter.")) + playsound(src, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE) + return ITEM_INTERACT_SUCCESS /obj/structure/disposalpipe/sorting/mail/check_sorting(obj/structure/disposalholder/H) return (H.destinationTag in sortTypes) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 997bc6540bc4..4cde5115f2f8 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -104,52 +104,57 @@ if(sticker) . += "[base_icon_state]_barcode" -/obj/item/delivery/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(istype(item, /obj/item/dest_tagger)) - var/obj/item/dest_tagger/dest_tagger = item - - if(sort_tag != dest_tagger.currTag) - var/tag = uppertext(GLOB.TAGGERLOCATIONS[dest_tagger.currTag]) - to_chat(user, span_notice("*[tag]*")) - sort_tag = dest_tagger.currTag - playsound(loc, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE) - update_appearance() - - else if(istype(item, /obj/item/stack/wrapping_paper) && !giftwrapped) - var/obj/item/stack/wrapping_paper/wrapping_paper = item - if(wrapping_paper.use(3)) - user.visible_message(span_notice("[user] wraps the package in festive paper!")) - giftwrapped = TRUE - greyscale_config = text2path("/datum/greyscale_config/gift[icon_state]") - set_greyscale(colors = wrapping_paper.greyscale_colors) - update_appearance() - else +/obj/item/delivery/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/dest_tagger)) + var/relevant_tag = astype(tool, /obj/item/dest_tagger).currTag + if(sort_tag == relevant_tag) + return ITEM_INTERACT_BLOCKING + var/tag = uppertext(GLOB.TAGGERLOCATIONS[relevant_tag]) + to_chat(user, span_notice("*[tag]*")) + sort_tag = relevant_tag + playsound(loc, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE) + update_appearance() + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/stack/wrapping_paper)) + if(giftwrapped) + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/wrapping_paper/wrapping_paper = tool + if(!wrapping_paper.use(3)) to_chat(user, span_warning("You need more paper!")) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] wraps the package in festive paper!")) + giftwrapped = TRUE + greyscale_config = text2path("/datum/greyscale_config/gift[icon_state]") + set_greyscale(colors = wrapping_paper.greyscale_colors) + update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(item, /obj/item/paper)) + if(istype(tool, /obj/item/paper)) if(note) to_chat(user, span_warning("This package already has a note attached!")) - return - if(!user.transferItemToLoc(item, src)) - to_chat(user, span_warning("For some reason, you can't attach [item]!")) - return - user.visible_message(span_notice("[user] attaches [item] to [src]."), span_notice("You attach [item] to [src].")) - note = item + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("For some reason, you can't attach [tool]!")) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] attaches [tool] to [src]."), span_notice("You attach [tool] to [src].")) + note = tool update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(item, /obj/item/universal_scanner)) - var/obj/item/universal_scanner/sales_tagger = item + if(istype(tool, /obj/item/universal_scanner)) + var/obj/item/universal_scanner/sales_tagger = tool if(sales_tagger.scanning_mode != SCAN_SALES_TAG) - return + return ITEM_INTERACT_BLOCKING if(sticker) to_chat(user, span_warning("This package already has a barcode attached!")) - return + return ITEM_INTERACT_BLOCKING if(!(sales_tagger.payments_acc)) to_chat(user, span_warning("Swipe an ID on [sales_tagger] first!")) - return + return ITEM_INTERACT_BLOCKING if(sales_tagger.paper_count <= 0) to_chat(user, span_warning("[sales_tagger] is out of paper!")) - return + return ITEM_INTERACT_BLOCKING user.visible_message(span_notice("[user] attaches a barcode to [src]."), span_notice("You attach a barcode to [src].")) sales_tagger.paper_count -= 1 sticker = new /obj/item/barcode(src) @@ -161,38 +166,39 @@ continue wrapped_item.AddComponent(/datum/component/pricetag, list(sticker.payments_acc), sales_tagger.cut_multiplier) update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(item, /obj/item/barcode)) - var/obj/item/barcode/stickerA = item + if(istype(tool, /obj/item/barcode)) + var/obj/item/barcode/stickerA = tool if(sticker) to_chat(user, span_warning("This package already has a barcode attached!")) - return + return ITEM_INTERACT_BLOCKING if(!(stickerA.payments_acc)) to_chat(user, span_warning("This barcode seems to be invalid. Guess it's trash now.")) - return - if(!user.transferItemToLoc(item, src)) - to_chat(user, span_warning("For some reason, you can't attach [item]!")) - return + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + to_chat(user, span_warning("For some reason, you can't attach [tool]!")) + return ITEM_INTERACT_BLOCKING sticker = stickerA for(var/obj/wrapped_item in get_all_contents()) if(HAS_TRAIT(wrapped_item, TRAIT_NO_BARCODES)) continue wrapped_item.AddComponent(/datum/component/pricetag, list(sticker.payments_acc), sticker.cut_multiplier) update_appearance() + return ITEM_INTERACT_SUCCESS - else if(istype(item, /obj/item/boxcutter)) - var/obj/item/boxcutter/boxcutter_item = item - if(HAS_TRAIT(boxcutter_item, TRAIT_TRANSFORM_ACTIVE)) - if(!attempt_pre_unwrap_contents(user, time = 0.5 SECONDS)) - return - unwrap_contents() - balloon_alert(user, "cutting open package...") - post_unwrap_contents(user, rip_open = FALSE) - else + if(istype(tool, /obj/item/boxcutter)) + var/obj/item/boxcutter/boxcutter_item = tool + if(!HAS_TRAIT(boxcutter_item, TRAIT_TRANSFORM_ACTIVE)) balloon_alert(user, "prime the boxcutter!") + return ITEM_INTERACT_BLOCKING + if(!attempt_pre_unwrap_contents(user, time = 0.5 SECONDS)) + return ITEM_INTERACT_BLOCKING + unwrap_contents() + post_unwrap_contents(user, rip_open = FALSE) + return ITEM_INTERACT_SUCCESS - else - return ..() + return NONE /obj/item/delivery/nameformat(input, user) playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) @@ -266,6 +272,7 @@ sound_vary = TRUE pickup_sound = SFX_GENERIC_DEVICE_PICKUP drop_sound = SFX_GENERIC_DEVICE_DROP + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) /obj/item/dest_tagger/borg name = "cyborg destination tagger" @@ -348,34 +355,34 @@ if(payments_acc) . += span_notice("Ctrl-click to clear the registered account.") -/obj/item/sales_tagger/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers) - . = ..() - if(isidcard(item)) - var/obj/item/card/id/potential_acc = item - if(potential_acc.registered_account) - if(payments_acc == potential_acc.registered_account) - to_chat(user, span_notice("ID card already registered.")) - return - else - payments_acc = potential_acc.registered_account - playsound(src, 'sound/machines/ping.ogg', 40, TRUE) - to_chat(user, span_notice("[src] registers the ID card. Tag a wrapped item to create a barcode.")) - else if(!potential_acc.registered_account) +/obj/item/sales_tagger/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(isidcard(tool)) + var/obj/item/card/id/potential_acc = tool + if(!potential_acc.registered_account) to_chat(user, span_warning("This ID card has no account registered!")) - return - if(istype(item, /obj/item/paper)) - if (!(paper_count >= max_paper_count)) - paper_count += 10 - qdel(item) - if (paper_count >= max_paper_count) - paper_count = max_paper_count - to_chat(user, span_notice("[src]'s paper supply is now full.")) - return - to_chat(user, span_notice("You refill [src]'s paper supply, you have [paper_count] left.")) - return - else + return ITEM_INTERACT_BLOCKING + if(payments_acc == potential_acc.registered_account) + to_chat(user, span_notice("ID card already registered.")) + return ITEM_INTERACT_BLOCKING + payments_acc = potential_acc.registered_account + playsound(src, 'sound/machines/ping.ogg', 40, TRUE) + to_chat(user, span_notice("[src] registers the ID card. Tag a wrapped item to create a barcode.")) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/paper)) + if ((paper_count >= max_paper_count)) to_chat(user, span_notice("[src]'s paper supply is full.")) - return + return ITEM_INTERACT_BLOCKING + paper_count += 10 + qdel(tool) + if (paper_count >= max_paper_count) + paper_count = max_paper_count + to_chat(user, span_notice("[src]'s paper supply is now full.")) + return ITEM_INTERACT_SUCCESS + to_chat(user, span_notice("You refill [src]'s paper supply, you have [paper_count] left.")) + return ITEM_INTERACT_SUCCESS + + return NONE /obj/item/sales_tagger/attack_self(mob/user) . = ..() diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm index f34ad0e93bc4..04b7a1785452 100644 --- a/code/modules/religion/burdened/burdened_trauma.dm +++ b/code/modules/religion/burdened/burdened_trauma.dm @@ -2,7 +2,7 @@ /datum/brain_trauma/special/burdened name = "Flagellating Compulsions" desc = "Patient feels compelled to injure themselves in various incapacitating and horrific ways. \ - There seems to be an odd genetic... trigger, following these compulsions may lead to?" + There seems to be an odd genetic \"sequence\" gradually expressed upon following these compulsions." scan_desc = "damaged frontal lobe" symptoms = "Experiences an overwhelming compulsion to self-harm, often engaging in behaviors that lead to significant physical injury. \ This compulsion is driven by an intense psychological need to feel pain and suffering, \ diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index 5b2b85c1c7aa..c9cdf2598bd1 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -1,6 +1,6 @@ /obj/item/organ/brain/psyker name = "psyker brain" - desc = "This brain is blue, split into two hemispheres, and has immense psychic powers. What kind of monstrosity would use that?" + desc = "This brain is blue, split into two hemispheres, and aflush with psychic power. What kind of monstrosity would use this?" icon_state = "brain-psyker" actions_types = list( /datum/action/cooldown/spell/pointed/psychic_projection, @@ -190,10 +190,10 @@ /obj/item/gun/ballistic/revolver/chaplain/attack_self(mob/living/user) pray_refill(user) -/obj/item/gun/ballistic/revolver/chaplain/attackby(obj/item/possibly_ammo, mob/user, list/modifiers, list/attack_modifiers) - if (isammocasing(possibly_ammo) || istype(possibly_ammo, /obj/item/ammo_box)) +/obj/item/gun/ballistic/revolver/chaplain/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (isammocasing(tool) || istype(tool, /obj/item/ammo_box)) user.balloon_alert(user, "no manual reloads!") - return + return ITEM_INTERACT_BLOCKING return ..() @@ -249,7 +249,7 @@ /datum/action/cooldown/spell/pointed/psychic_projection name = "Psychic Projection" - desc = "Project your psychics into a target to warp their view, and instill absolute terror that will cause them to fire their gun rapidly." + desc = "Project your psyche into a target to warp their view and instill absolute terror. This will cause them to fire any held gun rapidly." ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' button_icon_state = "blind" school = SCHOOL_PSYCHIC diff --git a/code/modules/religion/deaconize.dm b/code/modules/religion/deaconize.dm index 0466b026caa1..84211acebe74 100644 --- a/code/modules/religion/deaconize.dm +++ b/code/modules/religion/deaconize.dm @@ -5,8 +5,8 @@ */ /datum/religion_rites/deaconize name = "Deaconize" - desc = "Converts someone to your sect. They must be willing, so the first invocation will instead prompt them to join. \ - They will gain the same holy abilities as you, this is a one-time use so make sure they are worthy!" + desc = "Converts someone to your sect. They must be willing, so the first invocation will only prompt them to join. \ + They will gain the same holy abilities as you. This is a one-time use rite, so make sure they are worthy!" ritual_length = 30 SECONDS ritual_invocations = list( "A good, honorable person has been brought here by faith ...", @@ -41,7 +41,7 @@ //no one invited or this is not the invited person if(!potential_deacon || (possible_deacon != potential_deacon)) INVOKE_ASYNC(src, PROC_REF(invite_deacon), possible_deacon) - to_chat(user, span_notice("They have been offered the oppertunity to join our ranks. Wait for them to decide and try again.")) + to_chat(user, span_notice("They have been offered the opportunity to join our ranks. Wait for them to decide and try again.")) return FALSE return ..() @@ -64,7 +64,7 @@ var/datum/brain_trauma/special/honorbound/honor = user.has_trauma_type(/datum/brain_trauma/special/honorbound) if(honor && (potential_deacon in honor.guilty)) honor.guilty -= potential_deacon - to_chat(user, span_notice("[GLOB.deity] has bound [potential_deacon] to the code! They are now a holy role! (albeit the lowest level of such)")) + to_chat(user, span_notice("[GLOB.deity] has bound [potential_deacon] to the code! They are now a holy role (albeit the lowest level of such)!")) potential_deacon.mind.set_holy_role(HOLY_ROLE_DEACON) GLOB.religious_sect.on_conversion(potential_deacon) playsound(get_turf(religious_tool), 'sound/effects/pray.ogg', 50, TRUE) @@ -85,7 +85,7 @@ * If they accept, the deaconize rite can now recruit them instead of just offering more invites. */ /datum/religion_rites/deaconize/proc/invite_deacon(mob/living/carbon/human/invited) - var/ask = tgui_alert(invited, "Join [GLOB.deity]? You will be expected to follow the Chaplain's order.", "Invitation", list("Yes", "No"), 60 SECONDS) + var/ask = tgui_alert(invited, "Join [GLOB.deity]? You will be expected to follow the chaplain's order.", "Invitation", list("Yes", "No"), 60 SECONDS) if(ask != "Yes") return potential_deacon = invited diff --git a/code/modules/religion/dreams/banish_nightmare.dm b/code/modules/religion/dreams/banish_nightmare.dm index 9883c8253150..c6b49b84a67e 100644 --- a/code/modules/religion/dreams/banish_nightmare.dm +++ b/code/modules/religion/dreams/banish_nightmare.dm @@ -1,14 +1,14 @@ /datum/religion_rites/banish_nightmare name = "Banish Nightmare" - desc = "Banish the corpse of a Nightmare or its heart back from whence it came, protecting the dreams of \ - the station and earning favor. If a heart is present, you will be rewarded with a special blessing." + desc = "Banish the corpse of a Nightmare (or its heart) back from whence it came. In protecting the dreams of \ + the station, you will earn favor. If a heart is present, you will be rewarded with a special blessing." favor_cost = 0 ritual_length = 20 SECONDS /datum/religion_rites/banish_nightmare/New() . = ..() ritual_invocations = list( - "We have bested a terrible Nightmare that plagued our station!..", + "We have bested a terrible Nightmare, a plague upon our station!..", "With the power of [GLOB.deity], we cast it out!..", "This invader of dreams has no place here...", "May it trouble our flock no longer.", @@ -27,7 +27,7 @@ break if(!has_nightmare) - to_chat(user, span_warning("There is no corpse or heart of a Nightmare to banish!")) + to_chat(user, span_warning("There is no Nightmare corpse or heart to banish!")) return FALSE return ..() diff --git a/code/modules/religion/dreams/deaconize_dreamer.dm b/code/modules/religion/dreams/deaconize_dreamer.dm index a6232b10d6cd..04bdcfc656a6 100644 --- a/code/modules/religion/dreams/deaconize_dreamer.dm +++ b/code/modules/religion/dreams/deaconize_dreamer.dm @@ -1,5 +1,5 @@ /datum/religion_rites/deaconize/dreamers - desc = "Converts someone to your sect. They must be willing, so the first invocation will instead prompt them to join. \ + desc = "Converts someone to your sect. They must be willing, so the first invocation will only prompt them to join. \ They will gain the same holy abilities as you. You can deaconize up to three followers, so choose wisely!" rite_flags = parent_type::rite_flags & ~RITE_ONE_TIME_USE diff --git a/code/modules/religion/dreams/dream_portent.dm b/code/modules/religion/dreams/dream_portent.dm index 51324bfc3815..be95b95c02dc 100644 --- a/code/modules/religion/dreams/dream_portent.dm +++ b/code/modules/religion/dreams/dream_portent.dm @@ -136,7 +136,7 @@ list("you have a terrible nightmare", "filled with indescribable horrors", "leaving you with a lingering sense of dread"), list("you have a terrible nightmare", "filled with visions of your own death", "leaving you with a lingering sense of doom"), list("you have a terrible nightmare", "filled with horrible memories of your past", "leaving you with a lingering sense of sadness"), - list("you have a terrible nightmare", "filled with fear of the unknown", "leaving you with a lingering sense of anxiety"), + list("you have a terrible nightmare", "filled with the influence of an uncertain presence", "leaving you with a lingering sense of anxiety"), list("you have a terrible nightmare", "filled with stabbing pain and suffocating darkness", "leaving you with a lingering sense of panic"), )) @@ -154,7 +154,7 @@ "a great [IS_HERETIC(dreamer) ? "force" : "evil"] locked away for good", ) - var/list/heretic_text = list("the doors of the Mansus loom ahead of you", "intricately decorated - and ajar", "you look through the crack") + var/list/heretic_text = list("the doors of the Mansus loom ahead of you", "intricately decorated and ajar", "you look through the crack") switch(prob(75) ? heretic.heretic_path.route : null) if(PATH_ASH) heretic_text += "beyond it, you see a barren wasteland" @@ -186,7 +186,7 @@ heretic_text += "you can't shake the feeling something is wrong" else heretic_text += "what lies beyond cannot be comprehended" - heretic_text += "the sheer magnitude of overwhelms you" + heretic_text += "the sheer magnitude of it overwhelms you" heretic_text += "you feel a strange mix of awe and terror" return heretic_text @@ -226,7 +226,7 @@ "a robed figure manifests in your dream", "they introduce themselves as the magician", "a demonstration of their powers leaves you in awe", - "they leave as suddenly as they arrived", + "they depart as suddenly as they arrived", ) for(var/obj/machinery/nuclearbomb/bomb as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/nuclearbomb)) @@ -235,7 +235,7 @@ list("you see", "a supernova", "bright and blinding", "consuming everything in an instant"), list("you see", "a mushroom cloud on the horizon", "a sign of devastation and ruin"), list("you see", "a ticking clock", "counting down to an inevitable disaster"), - list("you see", "a looming tower atop a rocky mountain", "a lightning strikes it, bringing it down", "a sign of imminent calamity"), + list("you see", "a looming tower atop a rocky mountain", "lightning strikes, bringing it down", "this reads as active calamity"), )) for(var/obj/item/disk/nuclear/nuke_disk as anything in SSpoints_of_interest.real_nuclear_disks) @@ -243,9 +243,9 @@ if(!istype(disk_loc, /area/station) && !istype(disk_loc, /area/space)) return pick(list( list("you see", "a dying star", "slowly dimming", "on the verge of collapse"), - list("you see", "a fool, dancing aimlessly", "they holds a ticking bomb", "a sign of recklessness"), - list("you see", "a hanging man", "swaying gently in the breeze", "a sign of surrender"), - list("you see", "a looming tower atop a rocky mountain", "it rains heavily around you", "a sign of calamity"), + list("you see", "a fool, dancing aimlessly", "they hold a ticking bomb", "a sign of recklessness"), + list("you see", "an inverted man", "swaying gently by one ankle", "this reads as suspense"), + list("you see", "a looming tower atop a rocky mountain", "it rains heavily, there is distant thunder", "this reads as imminent calamity"), )) for(var/mob/living/carbon/human/clone as anything in GLOB.human_list) @@ -276,9 +276,9 @@ if(PATH_FLESH) return list("you see", "a legion of amalgamations ahead", "twisted and grotesque", "marching in unison towards an unknown destination") if(PATH_VOID) - return list("you see", "nothingness ahead", "a void that seems to swallow all light and hope", "the silence deafening and oppressive") + return list("you see", "nothing", "a void that seems to swallow all light and hope", "the silence deafening and oppressive") if(PATH_COSMIC) - return list("you see", "the birth of a new star", "radiant and full of potential", "an awe-inspiring sight") + return list("you see", "the birth of a new star", "radiant and reaching out", "you are not alone") if(PATH_BLADE) return list("you see", "a towering fortress ahead", "its walls lined with stalwart defenders", "each and every one bowing in respect to you") if(PATH_LOCK) @@ -351,7 +351,7 @@ list("you find yourself", "in an old city", "still bustling with activity", "but with an omnipresent feel of decay"), )) if(3) - return list("you find yourself", "in a burning city", "flames reaching high", "but everyone doing their best to survive") + return list("you find yourself", "in a burning city", "flames reaching high", "but with everyone doing their best to survive") if(4) return list("you find yourself", "in a chaotic battlefield", "with no clear sides or victors", "only endless conflict and suffering") diff --git a/code/modules/religion/dreams/dream_projection.dm b/code/modules/religion/dreams/dream_projection.dm index c1c131978a4a..a08327b3e35c 100644 --- a/code/modules/religion/dreams/dream_projection.dm +++ b/code/modules/religion/dreams/dream_projection.dm @@ -1,17 +1,18 @@ /datum/religion_rites/dream_projection name = "Dream Projection" desc = "Astrally project your dream consciousness into the mind of one of your followers. \ - While projecting, you are asleep, and can communicate with only and see through the eyes of the chosen follower, \ - but cannot interact with the world in any way. The projection can be ended at any time, \ - ends if you are woken up or attacked, and ends if the follower dies." + While projecting, you are asleep, and can see through the eyes of the chosen follower. \ + They alone can hear you, and you cannot interact with the world in any way. \ + The projection can be ended at any time, but it will end early if you are woken up, if you are attacked, \ + or if the follower dies." favor_cost = 100 ritual_length = 15 SECONDS /datum/religion_rites/dream_projection/New() . = ..() ritual_invocations = list( - "A member of the flock has gone astray, lost in the waking world...", - "It is the duty of the shepherd to guide them back to the fold, even if they cannot find their way themselves...", + "A member of our flock has gone astray, lost in the waking world...", + "It is the duty of the shepherd to guide those who cannot find their way...", "Let me walk through their waking dream, and show them the way back...", ) @@ -166,10 +167,8 @@ /mob/eye/imaginary_friend/dream_projection/greet() return -/mob/eye/imaginary_friend/dream_projection/verb/stop_projection() - set category = "IC" - set name = "Stop Projection" - set desc = "Stop astrally projecting and return to your body." +// The IC tab was removed recently as of commenting. This should probably be adjusted. +GAME_VERB_DESC(/mob/eye/imaginary_friend/dream_projection, stop_projection, "Stop Projection", "Stop astrally projecting and return to your body.", "IC") qdel(src) diff --git a/code/modules/religion/festival/festival_violin.dm b/code/modules/religion/festival/festival_violin.dm index 82431352685b..3c9bf6783a9b 100644 --- a/code/modules/religion/festival/festival_violin.dm +++ b/code/modules/religion/festival/festival_violin.dm @@ -24,6 +24,6 @@ analysis += span_revenbignotice("[src] speaks to you...") analysis += span_revennotice("\"This song has [song.lines.len] lines and a tempo of [song.tempo].\"") analysis += span_revennotice("\"Multiplying these together gives a song length of [song_length].\"") - analysis += span_revennotice("\"To get a bonus effect from [GLOB.deity] upon finishing a performance, you need a song length of [FESTIVAL_SONG_LONG_ENOUGH].\"") + analysis += span_revennotice("\"To get a finishing effect from [GLOB.deity], your songs must conclude with a length of [FESTIVAL_SONG_LONG_ENOUGH].\"") to_chat(playing_song, analysis.Join("\n")) diff --git a/code/modules/religion/festival/instrument_rites.dm b/code/modules/religion/festival/instrument_rites.dm index 3f03b47747b3..d431e8e7612a 100644 --- a/code/modules/religion/festival/instrument_rites.dm +++ b/code/modules/religion/festival/instrument_rites.dm @@ -15,10 +15,10 @@ /datum/religion_rites/portable_song_tuning name = "Portable Song Tuning" - desc = "Empowers an instrument on the table to work as a portable altar for tuning songs. Will need to be recharged after 5 rites." + desc = "Empowers a provided instrument to work as a portable altar for tuning songs. It will need to be recharged after five rites." ritual_length = 6 SECONDS ritual_invocations = list("Allow me to bring your holy inspirations ...") - invoke_msg = "... And send them with the winds my tunes ride with!" + invoke_msg = "... And send them with the winds my tunes ride!" favor_cost = 10 ///instrument to empower var/obj/item/instrument/instrument_target @@ -149,7 +149,7 @@ /datum/religion_rites/song_tuner/nullwave name = "Nullwave Vibrato" - desc = "Sing a dull song, protecting those who listen from magic." + desc = "Sing a dull song, protecting listeners from magic." particles_path = /particles/musical_notes/nullwave song_invocation_message = "You've prepared an antimagic song!" song_start_message = span_nicegreen("This music makes you feel protected!") @@ -161,7 +161,7 @@ /datum/religion_rites/song_tuner/pain name = "Murderous Chord" - desc = "Sing a sharp song, cutting those around you. Works less effectively on fellow priests. At the end of the song, you'll open the wounds of all listeners." + desc = "Sing a sharp song, cutting those around you. Works less effectively on fellow priests. At the end of the song, you'll open dozens of cuts on all listeners." particles_path = /particles/musical_notes/harm song_invocation_message = "You've prepared a painful song!" song_start_message = span_danger("This music cuts like a knife!") @@ -181,7 +181,7 @@ /datum/religion_rites/song_tuner/lullaby name = "Spiritual Lullaby" - desc = "Sing a lullaby, tiring those around you, making them slower. At the end of the song, you'll put people who are tired enough to sleep." + desc = "Sing a lullaby, tiring and slowing those around you. At the end of the song, you'll lull all listeners to sleep." particles_path = /particles/musical_notes/sleepy song_invocation_message = "You've prepared a sleepy song!" song_start_message = span_warning("This music's making you feel drowsy...") diff --git a/code/modules/religion/honorbound/honorbound_rites.dm b/code/modules/religion/honorbound/honorbound_rites.dm index 8e92ea91ba46..6bbe98626cd9 100644 --- a/code/modules/religion/honorbound/honorbound_rites.dm +++ b/code/modules/religion/honorbound/honorbound_rites.dm @@ -84,7 +84,7 @@
2.) Thou shalt not attack the just!
Those who fight for justice and good must not be harmed. Security is uncorruptable and must - be respected. Healers are mostly uncorruptable and if you are truly sure Medical has fallen + be respected. Healers are mostly uncorruptable, and if you are truly sure medical has fallen to the scourge of evil, use a declaration of evil.

@@ -98,7 +98,7 @@ 4.) Thou shalt not use profane magicks!
You are not a warlock, you are an honorable warrior. There is nothing more corruptive than the vile magicks used by witches, warlocks, and necromancers. There are exceptions to this rule.
- You may use holy magic, and, if you recruit one, the mime may use holy mimery. Restoration has also + You may use holy magic, and (if you recruit one) a mime may use holy mimery. Restoration has also been allowed as it is a school focused on the light and mending of this world. "} return ..() @@ -117,7 +117,7 @@ */ /datum/religion_rites/deaconize/crusader name = "Join Crusade" - desc = "Converts someone to your sect. They must be willing, so the first invocation will instead prompt them to join. \ + desc = "Converts someone to your sect. They must be willing, so the first invocation will only prompt them to join. \ They will become honorbound like you, and you will gain a massive favor boost!" ritual_length = 30 SECONDS ritual_invocations = list( diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm index a17973459352..bd1a294c82da 100644 --- a/code/modules/religion/honorbound/honorbound_trauma.dm +++ b/code/modules/religion/honorbound/honorbound_trauma.dm @@ -221,7 +221,7 @@ /datum/action/cooldown/spell/pointed/declare_evil name = "Declare Evil" - desc = "If someone is so obviously an evil of this world you can spend a huge amount of favor to declare them guilty." + desc = "If someone is so obviously an evil of this world then you can spend a huge amount of favor to declare them guilty." button_icon_state = "declaration" ranged_mousepointer = 'icons/effects/mouse_pointers/honorbound.dmi' diff --git a/code/modules/religion/pyre/pyre_rites.dm b/code/modules/religion/pyre/pyre_rites.dm index 880bd6558cd1..aa32836c1626 100644 --- a/code/modules/religion/pyre/pyre_rites.dm +++ b/code/modules/religion/pyre/pyre_rites.dm @@ -10,7 +10,7 @@ name = "Unmelting Protection" desc = "Grants fire immunity to any piece of clothing." ritual_length = 12 SECONDS - ritual_invocations = list("And so to support the holder of the Ever-Burning candle ...", + ritual_invocations = list("And so to support the holder of the Ever-Burning Candle ...", "... allow this unworthy apparel to serve you ...", "... make it strong enough to burn a thousand times and more ...") invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!" @@ -43,7 +43,7 @@ /datum/religion_rites/burning_sacrifice name = "Burning Offering" - desc = "Sacrifice a buckled burning or husked corpse for favor, the more burn damage the corpse has the more favor you will receive." + desc = "Sacrifice a buckled burning or husked corpse for favor. The more burn damage the corpse has the more favor you will receive." ritual_length = 15 SECONDS ritual_invocations = list("Burning body ...", "... cleansed by the flame ...", @@ -100,7 +100,7 @@ /datum/religion_rites/infinite_candle name = "Immortal Candles" - desc = "Creates 5 candles that never run out of wax." + desc = "Create five unextinguishable candles that never run out of wax." ritual_length = 10 SECONDS invoke_msg = "Burn bright, little candles, for you will only extinguish along with the universe." favor_cost = 200 @@ -118,7 +118,7 @@ desc = "Enchants a holy arrow to set someone on fire on hit, or if the victim is already on fire... note, this consumes the arrow." ritual_length = 15 SECONDS ritual_invocations = list( - "And so to keep the Ever-Burning candle protected ...", + "And so to keep the Ever-Burning Candle protected ...", "... grant this feeble bolt your blessing ...", "... make it burn bright ...", ) diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index 4a534c99a0fc..d494094438e0 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -513,7 +513,7 @@ /datum/religion_sect/music name = "Festival God" - quote = "Everything follows a rhythm- The heartbeat of the universe!" + quote = "Everything follows a rhythm: the heartbeat of the universe!" desc = "Make wonderful music! Sooth or serrate your friends and foes with the beat." tgui_icon = "music" altar_icon_state = "convertaltar-festival" diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm index e6d7369ee629..8e96f9f38402 100644 --- a/code/modules/religion/rites.dm +++ b/code/modules/religion/rites.dm @@ -79,7 +79,7 @@ /datum/religion_rites/synthconversion name = "Synthetic Conversion" - desc = "Convert a human-esque individual into a (superior) Android. Buckle a human to convert them, otherwise it will convert you." + desc = "Convert a humanoid individual into a (superior) android. Buckle a human to convert them, otherwise this rite will convert you." ritual_length = 30 SECONDS ritual_invocations = list("By the inner workings of our god ...", "... We call upon you, in the face of adversity ...", @@ -202,8 +202,8 @@ . = ..() /datum/religion_rites/greed/vendatray - name = "Purchase Vend-a-tray" - desc = "Summons a Vend-a-tray. You can use it to sell items!" + name = "Purchase Vend-A-Tray" + desc = "Summons a vend-a-tray. You can use it to sell items!" invoke_msg = "I need a vend-a-tray to make some more money!" money_cost = 300 @@ -234,8 +234,8 @@ desc = "Begin your metamorphasis into a being more fit for Maintenance." ritual_length = 10 SECONDS ritual_invocations = list("I abandon the world ...", - "... to become one with the deep.", - "My form will become twisted ...") + "... to become one with the deep ...", + "... My form will become twisted ...") invoke_msg = "... but my smile I will keep!" favor_cost = 150 //150u of organic slurry @@ -325,7 +325,7 @@ /datum/religion_rites/ritual_totem name = "Create Ritual Totem" - desc = "Creates a Ritual Totem, a portable tool for performing rites on the go. Requires wood. Can only be picked up by the holy." + desc = "Creates a ritual totem, a portable tool for performing rites on the go. Requires wood. Can only be picked up by the holy." favor_cost = 100 invoke_msg = "Padala!!" ///the food that will be molded, only one per rite @@ -335,7 +335,7 @@ for(var/obj/item/stack/sheet/mineral/wood/could_totem in get_turf(religious_tool)) converted = could_totem //totemify this o great one return ..() - to_chat(user, span_warning("You need at least 1 wood to do this!")) + to_chat(user, span_warning("You need a piece of wood to do this!")) return FALSE /datum/religion_rites/ritual_totem/invoke_effect(mob/living/user, atom/movable/religious_tool) @@ -418,7 +418,7 @@ /datum/religion_rites/ceremonial_weapon name = "Forge Ceremonial Gear" - desc = "Turn some material into ceremonial gear. Ceremonial blades are weak outside of sparring, and are quite heavy to lug around." + desc = "Turn some material into ceremonial gear. Ceremonial blades are weak outside of sparring and quite heavy to lug around." ritual_length = 10 SECONDS invoke_msg = "Weapons in your name! Battles with your blood!" favor_cost = 0 @@ -443,7 +443,7 @@ if(not_rigid) to_chat(user, span_warning("[not_rigid] is not suitable for being made into gear!")) else - to_chat(user, span_warning("You need at least 5 sheets of a rigid material that can be made into gear!")) + to_chat(user, span_warning("You need at least five sheets of a rigid material to make gear!")) return FALSE /datum/religion_rites/ceremonial_weapon/invoke_effect(mob/living/user, atom/movable/religious_tool) diff --git a/code/modules/religion/sparring/sparring_contract.dm b/code/modules/religion/sparring/sparring_contract.dm index f15b82fd1159..918229d80526 100644 --- a/code/modules/religion/sparring/sparring_contract.dm +++ b/code/modules/religion/sparring/sparring_contract.dm @@ -85,7 +85,7 @@ resolved_opponents += resolved if((user in resolved_opponents) && params["stakes"] == STAKES_HOLY_MATCH) - to_chat(user, span_warning("This contract refuses to be signed up for a holy match by a previous holy match loser. Pick a different stake!")) + to_chat(user, span_warning("This contract refuses to allow a holy match with a previous holy match loser. Pick a different stake!")) //any updating of the terms should update the UI to display new terms . = TRUE diff --git a/code/modules/research/anomaly/anomaly_refinery.dm b/code/modules/research/anomaly/anomaly_refinery.dm index e8cae496b8a5..d5ff061d48e0 100644 --- a/code/modules/research/anomaly/anomaly_refinery.dm +++ b/code/modules/research/anomaly/anomaly_refinery.dm @@ -152,7 +152,7 @@ return if(!istype(inserted_core) || !istype(inserted_bomb)) - end_test("ERROR: Missing equpment. Items ejected.") + end_test("ERROR: Missing equipment. Items ejected.") return if(!inserted_bomb?.tank_one || !inserted_bomb?.tank_two || !(tank_to_target == inserted_bomb?.tank_one || tank_to_target == inserted_bomb?.tank_two)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index bc1d5eaee0f7..19cb1e6e1d44 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -58,6 +58,42 @@ other types of metals and chemistry for reagents). /// For protolathe designs that don't require reagents: If they can be exported to autolathes with a design disk or not. var/autolathe_exportable = TRUE + /** + * A variable for if and how we want the printed object to receive the materials that were used to print it. + * + * * DESIGN_INHERIT_MATS: default setting, this will also be unit tested to ensure that the object built from an unupgraded protolathe + * has the same materials of an object of the same type only instantiated in a generic way. + * * DESIGN_INHERIT_MATS_SPECIAL: get the materials, but don't perform unit test checks + * * DESIGN_DONT_INHERIT_MATS: The printed object won't have the materials that were used to print it. + * + * P.S. unit test checks for materials are not performed on designs that use /datum/material_requirement. + * The only thing we would've to check in that case would be the amounts but not the types, and that isn't worth it. + */ + var/inherit_materials = DESIGN_INHERIT_MATS + // If true, the efficiency of this design won't be influenced by the tier of the stock parts of the machine printing it + var/fixed_cost_efficiency = FALSE + + /** + * If set, instead of transfering the contents of the materials var to the item(s), this list will be used. + * This is useful for printed items that possess fewer mats than those used in the process of printing them, + * Or items that in turn contain more items that can be extracted and recycled singularly. + * + * Here's an example of how it's supposed to be structured: + * transfered_materials = list( + * /obj/item/printed = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5), + * /obj/item/inside_printed = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5), + * ) + * + * A few things to consider though: + * 1) It shouldn't include materials not present in the 'materials' variable. + * 2) The sum of each material in the lists shouldn't surpass what present in the 'materials' list. + * 3) It's incompatible with material_slot and material_requirement datums. This might change in the future, i dunno. + * 4) this does nothing if 'inherit_materials' is set to DESIGN_DONT_INHERIT_MATS. + * + * I've set a few unit test checks to make sure that things don't go wrong anyway, so don't worry too much about it + */ + var/list/transfered_materials + /datum/design/error_design name = "ERROR" desc = "This usually means something in the database has corrupted. If this doesn't go away automatically, inform Central Command so their techs can fix this ASAP(tm)" @@ -80,6 +116,14 @@ other types of metals and chemistry for reagents). materials = temp_list + for(var/object, mats in transfered_materials) + temp_list = list() + var/list/mat_list = mats + for(var/mat_type in mat_list) + var/datum/material/mat = SSmaterials.get_material(mat_type) + temp_list[mat] = mat_list[mat_type] + transfered_materials[object] = temp_list + /datum/design/proc/icon_html(client/user) var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/research_designs) sheet.send(user) @@ -92,9 +136,9 @@ other types of metals and chemistry for reagents). return isnull(desc) ? initial(object_build_item_path.desc) : desc /// Produce the resulting item, optionally with a specfic amount if we're a stack design -/datum/design/proc/create_result(atom/drop_loc, list/custom_materials, amount = null) - if (!ispath(build_path, /obj/item/stack) && !isnull(amount)) - CRASH("[src] create_result was passed an amount, despite not being a stack design!") +/datum/design/proc/create_result(atom/drop_loc, list/custom_materials, amount) + if (!ispath(build_path, /obj/item/stack) && amount > 1) + CRASH("[src] create_result was passed an amount higher than 1, despite not being a stack design!") if (!ispath(build_path, /obj/item/stack)) return new build_path(drop_loc) @@ -103,6 +147,40 @@ other types of metals and chemistry for reagents). amount = 1 return new build_path(drop_loc, amount) +///A proc that handles transfering the materials to the target object and anything it contains that isn't abstract. You can check the doc for var/list/transfered_materials for how it works. +/datum/design/proc/transfer_materials(list/custom_materials, multiplier, atom/target_object) + SHOULD_NOT_OVERRIDE(TRUE) + + ASSERT(islist(custom_materials), "design/transfer_materials() called with invalid 'custom_materials' arg value") + ASSERT(multiplier, "design/transfer_materials() called with invalid 'multiplier' arg value") + ASSERT(isatom(target_object), "design/transfer_materials() called with invalid 'target_object' arg value") + + if(!length(transfered_materials)) //most common case where the object is just one thing and 'transferred_materials' is null + simple_transfer_materials(custom_materials, multiplier, target_object) + return + + var/list/recursive_contents = target_object.get_all_contents_type(/obj/item) + + for(var/obj/item/object as anything in recursive_contents) + if(object.item_flags & ABSTRACT) //skip abstract entities + continue + if(!(object.type in transfered_materials)) + stack_trace("[object.type] missing from the 'transfered_materials' list of the design. Edit the 'transfered_materials' var of [type], or give it the ABSTRACT item flag if appropriate.") + continue + simple_transfer_materials(transfered_materials[object.type], multiplier, object) + +///Called by [proc/transfer_materials] in two places and it's basically the meat and bone of the function. Having it as a separate proc reduces copypaste a little. +/datum/design/proc/simple_transfer_materials(list/custom_materials, multiplier, atom/target_object) + SHOULD_NOT_OVERRIDE(TRUE) + PRIVATE_PROC(TRUE) + + if(isstack(target_object)) + var/obj/item/stack/stack = target_object + stack.mats_per_unit = SSmaterials.get_material_set_cache(custom_materials, multiplier / stack.amount) + stack.update_custom_materials() + else + target_object.set_custom_materials(custom_materials, multiplier) + //////////////////////////////////////// //Disks for transporting design datums// //////////////////////////////////////// diff --git a/code/modules/research/designs/autolathe/engineering_designs.dm b/code/modules/research/designs/autolathe/engineering_designs.dm index 1ad5c3f2ab91..fefa533fdcc2 100644 --- a/code/modules/research/designs/autolathe/engineering_designs.dm +++ b/code/modules/research/designs/autolathe/engineering_designs.dm @@ -27,7 +27,7 @@ id = "blast" build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT*0.5) - build_path = /obj/item/assembly/control + build_path = /obj/item/assembly/control/blast_door category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS, diff --git a/code/modules/research/designs/autolathe/materials.dm b/code/modules/research/designs/autolathe/materials.dm index 8fdc01234ce2..3ad5b0762e38 100644 --- a/code/modules/research/designs/autolathe/materials.dm +++ b/code/modules/research/designs/autolathe/materials.dm @@ -1,165 +1,32 @@ -/datum/design/iron - name = "Iron" - id = "iron" +/datum/design/material build_type = AUTOLATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/iron category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, ) + //We can reasonably believe that material sheets already have said materials to begin with and don't need this. + inherit_materials = DESIGN_DONT_INHERIT_MATS -/datum/design/rods +/datum/design/material/iron + name = "Iron" + id = "iron" + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/iron + +/datum/design/material/rods name = "Iron Rod" id = "rods" - build_type = AUTOLATHE - materials = list(/datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/rods category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, ) -/datum/design/glass - name = "Glass" - id = "glass" - build_type = AUTOLATHE - materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/glass - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/rglass +/datum/design/material/rglass name = "Reinforced Glass" id = "rglass" build_type = AUTOLATHE | SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/rglass - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/silver - name = "Silver" - id = "silver" - build_type = AUTOLATHE - materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/silver - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/gold - name = "Gold" - id = "gold" - build_type = AUTOLATHE - materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/gold - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/diamond - name = "Diamond" - id = "diamond" - build_type = AUTOLATHE - materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/diamond - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/plasma - name = "Plasma" - id = "plasma" - build_type = AUTOLATHE - materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/plasma - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/uranium - name = "Uranium" - id = "uranium" - build_type = AUTOLATHE - materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/uranium - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/bananium - name = "Bananium" - id = "bananium" - build_type = AUTOLATHE - materials = list(/datum/material/bananium = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/bananium - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/titanium - name = "Titanium" - id = "titanium" - build_type = AUTOLATHE - materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/titanium - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/plastic - name = "Plastic" - id = "plastic" - build_type = AUTOLATHE - materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/plastic - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/bs_crystal - name = "Bluespace Crystal" - id = "bscrystal" - build_type = AUTOLATHE - materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/bluespace_crystal - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/mythril - name = "Mythril" - id = "mythril" - build_type = AUTOLATHE - materials = list(/datum/material/mythril = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/mythril - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - -/datum/design/alien_alloy - name = "Alien Alloy" - id = "allienalloy" - build_type = AUTOLATHE - materials = list(/datum/material/alloy/alien = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/mineral/abductor - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) diff --git a/code/modules/research/designs/autolathe/multi-department_designs.dm b/code/modules/research/designs/autolathe/multi-department_designs.dm index b9bcbc4c808f..8b49d7903013 100644 --- a/code/modules/research/designs/autolathe/multi-department_designs.dm +++ b/code/modules/research/designs/autolathe/multi-department_designs.dm @@ -68,13 +68,18 @@ name = "Rapid Wiring Device" id = "rwd" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) + //The cable coils don't count toward the total mats of the item to avoid a possible way to generate more iron and glass. + transfered_materials = list( + /obj/item/rwd/loaded = /obj/item/rwd::custom_materials, + ) build_path = /obj/item/rwd/loaded category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING, ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + fixed_cost_efficiency = TRUE // The cable coils can be removed and recycled to generate more material than that spent printing it at higher stock part tiers. /datum/design/analyzer name = "Gas Analyzer" @@ -566,7 +571,11 @@ name = "Laptop Frame" id = "laptop" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) + transfered_materials = list( + /obj/item/modular_computer/laptop/buildable = /obj/item/modular_computer/laptop::custom_materials, + /obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell::custom_materials, + ) build_path = /obj/item/modular_computer/laptop/buildable category = list( RND_CATEGORY_INITIAL, diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm index c6a96542ef35..3f9772189004 100644 --- a/code/modules/research/designs/autolathe/security_designs.dm +++ b/code/modules/research/designs/autolathe/security_designs.dm @@ -125,6 +125,7 @@ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS, ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY + inherit_materials = DESIGN_INHERIT_MATS_SPECIAL //We also have a crafting recipe for this that uses different components. /datum/design/shotgun_dart name = "Shotgun Dart (Lethal)" @@ -202,7 +203,10 @@ name = "Ammo Box (10mm) (Lethal)" id = "c10mm" build_type = AUTOLATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30) + transfered_materials = list( + /obj/item/ammo_box/c10mm = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15), + ) build_path = /obj/item/ammo_box/c10mm category = list( RND_CATEGORY_HACKED, @@ -214,7 +218,10 @@ name = "Ammo Box (.45) (Lethal)" id = "c45" build_type = AUTOLATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30) + transfered_materials = list( + /obj/item/ammo_box/c45 = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15), + ) build_path = /obj/item/ammo_box/c45 category = list( RND_CATEGORY_HACKED, @@ -226,7 +233,10 @@ name = "Ammo Box (9mm) (Lethal)" id = "c9mm" build_type = AUTOLATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30) + transfered_materials = list( + /obj/item/ammo_box/c9mm = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15), + ) build_path = /obj/item/ammo_box/c9mm category = list( RND_CATEGORY_HACKED, diff --git a/code/modules/research/designs/autolathe/service_designs.dm b/code/modules/research/designs/autolathe/service_designs.dm index 784cc5688b87..a8d459912e1d 100644 --- a/code/modules/research/designs/autolathe/service_designs.dm +++ b/code/modules/research/designs/autolathe/service_designs.dm @@ -14,7 +14,7 @@ name = "Wet Floor Sign" id = "wet_floor_sign" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/plastic =SMALL_MATERIAL_AMOUNT) + materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) build_path = /obj/item/clothing/suit/caution category = list( RND_CATEGORY_INITIAL, @@ -183,7 +183,7 @@ id = "plate" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*1.5) - build_path = /obj/item/plate + build_path = /obj/item/plate/iron category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN, @@ -374,7 +374,7 @@ name = "Cap Gun" id = "toygun" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT*0.5) + materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT) build_path = /obj/item/toy/gun category = list( RND_CATEGORY_HACKED, @@ -386,7 +386,7 @@ name = "Box of Cap Gun Shots" id = "capbox" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT*0.1) + materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3) build_path = /obj/item/toy/ammo/gun category = list( RND_CATEGORY_HACKED, @@ -398,7 +398,7 @@ name = "Plastic Balloon" id = "toy_balloon" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT*1.2) + materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.6) build_path = /obj/item/toy/balloon category = list( RND_CATEGORY_HACKED, @@ -418,6 +418,18 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE +/datum/design/toy_katana + name = "Plastic Katana" + id = "toy_katana" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/toy/katana + category = list( + RND_CATEGORY_HACKED, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE + /datum/design/plastic_tree name = "Plastic Potted Plant" id = "plastic_trees" @@ -661,3 +673,24 @@ RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE, ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE + +/datum/design/rdd + name = "Rapid Decoration Device (RDD)" + id = "rdd" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 12, + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6, + ) + //Some of the material is "lost" to make up for the fact that the rdd is loaded to the brim + transfered_materials = list( + /obj/item/construction/rdd/loaded = /obj/item/construction/rdd::custom_materials, + ) + build_path = /obj/item/construction/rdd/loaded + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE + diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 14d5c12eb431..5c7e6f0a7890 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -2,194 +2,175 @@ ///////Biogenerator Designs /////// /////////////////////////////////// -/datum/design/milk +/datum/design/biogen + build_type = BIOGENERATOR + // biomass doesn't have a sheet type, and the biogenerator isn't meant to churn out unprocessed biomass anyway. + inherit_materials = DESIGN_DONT_INHERIT_MATS + +/datum/design/biogen/milk name = "Synthetic Milk" id = "milk" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) make_reagent = /datum/reagent/consumable/milk category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/soymilk +/datum/design/biogen/soymilk name = "Synthetic Soy Milk" id = "soymilk" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) make_reagent = /datum/reagent/consumable/soymilk category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/ethanol +/datum/design/biogen/ethanol name = "Synthetic Ethanol" id = "ethanol" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/ethanol category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/cream +/datum/design/biogen/cream name = "Synthetic Cream" id = "cream" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/cream category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/black_pepper +/datum/design/biogen/black_pepper name = "Synthetic Black Pepper" id = "black_pepper" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/blackpepper category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/enzyme +/datum/design/biogen/enzyme name = "Synthetic Enzyme" id = "enzyme" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/enzyme category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/flour +/datum/design/biogen/flour name = "Synthetic Flour" id = "flour_sack" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/flour category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/sugar +/datum/design/biogen/sugar name = "Synthetic Sugar" id = "sugar" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/consumable/sugar category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/monkey_cube +/datum/design/biogen/monkey_cube name = "Monkey Cube" id = "mcube" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 50) build_path = /obj/item/food/monkeycube category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/seaweed_sheet +/datum/design/biogen/seaweed_sheet name = "Seaweed Sheet" id = "seaweedsheet" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 3) build_path = /obj/item/food/seaweedsheet category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) -/datum/design/ez_nut //easy nut :) +/datum/design/biogen/ez_nut //easy nut :) name = "E-Z Nutrient" id = "ez_nut" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.1) make_reagent = /datum/reagent/plantnutriment/eznutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/l4z_nut +/datum/design/biogen/l4z_nut name = "Left 4 Zed" id = "l4z_nut" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.1) make_reagent = /datum/reagent/plantnutriment/left4zednutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/rh_nut +/datum/design/biogen/rh_nut name = "Robust Harvest" id = "rh_nut" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.2) make_reagent = /datum/reagent/plantnutriment/robustharvestnutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/end_gro +/datum/design/biogen/end_gro name = "Enduro Grow" id = "end_gro" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.3) make_reagent = /datum/reagent/plantnutriment/endurogrow category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/liq_earth +/datum/design/biogen/liq_earth name = "Liquid Earthquake" id = "liq_earth" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.3) make_reagent = /datum/reagent/plantnutriment/liquidearthquake category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/weed_killer +/datum/design/biogen/weed_killer name = "Weed Killer" id = "weed_killer" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.2) make_reagent = /datum/reagent/toxin/plantbgone/weedkiller category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/pest_spray +/datum/design/biogen/pest_spray name = "Pest Killer" id = "pest_spray" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) make_reagent = /datum/reagent/toxin/pestkiller category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/org_pest_spray +/datum/design/biogen/org_pest_spray name = "Organic Pest Killer" id = "org_pest_spray" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) make_reagent = /datum/reagent/toxin/pestkiller/organic category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) -/datum/design/leather +/datum/design/biogen/leather name = "Sheet of Leather" id = "leather" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 30) build_path = /obj/item/stack/sheet/leather category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) -/datum/design/cloth +/datum/design/biogen/cloth name = "Sheet of Cloth" id = "cloth" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 10) build_path = /obj/item/stack/sheet/cloth category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) -/datum/design/cardboard +/datum/design/biogen/cardboard name = "Sheet of Cardboard" id = "cardboard" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 5) build_path = /obj/item/stack/sheet/cardboard category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) -/datum/design/paper +/datum/design/biogen/paper name = "Sheet of Paper" id = "paper" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 2) build_path = /obj/item/paper category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) -/datum/design/rolling_paper +/datum/design/biogen/rolling_paper name = "Sheet of Rolling Paper" id = "rollingpaper" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 1) build_path = /obj/item/rollingpaper category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) -/datum/design/candle +/datum/design/biogen/candle name = "Candle" id = "candle" - build_type = BIOGENERATOR materials = list(/datum/material/biomass = 3) build_path = /obj/item/flashlight/flare/candle category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS) diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index 6e586c27d93c..df746f9615cd 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -38,6 +38,7 @@ RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + inherit_materials = DESIGN_DONT_INHERIT_MATS /datum/design/telesci_gps name = "GPS Device" diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index eff9f35ecf32..c5be7c2b7c03 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -216,7 +216,7 @@ departmental_flags = DEPARTMENT_BITFLAG_SCIENCE //////////////////////////////////////// -/////////// Mecha Equpment ///////////// +/////////// Mecha Equipment ///////////// //////////////////////////////////////// /datum/design/mech_scattershot diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 44aaec1a21b9..c619728f2c00 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1077,12 +1077,12 @@ name = "Plasma Generator" id = "mech_generator" build_type = MECHFAB - build_path = /obj/item/mecha_parts/mecha_equipment/generator + build_path = /obj/item/mecha_parts/mecha_equipment/generator/printed materials = list( /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver=SHEET_MATERIAL_AMOUNT, - /datum/material/plasma=SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/plasma=SHEET_MATERIAL_AMOUNT * 1.5, ) construction_time = 10 SECONDS category = list( diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 9ff9e638b2de..5632b74011e5 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -399,7 +399,7 @@ name = "Paramedic Penlight" id = "penlight_paramedic" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*1) + materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) build_path = /obj/item/flashlight/pen/paramedic category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL @@ -780,7 +780,7 @@ desc = "A glass case for containing an implant." id = "implantcase" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*5) + materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) build_path = /obj/item/implantcase category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS @@ -792,7 +792,11 @@ desc = "Makes death amusing." id = "implant_trombone" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/bananium =SMALL_MATERIAL_AMOUNT*5) + materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT) + transfered_materials = list( + /obj/item/implantcase/sad_trombone = /datum/design/implantcase::materials, + /obj/item/implant/sad_trombone = list(/datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT), + ) build_path = /obj/item/implantcase/sad_trombone category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH @@ -804,7 +808,11 @@ desc = "A glass case containing a chemical implant." id = "implant_chem" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 7) + materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.7) + transfered_materials = list( + /obj/item/implantcase/chem = /datum/design/implantcase::materials, + /obj/item/implant/chem = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2), + ) build_path = /obj/item/implantcase/chem category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY @@ -816,7 +824,11 @@ desc = "A glass case containing a tracking implant." id = "implant_tracking" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) + transfered_materials = list( + /obj/item/implantcase/tracking = /datum/design/implantcase::materials, + /obj/item/implant/tracking = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT), + ) build_path = /obj/item/implantcase/tracking category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY @@ -828,7 +840,11 @@ desc = "A glass case containing a beacon implant." id = "implant_beacon" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) + transfered_materials = list( + /obj/item/implantcase/beacon = /datum/design/implantcase::materials, + /obj/item/implant/beacon = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3), + ) build_path = /obj/item/implantcase/beacon category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY @@ -840,7 +856,11 @@ desc = "A glass case containing a teleport blocker implant." id = "implant_bluespace" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) + transfered_materials = list( + /obj/item/implantcase/teleport_blocker = /datum/design/implantcase::materials, + /obj/item/implant/teleport_blocker = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3), + ) build_path = /obj/item/implantcase/teleport_blocker category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY @@ -852,7 +872,11 @@ desc = "A glass case containing an exile implant." id = "implant_exile" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3) + transfered_materials = list( + /obj/item/implantcase/exile = /datum/design/implantcase::materials, + /obj/item/implant/exile = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3), + ) build_path = /obj/item/implantcase/exile category = list( RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index cc109ccd36b3..c4efb2d2cce6 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -107,6 +107,10 @@ id = "weldingmask" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT) + transfered_materials = list( + /obj/item/clothing/mask/gas/welding = /obj/item/clothing/mask/gas/welding::custom_materials, + /obj/item/gas_filter = /obj/item/gas_filter::custom_materials, + ) build_path = /obj/item/clothing/mask/gas/welding category = list( RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING @@ -135,7 +139,11 @@ desc = "This awesome mug will ensure your coffee never stays cold!" id = "mauna_mug" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT) + transfered_materials = list( + /obj/item/reagent_containers/cup/maunamug = /obj/item/reagent_containers/cup/maunamug::custom_materials, + /obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell::custom_materials, + ) category = list( RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE ) @@ -825,6 +833,10 @@ id = "inspector" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium =SHEET_MATERIAL_AMOUNT) + transfered_materials = list( + /obj/item/inspector = /obj/item/inspector::custom_materials, + /obj/item/stock_parts/power_store/cell/crap = /obj/item/stock_parts/power_store/cell/crap::custom_materials, + ) build_path = /obj/item/inspector category = list( RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 8b4d70749872..cc6fc0df18a6 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -67,7 +67,7 @@ desc = "A basic megacell that holds 1 MJ of energy." id = "basic_battery" build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE |MECHFAB - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 2) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 2) construction_time = 5 SECONDS build_path = /obj/item/stock_parts/power_store/battery/empty category = list( @@ -80,7 +80,7 @@ desc = "A megacell that holds 10 MJ of energy." id = "high_battery" build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE | MECHFAB - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) construction_time = 5 SECONDS build_path = /obj/item/stock_parts/power_store/battery/high/empty category = list( @@ -93,7 +93,7 @@ desc = "A megacell that holds 20 MJ of energy." id = "super_battery" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) construction_time = 5 SECONDS build_path = /obj/item/stock_parts/power_store/battery/super/empty category = list( @@ -106,7 +106,7 @@ desc = "A megacell that holds 30 MJ of energy." id = "hyper_battery" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) construction_time = 5 SECONDS build_path = /obj/item/stock_parts/power_store/battery/hyper/empty category = list( @@ -119,7 +119,7 @@ desc = "A megacell that holds 40 MJ of energy." id = "bluespace_battery" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT) construction_time = 5 SECONDS build_path = /obj/item/stock_parts/power_store/battery/bluespace/empty category = list( diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm index b65ca64c6f5d..2612415b1fcf 100644 --- a/code/modules/research/designs/smelting_designs.dm +++ b/code/modules/research/designs/smelting_designs.dm @@ -1,79 +1,53 @@ ///////SMELTABLE ALLOYS/////// -/datum/design/plasteel_alloy - name = "Plasteel" - id = "plasteel" +/datum/design/alloy build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/stack/sheet/plasteel category = list( RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS ) departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + //The resulting alloy sheets have different material types, but can be deconstructed back to their base mats with a recycler iirc. + inherit_materials = DESIGN_DONT_INHERIT_MATS + +/datum/design/alloy/plasteel_alloy + name = "Plasteel" + id = "plasteel" + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/plasteel -/datum/design/plastitanium_alloy +/datum/design/alloy/plastitanium name = "Plastitanium" id = "plastitanium" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/mineral/plastitanium - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/plaglass_alloy +/datum/design/alloy/plaglass name = "Plasma Glass" id = "plasmaglass" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmaglass - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/plasmarglass_alloy +/datum/design/alloy/plasmarglass name = "Reinforced Plasma Glass" id = "plasmareinforcedglass" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plasmarglass - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/titaniumglass_alloy +/datum/design/alloy/titaniumglass name = "Titanium Glass" id = "titaniumglass" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/titaniumglass - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/plastitaniumglass_alloy +/datum/design/alloy/plastitaniumglass name = "Plastitanium Glass" id = "plastitaniumglass" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) + materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/stack/sheet/plastitaniumglass - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/alienalloy +/datum/design/alloy/alien name = "Alien Alloy" desc = "A sheet of reverse-engineered alien alloy." id = "alienalloy" - build_type = SMELTER | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT*2) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2) build_path = /obj/item/stack/sheet/mineral/abductor - category = list( - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS - ) - departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index 6decd962122f..2480a36a2dfe 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -79,7 +79,10 @@ desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly." id = "rcd_loaded" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT*30, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5) + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 15) + transfered_materials = list( + /obj/item/construction/rcd/loaded = /obj/item/construction/rcd::custom_materials, //The RCD has less materials than what's used, as some is converted to charge/matter + ) build_path = /obj/item/construction/rcd/loaded category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED @@ -102,7 +105,7 @@ name = "RCD Matter Cartridge" id = "rcd_ammo" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT*6, /datum/material/glass =SHEET_MATERIAL_AMOUNT*4) + materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass= SHEET_MATERIAL_AMOUNT * 3) build_path = /obj/item/rcd_ammo category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 767c5bfcfb3b..5322d0d7e7e3 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -635,7 +635,7 @@ desc = "A dirt cheap 3D printed gun. Only holds one bullet, and is infamous for sometimes exploding on it's user." id = "liberator_gun" build_type = AUTOLATHE - materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 15) + materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5) build_path = /obj/item/gun/ballistic/automatic/pistol/doohickey category = list(RND_CATEGORY_IMPORTED) diff --git a/code/modules/research/designs/wiremod/_core_designs.dm b/code/modules/research/designs/wiremod/_core_designs.dm new file mode 100644 index 000000000000..7a87b8d5c3a8 --- /dev/null +++ b/code/modules/research/designs/wiremod/_core_designs.dm @@ -0,0 +1,61 @@ +/datum/design/integrated_circuit + name = "Integrated Circuit" + desc = "The foundation of all circuits. All Circuitry go onto this." + id = "integrated_circuit" + build_path = /obj/item/integrated_circuit + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY_CORE + ) + materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/circuit_multitool + name = "Circuit Multitool" + desc = "A circuit multitool to mark entities and load them into." + id = "circuit_multitool" + build_path = /obj/item/multitool/circuit + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY_CORE + ) + materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/usb_cable + name = "USB Cable" + desc = "A cable that allows certain shells to connect to nearby computers and machines." + id = "usb_cable" + build_path = /obj/item/usb_cable + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY_CORE + ) + // Yes, it would make sense to make them take plastic, but then less people would make them, and I think they're cool + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT*2.5) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/component + name = "Component ( NULL ENTRY )" + desc = "A component that goes into an integrated circuit." + build_type = COMPONENT_PRINTER + materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + category = list( + RND_CATEGORY_CIRCUITRY_COMPS //Remember to override this when adding new components + ) + +/datum/design/component/New() + . = ..() + if(build_path) + var/obj/item/circuit_component/component_path = build_path + desc = initial(component_path.desc) + +/datum/design/component/module + name = "Module Component" + id = "comp_module" + build_path = /obj/item/circuit_component/module + category = list( + //This one is just a wrapper to make things a bit tidier so it doesn't belong in any specific subcategory + RND_CATEGORY_CIRCUITRY_CORE + ) diff --git a/code/modules/research/designs/wiremod/action_designs.dm b/code/modules/research/designs/wiremod/action_designs.dm new file mode 100644 index 000000000000..17b44e4963c3 --- /dev/null +++ b/code/modules/research/designs/wiremod/action_designs.dm @@ -0,0 +1,49 @@ +/datum/design/component/action + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ACTION_COMPONENTS + ) + +/datum/design/component/action/speech + name = "Speech Component" + id = "comp_speech" + build_path = /obj/item/circuit_component/speech + +/datum/design/component/action/laserpointer + name = "Laser Pointer Component" + id = "comp_laserpointer" + build_path = /obj/item/circuit_component/laserpointer + +/datum/design/component/action/pull + name = "Pull Component" + id = "comp_pull" + build_path = /obj/item/circuit_component/pull + +/datum/design/component/action/soundemitter + name = "Sound Emitter Component" + id = "comp_soundemitter" + build_path = /obj/item/circuit_component/soundemitter + +/datum/design/component/action/equipment_action + name = "Equipment Action Component" + id = "comp_equip_action" + build_path = /obj/item/circuit_component/equipment_action + +/datum/design/component/action/radio + name = "Radio Component" + id = "comp_radio" + build_path = /obj/item/circuit_component/radio + +/datum/design/component/action/mmi + name = "MMI Component" + id = "comp_mmi" + build_path = /obj/item/circuit_component/mmi + +/datum/design/component/action/pathfind + name = "Pathfinder" + id = "comp_pathfind" + build_path = /obj/item/circuit_component/pathfind + +/datum/design/component/action/light + name = "Light Component" + id = "comp_light" + build_path = /obj/item/circuit_component/light diff --git a/code/modules/research/designs/wiremod/bci_designs.dm b/code/modules/research/designs/wiremod/bci_designs.dm new file mode 100644 index 000000000000..81a9581eaf7a --- /dev/null +++ b/code/modules/research/designs/wiremod/bci_designs.dm @@ -0,0 +1,49 @@ +/datum/design/component/bci + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_BCI_COMPONENTS + ) + +/datum/design/component/bci/bci_camera + name = "BCI Camera" + id = "comp_camera_bci" + build_path = /obj/item/circuit_component/remotecam/bci + +/datum/design/component/bci/object_overlay + name = "Object Overlay Component" + id = "comp_object_overlay" + build_path = /obj/item/circuit_component/object_overlay + +/datum/design/component/bci/bar_overlay + name = "Bar Overlay Component" + id = "comp_bar_overlay" + build_path = /obj/item/circuit_component/object_overlay/bar + +/datum/design/component/bci/vox + name = "VOX Announcement Component" + id = "comp_vox" + build_path = /obj/item/circuit_component/vox + +/datum/design/component/bci/thought_listener + name = "Thought Listener Component" + id = "comp_thought_listener" + build_path = /obj/item/circuit_component/thought_listener + +/datum/design/component/bci/target_intercept + name = "BCI Target Interceptor" + id = "comp_target_intercept" + build_path = /obj/item/circuit_component/target_intercept + +/datum/design/component/bci/counter_overlay + name = "Counter Overlay Component" + id = "comp_counter_overlay" + build_path = /obj/item/circuit_component/counter_overlay + +/datum/design/component/bci/reagent_injector + name = "Reagent Injector Component" + id = "comp_reagent_injector" + build_path = /obj/item/circuit_component/reagent_injector + +/datum/design/component/bci/install_detector + name = "Install Detector Component" + id = "comp_install_detector" + build_path = /obj/item/circuit_component/install_detector diff --git a/code/modules/research/designs/wiremod/comm_designs.dm b/code/modules/research/designs/wiremod/comm_designs.dm new file mode 100644 index 000000000000..5b3606ea6259 --- /dev/null +++ b/code/modules/research/designs/wiremod/comm_designs.dm @@ -0,0 +1,63 @@ +/datum/design/component/ntnet_receive + name = "NTNet Receiver" + id = "comp_ntnet_receive" + build_path = /obj/item/circuit_component/ntnet_receive + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/ntnet_send + name = "NTNet Transmitter" + id = "comp_ntnet_send" + build_path = /obj/item/circuit_component/ntnet_send + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/list/literal/ntnet_send + name = "NTNet Transmitter List Literal" + id = "comp_ntnet_send_list_literal" + build_path = /obj/item/circuit_component/list_literal/ntnet_send + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/nfc_send + name = "NFC Transmitter" + id = "comp_nfc_send" + build_path = /obj/item/circuit_component/nfc_send + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/nfc_receive + name = "NFC Receiver" + id = "comp_nfc_receive" + build_path = /obj/item/circuit_component/nfc_receive + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/wirenet_receive + name = "Wirenet Receiver Component" + id = "comp_wirenet_receive" + build_path = /obj/item/circuit_component/wirenet_receive + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/wirenet_send + name = "Wirenet Transmitter Component" + id = "comp_wirenet_send" + build_path = /obj/item/circuit_component/wirenet_send + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) + +/datum/design/component/wirenet_send_literal + name = "Wirenet List Literal Transmitter Component" + id = "comp_wirenet_send_literal" + build_path = /obj/item/circuit_component/list_literal/wirenet_send + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBGATEGORY_CIRCUITRY_COMM_COMPONENTS + ) diff --git a/code/modules/research/designs/wiremod/entity_designs.dm b/code/modules/research/designs/wiremod/entity_designs.dm new file mode 100644 index 000000000000..cc32f3797989 --- /dev/null +++ b/code/modules/research/designs/wiremod/entity_designs.dm @@ -0,0 +1,54 @@ +/datum/design/component/entity + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ENTITY_COMPONENTS + ) + +/datum/design/component/entity/species + name = "Get Species Component" + id = "comp_species" + build_path = /obj/item/circuit_component/species + +/datum/design/component/entity/hear + name = "Voice Activator Component" + id = "comp_hear" + build_path = /obj/item/circuit_component/hear + +/datum/design/component/entity/self + name = "Self Component" + id = "comp_self" + build_path = /obj/item/circuit_component/self + +/datum/design/component/entity/gps + name = "GPS Component" + id = "comp_gps" + build_path = /obj/item/circuit_component/gps + +/datum/design/component/entity/direction + name = "Direction Component" + id = "comp_direction" + build_path = /obj/item/circuit_component/direction + +/datum/design/component/entity/reagentscanner + name = "Reagents Scanner" + id = "comp_reagents" + build_path = /obj/item/circuit_component/reagentscanner + +/datum/design/component/entity/health + name = "Health Component" + id = "comp_health" + build_path = /obj/item/circuit_component/health + +/datum/design/component/entity/compare_health_state + name = "Compare Health State Component" + id = "comp_health_state" + build_path = /obj/item/circuit_component/compare/health_state + +/datum/design/component/entity/matscanner + name = "Material Scanner" + id = "comp_matscanner" + build_path = /obj/item/circuit_component/matscanner + +/datum/design/component/entity/pinpointer + name = "Proximity Pinpointer Component" + id = "comp_pinpointer" + build_path = /obj/item/circuit_component/pinpointer diff --git a/code/modules/research/designs/wiremod/id_designs.dm b/code/modules/research/designs/wiremod/id_designs.dm new file mode 100644 index 000000000000..9d8934f10db4 --- /dev/null +++ b/code/modules/research/designs/wiremod/id_designs.dm @@ -0,0 +1,31 @@ +/datum/design/component/id_getter + name = "ID Getter Component" + id = "comp_id_getter" + build_path = /obj/item/circuit_component/id_getter + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ID_COMPONENTS + ) + +/datum/design/component/id_info_reader + name = "ID Info Reader Component" + id = "comp_id_info_reader" + build_path = /obj/item/circuit_component/id_info_reader + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ID_COMPONENTS + ) + +/datum/design/component/id_access_reader + name = "ID Access Reader Component" + id = "comp_id_access_reader" + build_path = /obj/item/circuit_component/id_access_reader + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ID_COMPONENTS + ) + +/datum/design/component/access_checker + name = "Access Checker Component" + id = "comp_access_checker" + build_path = /obj/item/circuit_component/compare/access + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_ID_COMPONENTS + ) diff --git a/code/modules/research/designs/wiremod/list_designs.dm b/code/modules/research/designs/wiremod/list_designs.dm new file mode 100644 index 000000000000..749ed07781d4 --- /dev/null +++ b/code/modules/research/designs/wiremod/list_designs.dm @@ -0,0 +1,109 @@ +/datum/design/component/list + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_LIST_COMPONENTS + ) + +/datum/design/component/list/format + name = "Format List Component" + id = "comp_format" + build_path = /obj/item/circuit_component/format + +/datum/design/component/list/format_assoc + name = "Format Associative List Component" + id = "comp_format_assoc" + build_path = /obj/item/circuit_component/format/assoc + +/datum/design/component/list/index + name = "Index Component" + id = "comp_index" + build_path = /obj/item/circuit_component/index + +/datum/design/component/list/index_assoc + name = "Index Associative List Component" + id = "comp_index_assoc" + build_path = /obj/item/circuit_component/index/assoc_string + +/datum/design/component/list/index_table + name = "Index Table Component" + id = "comp_index_table" + build_path = /obj/item/circuit_component/index_table + +/datum/design/component/list/get_column + name = "Get Column Component" + id = "comp_get_column" + build_path = /obj/item/circuit_component/get_column + +/datum/design/component/list/select_query + name = "Select Query Component" + id = "comp_select_query" + build_path = /obj/item/circuit_component/select + +/datum/design/component/list/concat + name = "Concatenate List Component" + id = "comp_concat_list" + build_path = /obj/item/circuit_component/concat_list + +/datum/design/component/list/add + name = "List Add" + id = "comp_list_add" + build_path = /obj/item/circuit_component/variable/list/listadd + +/datum/design/component/list/remove + name = "List Remove" + id = "comp_list_remove" + build_path = /obj/item/circuit_component/variable/list/listremove + +/datum/design/component/list/assoc_list_set + name = "Associative List Set" + id = "comp_assoc_list_set" + build_path = /obj/item/circuit_component/variable/assoc_list/list_set + +/datum/design/component/list/assoc_list_remove + name = "Associative List Remove" + id = "comp_assoc_list_remove" + build_path = /obj/item/circuit_component/variable/assoc_list/list_remove + +/datum/design/component/list/clear + name = "List Clear" + id = "comp_list_clear" + build_path = /obj/item/circuit_component/variable/list/listclear + +/datum/design/component/list/find + name = "Element Find" + id = "comp_element_find" + build_path = /obj/item/circuit_component/listin + +/datum/design/component/list/literal + name = "List Literal Component" + id = "comp_list_literal" + build_path = /obj/item/circuit_component/list_literal + +/datum/design/component/list/assoc_literal + name = "Associative List Literal" + id = "comp_list_assoc_literal" + build_path = /obj/item/circuit_component/assoc_literal + +/datum/design/component/list/filter + name = "Filter List Component" + id = "comp_filter_list" + build_path = /obj/item/circuit_component/filter_list + +/datum/design/component/list/pick + name = "List Pick Component" + id = "comp_list_pick" + build_path = /obj/item/circuit_component/list_pick + +/datum/design/component/list/pick_assoc + name = "Associative List Pick Component" + id = "comp_assoc_list_pick" + build_path = /obj/item/circuit_component/list_pick/assoc + +/datum/design/component/list/foreach + name = "For Each Component" + id = "comp_foreach" + build_path = /obj/item/circuit_component/foreach + +/datum/design/component/list/split + name = "Split Component" + id = "comp_split" + build_path = /obj/item/circuit_component/split diff --git a/code/modules/research/designs/wiremod/math_designs.dm b/code/modules/research/designs/wiremod/math_designs.dm new file mode 100644 index 000000000000..954c7cf35e33 --- /dev/null +++ b/code/modules/research/designs/wiremod/math_designs.dm @@ -0,0 +1,59 @@ +/datum/design/component/math + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_MATH_COMPONENTS + ) + +/datum/design/component/math/arithmetic + name = "Arithmetic Component" + id = "comp_arithmetic" + build_path = /obj/item/circuit_component/arithmetic + +/datum/design/component/math/trigonometry + name = "Trigonometry Component" + id = "comp_trigonometry" + build_path = /obj/item/circuit_component/trigonometry + +/datum/design/component/math/arctan2 + name = "Arctangent 2 Component" + id = "comp_arctan2" + build_path = /obj/item/circuit_component/arctan2 + +/datum/design/component/math/comparison + name = "Comparison Component" + id = "comp_comparison" + build_path = /obj/item/circuit_component/compare/comparison + +/datum/design/component/math/logic + name = "Logic Component" + id = "comp_logic" + build_path = /obj/item/circuit_component/compare/logic + +/datum/design/component/math/toggle + name = "Toggle Component" + id = "comp_toggle" + build_path = /obj/item/circuit_component/compare/toggle + +/datum/design/component/math/binary_conversion + name = "Binary Conversion Component" + id = "comp_binary_convert" + build_path = /obj/item/circuit_component/binary_conversion + +/datum/design/component/math/decimal_conversion + name = "Decimal Conversion Component" + id = "comp_decimal_convert" + build_path = /obj/item/circuit_component/decimal_conversion + +/datum/design/component/math/not + name = "Not Component" + id = "comp_not" + build_path = /obj/item/circuit_component/not + +/datum/design/component/math/random + name = "Random Component" + id = "comp_random" + build_path = /obj/item/circuit_component/random + +/datum/design/component/math/length + name = "Length Component" + id = "comp_length" + build_path = /obj/item/circuit_component/length diff --git a/code/modules/research/designs/wiremod/sensor_designs.dm b/code/modules/research/designs/wiremod/sensor_designs.dm new file mode 100644 index 000000000000..e1581ebc186c --- /dev/null +++ b/code/modules/research/designs/wiremod/sensor_designs.dm @@ -0,0 +1,23 @@ +/datum/design/component/tempsensor + name = "Temperature Sensor Component" + id = "comp_tempsensor" + build_path = /obj/item/circuit_component/tempsensor + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_SENSOR_COMPONENTS + ) + +/datum/design/component/pressuresensor + name = "Pressure Sensor Component" + id = "comp_pressuresensor" + build_path = /obj/item/circuit_component/pressuresensor + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_SENSOR_COMPONENTS + ) + +/datum/design/component/view_sensor + name = "View Sensor Component" + id = "comp_view_sensor" + build_path = /obj/item/circuit_component/view_sensor + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_SENSOR_COMPONENTS + ) diff --git a/code/modules/research/designs/wiremod/shell_designs.dm b/code/modules/research/designs/wiremod/shell_designs.dm new file mode 100644 index 000000000000..29545941deee --- /dev/null +++ b/code/modules/research/designs/wiremod/shell_designs.dm @@ -0,0 +1,176 @@ +/datum/design/wiremod_shell + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY_SHELLS + ) + +/datum/design/wiremod_shell/compact_remote + name = "Compact Remote Shell" + desc = "A handheld shell with one big button." + id = "compact_remote_shell" + build_path = /obj/item/compact_remote + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5) + +/datum/design/wiremod_shell/controller + name = "Controller Shell" + desc = "A handheld shell with several buttons." + id = "controller_shell" + build_path = /obj/item/controller + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5) + +/datum/design/wiremod_shell/scanner + name = "Scanner Shell" + desc = "A handheld scanner shell that can scan entities." + id = "scanner_shell" + build_path = /obj/item/wiremod_scanner + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5) + +/datum/design/wiremod_shell/keyboard + name = "Keyboard Shell" + desc = "A handheld shell that allows the user to input a string" + id = "keyboard_shell" + build_path = /obj/item/keyboard_shell + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5) + +/datum/design/wiremod_shell/gun + name = "Gun Shell" + desc = "A handheld shell that can fire projectiles to output entities." + id = "gun_shell" + build_path = /obj/item/gun/energy/wiremod_gun + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/plasma =SMALL_MATERIAL_AMOUNT) + +/datum/design/wiremod_shell/bot + name = "Bot Shell" + desc = "An immobile shell that can store more components. Has a USB port to be able to connect to computers and machines." + id = "bot_shell" + build_path = /obj/item/shell/bot + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5) + +/datum/design/wiremod_shell/money_bot + name = "Money Bot Shell" + desc = "An immobile shell that is similar to a regular bot shell, but accepts monetary inputs and can also dispense money." + id = "money_bot_shell" + build_path = /obj/item/shell/money_bot + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*0.5) + +/datum/design/wiremod_shell/drone + name = "Drone Shell" + desc = "A shell with the ability to move itself around." + id = "drone_shell" + build_path = /obj/item/shell/drone + materials = list( + /datum/material/glass =SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*5.5, + /datum/material/gold =SMALL_MATERIAL_AMOUNT*5, + ) + +/datum/design/wiremod_shell/server + name = "Server Shell" + desc = "A very large shell that cannot be moved around. Stores the most components." + id = "server_shell" + materials = list( + /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, + /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT * 1.5, + ) + build_path = /obj/item/shell/server + +/datum/design/wiremod_shell/airlock + name = "Airlock Shell" + desc = "A door shell that cannot be moved around when assembled." + id = "door_shell" + materials = list( + /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, + ) + build_path = /obj/item/shell/airlock + +/datum/design/wiremod_shell/dispenser + name = "Dispenser Shell" + desc = "A dispenser shell that can dispense items." + id = "dispenser_shell" + materials = list( + /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, + ) + build_path = /obj/item/shell/dispenser + +/datum/design/wiremod_shell/bci + name = "Brain-Computer Interface Shell" + desc = "An implant that can be placed in a user's head to control circuits using their brain." + id = "bci_shell" + materials = list( + /datum/material/glass =SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*4, + ) + build_path = /obj/item/shell/bci + +/datum/design/wiremod_shell/scanner_gate + name = "Scanner Gate Shell" + desc = "A scanner gate shell that performs mid-depth scans on people when they pass through it." + id = "scanner_gate_shell" + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT*2, + /datum/material/iron = SHEET_MATERIAL_AMOUNT*6, + ) + build_path = /obj/item/shell/scanner_gate + +/datum/design/wiremod_shell/assembly + name = "Assembly Shell" + desc = "An assembly shell that can be attached to wires and other assemblies." + id = "assembly_shell" + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5) + build_path = /obj/item/assembly/wiremod + +/datum/design/wiremod_shell/mod_module + name = "MOD Module Shell" + desc = "A module shell that allows a circuit to be inserted into, and interface with, a MODsuit." + id = "module_shell" + materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/mod/module/circuit + +/datum/design/wiremod_shell/undertile + name = "Under-tile Shell" + desc = "A small shell that can fit under the floor." + id = "undertile_shell" + materials = list( + /datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/iron=SHEET_MATERIAL_AMOUNT*2.5, + ) + build_path = /obj/item/undertile_circuit + + +/datum/design/wiremod_shell/wallmount + name = "Wall-mounted Shell" + desc = "A large shell that can be mounted on a wall." + id = "wallmount_shell" + materials = list( + /datum/material/glass=SHEET_MATERIAL_AMOUNT, + /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, + ) + build_path = /obj/item/wallframe/circuit + +/datum/design/wiremod_shell/implant + name = "Implant Shell Case" + desc = "A tiny shell that can be implanted in a living being." + id = "implant_shell" + materials = list( + /datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, + ) + transfered_materials = list( + /obj/item/implantcase/circuit = /obj/item/implantcase/circuit::custom_materials, + /obj/item/implant/circuit = /obj/item/implant/circuit::custom_materials, + ) + build_path = /obj/item/implantcase/circuit + +//This design has a different path but it's still a wiremod design. +/datum/design/board/bci_implanter + name = "Brain-Computer Interface Manipulation Chamber" + desc = "A machine that, when given a brain-computer interface, will implant it into an occupant. Otherwise, will remove any brain-computer interfaces they already have." + id = "bci_implanter" + build_path = /obj/item/circuitboard/machine/bci_implanter + build_type = COMPONENT_PRINTER + category = list( + RND_CATEGORY_CIRCUITRY_SHELLS + ) diff --git a/code/modules/research/designs/wiremod/string_designs.dm b/code/modules/research/designs/wiremod/string_designs.dm new file mode 100644 index 000000000000..2b0fedf1ac34 --- /dev/null +++ b/code/modules/research/designs/wiremod/string_designs.dm @@ -0,0 +1,29 @@ +/datum/design/component/string + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_STRING_COMPONENTS + ) + +/datum/design/component/string/tostring + name = "To String Component" + id = "comp_tostring" + build_path = /obj/item/circuit_component/tostring + +/datum/design/component/string/tonumber + name = "To Number" + id = "comp_tonumber" + build_path = /obj/item/circuit_component/tonumber + +/datum/design/component/string/concat + name = "Concatenation Component" + id = "comp_concat" + build_path = /obj/item/circuit_component/concat + +/datum/design/component/string/textcase + name = "Textcase Component" + id = "comp_textcase" + build_path = /obj/item/circuit_component/textcase + +/datum/design/component/string/contains + name = "String Contains Component" + id = "comp_string_contains" + build_path = /obj/item/circuit_component/compare/contains diff --git a/code/modules/research/designs/wiremod/utility_designs.dm b/code/modules/research/designs/wiremod/utility_designs.dm new file mode 100644 index 000000000000..18a578bb9465 --- /dev/null +++ b/code/modules/research/designs/wiremod/utility_designs.dm @@ -0,0 +1,49 @@ +/datum/design/component/utility + category = list( + RND_CATEGORY_CIRCUITRY_COMPS + RND_SUBCATEGORY_CIRCUITRY_UTILITY_COMPONENTS + ) + +/datum/design/component/utility/router + name = "Router Component" + id = "comp_router" + build_path = /obj/item/circuit_component/router + +/datum/design/component/utility/multiplexer + name = "Multiplexer Component" + id = "comp_multiplexer" + build_path = /obj/item/circuit_component/router/multiplexer + +/datum/design/component/utility/typecast + name = "Typecast Component" + id = "comp_typecast" + build_path = /obj/item/circuit_component/typecast + +/datum/design/component/utility/clock + name = "Clock Component" + id = "comp_clock" + build_path = /obj/item/circuit_component/clock + +/datum/design/component/utility/delay + name = "Delay Component" + id = "comp_delay" + build_path = /obj/item/circuit_component/delay + +/datum/design/component/utility/timepiece + name = "Timepiece Component" + id = "comp_timepiece" + build_path = /obj/item/circuit_component/timepiece + +/datum/design/component/utility/typecheck + name = "Typecheck Component" + id = "comp_typecheck" + build_path = /obj/item/circuit_component/compare/typecheck + +/datum/design/component/utility/wire_bundle + name = "Wire Bundle" + id = "comp_wire_bundle" + build_path = /obj/item/circuit_component/wire_bundle + +/datum/design/component/utility/setter_trigger + name = "Set Variable Trigger" + id = "comp_set_variable_trigger" + build_path = /obj/item/circuit_component/variable/setter/trigger diff --git a/code/modules/research/designs/wiremod_designs.dm b/code/modules/research/designs/wiremod_designs.dm deleted file mode 100644 index 112f3ad2512f..000000000000 --- a/code/modules/research/designs/wiremod_designs.dm +++ /dev/null @@ -1,741 +0,0 @@ -/datum/design/integrated_circuit - name = "Integrated Circuit" - desc = "The foundation of all circuits. All Circuitry go onto this." - id = "integrated_circuit" - build_path = /obj/item/integrated_circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE - ) - materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/circuit_multitool - name = "Circuit Multitool" - desc = "A circuit multitool to mark entities and load them into." - id = "circuit_multitool" - build_path = /obj/item/multitool/circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE - ) - materials = list(/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/usb_cable - name = "USB Cable" - desc = "A cable that allows certain shells to connect to nearby computers and machines." - id = "usb_cable" - build_path = /obj/item/usb_cable - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE - ) - // Yes, it would make sense to make them take plastic, but then less people would make them, and I think they're cool - materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT*2.5) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/component - name = "Component ( NULL ENTRY )" - desc = "A component that goes into an integrated circuit." - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_COMPONENTS - ) - -/datum/design/component/New() - . = ..() - if(build_path) - var/obj/item/circuit_component/component_path = build_path - desc = initial(component_path.desc) - -/datum/design/component/arithmetic - name = "Arithmetic Component" - id = "comp_arithmetic" - build_path = /obj/item/circuit_component/arithmetic - -/datum/design/component/trigonometry - name = "Trigonometry Component" - id = "comp_trigonometry" - build_path = /obj/item/circuit_component/trigonometry - -/datum/design/component/arctan2 - name = "Arctangent 2 Component" - id = "comp_arctan2" - build_path = /obj/item/circuit_component/arctan2 - -/datum/design/component/clock - name = "Clock Component" - id = "comp_clock" - build_path = /obj/item/circuit_component/clock - -/datum/design/component/comparison - name = "Comparison Component" - id = "comp_comparison" - build_path = /obj/item/circuit_component/compare/comparison - -/datum/design/component/logic - name = "Logic Component" - id = "comp_logic" - build_path = /obj/item/circuit_component/compare/logic - -/datum/design/component/toggle - name = "Toggle Component" - id = "comp_toggle" - build_path = /obj/item/circuit_component/compare/toggle - -/datum/design/component/delay - name = "Delay Component" - id = "comp_delay" - build_path = /obj/item/circuit_component/delay - -/datum/design/component/format - name = "Format List Component" - id = "comp_format" - build_path = /obj/item/circuit_component/format - -/datum/design/component/format_assoc - name = "Format Associative List Component" - id = "comp_format_assoc" - build_path = /obj/item/circuit_component/format/assoc - -/datum/design/component/index - name = "Index Component" - id = "comp_index" - build_path = /obj/item/circuit_component/index - -/datum/design/component/index_assoc - name = "Index Associative List Component" - id = "comp_index_assoc" - build_path = /obj/item/circuit_component/index/assoc_string - -/datum/design/component/length - name = "Length Component" - id = "comp_length" - build_path = /obj/item/circuit_component/length - -/datum/design/component/light - name = "Light Component" - id = "comp_light" - build_path = /obj/item/circuit_component/light - -/datum/design/component/not - name = "Not Component" - id = "comp_not" - build_path = /obj/item/circuit_component/not - -/datum/design/component/random - name = "Random Component" - id = "comp_random" - build_path = /obj/item/circuit_component/random - -/datum/design/component/binary_conversion - name = "Binary Conversion Component" - id = "comp_binary_convert" - build_path = /obj/item/circuit_component/binary_conversion - -/datum/design/component/decimal_conversion - name = "Decimal Conversion Component" - id = "comp_decimal_convert" - build_path = /obj/item/circuit_component/decimal_conversion - -/datum/design/component/species - name = "Get Species Component" - id = "comp_species" - build_path = /obj/item/circuit_component/species - -/datum/design/component/speech - name = "Speech Component" - id = "comp_speech" - build_path = /obj/item/circuit_component/speech - -/datum/design/component/laserpointer - name = "Laser Pointer Component" - id = "comp_laserpointer" - build_path = /obj/item/circuit_component/laserpointer - -/datum/design/component/timepiece - name = "Timepiece Component" - id = "comp_timepiece" - build_path = /obj/item/circuit_component/timepiece - -/datum/design/component/tostring - name = "To String Component" - id = "comp_tostring" - build_path = /obj/item/circuit_component/tostring - -/datum/design/component/tonumber - name = "To Number" - id = "comp_tonumber" - build_path = /obj/item/circuit_component/tonumber - -/datum/design/component/typecheck - name = "Typecheck Component" - id = "comp_typecheck" - build_path = /obj/item/circuit_component/compare/typecheck - -/datum/design/component/concat - name = "Concatenation Component" - id = "comp_concat" - build_path = /obj/item/circuit_component/concat - -/datum/design/component/textcase - name = "Textcase Component" - id = "comp_textcase" - build_path = /obj/item/circuit_component/textcase - -/datum/design/component/hear - name = "Voice Activator Component" - id = "comp_hear" - build_path = /obj/item/circuit_component/hear - -/datum/design/component/contains - name = "String Contains Component" - id = "comp_string_contains" - build_path = /obj/item/circuit_component/compare/contains - -/datum/design/component/self - name = "Self Component" - id = "comp_self" - build_path = /obj/item/circuit_component/self - -/datum/design/component/radio - name = "Radio Component" - id = "comp_radio" - build_path = /obj/item/circuit_component/radio - -/datum/design/component/gps - name = "GPS Component" - id = "comp_gps" - build_path = /obj/item/circuit_component/gps - -/datum/design/component/direction - name = "Direction Component" - id = "comp_direction" - build_path = /obj/item/circuit_component/direction - -/datum/design/component/reagentscanner - name = "Reagents Scanner" - id = "comp_reagents" - build_path = /obj/item/circuit_component/reagentscanner - -/datum/design/component/health - name = "Health Component" - id = "comp_health" - build_path = /obj/item/circuit_component/health - -/datum/design/component/compare/health_state - name = "Compare Health State Component" - id = "comp_health_state" - build_path = /obj/item/circuit_component/compare/health_state - -/datum/design/component/matscanner - name = "Material Scanner" - id = "comp_matscanner" - build_path = /obj/item/circuit_component/matscanner - -/datum/design/component/split - name = "Split Component" - id = "comp_split" - build_path = /obj/item/circuit_component/split - -/datum/design/component/pull - name = "Pull Component" - id = "comp_pull" - build_path = /obj/item/circuit_component/pull - -/datum/design/component/soundemitter - name = "Sound Emitter Component" - id = "comp_soundemitter" - build_path = /obj/item/circuit_component/soundemitter - -/datum/design/component/mmi - name = "MMI Component" - id = "comp_mmi" - build_path = /obj/item/circuit_component/mmi - -/datum/design/component/router - name = "Router Component" - id = "comp_router" - build_path = /obj/item/circuit_component/router - -/datum/design/component/multiplexer - name = "Multiplexer Component" - id = "comp_multiplexer" - build_path = /obj/item/circuit_component/router/multiplexer - -/datum/design/component/get_column - name = "Get Column Component" - id = "comp_get_column" - build_path = /obj/item/circuit_component/get_column - -/datum/design/component/index_table - name = "Index Table Component" - id = "comp_index_table" - build_path = /obj/item/circuit_component/index_table - -/datum/design/component/concat_list - name = "Concatenate List Component" - id = "comp_concat_list" - build_path = /obj/item/circuit_component/concat_list - -/datum/design/component/list_add - name = "List Add" - id = "comp_list_add" - build_path = /obj/item/circuit_component/variable/list/listadd - -/datum/design/component/list_remove - name = "List Remove" - id = "comp_list_remove" - build_path = /obj/item/circuit_component/variable/list/listremove - -/datum/design/component/assoc_list_set - name = "Associative List Set" - id = "comp_assoc_list_set" - build_path = /obj/item/circuit_component/variable/assoc_list/list_set - -/datum/design/component/assoc_list_remove - name = "Associative List Remove" - id = "comp_assoc_list_remove" - build_path = /obj/item/circuit_component/variable/assoc_list/list_remove - - -/datum/design/component/list_clear - name = "List Clear" - id = "comp_list_clear" - build_path = /obj/item/circuit_component/variable/list/listclear - -/datum/design/component/element_find - name = "Element Find" - id = "comp_element_find" - build_path = /obj/item/circuit_component/listin - -/datum/design/component/select_query - name = "Select Query Component" - id = "comp_select_query" - build_path = /obj/item/circuit_component/select - -/datum/design/component/pathfind - name = "Pathfinder" - id = "comp_pathfind" - build_path = /obj/item/circuit_component/pathfind - -/datum/design/component/tempsensor - name = "Temperature Sensor Component" - id = "comp_tempsensor" - build_path = /obj/item/circuit_component/tempsensor - -/datum/design/component/pressuresensor - name = "Pressure Sensor Component" - id = "comp_pressuresensor" - build_path = /obj/item/circuit_component/pressuresensor - -/datum/design/component/module - name = "Module Component" - id = "comp_module" - build_path = /obj/item/circuit_component/module - -/datum/design/component/ntnet_receive - name = "NTNet Receiver" - id = "comp_ntnet_receive" - build_path = /obj/item/circuit_component/ntnet_receive - -/datum/design/component/ntnet_send - name = "NTNet Transmitter" - id = "comp_ntnet_send" - build_path = /obj/item/circuit_component/ntnet_send - -/datum/design/component/nfc_send - name = "NFC Transmitter" - id = "comp_nfc_send" - build_path = /obj/item/circuit_component/nfc_send - -/datum/design/component/nfc_receive - name = "NFC Receiver" - id = "comp_nfc_receive" - build_path = /obj/item/circuit_component/nfc_receive - -/datum/design/component/list_literal/ntnet_send - name = "NTNet Transmitter List Literal" - id = "comp_ntnet_send_list_literal" - build_path = /obj/item/circuit_component/list_literal/ntnet_send - -/datum/design/component/list_literal - name = "List Literal Component" - id = "comp_list_literal" - build_path = /obj/item/circuit_component/list_literal - -/datum/design/component/list_assoc_literal - name = "Associative List Literal" - id = "comp_list_assoc_literal" - build_path = /obj/item/circuit_component/assoc_literal - -/datum/design/component/typecast - name = "Typecast Component" - id = "comp_typecast" - build_path = /obj/item/circuit_component/typecast - -/datum/design/component/pinpointer - name = "Proximity Pinpointer Component" - id = "comp_pinpointer" - build_path = /obj/item/circuit_component/pinpointer - -/datum/design/component/equipment_action - name = "Equipment Action Component" - id = "comp_equip_action" - build_path = /obj/item/circuit_component/equipment_action - -/datum/design/component/bci/object_overlay - name = "Object Overlay Component" - id = "comp_object_overlay" - build_path = /obj/item/circuit_component/object_overlay - -/datum/design/component/bci/bar_overlay - name = "Bar Overlay Component" - id = "comp_bar_overlay" - build_path = /obj/item/circuit_component/object_overlay/bar - -/datum/design/component/bci/vox - name = "VOX Announcement Component" - id = "comp_vox" - build_path = /obj/item/circuit_component/vox - -/datum/design/component/bci/thought_listener - name = "Thought Listener Component" - id = "comp_thought_listener" - build_path = /obj/item/circuit_component/thought_listener - -/datum/design/component/bci/target_intercept - name = "BCI Target Interceptor" - id = "comp_target_intercept" - build_path = /obj/item/circuit_component/target_intercept - -/datum/design/component/bci/counter_overlay - name = "Counter Overlay Component" - id = "comp_counter_overlay" - build_path = /obj/item/circuit_component/counter_overlay - -/datum/design/component/bci/reagent_injector - name = "Reagent Injector Component" - id = "comp_reagent_injector" - build_path = /obj/item/circuit_component/reagent_injector - -/datum/design/component/bci/install_detector - name = "Install Detector Component" - id = "comp_install_detector" - build_path = /obj/item/circuit_component/install_detector - -/datum/design/component/foreach - name = "For Each Component" - id = "comp_foreach" - build_path = /obj/item/circuit_component/foreach - -/datum/design/component/filter_list - name = "Filter List Component" - id = "comp_filter_list" - build_path = /obj/item/circuit_component/filter_list - -/datum/design/component/id_getter - name = "ID Getter Component" - id = "comp_id_getter" - build_path = /obj/item/circuit_component/id_getter - -/datum/design/component/id_info_reader - name = "ID Info Reader Component" - id = "comp_id_info_reader" - build_path = /obj/item/circuit_component/id_info_reader - -/datum/design/component/id_access_reader - name = "ID Access Reader Component" - id = "comp_id_access_reader" - build_path = /obj/item/circuit_component/id_access_reader - -/datum/design/component/setter_trigger - name = "Set Variable Trigger" - id = "comp_set_variable_trigger" - build_path = /obj/item/circuit_component/variable/setter/trigger - -/datum/design/component/view_sensor - name = "View Sensor Component" - id = "comp_view_sensor" - build_path = /obj/item/circuit_component/view_sensor - -/datum/design/component/access_checker - name = "Access Checker Component" - id = "comp_access_checker" - build_path = /obj/item/circuit_component/compare/access - -/datum/design/component/list_pick - name = "List Pick Component" - id = "comp_list_pick" - build_path = /obj/item/circuit_component/list_pick - -/datum/design/component/list_pick_assoc - name = "Associative List Pick Component" - id = "comp_assoc_list_pick" - build_path = /obj/item/circuit_component/list_pick/assoc - -/datum/design/component/wire_bundle - name = "Wire Bundle" - id = "comp_wire_bundle" - build_path = /obj/item/circuit_component/wire_bundle - -/datum/design/component/wirenet_receive - name = "Wirenet Receiver Component" - id = "comp_wirenet_receive" - build_path = /obj/item/circuit_component/wirenet_receive - -/datum/design/component/wirenet_send - name = "Wirenet Transmitter Component" - id = "comp_wirenet_send" - build_path = /obj/item/circuit_component/wirenet_send - -/datum/design/component/wirenet_send_literal - name = "Wirenet List Literal Transmitter Component" - id = "comp_wirenet_send_literal" - build_path = /obj/item/circuit_component/list_literal/wirenet_send - -/datum/design/component/bci/bci_camera - name = "BCI Camera" - id = "comp_camera_bci" - build_path = /obj/item/circuit_component/remotecam/bci - -/datum/design/compact_remote_shell - name = "Compact Remote Shell" - desc = "A handheld shell with one big button." - id = "compact_remote_shell" - build_path = /obj/item/compact_remote - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5) - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/controller_shell - name = "Controller Shell" - desc = "A handheld shell with several buttons." - id = "controller_shell" - build_path = /obj/item/controller - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/scanner_shell - name = "Scanner Shell" - desc = "A handheld scanner shell that can scan entities." - id = "scanner_shell" - build_path = /obj/item/wiremod_scanner - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/keyboard_shell - name = "Keyboard Shell" - desc = "A handheld shell that allows the user to input a string" - id = "keyboard_shell" - build_path = /obj/item/keyboard_shell - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5) - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/gun_shell - name = "Gun Shell" - desc = "A handheld shell that can fire projectiles to output entities." - id = "gun_shell" - build_path = /obj/item/gun/energy/wiremod_gun - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/plasma =SMALL_MATERIAL_AMOUNT) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/bot_shell - name = "Bot Shell" - desc = "An immobile shell that can store more components. Has a USB port to be able to connect to computers and machines." - id = "bot_shell" - build_path = /obj/item/shell/bot - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/money_bot_shell - name = "Money Bot Shell" - desc = "An immobile shell that is similar to a regular bot shell, but accepts monetary inputs and can also dispense money." - id = "money_bot_shell" - build_path = /obj/item/shell/money_bot - build_type = COMPONENT_PRINTER - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*0.5) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/drone_shell - name = "Drone Shell" - desc = "A shell with the ability to move itself around." - id = "drone_shell" - build_path = /obj/item/shell/drone - build_type = COMPONENT_PRINTER - materials = list( - /datum/material/glass =SHEET_MATERIAL_AMOUNT, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*5.5, - /datum/material/gold =SMALL_MATERIAL_AMOUNT*5, - ) - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/server_shell - name = "Server Shell" - desc = "A very large shell that cannot be moved around. Stores the most components." - id = "server_shell" - materials = list( - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, - /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT * 1.5, - ) - build_path = /obj/item/shell/server - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/airlock_shell - name = "Airlock Shell" - desc = "A door shell that cannot be moved around when assembled." - id = "door_shell" - materials = list( - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, - ) - build_path = /obj/item/shell/airlock - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/dispenser_shell - name = "Dispenser Shell" - desc = "A dispenser shell that can dispense items." - id = "dispenser_shell" - materials = list( - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5, - ) - build_path = /obj/item/shell/dispenser - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/bci_shell - name = "Brain-Computer Interface Shell" - desc = "An implant that can be placed in a user's head to control circuits using their brain." - id = "bci_shell" - materials = list( - /datum/material/glass =SHEET_MATERIAL_AMOUNT, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*4, - ) - build_path = /obj/item/shell/bci - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/scanner_gate_shell - name = "Scanner Gate Shell" - desc = "A scanner gate shell that performs mid-depth scans on people when they pass through it." - id = "scanner_gate_shell" - materials = list( - /datum/material/glass = SHEET_MATERIAL_AMOUNT*2, - /datum/material/iron = SHEET_MATERIAL_AMOUNT*6, - ) - build_path = /obj/item/shell/scanner_gate - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/board/bci_implanter - name = "Brain-Computer Interface Manipulation Chamber" - desc = "A machine that, when given a brain-computer interface, will implant it into an occupant. Otherwise, will remove any brain-computer interfaces they already have." - id = "bci_implanter" - build_path = /obj/item/circuitboard/machine/bci_implanter - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_CATEGORY_CIRCUITRY_CORE - ) - -/datum/design/assembly_shell - name = "Assembly Shell" - desc = "An assembly shell that can be attached to wires and other assemblies." - id = "assembly_shell" - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5) - build_path = /obj/item/assembly/wiremod - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/mod_module_shell - name = "MOD Module Shell" - desc = "A module shell that allows a circuit to be inserted into, and interface with, a MODsuit." - id = "module_shell" - materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/mod/module/circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/undertile_shell - name = "Under-tile Shell" - desc = "A small shell that can fit under the floor." - id = "undertile_shell" - materials = list( - /datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT, - /datum/material/iron=SHEET_MATERIAL_AMOUNT*2.5, - ) - build_path = /obj/item/undertile_circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - - -/datum/design/wallmount_shell - name = "Wall-mounted Shell" - desc = "A large shell that can be mounted on a wall." - id = "wallmount_shell" - materials = list( - /datum/material/glass=SHEET_MATERIAL_AMOUNT, - /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, - ) - build_path = /obj/item/wallframe/circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) - -/datum/design/implant_shell - name = "Implant Shell Case" - desc = "A tiny shell that can be implanted in a living being." - id = "implant_shell" - materials = list( - /datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, - /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, - ) - build_path = /obj/item/implantcase/circuit - build_type = COMPONENT_PRINTER - category = list( - RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS - ) diff --git a/code/modules/research/gizmo/gizmo_controller.dm b/code/modules/research/gizmo/gizmo_controller.dm index 90b5f7bef879..a1bc793529f0 100644 --- a/code/modules/research/gizmo/gizmo_controller.dm +++ b/code/modules/research/gizmo/gizmo_controller.dm @@ -40,3 +40,7 @@ /// Always horrible agony! /datum/gizmo_controller/cursed interfaces = list(GIZMO_INTERFACE_WIRES = /datum/gizmo_interface/cursed) + +/// Hard-mode code-crack +/datum/gizmo_controller/moo + interfaces = list(GIZMO_INTERFACE_WIRES = /datum/gizmo_interface/moo) diff --git a/code/modules/research/gizmo/gizmo_interface.dm b/code/modules/research/gizmo/gizmo_interface.dm index 7e46a47fcc64..39e23ec6e033 100644 --- a/code/modules/research/gizmo/gizmo_interface.dm +++ b/code/modules/research/gizmo/gizmo_interface.dm @@ -67,3 +67,8 @@ /datum/gizmodes/bad = 1, ) max_modes = 1 + +/datum/gizmo_interface/moo + guaranteed_active_gizmodes = list(/datum/gizmodes/code_crack/moo) + min_modes = 0 + max_modes = 0 diff --git a/code/modules/research/gizmo/gizmo_items.dm b/code/modules/research/gizmo/gizmo_items.dm index bc6d237681a1..1e18242556e5 100644 --- a/code/modules/research/gizmo/gizmo_items.dm +++ b/code/modules/research/gizmo/gizmo_items.dm @@ -20,3 +20,15 @@ controller = new controller(src) controller.generate_interfaces(src) + +/obj/item/gizmo/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + add_fingerprint(user) + + if(is_wire_tool(tool)) + attempt_wire_interaction(user) + return ITEM_INTERACT_SUCCESS + return NONE + +/// Hard-mode code-crack gizmo +/obj/item/gizmo/moo + controller = /datum/gizmo_controller/moo diff --git a/code/modules/research/gizmo/gizmo_machines.dm b/code/modules/research/gizmo/gizmo_machines.dm index 3d50d797d5d7..ebbd8df89d6e 100644 --- a/code/modules/research/gizmo/gizmo_machines.dm +++ b/code/modules/research/gizmo/gizmo_machines.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/science/gizmos.dmi' resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + obj_flags = parent_type::obj_flags | UNIQUE_RENAME panel_open = TRUE density = TRUE @@ -16,10 +17,10 @@ /// Reference to the gizmo. We dont actually need to track this for anything but ease of vv var/datum/gizmo_controller/controller = /datum/gizmo_controller /// Possible names to pick from to keep things confusing - var/list/possible_names = list( + var/static/list/possible_names = list( "gizmo", "jigger", "doohickey", "particle inverter", "polarity superplexer", "flitcher poster", "natty gonk", "quantum quantum", "entropy nilum", "tachyon streamer", "doing device", "task operator", "interface responder", "kinetic observer", "turbo encabulator", - "statistic responder", "possibility matrix", "toety aaier", "phase anchor", + "statistic responder", "possibility matrix", "toety aaier", "phase anchor", "thingamajing", ) /obj/machinery/gizmo/Initialize(mapload) @@ -96,7 +97,7 @@ /obj/machinery/gizmo/toggle controller = /datum/gizmo_controller/toggle - icon_states = list("gizmo_active_0", "gizmo_active_1", "gizmo_active_2", "gizmo_active_3", "gizmo_active_4", "gizmo_active_5") + icon_states = list("gizmo_active_0", "gizmo_active_1", "gizmo_active_2", "gizmo_active_3", "gizmo_active_4") var/on_state = FALSE @@ -120,13 +121,15 @@ SIGNAL_HANDLER on_state = TRUE - update_icon() + update_appearance(UPDATE_ICON) + visible_message(span_smallnoticeital("[src] hums to life.")) /obj/machinery/gizmo/toggle/proc/off_state(datum/source) SIGNAL_HANDLER on_state = FALSE - update_icon() + update_appearance(UPDATE_ICON) + visible_message(span_smallnoticeital("[src] powers down.")) /// A gizmo with a voice activated interface /obj/machinery/gizmo/voice diff --git a/code/modules/research/gizmo/gizmodes/giz_filler.dm b/code/modules/research/gizmo/gizmodes/giz_filler.dm index 15adbc580239..239ba7ba6448 100644 --- a/code/modules/research/gizmo/gizmodes/giz_filler.dm +++ b/code/modules/research/gizmo/gizmodes/giz_filler.dm @@ -92,7 +92,7 @@ /datum/gizpulse/dispense/food possible_objects = list( /obj/item/food/donut/plain = 1, - /obj/item/food/burger = 1, + /obj/item/food/burger/plain = 1, ) /datum/gizpulse/dispense/food/modify(atom/movable/new_object) diff --git a/code/modules/research/gizmo/gizmodes/gizactives.dm b/code/modules/research/gizmo/gizmodes/gizactives.dm index 632ce7815f44..8016b224ba52 100644 --- a/code/modules/research/gizmo/gizmodes/gizactives.dm +++ b/code/modules/research/gizmo/gizmodes/gizactives.dm @@ -94,9 +94,14 @@ /// Adds a puzzle for every possible made to select it, and a single wire to activate the selected mode /datum/gizpulse/mode_controle/select_mode/setup_mode_controle(datum/gizmodes/master, list/active_gizmodes, list/trigger_callbacks) for(var/active in active_gizmodes) - trigger_callbacks += VARSET_CALLBACK(master, current_active, active) + trigger_callbacks += CALLBACK(src, PROC_REF(select_mode), master, active) trigger_callbacks += CALLBACK(master, PROC_REF(activate)) +/datum/gizpulse/mode_controle/select_mode/proc/select_mode(datum/gizmodes/master, new_active_mode, atom/movable/holder) + master.current_active = new_active_mode + // Give a hint to the user that something DID happen + return GIZMO_PUZZLE_SOLVED_MODE_CONTROL + /// Adds a puzzle to cycle to the next gizpulse, and a puzzle to activate the currently active mode /datum/gizpulse/mode_controle/cycle_mode/setup_mode_controle(datum/gizmodes/master, list/active_gizmodes, list/trigger_callbacks) trigger_callbacks += CALLBACK(src, PROC_REF(cycle_mode), master) @@ -105,6 +110,8 @@ /datum/gizpulse/mode_controle/cycle_mode/proc/cycle_mode(datum/gizmodes/master, atom/movable/holder) // Move to the next mode in the list (and loop back to 1 if needed) master.current_active = master.active_gizmodes[((master.active_gizmodes.Find(master.current_active)) % (master.active_gizmodes.len)) + 1] + // Give a hint to the user that something DID happen + return GIZMO_PUZZLE_SOLVED_MODE_CONTROL /// Adds a puzzle for every gizpulse that just immediately activates that gizpulse /datum/gizpulse/mode_controle/direct_activate/setup_mode_controle(datum/gizmodes/master, list/active_gizmodes, list/trigger_callbacks) diff --git a/code/modules/research/gizmo/gizmodes/gizcode.dm b/code/modules/research/gizmo/gizmodes/gizcode.dm new file mode 100644 index 000000000000..51249c06aa94 --- /dev/null +++ b/code/modules/research/gizmo/gizmodes/gizcode.dm @@ -0,0 +1,315 @@ +// How many times we try to generate the code +#define MAX_CODEGEN_RETRY_ATTEMPTS 5 +// There are 10 digits +#define DIGIT_COUNT 10 +/** A code-cracking puzzle gizmo + * First, the user must pulse activate_puzzle - this randomizes the code and resets the attempt counter. + * The user may pulse activate_puzzle a limited amount of times again to retry it. + * + * Next, the user needs to input a code. + * Imagine a row of knobs, each of them with 10 notches, and a head that rotates the knobs. + * Pulsing cycle_position moves the head right, + * pulsing cycle_digit makes the head bump the knob by 1 notch. + * If the head reaches the rightmost position, then cycle_position resets it, moving it back left. + * Similarly, pulsing cycle_digit when the knob is already in the rightmost notch resets it to the leftmost one. + * + * Finally, the user has to pulse try_crack to check if their input is correct. + * If it's correct, a reward is dispensed and the puzzle gets deactivated. + * If it's not, some sort of feedback is provided. + * If the user takes too many attempts to solve the code, they are punished. + * + * There may be restrictions set upon the code. + * These are checked upon code generation and cracking attempt. + */ +/datum/gizmodes/code_crack + abstract_type = /datum/gizmodes/code_crack + guaranteed_active_gizmodes = list( + /datum/gizpulse/activate_puzzle, + /datum/gizpulse/cycle_position, + /datum/gizpulse/cycle_digit, + /datum/gizpulse/try_crack, + ) + + mode_pulses = list( + /datum/gizpulse/mode_controle/direct_activate, + ) + // Sound that plays upon puzzle activation + var/init_jingle = "sound/machines/terminal/terminal_processing.ogg" + // How many times you can activate the code-cracking puzzle + var/puzzles_left = 3 + // How many attempts the user has to crack the code before the gizmo starts punishing them + var/attempts_left = 10 + + // Whether the puzzle is currently active + var/active = FALSE + // Code length + var/code_length = 2 + // Solution to current puzzle + var/list/solution = list(0, 0, 0, 0,) + // Current code cracking input + var/list/code_input = list(0, 0, 0, 0,) + // Which position in the code is currently being cycled + var/position = 0 + + var/list/loot_table = null + +// Proc that generates the code (solution to the puzzle) +// We retry generation if the code happened to be invalid +// Returns TRUE if generation was successful and FALSE otherwise +/datum/gizmodes/code_crack/proc/generate_code() + SHOULD_CALL_PARENT(TRUE) + solution.Cut() + solution.len = code_length + for(var/i in 1 to MAX_CODEGEN_RETRY_ATTEMPTS) + for(var/j in 1 to code_length) + solution[j] = rand(0, 9) // Randomize every digit + if(validate_code(solution)) + return TRUE + return FALSE + +// Proc that checks if code is valid or not (matches the restrictions) +/datum/gizmodes/code_crack/proc/validate_code(list/code) + // Restrictions are defined by the subtype + return TRUE + +// Proc that checks if user input matches the solution +/datum/gizmodes/code_crack/proc/check_code() + for(var/i in 1 to code_length) + if(code_input[i] != solution[i]) + return FALSE + return TRUE + +// Proc to dispense the reward from the loot table +/datum/gizmodes/code_crack/proc/dispense_reward(atom/movable/holder) + SHOULD_CALL_PARENT(TRUE) + var/loot = pick_weight_recursive(loot_table) + new loot(get_turf(holder)) + playsound(holder,"sound/machines/machine_vend.ogg", 100) + +// Proc that punishes the user when they go over the attempt limit +// Technically, user can try to crack the code as many times as they want, as long as they can endure the punishment +/datum/gizmodes/code_crack/proc/punishment(atom/movable/holder) + // Punishment has to be defined by the subtype + return + +// Proc that produces feedback when the user inputs an incorrect code +// By default, all of these gizmos tell the user how many attempts are left +/datum/gizmodes/code_crack/proc/feedback(atom/movable/holder) + SHOULD_CALL_PARENT(TRUE) + // This is kind of ass, but there's probably no way around it + var/static/list/digit_to_name = list("one", "two", "three", "four", "five", "six", "seven", "eight", "nine") + if(attempts_left <= 0 || attempts_left >= 10) + return + playsound(holder, "sound/announcer/vox_fem/[digit_to_name[attempts_left]].ogg", 100) + holder.say(digit_to_name[attempts_left]) + +// Proc that resets user input +/datum/gizmodes/code_crack/proc/reset_input() + code_input.Cut() + code_input.len = code_length // stretch it + for(var/i in 1 to code_length) + code_input[i] = 0 // Fill it with zeroes + position = initial(position) + +// Gizpulses + +// Gizpulse to activate the puzzle +/datum/gizpulse/activate_puzzle/activate(atom/movable/holder, datum/gizmodes/master, datum/gizmo_interface/interface) + var/datum/gizmodes/code_crack/puzzle_holder = astype(master) + if(!puzzle_holder) + return + // If the puzzle cannot be retried, produce a bad buzz and stop + if(puzzle_holder.puzzles_left <= 0) + playsound(holder, "sound/machines/uplink/uplinkerror.ogg", 100) + return + // If it can be tried again (or is launched for the first time), do what we gotta do + if(!puzzle_holder.generate_code()) // Code generation may fail, if the restrictions are too severe + playsound(holder, "sound/items/ceramic_break.ogg", 100) + return + playsound(holder, puzzle_holder.init_jingle, 100) + puzzle_holder.puzzles_left-- + puzzle_holder.active = TRUE + puzzle_holder.reset_input() + puzzle_holder.attempts_left = initial(puzzle_holder.attempts_left) + +// Gizpulse to cycle the currently selected position +// Example (if code_input is 0000): +// 0000 -> 0000 +// ^ ^ +/datum/gizpulse/cycle_position/activate(atom/movable/holder, datum/gizmodes/master, datum/gizmo_interface/interface) + var/datum/gizmodes/code_crack/puzzle_holder = astype(master) + if(!puzzle_holder) + return + if(!puzzle_holder.active) // If the puzzle is inactive, produce a loud buzz and get out + playsound(holder,"sound/machines/scanner/scanbuzz.ogg", 100) + return + // Cycle position: 0 -> 1 -> 2 -> .. -> (code_length - 1) -> reset back to 0 + puzzle_holder.position = (puzzle_holder.position + 1) % puzzle_holder.code_length + + // If we simply bumped the position by 1, produce a single piston-move sound + if(puzzle_holder.position != 0) + playsound(holder, "sound/machines/eject.ogg", 100) + return + // Otherwise, produce a different sound, indicating the position has been reset + playsound(holder, "sound/items/weapons/autoguninsert.ogg", 100) + +// Gizpulse to cycle the currently selected digit +// Example (if second digit is selected and code_input is 0000): +// 0000 -> 0100 +// ^ ^ +/datum/gizpulse/cycle_digit/activate(atom/movable/holder, datum/gizmodes/master, datum/gizmo_interface/interface) + var/datum/gizmodes/code_crack/puzzle_holder = astype(master) + if(!puzzle_holder) + return + if(!puzzle_holder.active) // If the puzzle is inactive, produce a loud buzz and get out + playsound(holder,"sound/machines/scanner/scanbuzz.ogg", 100) + return + + // List indices start with 1, so we add 1 here + var/position = puzzle_holder.position + 1 + var/previous_digit = puzzle_holder.code_input[position] + // Cycle the digit + puzzle_holder.code_input[position] = (previous_digit + 1) % DIGIT_COUNT + + // If we simply bumped the digit by 1, produce a single click + if(previous_digit != DIGIT_COUNT - 1) + playsound(holder, "sound/machines/creak.ogg", 100) + return + // Otherwise, produce a different sound, indicating the digit has been reset + playsound(holder, "sound/items/reel/reel4.ogg", 100) + +// Gizpulse that actually cracks the code +/datum/gizpulse/try_crack/activate(atom/movable/holder, datum/gizmodes/master, datum/gizmo_interface/interface) + var/datum/gizmodes/code_crack/puzzle_holder = astype(master) + if(!puzzle_holder) + return + if(!puzzle_holder.active) // If the puzzle is inactive, produce a loud buzz and get out + playsound(holder,"sound/machines/scanner/scanbuzz.ogg", 100) + return + + // If the input is invalid, emit an invalid-input sound and let the user make corrections + var/validity = puzzle_holder.validate_code(puzzle_holder.code_input) + if(!validity) + playsound(holder, "sound/machines/terminal/terminal_error.ogg", 100) + return + + // If the input is correct, dispense a reward and reset the puzzle + var/correctness = puzzle_holder.check_code() + if(correctness) + puzzle_holder.dispense_reward(holder) + puzzle_holder.active = FALSE + return + + // If the input is incorrect.. + puzzle_holder.attempts_left-- + if(puzzle_holder.attempts_left <= 0) + puzzle_holder.punishment(holder) + puzzle_holder.feedback(holder) + puzzle_holder.reset_input() + // Play the input reset sound + playsound(holder, "sound/machines/terminal/terminal_eject.ogg", 100) + +// Tutorial version +// Restrictions: none +// Code length: 2 +// Feedback: over/under +// Punishment: evil rat +// Loot: cheese +// Also, dispenses a hard-mode code-crack gizmo upon completion +/datum/gizmodes/code_crack/tutorial + loot_table = list( + list( // Cheese slices + /obj/item/food/cheese/firm_cheese_slice = 1, + /obj/item/food/cheese/wedge = 1, + ) = 39, + /obj/item/food/cheese/wheel = 20, // Normal cheese + list( // Firm cheese + /obj/item/food/cheese/curd_cheese = 1, + /obj/item/food/cheese/cheese_curds = 1, + /obj/item/food/cheese/firm_cheese = 1, + ) = 20, + /obj/item/food/cheese/mozzarella = 20, // Mozzarella + /obj/item/food/cheese/royal = 1, // Royal + ) + var/dispensed_hardmode = FALSE + +/datum/gizmodes/code_crack/tutorial/dispense_reward(atom/movable/holder) + if(!dispensed_hardmode) + dispensed_hardmode = TRUE + // Hard-mode + new /obj/item/gizmo/moo(get_turf(holder)) + ..() + +/datum/gizmodes/code_crack/tutorial/feedback(atom/movable/holder) + for(var/i in 1 to code_length) + if(code_input[i] < solution[i]) + playsound(holder, "sound/machines/defib/defib_saftyOff.ogg", 100) + holder.visible_message(span_notice("[holder] pings low.")) + else if(code_input[i] > solution[i]) + playsound(holder, "sound/machines/defib/defib_saftyOn.ogg", 100) + holder.visible_message(span_notice("[holder] pings high.")) + else + playsound(holder, "sound/machines/defib/defib_ready.ogg", 100) + holder.visible_message(span_notice("[holder] pings affirmatively.")) + sleep(0.5 SECONDS) + ..() + +/datum/gizmodes/code_crack/tutorial/punishment(atom/movable/holder) + // Evil rat + new /mob/living/basic/mouse/rat(get_turf(holder)) + +// Hardmode +// Restrictions: all digits must be unique +// Code length: 2-3 +// Feedback: bulls and cows (number of correctly placed digits, number of incorrectly placed digits that are included in the code) +// Punishment: explosion +// Loot: all sorts of stuff +/datum/gizmodes/code_crack/moo + // Moo + init_jingle = "sound/mobs/non-humanoids/cow/cow.ogg" + loot_table = /obj/structure/closet/crate/secure/loot::possible_loot + var/min_code_length = 2 + var/max_code_length = 3 + +// All digits must be unique +/datum/gizmodes/code_crack/moo/validate_code(code) + for(var/i in 1 to code_length) + for(var/j in 1 to i-1) + if(code[i] == code[j]) + return FALSE + return TRUE + +/datum/gizmodes/code_crack/moo/generate_code() + code_length = rand(min_code_length, max_code_length) + return ..() + +/datum/gizmodes/code_crack/moo/feedback(atom/movable/holder) + var/bulls = 0 + var/cows = 0 + for(var/i in 1 to code_length) + for(var/j in 1 to code_length) + if(code_input[i] == solution[j]) + if(i == j) // Digit is correct and correctly placed + bulls++ + else // Digit is correct, but incorrectly placed + cows++ + break + // Bull beeps, cow beeps and the sound from parent call shouldn't play simultaneously, so sleep() is probably unavoidable here + for(var/i in 1 to bulls) + playsound(holder, "sound/machines/synth/synth_yes.ogg", 100) + sleep(0.25 SECONDS) + for(var/i in 1 to cows) + playsound(holder, "sound/machines/synth/synth_no.ogg", 100) + sleep(0.25 SECONDS) + + holder.visible_message(span_notice("[holder] emits [bulls] high-pitched beeps and [cows] low-pitched ones.")) + + ..() + +/datum/gizmodes/code_crack/moo/punishment(atom/movable/holder) + var/obj/item/grenade/syndieminibomb/punishment = new(get_turf(holder)) + punishment.arm_grenade(null, 5 SECONDS) + qdel(holder) + +#undef MAX_CODEGEN_RETRY_ATTEMPTS +#undef DIGIT_COUNT diff --git a/code/modules/research/gizmo/gizpuzzle.dm b/code/modules/research/gizmo/gizpuzzle.dm index 18763db7a564..fd228c8b87cb 100644 --- a/code/modules/research/gizmo/gizpuzzle.dm +++ b/code/modules/research/gizmo/gizpuzzle.dm @@ -61,9 +61,9 @@ succeeded = TRUE if(j == a.len) var/datum/callback/callback = solution_callbacks[i] - callback.Invoke(holder) + . = callback.Invoke(holder) || GIZMO_PUZZLE_SOLVED current_sequence.Cut() - . = GIZMO_PUZZLE_SOLVED + break if(!succeeded) @@ -89,6 +89,9 @@ if(GIZMO_PUZZLE_SOLVED) holder.balloon_alert(user, "creak") playsound(holder, 'sound/machines/creak.ogg', 30, FALSE) + if(GIZMO_PUZZLE_SOLVED_MODE_CONTROL) + holder.balloon_alert(user, "clunk") + playsound(holder, 'sound/machines/machine_vend.ogg', 30, FALSE) /// Sequences can be a bit shorter since you have to constantly type and scream them /datum/gizmo_puzzle/voice diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 01f3631c77b3..2084913113f3 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -210,14 +210,13 @@ * * * path - the design path to check for */ -/obj/machinery/rnd/production/proc/build_efficiency(path) +/obj/machinery/rnd/production/proc/build_efficiency(datum/design/design) PRIVATE_PROC(TRUE) SHOULD_BE_PURE(TRUE) - if(ispath(path, /obj/item/stack/sheet) || ispath(path, /obj/item/stack/ore/bluespace_crystal)) + if(ispath(design.build_path, /obj/item/stack) || design.fixed_cost_efficiency) return 1 - else - return efficiency_coeff + return efficiency_coeff /obj/machinery/rnd/production/ui_assets(mob/user) return list( @@ -243,7 +242,7 @@ for(var/datum/design/design in cached_designs) var/cost = list() - coefficient = build_efficiency(design.build_path) + coefficient = build_efficiency(design) for(var/datum/material/mat as anything in design.materials) var/amount = design.materials[mat] cost[mat.name] = OPTIMAL_COST(amount * coefficient) @@ -330,7 +329,7 @@ print_quantity = clamp(print_quantity, 1, 50) //efficiency for this design, stacks use exact materials - var/coefficient = build_efficiency(design.build_path) + var/coefficient = build_efficiency(design) //check for materials if(!materials.can_use_resource(user_data = ID_DATA(usr))) @@ -412,29 +411,29 @@ return var/is_stack = ispath(design.build_path, /obj/item/stack) - var/list/design_materials = design.materials - if(!materials.mat_container.has_materials(design_materials, material_cost_coefficient, is_stack ? items_remaining : 1)) + + if(!materials.mat_container.has_materials(design.materials, material_cost_coefficient, is_stack ? items_remaining : 1)) say("Unable to continue production, missing materials.") finalize_build() return - materials.use_materials(design_materials, material_cost_coefficient, is_stack ? items_remaining : 1, "processed", "[design.name]", user_data = user_data) + materials.use_materials(design.materials, material_cost_coefficient, is_stack ? items_remaining : 1, "processed", "[design.name]", user_data = user_data) var/atom/movable/created + var/number_to_make = 1 if(is_stack) var/obj/item/stack/stack_item = initial(design.build_path) var/max_stack_amount = initial(stack_item.max_amount) - var/number_to_make = (initial(stack_item.amount) * items_remaining) + number_to_make = (initial(stack_item.amount) * items_remaining) while(number_to_make > max_stack_amount) - created = design.create_result(target, design_materials, amount = max_stack_amount) + created = design.create_result(target, design.materials, amount = max_stack_amount) if(isitem(created)) created.pixel_x = created.base_pixel_x + rand(-6, 6) created.pixel_y = created.base_pixel_y + rand(-6, 6) number_to_make -= max_stack_amount - created = design.create_result(target, design_materials, amount = number_to_make) - else - created = design.create_result(target, design_materials) - split_materials_uniformly(design_materials, material_cost_coefficient, created) + created = design.create_result(target, design.materials, amount = number_to_make) + if(design.inherit_materials != DESIGN_DONT_INHERIT_MATS) + design.transfer_materials(design.materials, material_cost_coefficient, created) if(isitem(created)) created.pixel_x = created.base_pixel_x + rand(-6, 6) diff --git a/code/modules/research/ordnance/tank_compressor.dm b/code/modules/research/ordnance/tank_compressor.dm index 3662df233da7..09ec863f03dc 100644 --- a/code/modules/research/ordnance/tank_compressor.dm +++ b/code/modules/research/ordnance/tank_compressor.dm @@ -170,8 +170,8 @@ new_record.name = "Log Recording #[record_number]" new_record.experiment_source = inserted_tank.name new_record.timestamp = "[server_timestamp(ic_time = TRUE)]" // DARKPACK EDIT CHANGE - CITY_TIME - for(var/gas_path in leaked_gas_buffer.gases) - new_record.gas_data[gas_path] = leaked_gas_buffer.gases[gas_path][MOLES] + for(var/gas_path, amount in leaked_gas_buffer.moles) + new_record.gas_data[gas_path] = amount compressor_record += new_record record_number += 1 diff --git a/code/modules/research/part_replacer.dm b/code/modules/research/part_replacer.dm index 3b022850f654..e96a7b809277 100644 --- a/code/modules/research/part_replacer.dm +++ b/code/modules/research/part_replacer.dm @@ -9,6 +9,7 @@ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_HUGE storage_type = /datum/storage/rped + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/storage/part_replacer/interact_with_atom(obj/attacked_object, mob/living/user, list/modifiers) if(user.combat_mode) @@ -58,6 +59,7 @@ inhand_icon_state = "BS_RPED" w_class = WEIGHT_CLASS_NORMAL storage_type = /datum/storage/rped/bluespace + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25) /obj/item/storage/part_replacer/bluespace/Initialize(mapload) . = ..() @@ -102,7 +104,14 @@ target_holder.force_stop_reacting() target_holder.clear_reagents() to_chat(usr, span_notice("[src] churns as [inserted_component] has its reagents emptied into bluespace.")) - target_holder.flags = target_holder.flags << 5 //masks all flags upto DUNKABLE(1<<5) i.e. removes all methods of transfering reagents to/from the object + RegisterSignal(target_holder, COMSIG_REAGENTS_PRE_ADD_REAGENT, PROC_REF(on_insered_component_reagent_pre_add)) + +/// Hooks [COMSIG_REAGENTS_PRE_ADD_REAGENT] to block adding any form of reagent to component beakers inside the RPED +/obj/item/storage/part_replacer/bluespace/proc/on_insered_component_reagent_pre_add(datum/source, reagent, amount, reagtemp, data, no_react) + SIGNAL_HANDLER + + return COMPONENT_CANCEL_REAGENT_ADD + /** * Signal handler for a part is removed from the BRPED. * Restores original reagents of the component part, if it has any. @@ -112,7 +121,7 @@ var/datum/reagents/target_holder = removed_component.reagents if(target_holder) - target_holder.flags = target_holder.flags >> 5 //restores all flags upto DUNKABLE(1<<5) + UnregisterSignal(target_holder, COMSIG_REAGENTS_PRE_ADD_REAGENT) //RPED with tiered contents /obj/item/storage/part_replacer/bluespace/tier1/PopulateContents() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 60fa59075563..33e689100c55 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -19,6 +19,7 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole name = "R&D Console" desc = "A console used to interface with R&D tools." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/rdconsole") icon_screen = "rdcomp" icon_keyboard = "rd_key" circuit = /obj/item/circuitboard/computer/rdconsole @@ -189,6 +190,7 @@ Nothing else in the console has ID requirements. /obj/machinery/computer/rdconsole/ui_assets(mob/user) return list( + get_asset_datum(/datum/asset/spritesheet_batched/sheetmaterials), get_asset_datum(/datum/asset/spritesheet_batched/research_designs), ) @@ -317,8 +319,17 @@ Nothing else in the console has ID requirements. var/datum/design/design = SSresearch.techweb_designs[design_id] || SSresearch.error_design var/compressed_id = "[compress_id(design.id)]" var/size = spritesheet.icon_size_id(design.id) + + var/cost = list() + var/list/materials = design.materials + for(var/datum/material/mat in materials) + cost[mat.name] = OPTIMAL_COST(materials[mat]) + design_cache[compressed_id] = list( design.name, + cost, + design.build_type, + design.departmental_flags, "[size == size32x32 ? "" : "[size] "][design.id]" ) @@ -327,10 +338,23 @@ Nothing else in the console has ID requirements. for (var/id in id_cache) flat_id_cache += id + var/list/department_flags = list() + for (var/datum/job_department/department as anything in subtypesof(/datum/job_department)) + if (department::department_bitflags) + department_flags["[department::department_bitflags]"] = department::department_name + + // Don't pass away flags as those are irrelevant to the station + var/list/build_types = GLOB.build_types_to_string.Copy() + build_types -= "[AWAY_IMPRINTER]" + build_types -= "[AWAY_LATHE]" + .["static_data"] = list( "node_cache" = node_cache, "design_cache" = design_cache, "id_cache" = flat_id_cache, + "SHEET_MATERIAL_AMOUNT" = SHEET_MATERIAL_AMOUNT, + "build_types" = build_types, + "department_flags" = department_flags, ) /obj/machinery/computer/rdconsole/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) diff --git a/code/modules/research/relics.dm b/code/modules/research/relics.dm index fe957d81f320..049352a40d10 100644 --- a/code/modules/research/relics.dm +++ b/code/modules/research/relics.dm @@ -401,17 +401,15 @@ playsound(user, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) throw_smoke(user) - // carbons always get a hat at least - var/mob/living/carbon/carbonius = user - //hat - var/obj/item/clothing/head/costume/disguise_hat = roll_costume(ITEM_SLOT_HEAD, HIDEMASK) - carbonius.dropItemToGround(carbonius.head) - carbonius.equip_to_slot_or_del(disguise_hat, ITEM_SLOT_HEAD) - if(!ishuman(carbonius)) + if(!ishuman(user)) to_chat(user, span_notice("You have a peculiar feeling for a moment, but then it passes.")) return - var/mob/living/carbon/human/humerus = carbonius + var/mob/living/carbon/human/humerus = user + //hat + var/obj/item/clothing/head/costume/disguise_hat = roll_costume(ITEM_SLOT_HEAD, HIDEMASK) + humerus.dropItemToGround(humerus.head) + humerus.equip_to_slot_or_del(disguise_hat, ITEM_SLOT_HEAD) // uniform var/obj/item/clothing/under/costume/disguise_uniform = roll_costume(ITEM_SLOT_ICLOTHING) humerus.dropItemToGround(humerus.w_uniform) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index ffbf453f3937..661d0e1c3c7c 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -31,32 +31,32 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good name = "capacitor" desc = "A basic capacitor used in the construction of a variety of devices." icon_state = "capacitor" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/scanning_module name = "scanning module" desc = "A compact, high resolution scanning module used in the construction of certain devices." icon_state = "scan_module" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/stock_parts/servo name = "micro-servo" desc = "A tiny little servo motor used in the construction of certain devices." icon_state = "micro_servo" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT) base_name = "servo" /obj/item/stock_parts/micro_laser name = "micro-laser" desc = "A tiny laser used in certain devices." icon_state = "micro_laser" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/stock_parts/matter_bin name = "matter bin" desc = "A container designed to hold compressed matter awaiting reconstruction." icon_state = "matter_bin" - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT) //Rating 2 @@ -66,7 +66,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "adv_capacitor" rating = 2 energy_rating = 3 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) /obj/item/stock_parts/scanning_module/adv name = "advanced scanning module" @@ -74,7 +74,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "adv_scan_module" rating = 2 energy_rating = 3 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/servo/nano name = "nano-servo" @@ -82,7 +82,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "nano_servo" rating = 2 energy_rating = 3 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5) /obj/item/stock_parts/micro_laser/high name = "high-power micro-laser" @@ -90,7 +90,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "high_micro_laser" rating = 2 energy_rating = 3 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/matter_bin/adv name = "advanced matter bin" @@ -98,7 +98,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "advanced_matter_bin" rating = 2 energy_rating = 3 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5) //Rating 3 @@ -108,7 +108,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "super_capacitor" rating = 3 energy_rating = 5 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/scanning_module/phasic name = "phasic scanning module" @@ -116,7 +116,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "super_scan_module" rating = 3 energy_rating = 5 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/stock_parts/servo/pico name = "pico-servo" @@ -124,7 +124,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "pico_servo" rating = 3 energy_rating = 5 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) /obj/item/stock_parts/micro_laser/ultra name = "ultra-high-power micro-laser" @@ -132,7 +132,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good desc = "A tiny laser used in certain devices." rating = 3 energy_rating = 5 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/stock_parts/matter_bin/super name = "super matter bin" @@ -140,7 +140,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "super_matter_bin" rating = 3 energy_rating = 5 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) //Rating 4 @@ -150,7 +150,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "quadratic_capacitor" rating = 4 energy_rating = 10 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/scanning_module/triphasic name = "triphasic scanning module" @@ -158,7 +158,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "triphasic_scan_module" rating = 4 energy_rating = 10 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.3) /obj/item/stock_parts/servo/femto name = "femto-servo" @@ -166,7 +166,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "femto_servo" rating = 4 energy_rating = 10 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 0.3) /obj/item/stock_parts/micro_laser/quadultra name = "quad-ultra micro-laser" @@ -174,7 +174,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good desc = "A tiny laser used in certain devices." rating = 4 energy_rating = 10 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/uranium = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.6) /obj/item/stock_parts/matter_bin/bluespace name = "bluespace matter bin" @@ -182,7 +182,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good icon_state = "bluespace_matter_bin" rating = 4 energy_rating = 10 - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT) // Subspace stock parts @@ -195,43 +195,43 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good name = "subspace ansible" icon_state = "subspace_ansible" desc = "A compact module capable of sensing extradimensional activity." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/filter name = "hyperwave filter" icon_state = "hyperwave_filter" desc = "A tiny device capable of filtering and converting super-intense radio waves." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/amplifier name = "subspace amplifier" icon_state = "subspace_amplifier" desc = "A compact micro-machine capable of amplifying weak subspace transmissions." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/treatment name = "subspace treatment disk" icon_state = "treatment_disk" desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) + custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/analyzer name = "subspace wavelength analyzer" icon_state = "wavelength_analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/crystal name = "ansible crystal" icon_state = "ansible_crystal" desc = "A crystal made from pure glass used to transmit laser databursts to subspace." - custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT) /obj/item/stock_parts/subspace/transmitter name = "subspace transmitter" icon_state = "subspace_transmitter" desc = "A large piece of equipment used to open a window into the subspace dimension." - custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5) + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT) // Misc. Parts diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm index a2f8871d6f54..d560dff6afe6 100644 --- a/code/modules/research/techweb/nodes/security_nodes.dm +++ b/code/modules/research/techweb/nodes/security_nodes.dm @@ -5,6 +5,7 @@ description = "Ballistics can be unpredictable in space." design_ids = list( "toy_armblade", + "toy_katana", "toygun", "c38_rubber", "c38_rubber_mag", diff --git a/code/modules/research/techweb/nodes/service_nodes.dm b/code/modules/research/techweb/nodes/service_nodes.dm index c0a07e72c68d..c1e5abb7bd11 100644 --- a/code/modules/research/techweb/nodes/service_nodes.dm +++ b/code/modules/research/techweb/nodes/service_nodes.dm @@ -38,6 +38,7 @@ "water_balloon", "ticket_machine", "radio_entertainment", + "rdd", "photocopier", ) diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index bfc0f0b6dc98..f24108a4a054 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -113,7 +113,7 @@ Chilling extracts: var/datum/gas_mixture/G = T.air if(istype(G)) G.assert_gas(/datum/gas/plasma) - G.gases[/datum/gas/plasma][MOLES] = 0 + G.moles[/datum/gas/plasma] = 0 filtered = TRUE G.garbage_collect() T.air_update_turf(FALSE, FALSE) diff --git a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm index cfc3e56bc5b1..e8ecf571a7ef 100644 --- a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm +++ b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm @@ -6,6 +6,7 @@ icon_state = "biopsy" worn_icon_state = "biopsy" base_icon_state = "biopsy" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5) /// Whether or not we can swab objects var/can_swap_objects = FALSE diff --git a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm index c26906c00912..20adbc60f182 100644 --- a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm +++ b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "petri_dish" w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) ///The sample stored on the dish var/datum/biological_sample/sample diff --git a/code/modules/research/xenobiology/vatgrowing/swab.dm b/code/modules/research/xenobiology/vatgrowing/swab.dm index 4236c9c7ac99..06d947568a7a 100644 --- a/code/modules/research/xenobiology/vatgrowing/swab.dm +++ b/code/modules/research/xenobiology/vatgrowing/swab.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "swab" w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) ///Adds the swabbing component to the biopsy tool /obj/item/swab/Initialize(mapload) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index b26e759c2187..a0e8ad988692 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -31,6 +31,7 @@ networks = list(CAMERANET_NETWORK_SS13) circuit = /obj/item/circuitboard/computer/xenobiology + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/xenobio") icon_screen = "slime_comp" icon_keyboard = "rd_key" @@ -266,7 +267,12 @@ target_turf.balloon_alert(user, "not enough monkeys") return - var/mob/living/carbon/human/species/monkey/food = new /mob/living/carbon/human/species/monkey(target_turf, TRUE, user) + var/cap = CONFIG_GET(number/monkeycap) + if (LAZYLEN(SSmobs.cubemonkeys) >= cap) + to_chat(user, span_warning("Bluespace harmonics prevent the creation of more than [cap] monkeys on the station at one time!")) + return + + var/mob/living/carbon/human/species/monkey/food = new /mob/living/carbon/human/species/monkey(target_turf, TRUE) if (QDELETED(food)) return diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 594094deefd6..3def867181e2 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -822,6 +822,8 @@ GLOBAL_LIST_INIT(slime_extract_auto_activate_reactions, init_slime_auto_activate var/obj/item/implant/radio/syndicate/imp = new(src) imp.implant(smart_mob, user) smart_mob.AddComponent(/datum/component/simple_access, list(ACCESS_SYNDICATE, ACCESS_MAINT_TUNNELS)) + var/obj/item/implant/implanter = SSwardrobe.provide_type(/obj/item/implant/tacmap/nuclear/cayenne, src) + implanter.implant(src, null, TRUE) /obj/item/slimepotion/sentience/nuclear/dangerous_horse name = "dangerous pony potion" @@ -1043,6 +1045,11 @@ GLOBAL_LIST_INIT(slime_extract_auto_activate_reactions, init_slime_auto_activate to_chat(user, span_warning("The potion can only be used on gendered things!")) return ITEM_INTERACT_BLOCKING + if(living_mob.mind) + if (!do_after(user, delay = 5 SECONDS, target = living_mob)) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + if(living_mob.gender == MALE) living_mob.gender = FEMALE living_mob.visible_message(span_boldnotice("[living_mob] suddenly looks more feminine!"), span_boldwarning("You suddenly feel more feminine!")) diff --git a/code/modules/shuttle/misc/shuttle_remote.dm b/code/modules/shuttle/misc/shuttle_remote.dm index 795fe7fd2a17..8b026f994302 100644 --- a/code/modules/shuttle/misc/shuttle_remote.dm +++ b/code/modules/shuttle/misc/shuttle_remote.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/devices/remote.dmi' icon_state = "shuttleremote" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT) /// if the docks may be changed var/may_change_docks = TRUE //if this is set to FALSE make sure the shuttle it will be linked to does NOT get to have multiple instances of itself /// the port where the shuttle leaves to diff --git a/code/modules/shuttle/misc/spaceship_navigation_beacon.dm b/code/modules/shuttle/misc/spaceship_navigation_beacon.dm index 41b3f5e39ed9..9aa7245b46bb 100644 --- a/code/modules/shuttle/misc/spaceship_navigation_beacon.dm +++ b/code/modules/shuttle/misc/spaceship_navigation_beacon.dm @@ -98,6 +98,7 @@ desc = "A compact radio navigation gigabeacon, a device used to provide shuttle navigation waypoints in unexplored areas. Must be deployed before use." icon = 'icons/obj/machines/navigation_beacon.dmi' icon_state = "beacon_folded" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/folded_navigation_gigabeacon/Initialize(mapload) . = ..() diff --git a/code/modules/shuttle/misc/special.dm b/code/modules/shuttle/misc/special.dm index e1bd0f77b774..b6ffa89365e8 100644 --- a/code/modules/shuttle/misc/special.dm +++ b/code/modules/shuttle/misc/special.dm @@ -60,8 +60,8 @@ active = FALSE update_appearance() -/obj/machinery/power/emitter/energycannon/magical/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - return +/obj/machinery/power/emitter/energycannon/magical/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return NONE /obj/machinery/power/emitter/energycannon/magical/ex_act(severity) return FALSE @@ -249,8 +249,8 @@ /obj/machinery/scanner_gate/luxury_shuttle/auto_scan(atom/movable/AM) return -/obj/machinery/scanner_gate/luxury_shuttle/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - return +/obj/machinery/scanner_gate/luxury_shuttle/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return NONE /obj/machinery/scanner_gate/luxury_shuttle/emag_act(mob/user, obj/item/card/emag/emag_card) return FALSE diff --git a/code/modules/shuttle/mobile_port/variants/arrivals.dm b/code/modules/shuttle/mobile_port/variants/arrivals.dm index bcb2db4e78eb..838fdd4c7c1f 100644 --- a/code/modules/shuttle/mobile_port/variants/arrivals.dm +++ b/code/modules/shuttle/mobile_port/variants/arrivals.dm @@ -41,6 +41,8 @@ new_latejoin += shuttle_chair if(isnull(console)) console = locate() in arrival_turf + if(SStts.tts_enabled && console) + console.voice = SStts.tram_voice RegisterSignal(console, COMSIG_QDELETING, PROC_REF(find_console)) areas += arrival_area @@ -114,6 +116,8 @@ var/obj/machinery/requests_console/target = locate() in arrival_turf if(!QDELETED(target)) console = target + if(SStts.tts_enabled && console) + console.voice = SStts.tram_voice RegisterSignal(console, COMSIG_QDELETING, PROC_REF(find_console)) return diff --git a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm index c37cb6cef7d5..e725fc93721b 100644 --- a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm +++ b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm @@ -129,6 +129,7 @@ attack_verb_continuous = list("attacks", "baps", "hits") attack_verb_simple = list("attack", "bap", "hit") interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) var/base_desc = "A blank sheet of synthetic engineering-grade paper." var/linked_desc = "A sheet of synthetic engineering-grade paper with shuttle schematics printed on it." @@ -149,6 +150,10 @@ prox_monitor = new(src, 0, FALSE) update_appearance() +/obj/item/shuttle_blueprints/Destroy(force) + QDEL_NULL(prox_monitor) + return ..() + /obj/item/shuttle_blueprints/equipped(mob/user, slot, initial) . = ..() var/static/list/connections = list(COMSIG_ITEM_PRE_ATTACK = PROC_REF(christen_check)) diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm index 08eeef8be76e..ef185d21d9c9 100644 --- a/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm +++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm @@ -6,6 +6,7 @@ /obj/machinery/computer/emergency_shuttle name = "emergency shuttle console" desc = "For shuttle control." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/shuttle") icon_screen = "shuttle" icon_keyboard = "tech_key" resistance_flags = INDESTRUCTIBLE @@ -42,10 +43,11 @@ if(hijack_announce) . += span_warning("It is probably best to fortify your position as to be uninterrupted during the attempt, given the automatic announcements..") -/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,list/modifiers) - if(isidcard(I)) - say("Please equip your ID card into your ID slot to authenticate.") - . = ..() +/obj/machinery/computer/emergency_shuttle/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isidcard(tool)) + return NONE + say("Please equip your ID card into your ID slot to authenticate.") + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/emergency_shuttle/ui_state(mob/user) return GLOB.human_adjacent_state diff --git a/code/modules/shuttle/mobile_port/variants/emergency/pods.dm b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm index 6d9460f1435a..3fa9e281bc52 100644 --- a/code/modules/shuttle/mobile_port/variants/emergency/pods.dm +++ b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm @@ -23,8 +23,8 @@ name = "pod control computer" locked = TRUE possible_destinations = "pod_asteroid" - icon = 'icons/obj/machines/wallmounts.dmi' - icon_state = "pod_off" + icon = MAP_SWITCH('icons/obj/machines/wallmounts.dmi', 'icons/obj/fluff/map_previews.dmi') + icon_state = MAP_SWITCH("pod_off", "/obj/machinery/computer/shuttle/pod") circuit = /obj/item/circuitboard/computer/emergency_pod light_color = LIGHT_COLOR_BLUE density = FALSE diff --git a/code/modules/shuttle/shuttle_consoles/shuttle_console.dm b/code/modules/shuttle/shuttle_consoles/shuttle_console.dm index 141f5769db0f..ef7c9949498d 100644 --- a/code/modules/shuttle/shuttle_consoles/shuttle_console.dm +++ b/code/modules/shuttle/shuttle_consoles/shuttle_console.dm @@ -9,6 +9,7 @@ /obj/machinery/computer/shuttle name = "shuttle console" desc = "A shuttle control computer." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/shuttle") icon_screen = "shuttle" icon_keyboard = "tech_key" light_color = LIGHT_COLOR_CYAN diff --git a/code/modules/shuttle/shuttle_consoles/syndicate.dm b/code/modules/shuttle/shuttle_consoles/syndicate.dm index 07115b52636e..dc387091ddc7 100644 --- a/code/modules/shuttle/shuttle_consoles/syndicate.dm +++ b/code/modules/shuttle/shuttle_consoles/syndicate.dm @@ -4,6 +4,7 @@ name = "syndicate shuttle terminal" desc = "The terminal used to control the syndicate transport shuttle." circuit = /obj/item/circuitboard/computer/syndicate_shuttle + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate") icon_screen = "syndishuttle" icon_keyboard = "syndie_key" light_color = COLOR_SOFT_RED @@ -56,6 +57,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate name = "syndicate shuttle navigation computer" desc = "Used to designate a precise transit location for the syndicate shuttle." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate") icon_screen = "syndishuttle" icon_keyboard = "syndie_key" shuttleId = "syndicate" diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index ccbf0097cda5..4e1495f22705 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -313,6 +313,8 @@ if(!caster.get_organ_slot(ORGAN_SLOT_TONGUE)) invocation(caster) to_chat(caster, span_warning("Your lack of tongue is making it difficult to say the correct words to cast [src]...")) + if(caster.click_intercept == src) + unset_click_ability(caster, refund_cooldown = TRUE) StartCooldown(2 SECONDS) return SPELL_CANCEL_CAST @@ -324,6 +326,8 @@ ignored_mobs = caster, ) to_chat(caster, span_warning("You can't position your hands correctly to invoke [src][caster.num_hands > 0 ? "" : ", as you have none"]...")) + if(caster.click_intercept == src) + unset_click_ability(caster, refund_cooldown = TRUE) StartCooldown(2 SECONDS) return SPELL_CANCEL_CAST diff --git a/code/modules/spells/spell_types/pointed/tie_shoes.dm b/code/modules/spells/spell_types/pointed/tie_shoes.dm index 0ff4e744161e..ac82f460a2cb 100644 --- a/code/modules/spells/spell_types/pointed/tie_shoes.dm +++ b/code/modules/spells/spell_types/pointed/tie_shoes.dm @@ -73,7 +73,7 @@ if(HAS_TRAIT(owner, TRAIT_SPLATTERCASTER)) shoe_to_cast = /obj/item/clothing/shoes/laceup - var/obj/item/clothing/shoes/shoes_to_tie = cast_on.shoes + var/obj/item/clothing/shoes/shoes_to_tie = cast_on.get_item_by_slot(ITEM_SLOT_FEET) if(isnull(shoes_to_tie)) if(!summons_shoes) diff --git a/code/modules/spells/spell_types/self/spacetime_distortion.dm b/code/modules/spells/spell_types/self/spacetime_distortion.dm index 9c3b81872261..df04e5939d3c 100644 --- a/code/modules/spells/spell_types/self/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/self/spacetime_distortion.dm @@ -101,7 +101,6 @@ var/antimagic_flags = MAGIC_RESISTANCE var/obj/effect/cross_action/spacetime_dist/linked_dist var/busy = FALSE - var/sound var/walks_left = 50 //prevents the game from hanging in extreme cases (such as minigun fire) /obj/effect/cross_action/singularity_act() @@ -133,7 +132,7 @@ busy = TRUE flick("purplesparkles", src) AM.forceMove(get_turf(src)) - playsound(get_turf(src),sound,70,FALSE) + playsound(src, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) busy = FALSE /obj/effect/cross_action/spacetime_dist/proc/on_entered(datum/source, atom/movable/AM) @@ -141,11 +140,12 @@ if(!busy) walk_link(AM) -/obj/effect/cross_action/spacetime_dist/attackby(obj/item/W, mob/user, list/modifiers, list/attack_modifiers) - if(user.temporarilyRemoveItemFromInventory(W)) - walk_link(W) +/obj/effect/cross_action/spacetime_dist/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.temporarilyRemoveItemFromInventory(tool)) + walk_link(tool) else walk_link(user) + return ITEM_INTERACT_SUCCESS //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/effect/cross_action/spacetime_dist/attack_hand(mob/user, list/modifiers) diff --git a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm index 5d03acb297a3..2c146b712714 100644 --- a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm @@ -165,9 +165,9 @@ new_shape.add_traits(list(TRAIT_DONT_WRITE_MEMORY, TRAIT_SHAPESHIFTED), SHAPESHIFT_TRAIT) // Make sure that if you shapechanged into a bot, the AI can't just turn you off. - var/mob/living/simple_animal/bot/polymorph_bot = new_shape + var/mob/living/basic/bot/polymorph_bot = new_shape if (istype(polymorph_bot)) - polymorph_bot.bot_cover_flags |= BOT_COVER_EMAGGED + polymorph_bot.bot_access_flags |= BOT_COVER_EMAGGED polymorph_bot.bot_mode_flags &= ~BOT_MODE_REMOTE_ENABLED new_shape.storyteller_stats = caster.storyteller_stats // DARKPACK EDIT ADD - STORYTELLER_STATS diff --git a/code/modules/spells/spell_types/touch/duffelbag_curse.dm b/code/modules/spells/spell_types/touch/duffelbag_curse.dm index c4882ba5365f..771fbfac8130 100644 --- a/code/modules/spells/spell_types/touch/duffelbag_curse.dm +++ b/code/modules/spells/spell_types/touch/duffelbag_curse.dm @@ -41,7 +41,7 @@ victim.Knockdown(5 SECONDS) // If someone's already cursed, don't try to give them another - if(istype(victim.back, /obj/item/storage/backpack/duffelbag/cursed)) + if(istype(victim.get_item_by_slot(ITEM_SLOT_BACK), /obj/item/storage/backpack/duffelbag/cursed)) to_chat(caster, span_warning("The burden of [victim]'s duffel bag becomes too much, shoving them to the floor!")) to_chat(victim, span_warning("The weight of this bag becomes overburdening!")) return TRUE @@ -57,7 +57,7 @@ conjured_duffel.forceMove(victim) // Put it on their back first - if(victim.dropItemToGround(victim.back)) + if(victim.dropItemToGround(victim.get_item_by_slot(ITEM_SLOT_BACK))) victim.equip_to_slot_if_possible(conjured_duffel, ITEM_SLOT_BACK, TRUE, TRUE) return TRUE diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 1a7a6033c50a..a8f3e3d8fdbe 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -161,7 +161,9 @@ var/list/applied_items ///A list of all bodypart overlays to draw - var/list/bodypart_overlays = list() + var/list/bodypart_overlays + ///A list of all bodypart textures to apply + var/list/bodypart_textures /// Type of an attack from this limb does. Arms will do punches, Legs for kicks, and head for bites. (TO ADD: tactical chestbumps) var/attack_type = BRUTE @@ -216,7 +218,7 @@ /// get_damage() / total_damage must surpass this to allow our limb to be disabled, even temporarily, by an EMP. var/robotic_emp_paralyze_damage_percent_threshold = 0.3 /// A potential texturing overlay to put on the limb - var/datum/bodypart_overlay/texture/texture_bodypart_overlay + var/datum/bodypart_texture/texture_bodypart_overlay /// Lazylist of /datum/status_effect/grouped/bodypart_effect types. Instances of this are applied to the carbon when added the limb is attached, and merged with similair limbs var/list/bodypart_effects /// The cached info about the blood this organ belongs to, set during on_removal() @@ -298,9 +300,18 @@ owner = null - QDEL_LIST_ASSOC_VAL(applied_items) + if(LAZYLEN(applied_items)) + QDEL_LIST_ASSOC_VAL(applied_items) QDEL_LAZYLIST(scars) + // Overlays and textures may be owned by something else like a status effect, + // so we'll just remove them all rather than delete them + // Worst case scenario they'll just get swept up by GC and which is fine + for(var/datum/bodypart_overlay/remaining_overlay in bodypart_overlays) + remove_bodypart_overlay(remaining_overlay, update = FALSE) + for(var/datum/bodypart_texture/remaining_texture in bodypart_textures) + remove_bodypart_texture(remaining_texture, update = FALSE) + for(var/atom/movable/movable in contents) qdel(movable) @@ -777,7 +788,7 @@ check_wounding(wounding_type, wounding_dmg, wound_bonus, exposed_wound_bonus, attack_direction, damage_source = damage_source, wound_clothing = wound_clothing) for(var/datum/wound/iter_wound as anything in wounds) - iter_wound.receive_damage(wounding_type, wounding_dmg, wound_bonus, damage_source) + iter_wound.receive_damage(wounding_type, wounding_dmg, wound_bonus, attack_direction, damage_source) /* // END WOUND HANDLING @@ -1401,30 +1412,38 @@ // Add two masked images based on the old one . += leg_source.generate_masked_leg(limb_image) + // Apply height to the overlays we generated so far + // This is done before collecting bodypart overlays so we don't apply height twice to the same overlays + if(!dropped && !isnull(owner)) + for(var/image/generated_overlay as anything in .) + // While you may think that heads could be applied with UPPER_BODY instead of ENTIRE_BODY to save us one filter, + // it's more important to keep it consistent for things like getflaticon + owner.apply_height(generated_overlay, ENTIRE_BODY) + // Draw external organs like horns and frills + // Height is applied again in here so we can specify where the overlay is set (ie offset_location) for(var/datum/bodypart_overlay/overlay as anything in bodypart_overlays) - if(!overlay.can_draw_on_bodypart(src, owner, is_husked)) + if(!overlay.can_draw_on_bodypart(src, owner)) continue - // Some externals have multiple layers for background, foreground and between - for(var/external_layer in overlay.all_layers) - if(!(overlay.layers & external_layer)) + for (var/mutable_appearance/actual_overlay as anything in overlay.get_all_overlays(src)) + if(dropped || isnull(owner)) + . += image(actual_overlay, dir = SOUTH) continue - var/external_overlay = overlay.get_overlay(external_layer, src, is_husked) - if (!dropped) - . += external_overlay - continue + owner.apply_height(actual_overlay, overlay.offset_location) + . += actual_overlay - if (!islist(external_overlay)) - . += image(external_overlay, dir = SOUTH) + // Then texture everything at once, including bodypart overlays + for(var/datum/bodypart_texture/texture as anything in bodypart_textures) + if(!texture.can_texture_bodypart(src)) + continue + for(var/image/generated_overlay as anything in .) + var/appearance_plane = PLANE_TO_TRUE(generated_overlay.plane) + if(appearance_plane != FLOAT_PLANE && appearance_plane != GAME_PLANE) continue - for (var/mutable_appearance/actual_overlay as anything in external_overlay) - . += image(actual_overlay, dir = SOUTH) - - for(var/datum/layer in .) - overlay.modify_bodypart_appearance(layer) + texture.modify_bodypart_appearance(generated_overlay) SEND_SIGNAL(src, COMSIG_BODYPART_GET_LIMB_ICON, ., dropped) return . @@ -1441,24 +1460,95 @@ husk_blood.color = LAZYLEN(blood_dna_info) ? get_color_from_blood_list(blood_dna_info) : BLOOD_COLOR_RED return husk_blood -///Add a bodypart overlay and call the appropriate update procs +/** + * Adds a bodypart overlay to the limb + * + * * overlay: The overlay to add. Either an instance of a bodypart overlay or a typepath of a bodypart overlay. + * If you pass a typepath, the proc will avoid creating duplicates. + * * update: Whether to call update procs after adding the overlay. + * Set this to FALSE if you are adding multiple overlays at once. + * + * Returns the overlay that was added, or null if it was not added. + */ /obj/item/bodypart/proc/add_bodypart_overlay(datum/bodypart_overlay/overlay, update = TRUE) - bodypart_overlays += overlay + if(ispath(overlay, /datum/bodypart_overlay)) + if(locate(overlay) in bodypart_overlays) + return null + overlay = new overlay() + + LAZYADD(bodypart_overlays, overlay) overlay.added_to_limb(src) if(!update) - return - if(!owner) + return overlay + if(isnull(owner)) update_icon_dropped() else if(!(owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) owner.update_body_parts() + return overlay -///Remove a bodypart overlay and call the appropriate update procs +/** + * Removes a bodypart overlay from the limb + * + * * overlay: The overlay to remove. Either an instance of a bodypart overlay or a typepath of a bodypart overlay. + * If you pass a typepath, the first overlay of that typepath found will be removed. + * * update: Whether to call update procs after removing the overlay. + * Set this to FALSE if you are removing multiple overlays at once. + */ /obj/item/bodypart/proc/remove_bodypart_overlay(datum/bodypart_overlay/overlay, update = TRUE) - bodypart_overlays -= overlay + if(ispath(overlay, /datum/bodypart_overlay)) + overlay = locate(overlay) in bodypart_overlays + if(isnull(overlay)) + return + + LAZYREMOVE(bodypart_overlays, overlay) overlay.removed_from_limb(src) if(!update) return - if(!owner) + if(isnull(owner)) + update_icon_dropped() + else if(!(owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) + owner.update_body_parts() + +/** + * Adds a bodypart texture to the limb + * + * * texture: The texture to add. Either an instance of a bodypart texture or a typepath of a bodypart texture. + * If you pass a typepath, the proc will avoid creating duplicates. + * * update: Whether to call update procs after adding the texture. + * Set this to FALSE if you are adding multiple textures at once. + */ +/obj/item/bodypart/proc/add_bodypart_texture(datum/bodypart_texture/texture, update = TRUE) + if(ispath(texture, /datum/bodypart_texture)) + if(locate(texture) in bodypart_textures) + return + texture = new texture() + + LAZYADD(bodypart_textures, texture) + if(!update) + return + if(isnull(owner)) + update_icon_dropped() + else if(!(owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) + owner.update_body_parts() + +/** + * Removes a bodypart texture from the limb + * + * * texture: The texture to remove. Either an instance of a bodypart texture or a typepath of a bodypart texture. + * If you pass a typepath, the first texture of that typepath found will be removed. + * * update: Whether to call update procs after removing the texture. + * Set this to FALSE if you are removing multiple textures at once. + */ +/obj/item/bodypart/proc/remove_bodypart_texture(datum/bodypart_texture/texture, update = TRUE) + if(ispath(texture, /datum/bodypart_texture)) + texture = locate(texture) in bodypart_textures + if(isnull(texture)) + return + + LAZYREMOVE(bodypart_textures, texture) + if(!update) + return + if(isnull(owner)) update_icon_dropped() else if(!(owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) owner.update_body_parts() diff --git a/code/modules/surgery/bodyparts/alien_parts.dm b/code/modules/surgery/bodyparts/alien_parts.dm new file mode 100644 index 000000000000..60978212cc7e --- /dev/null +++ b/code/modules/surgery/bodyparts/alien_parts.dm @@ -0,0 +1,125 @@ +/obj/item/bodypart/head/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_head" + limb_id = BODYPART_ID_ALIEN + is_dimorphic = FALSE + should_draw_greyscale = FALSE + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + max_damage = LIMB_MAX_HP_ALIEN_CORE + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + biological_state = BIO_STANDARD_ALIEN + +/obj/item/bodypart/head/larva + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "larva_head" + limb_id = BODYPART_ID_LARVA + is_dimorphic = FALSE + should_draw_greyscale = FALSE + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + max_damage = LIMB_MAX_HP_ALIEN_LARVA + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC + +/obj/item/bodypart/chest/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_chest" + limb_id = BODYPART_ID_ALIEN + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + is_dimorphic = FALSE + should_draw_greyscale = FALSE + bodypart_flags = BODYPART_UNREMOVABLE + max_damage = LIMB_MAX_HP_ALIEN_CORE + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + acceptable_bodyshape = BODYSHAPE_HUMANOID + wing_types = null + biological_state = BIO_STANDARD_ALIEN + +/obj/item/bodypart/chest/larva + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "larva_chest" + limb_id = BODYPART_ID_LARVA + is_dimorphic = FALSE + should_draw_greyscale = FALSE + bodypart_flags = BODYPART_UNREMOVABLE + max_damage = LIMB_MAX_HP_ALIEN_LARVA + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC + acceptable_bodytype = BODYTYPE_LARVA_PLACEHOLDER + wing_types = null + +/obj/item/bodypart/arm/left/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_l_arm" + limb_id = BODYPART_ID_ALIEN + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + can_be_disabled = FALSE + max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + should_draw_greyscale = FALSE + appendage_noun = "scythe-like hand" + biological_state = BIO_STANDARD_ALIEN + +/obj/item/bodypart/arm/right/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_r_arm" + limb_id = BODYPART_ID_ALIEN + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + can_be_disabled = FALSE + max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + should_draw_greyscale = FALSE + appendage_noun = "scythe-like hand" + biological_state = BIO_STANDARD_ALIEN + +/obj/item/bodypart/leg/left/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_l_leg" + limb_id = BODYPART_ID_ALIEN + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + can_be_disabled = FALSE + max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + should_draw_greyscale = FALSE + biological_state = BIO_STANDARD_ALIEN + +/obj/item/bodypart/leg/right/alien + icon = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' + icon_state = "alien_r_leg" + limb_id = BODYPART_ID_ALIEN + bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC + bodyshape = BODYSHAPE_HUMANOID + px_x = 0 + px_y = 0 + bodypart_flags = BODYPART_UNREMOVABLE + can_be_disabled = FALSE + max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER + should_draw_greyscale = FALSE + biological_state = BIO_STANDARD_ALIEN diff --git a/code/modules/surgery/bodyparts/bodypart_effects.dm b/code/modules/surgery/bodyparts/bodypart_effects.dm index 7ebfd813c057..d8fea22b95a7 100644 --- a/code/modules/surgery/bodyparts/bodypart_effects.dm +++ b/code/modules/surgery/bodyparts/bodypart_effects.dm @@ -165,7 +165,7 @@ REMOVE_TRAIT(owner, TRAIT_IGNORE_FIRE_PROTECTION, type) return - if(environment.gases[/datum/gas/hypernoblium] && environment.gases[/datum/gas/hypernoblium][MOLES] >= 5) + if(environment.moles[/datum/gas/hypernoblium] >= 5) if(owner.on_fire && owner.fire_stacks > 0) owner.adjust_fire_stacks(-fire_stacks_loss * seconds_between_ticks * length(bodyparts)) else @@ -178,7 +178,7 @@ ADD_TRAIT(owner, TRAIT_IGNORE_FIRE_PROTECTION, type) - if(!environment.gases[/datum/gas/oxygen] || environment.gases[/datum/gas/oxygen][MOLES] < 1) //Same threshhold that extinguishes fire + if(environment.moles[/datum/gas/oxygen] < 1) //Same threshhold that extinguishes fire return owner.adjust_fire_stacks(fire_stacks_per_second * seconds_between_ticks * length(bodyparts)) diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/default_parts.dm similarity index 77% rename from code/modules/surgery/bodyparts/parts.dm rename to code/modules/surgery/bodyparts/default_parts.dm index 6c52f99300d1..1c7bdd25bd61 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/default_parts.dm @@ -38,6 +38,12 @@ /// Which functional (i.e. flightpotion) wing types (if any) does this bodypart support? If count is >1 a radial menu is used to choose between all icons in list var/list/wing_types = list(/obj/item/organ/wings/functional/angel) +/obj/item/bodypart/chest/apply_ownership(mob/living/carbon/new_owner) + . = ..() + if(ishuman(new_owner)) + var/mob/living/carbon/human/humie = new_owner + humie.update_mob_height() + /obj/item/bodypart/chest/get_butcher_drops(force = FALSE) . = ..() if(!isnull(butcher_drops) && !force) @@ -67,6 +73,21 @@ return FALSE return ..() +/** + * Calculates the expected height values for the holder of this bodypart + * + * Return a height value corresponding to a specific height filter + * Return null to just use the mob's base height + */ +/obj/item/bodypart/chest/proc/update_mob_heights(mob/living/carbon/holder) + if(HAS_TRAIT(holder, TRAIT_DWARF)) + return HUMAN_HEIGHT_DWARF + + if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) + return HUMAN_HEIGHT_TALLEST + + return null + /obj/item/bodypart/chest/Destroy() QDEL_NULL(cavity_item) QDEL_NULL(worn_uniform_offset) @@ -95,58 +116,6 @@ return icon('icons/mob/butts.dmi', human_owner.physique == FEMALE ? BUTT_SPRITE_HUMAN_FEMALE : BUTT_SPRITE_HUMAN_MALE) -/obj/item/bodypart/chest/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_chest" - limb_id = SPECIES_MONKEY - should_draw_greyscale = FALSE - is_dimorphic = FALSE - wound_resistance = -10 - bodyshape = BODYSHAPE_MONKEY - acceptable_bodyshape = BODYSHAPE_MONKEY - dmg_overlay_type = SPECIES_MONKEY - -/obj/item/bodypart/chest/monkey/Initialize(mapload) - worn_neck_offset = new( - attached_part = src, - feature_key = OFFSET_NECK, - offset_y = list("south" = 1), - ) - return ..() - -/obj/item/bodypart/chest/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_chest" - limb_id = BODYPART_ID_ALIEN - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - is_dimorphic = FALSE - should_draw_greyscale = FALSE - bodypart_flags = BODYPART_UNREMOVABLE - max_damage = LIMB_MAX_HP_ALIEN_CORE - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - acceptable_bodyshape = BODYSHAPE_HUMANOID - wing_types = null - biological_state = BIO_STANDARD_ALIEN - -/obj/item/bodypart/chest/larva - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "larva_chest" - limb_id = BODYPART_ID_LARVA - is_dimorphic = FALSE - should_draw_greyscale = FALSE - bodypart_flags = BODYPART_UNREMOVABLE - max_damage = LIMB_MAX_HP_ALIEN_LARVA - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC - acceptable_bodytype = BODYTYPE_LARVA_PLACEHOLDER - wing_types = null - /// Parent Type for arms, should not appear in game. /obj/item/bodypart/arm abstract_type = /obj/item/bodypart/arm @@ -352,41 +321,6 @@ UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM)) RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM), PROC_REF(on_owner_paralysis_gain)) -/obj/item/bodypart/arm/left/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_l_arm" - limb_id = SPECIES_MONKEY - should_draw_greyscale = FALSE - bodyshape = BODYSHAPE_MONKEY - wound_resistance = -10 - px_x = -5 - px_y = -3 - dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 3 - unarmed_damage_high = 8 - unarmed_effectiveness = 5 - appendage_noun = "paw" - -/obj/item/bodypart/arm/left/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_l_arm" - limb_id = BODYPART_ID_ALIEN - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - can_be_disabled = FALSE - max_damage = LIMB_MAX_HP_ALIEN_LIMBS - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - should_draw_greyscale = FALSE - appendage_noun = "scythe-like hand" - biological_state = BIO_STANDARD_ALIEN - /obj/item/bodypart/arm/right name = "right arm" desc = "Over 87% of humans are right handed. That figure is much lower \ @@ -435,41 +369,6 @@ UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM)) RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM), PROC_REF(on_owner_paralysis_gain)) -/obj/item/bodypart/arm/right/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_r_arm" - limb_id = SPECIES_MONKEY - bodyshape = BODYSHAPE_MONKEY - should_draw_greyscale = FALSE - wound_resistance = -10 - px_x = 5 - px_y = -3 - dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 3 - unarmed_damage_high = 8 - unarmed_effectiveness = 0 - appendage_noun = "paw" - -/obj/item/bodypart/arm/right/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_r_arm" - limb_id = BODYPART_ID_ALIEN - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - can_be_disabled = FALSE - max_damage = LIMB_MAX_HP_ALIEN_LIMBS - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - should_draw_greyscale = FALSE - appendage_noun = "scythe-like hand" - biological_state = BIO_STANDARD_ALIEN - /// Parent Type for legs, should not appear in game. /obj/item/bodypart/leg abstract_type = /obj/item/bodypart/leg @@ -603,39 +502,6 @@ UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG)) RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG), PROC_REF(on_owner_paralysis_gain)) -/obj/item/bodypart/leg/left/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_l_leg" - limb_id = SPECIES_MONKEY - should_draw_greyscale = FALSE - bodyshape = BODYSHAPE_MONKEY - wound_resistance = -10 - px_y = 4 - dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 2 - unarmed_damage_high = 3 - unarmed_effectiveness = 5 - footprint_sprite = FOOTPRINT_SPRITE_PAWS - -/obj/item/bodypart/leg/left/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_l_leg" - limb_id = BODYPART_ID_ALIEN - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - can_be_disabled = FALSE - max_damage = LIMB_MAX_HP_ALIEN_LIMBS - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - should_draw_greyscale = FALSE - biological_state = BIO_STANDARD_ALIEN - /obj/item/bodypart/leg/right name = "right leg" desc = "You put your right leg in, your right leg out. In, out, in, out, \ @@ -682,37 +548,3 @@ REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_LEG) UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_LEG)) RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_LEG), PROC_REF(on_owner_paralysis_gain)) - - -/obj/item/bodypart/leg/right/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_r_leg" - limb_id = SPECIES_MONKEY - should_draw_greyscale = FALSE - bodyshape = BODYSHAPE_MONKEY - wound_resistance = -10 - px_y = 4 - dmg_overlay_type = SPECIES_MONKEY - unarmed_damage_low = 2 - unarmed_damage_high = 3 - unarmed_effectiveness = 5 - footprint_sprite = FOOTPRINT_SPRITE_PAWS - -/obj/item/bodypart/leg/right/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_r_leg" - limb_id = BODYPART_ID_ALIEN - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - can_be_disabled = FALSE - max_damage = LIMB_MAX_HP_ALIEN_LIMBS - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - should_draw_greyscale = FALSE - biological_state = BIO_STANDARD_ALIEN diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index acc1468e506d..b780bc2536be 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -200,7 +200,7 @@ arm_owner.dropItemToGround(lost_cuffs, force = TRUE) arm_owner.hud_used?.update_inventory_slot(ITEM_SLOT_HANDS, held_index) if(arm_owner.num_hands == 0) - arm_owner.dropItemToGround(arm_owner.gloves, force = TRUE) + arm_owner.dropItemToGround(arm_owner.get_item_by_slot(ITEM_SLOT_GLOVES), force = TRUE) arm_owner.update_worn_gloves() //to remove the bloody hands overlay /obj/item/bodypart/leg/drop_limb(special, dismembered, move_to_floor = TRUE) @@ -209,12 +209,12 @@ if(special || !leg_owner) return leg_owner.dropItemToGround(leg_owner.legcuffed, force = TRUE) - leg_owner.dropItemToGround(leg_owner.shoes, force = TRUE) + leg_owner.dropItemToGround(leg_owner.get_item_by_slot(ITEM_SLOT_FEET), force = TRUE) /obj/item/bodypart/head/drop_limb(special, dismembered, move_to_floor = TRUE) if(!special) //Drop all worn head items - for(var/obj/item/head_item as anything in list(owner.glasses, owner.ears, owner.wear_mask, owner.head)) + for(var/obj/item/head_item as anything in owner.get_items_by_slots(ITEM_SLOT_EYES | ITEM_SLOT_EARS | ITEM_SLOT_MASK | ITEM_SLOT_HEAD)) owner.dropItemToGround(head_item, force = TRUE) //Handle dental implants diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 3a2f4ef01fa8..2b7e84f49fe0 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -216,59 +216,3 @@ if (ishuman(owner)) var/mob/living/carbon/human/as_human = owner as_human?.update_visible_name() - -/obj/item/bodypart/head/monkey - icon = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' - icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' - husk_type = "monkey" - icon_state = "default_monkey_head" - limb_id = SPECIES_MONKEY - bodyshape = BODYSHAPE_MONKEY - should_draw_greyscale = FALSE - dmg_overlay_type = SPECIES_MONKEY - is_dimorphic = FALSE - head_flags = HEAD_LIPS|HEAD_DEBRAIN - -/obj/item/bodypart/head/monkey/Initialize(mapload) - worn_head_offset = new( - attached_part = src, - feature_key = OFFSET_HEAD, - offset_y = list("south" = 1), - ) - worn_glasses_offset = new( - attached_part = src, - feature_key = OFFSET_GLASSES, - offset_y = list("south" = 1), - ) - return ..() - -/obj/item/bodypart/head/alien - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "alien_head" - limb_id = BODYPART_ID_ALIEN - is_dimorphic = FALSE - should_draw_greyscale = FALSE - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - max_damage = LIMB_MAX_HP_ALIEN_CORE - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC - bodyshape = BODYSHAPE_HUMANOID - biological_state = BIO_STANDARD_ALIEN - -/obj/item/bodypart/head/larva - icon = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_static = 'icons/mob/human/species/alien/bodyparts.dmi' - icon_state = "larva_head" - limb_id = BODYPART_ID_LARVA - is_dimorphic = FALSE - should_draw_greyscale = FALSE - px_x = 0 - px_y = 0 - bodypart_flags = BODYPART_UNREMOVABLE - max_damage = LIMB_MAX_HP_ALIEN_LARVA - burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER - bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index fe5d9c6e14d7..62a7e7e5635f 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -27,6 +27,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) brute_modifier = 0.8 burn_modifier = 0.8 @@ -46,6 +47,11 @@ bodypart_flags = BODYPART_UNHUSKABLE butcher_replacement = null +/obj/item/bodypart/arm/left/robot/generate_icon_key() + . = ..() + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + /obj/item/bodypart/arm/right/robot name = "cyborg right arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." @@ -62,6 +68,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) brute_modifier = 0.8 burn_modifier = 0.8 @@ -82,6 +89,11 @@ bodypart_flags = BODYPART_UNHUSKABLE butcher_replacement = null +/obj/item/bodypart/arm/right/robot/generate_icon_key() + . = ..() + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + /obj/item/bodypart/leg/left/robot name = "cyborg left leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." @@ -98,6 +110,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) brute_modifier = 0.8 burn_modifier = 0.8 @@ -118,6 +131,11 @@ bodypart_flags = BODYPART_UNHUSKABLE butcher_replacement = null +/obj/item/bodypart/leg/left/robot/generate_icon_key() + . = ..() + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + /obj/item/bodypart/leg/left/robot/emp_effect(severity, protection) . = ..() if(!. || isnull(owner)) @@ -148,6 +166,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) brute_modifier = 0.8 burn_modifier = 0.8 @@ -168,6 +187,11 @@ bodypart_flags = BODYPART_UNHUSKABLE butcher_replacement = null +/obj/item/bodypart/leg/right/robot/generate_icon_key() + . = ..() + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + /obj/item/bodypart/leg/right/robot/emp_effect(severity, protection) . = ..() if(!. || isnull(owner)) @@ -197,6 +221,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20) brute_modifier = 0.8 burn_modifier = 0.8 @@ -222,6 +247,13 @@ var/wired = FALSE var/obj/item/stock_parts/power_store/cell = null +/obj/item/bodypart/chest/robot/generate_icon_key() + . = ..() + // When we reskin cybernetic limbs, we solely change their icon, nothing else + // So we need to include the relevant icon in the cache key + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + /obj/item/bodypart/chest/robot/emp_effect(severity, protection) . = ..() if(!. || isnull(owner)) @@ -375,6 +407,7 @@ bodyshape = BODYSHAPE_HUMANOID change_exempt_flags = BP_BLOCK_CHANGE_SPECIES dmg_overlay_type = "robotic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) brute_modifier = 0.8 burn_modifier = 0.8 @@ -398,6 +431,11 @@ var/obj/item/assembly/flash/handheld/flash1 = null var/obj/item/assembly/flash/handheld/flash2 = null +/obj/item/bodypart/head/robot/generate_icon_key() + . = ..() + if(limb_id == BODYPART_ID_ROBOTIC) + . += should_draw_greyscale ? icon_greyscale : icon_static + #define EMP_GLITCH "EMP_GLITCH" /obj/item/bodypart/head/robot/emp_effect(severity, protection) @@ -558,6 +596,7 @@ max_damage = LIMB_MAX_HP_ADVANCED body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED is_emissive = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) /obj/item/bodypart/arm/right/robot/advanced name = "advanced robotic right arm" @@ -570,6 +609,7 @@ max_damage = LIMB_MAX_HP_ADVANCED body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED is_emissive = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) /obj/item/bodypart/leg/left/robot/advanced name = "advanced robotic left leg" @@ -582,6 +622,7 @@ max_damage = LIMB_MAX_HP_ADVANCED body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED is_emissive = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) /obj/item/bodypart/leg/right/robot/advanced name = "advanced robotic right leg" @@ -594,6 +635,7 @@ max_damage = LIMB_MAX_HP_ADVANCED body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED is_emissive = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) #undef ROBOTIC_LIGHT_BRUTE_MSG #undef ROBOTIC_MEDIUM_BRUTE_MSG diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm index 06c919753727..e5fe9829bdb3 100644 --- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm @@ -105,7 +105,6 @@ species_color = eth_holder.current_color /obj/item/bodypart/head/ethereal/lustrous - icon_state = "lustrous_head" limb_id = SPECIES_ETHEREAL_LUSTROUS head_flags = NONE teeth_count = 0 // bro you seen these thinsg. they got a crystal for a head aint no teeth here diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index 527416060132..d4b815a0c00b 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -206,12 +206,12 @@ /obj/item/bodypart/leg/left/zombie/infectious limb_id = SPECIES_ZOMBIE should_draw_greyscale = TRUE // DARKPACK EDIT CHANGE - ORIGINAL: should_draw_grayscale = FALSE - speed_modifier = 0.8 //braaaaains + speed_modifier = 0.5 //braaaaains /obj/item/bodypart/leg/right/zombie/infectious limb_id = SPECIES_ZOMBIE should_draw_greyscale = TRUE // DARKPACK EDIT CHANGE - ORIGINAL: should_draw_grayscale = FALSE - speed_modifier = 0.8 //braaaaains + speed_modifier = 0.5 //braaaaains ///PODPEOPLE /obj/item/bodypart/head/pod @@ -434,6 +434,7 @@ limb_id = BODYPART_ID_BONE // These are always disabled disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/head/skeleton/nonfunctional/Initialize(mapload) . = ..() @@ -442,6 +443,7 @@ /obj/item/bodypart/chest/skeleton/nonfunctional limb_id = BODYPART_ID_BONE disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/chest/skeleton/nonfunctional/Initialize(mapload) . = ..() @@ -460,6 +462,7 @@ /obj/item/bodypart/arm/left/skeleton/nonfunctional limb_id = BODYPART_ID_BONE disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/arm/left/skeleton/nonfunctional/Initialize(mapload) . = ..() @@ -468,6 +471,7 @@ /obj/item/bodypart/arm/right/skeleton/nonfunctional limb_id = BODYPART_ID_BONE disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/arm/right/skeleton/nonfunctional/Initialize(mapload) . = ..() @@ -476,6 +480,7 @@ /obj/item/bodypart/leg/left/skeleton/nonfunctional limb_id = BODYPART_ID_BONE disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/leg/left/skeleton/nonfunctional/Initialize(mapload) . = ..() @@ -484,6 +489,7 @@ /obj/item/bodypart/leg/right/skeleton/nonfunctional limb_id = BODYPART_ID_BONE disabling_threshold_percentage = 0 + bodypart_disabled = TRUE /obj/item/bodypart/leg/right/skeleton/nonfunctional/Initialize(mapload) . = ..() diff --git a/code/modules/surgery/bodyparts/species_parts/monkey_parts.dm b/code/modules/surgery/bodyparts/species_parts/monkey_parts.dm new file mode 100644 index 000000000000..0e6df81ed4ae --- /dev/null +++ b/code/modules/surgery/bodyparts/species_parts/monkey_parts.dm @@ -0,0 +1,132 @@ +/obj/item/bodypart/head/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_head" + limb_id = SPECIES_MONKEY + bodyshape = BODYSHAPE_MONKEY + should_draw_greyscale = FALSE + dmg_overlay_type = SPECIES_MONKEY + is_dimorphic = FALSE + head_flags = HEAD_LIPS|HEAD_DEBRAIN + +/obj/item/bodypart/head/monkey/Initialize(mapload) + worn_head_offset = new( + attached_part = src, + feature_key = OFFSET_HEAD, + offset_y = list("south" = 1), + ) + worn_glasses_offset = new( + attached_part = src, + feature_key = OFFSET_GLASSES, + offset_y = list("south" = 1), + ) + return ..() + +/obj/item/bodypart/chest/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_chest" + limb_id = SPECIES_MONKEY + should_draw_greyscale = FALSE + is_dimorphic = FALSE + wound_resistance = -10 + bodyshape = BODYSHAPE_MONKEY + acceptable_bodyshape = BODYSHAPE_MONKEY + dmg_overlay_type = SPECIES_MONKEY + bodypart_traits = list( + TRAIT_PASSTABLE, + TRAIT_VENTCRAWLER_NUDE, + TRAIT_NO_AUGMENTS, + TRAIT_NO_UNDERWEAR, + ) + +/obj/item/bodypart/chest/monkey/Initialize(mapload) + worn_neck_offset = new( + attached_part = src, + feature_key = OFFSET_NECK, + offset_y = list("south" = 1), + ) + return ..() + +/obj/item/bodypart/chest/monkey/update_mob_heights(mob/living/carbon/holder) + if(HAS_TRAIT(holder, TRAIT_DWARF)) + return MONKEY_HEIGHT_DWARF + + if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) + return MONKEY_HEIGHT_TALL + + return MONKEY_HEIGHT_MEDIUM + +/obj/item/bodypart/arm/left/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_l_arm" + limb_id = SPECIES_MONKEY + should_draw_greyscale = FALSE + bodyshape = BODYSHAPE_MONKEY + wound_resistance = -10 + px_x = -5 + px_y = -3 + dmg_overlay_type = SPECIES_MONKEY + unarmed_damage_low = 3 + unarmed_damage_high = 8 + unarmed_effectiveness = 5 + appendage_noun = "paw" + +/obj/item/bodypart/arm/right/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_r_arm" + limb_id = SPECIES_MONKEY + bodyshape = BODYSHAPE_MONKEY + should_draw_greyscale = FALSE + wound_resistance = -10 + px_x = 5 + px_y = -3 + dmg_overlay_type = SPECIES_MONKEY + unarmed_damage_low = 3 + unarmed_damage_high = 8 + unarmed_effectiveness = 0 + appendage_noun = "paw" + +/obj/item/bodypart/leg/left/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_l_leg" + limb_id = SPECIES_MONKEY + should_draw_greyscale = FALSE + bodyshape = BODYSHAPE_MONKEY + wound_resistance = -10 + px_y = 4 + dmg_overlay_type = SPECIES_MONKEY + unarmed_damage_low = 2 + unarmed_damage_high = 3 + unarmed_effectiveness = 5 + footprint_sprite = FOOTPRINT_SPRITE_PAWS + +/obj/item/bodypart/leg/right/monkey + icon = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_static = 'icons/mob/human/species/monkey/bodyparts.dmi' + icon_husk = 'icons/mob/human/species/monkey/bodyparts.dmi' + husk_type = "monkey" + icon_state = "default_monkey_r_leg" + limb_id = SPECIES_MONKEY + should_draw_greyscale = FALSE + bodyshape = BODYSHAPE_MONKEY + wound_resistance = -10 + px_y = 4 + dmg_overlay_type = SPECIES_MONKEY + unarmed_damage_low = 2 + unarmed_damage_high = 3 + unarmed_effectiveness = 5 + footprint_sprite = FOOTPRINT_SPRITE_PAWS diff --git a/code/modules/surgery/bodyparts/worn_feature_offset.dm b/code/modules/surgery/bodyparts/worn_feature_offset.dm index 3fee7097d2d4..9161974a9694 100644 --- a/code/modules/surgery/bodyparts/worn_feature_offset.dm +++ b/code/modules/surgery/bodyparts/worn_feature_offset.dm @@ -37,7 +37,7 @@ return ..() /// Returns the current offset which should be used for this feature -/datum/worn_feature_offset/proc/get_offset() +/datum/worn_feature_offset/proc/get_offset() as /list var/current_dir = owner ? owner.dir : SOUTH if(ISDIAGONALDIR(current_dir)) current_dir = current_dir & (EAST|WEST) diff --git a/code/modules/surgery/operations/operation_cavity_implant.dm b/code/modules/surgery/operations/operation_cavity_implant.dm index c6032e934034..ed1e9850c960 100644 --- a/code/modules/surgery/operations/operation_cavity_implant.dm +++ b/code/modules/surgery/operations/operation_cavity_implant.dm @@ -34,6 +34,41 @@ . = ..() limb.add_surgical_state(SURGERY_CAVITY_WIDENED) +/datum/surgery_operation/limb/undo_prepare_cavity + name = "close chest cavity" + desc = "Reset a patient's chest cavity." + implements = list( + TOOL_RETRACTOR = 1, + TOOL_CROWBAR = 1.5, + ) + time = 4.8 SECONDS + preop_sound = 'sound/items/handling/surgery/retractor1.ogg' + success_sound = 'sound/items/handling/surgery/retractor2.ogg' + all_surgery_states_required = SURGERY_SKIN_OPEN|SURGERY_ORGANS_CUT|SURGERY_CAVITY_WIDENED + +/datum/surgery_operation/limb/undo_prepare_cavity/get_default_radial_image() + return image(/obj/item/retractor) + +/datum/surgery_operation/limb/undo_prepare_cavity/all_required_strings() + return list("operate on chest (target chest)") + ..() + +/datum/surgery_operation/limb/undo_prepare_cavity/state_check(obj/item/bodypart/chest/limb) + return limb.body_zone == BODY_ZONE_CHEST + +/datum/surgery_operation/limb/undo_prepare_cavity/on_preop(obj/item/bodypart/chest/limb, mob/living/surgeon, tool, list/operation_args) + display_results( + surgeon, + limb.owner, + span_notice("You begin to close [FORMAT_LIMB_OWNER(limb)] cavity..."), + span_notice("[surgeon] begins to close [FORMAT_LIMB_OWNER(limb)] cavity."), + span_notice("[surgeon] begins to close [FORMAT_LIMB_OWNER(limb)] cavity."), + ) + display_pain(limb.owner, "You can feel pressure as your [limb.plaintext_zone] is being closed!") + +/datum/surgery_operation/limb/undo_prepare_cavity/on_success(obj/item/bodypart/chest/limb, mob/living/surgeon, tool, list/operation_args) + . = ..() + limb.remove_surgical_state(SURGERY_CAVITY_WIDENED) + /datum/surgery_operation/limb/cavity_implant name = "cavity implant" desc = "Implant an item into a patient's body cavity." diff --git a/code/modules/surgery/operations/operation_dissection.dm b/code/modules/surgery/operations/operation_dissection.dm index 74c119edd635..4fbb57b0ce5b 100644 --- a/code/modules/surgery/operations/operation_dissection.dm +++ b/code/modules/surgery/operations/operation_dissection.dm @@ -126,13 +126,13 @@ /// proc that changes name and icon depending on value /obj/item/research_notes/proc/change_vol() - if(value >= 10000) + if(value >= TECHWEB_TIER_5_POINTS) name = "revolutionary discovery in the field of [origin_type]" icon_state = "docs_verified" - else if(value >= 2500) + else if(value >= TECHWEB_TIER_3_POINTS) name = "essay about [origin_type]" icon_state = "paper_words" - else if(value >= 100) + else if(value >= TECHWEB_TIER_1_POINTS) name = "notes of [origin_type]" icon_state = "paperslip_words" else diff --git a/code/modules/surgery/operations/operation_generic.dm b/code/modules/surgery/operations/operation_generic.dm index d3de2375cd39..6658c0dda90c 100644 --- a/code/modules/surgery/operations/operation_generic.dm +++ b/code/modules/surgery/operations/operation_generic.dm @@ -386,7 +386,7 @@ ) time = 4 SECONDS all_surgery_states_required = SURGERY_SKIN_OPEN - any_surgery_states_required = SURGERY_BONE_SAWED|SURGERY_BONE_DRILLED + any_surgery_states_required = ALL_SURGERY_BONE_STATES allow_stumps = TRUE /datum/surgery_operation/limb/fix_bones/get_default_radial_image() @@ -418,7 +418,10 @@ /datum/surgery_operation/limb/fix_bones/on_success(obj/item/bodypart/limb) . = ..() - limb.remove_surgical_state(SURGERY_BONE_SAWED|SURGERY_BONE_DRILLED) + // if the limb lacks skin, fix bones needs to act as an analog to mend incision (clearing most surgical states) + if(!LIMB_HAS_SKIN(limb)) + limb.remove_surgical_state(ALL_SURGERY_STATES_UNSET_ON_CLOSE) + limb.remove_surgical_state(ALL_SURGERY_BONE_STATES) limb.heal_damage(40) /datum/surgery_operation/limb/drill_bones diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index 064565b90901..1ac1840418d6 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -442,8 +442,8 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) replacement.set_organ_damage(damage) /// Called by medical scanners to get a simple summary of how healthy the organ is. Returns an empty string if things are fine. -/obj/item/organ/proc/get_status_text(advanced, add_tooltips, colored = TRUE) - if(advanced && (organ_flags & ORGAN_HAZARDOUS)) +/obj/item/organ/proc/get_status_text(scanpower, add_tooltips, colored = TRUE) + if(scanpower >= SCANPOWER_ADVANCED && (organ_flags & ORGAN_HAZARDOUS)) return conditional_tooltip("[colored ? "" : ""]Harmful Foreign Body[colored ? "" : ""]", "Remove surgically.", add_tooltips) if(organ_flags & ORGAN_EMP) @@ -473,7 +473,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) return (organ_flags & (ORGAN_PROMINENT|ORGAN_HAZARDOUS|ORGAN_FAILING|ORGAN_VITAL)) /// Similar to get_status_text, but appends the text after the damage report, for additional status info -/obj/item/organ/proc/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/proc/get_status_appendix(scanpower, add_tooltips) return /** diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm index e3fcdc925000..c2d1e07f0d00 100644 --- a/code/modules/surgery/organs/external/_visual_organs.dm +++ b/code/modules/surgery/organs/external/_visual_organs.dm @@ -90,13 +90,10 @@ Unlike normal organs, we're actually inside a persons limbs at all times /obj/item/organ/update_overlays() . = ..() - if(!use_mob_sprite_as_obj_sprite) + if(!use_mob_sprite_as_obj_sprite || isnull(bodypart_owner) || isnull(bodypart_overlay)) return - //Build the mob sprite and use it as our overlay - for(var/external_layer in bodypart_overlay.all_layers) - if(bodypart_overlay.layers & external_layer) - . += bodypart_overlay.get_overlay(external_layer, bodypart_owner, bodypart_owner?.is_husked) + . += bodypart_overlay.get_all_overlays(bodypart_owner) ///The horns of a lizard! /obj/item/organ/horns @@ -115,12 +112,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL /datum/bodypart_overlay/mutant/horns - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) feature_key = FEATURE_HORNS dyable = TRUE draw_on_husks = HUSK_OVERLAY_NORMAL + offset_location = UPPER_BODY -/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) ///The frills of a lizard (like weird fin ears) @@ -140,33 +138,34 @@ Unlike normal organs, we're actually inside a persons limbs at all times organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL /datum/bodypart_overlay/mutant/frills - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) feature_key = FEATURE_FRILLS + offset_location = UPPER_BODY -/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) -/datum/bodypart_overlay/mutant/frills/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/frills/icon_render_key(obj/item/bodypart/limb) . = ..() if(LAZYLEN(limb?.owner?.hair_masks)) . += jointext(limb.owner.hair_masks, ",") -/datum/bodypart_overlay/mutant/frills/get_image(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/frills/get_image(obj/item/bodypart/limb, layer_index, layer_real) if(!LAZYLEN(limb?.owner?.hair_masks)) return ..() var/list/hair_masks_to_use = limb.owner.hair_masks - var/icon_state_to_use = build_icon_state(image_layer, limb) + var/icon_state_to_use = build_icon_state(layer_index, limb) var/frill_cache_key = "[sprite_datum.type]-[icon_state_to_use]-[jointext(hair_masks_to_use, ",")]" var/static/list/cached_frill_icons var/icon/cached_icon = LAZYACCESS(cached_frill_icons, frill_cache_key) if(isnull(cached_icon)) - cached_icon = icon(sprite_datum.icon, build_icon_state(image_layer, limb)) + cached_icon = icon(sprite_datum.icon, build_icon_state(layer_index, limb)) for(var/datum/hair_mask/mask as anything in hair_masks_to_use) cached_icon.Blend(icon(mask::icon, mask::icon_state), ICON_ADD) LAZYSET(cached_frill_icons, frill_cache_key, cached_icon) - var/mutable_appearance/uncached_appearance = mutable_appearance(cached_icon, layer = image_layer) + var/mutable_appearance/uncached_appearance = mutable_appearance(cached_icon, layer = layer_real) if(sprite_datum.center) center_image(uncached_appearance, sprite_datum.dimension_x, sprite_datum.dimension_y) return uncached_appearance @@ -208,11 +207,12 @@ Unlike normal organs, we're actually inside a persons limbs at all times return ..() /datum/bodypart_overlay/mutant/snout - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) feature_key = FEATURE_SNOUT draw_on_husks = HUSK_OVERLAY_GRAYSCALE + offset_location = UPPER_BODY -/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDESNOUT) ///A moth's antennae @@ -277,9 +277,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times ///Moth antennae datum, with full burning functionality /datum/bodypart_overlay/mutant/antennae - layers = EXTERNAL_FRONT | EXTERNAL_BEHIND + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER + ) feature_key = FEATURE_MOTH_ANTENNAE dyable = TRUE + offset_location = UPPER_BODY ///Accessory datum of the burn sprite var/datum/sprite_accessory/burn_datum = /datum/sprite_accessory/moth_antennae/burnt_off ///Are we burned? If so we draw differently @@ -293,7 +297,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times /datum/bodypart_overlay/mutant/antennae/get_base_icon_state() return burnt ? burn_datum.icon_state : sprite_datum.icon_state -/datum/bodypart_overlay/mutant/antennae/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/antennae/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEANTENNAE) ///The leafy hair of a podperson @@ -315,17 +319,21 @@ Unlike normal organs, we're actually inside a persons limbs at all times ///Podperson bodypart overlay, with special coloring functionality to render the flowers in the inverse color /datum/bodypart_overlay/mutant/pod_hair - layers = EXTERNAL_FRONT|EXTERNAL_ADJACENT + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_ADJACENT = BODY_ADJ_LAYER + ) feature_key = FEATURE_POD_HAIR dyable = TRUE + offset_location = UPPER_BODY ///This layer will be colored differently than the rest of the organ. So we can get differently colored flowers or something var/color_swapped_layer = EXTERNAL_FRONT ///The individual rgb colors are subtracted from this to get the color shifted layer var/color_inverse_base = 255 -/datum/bodypart_overlay/mutant/pod_hair/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(draw_layer != bitflag_to_layer(color_swapped_layer)) +/datum/bodypart_overlay/mutant/pod_hair/color_image(image/overlay, obj/item/bodypart/limb, layer_index) + if(layer_index != color_swapped_layer) return ..() var/color_to_use = dye_color || draw_color @@ -335,5 +343,5 @@ Unlike normal organs, we're actually inside a persons limbs at all times else overlay.color = null -/datum/bodypart_overlay/mutant/pod_hair/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/pod_hair/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm index e6bbbb59f553..5783fd7290f3 100644 --- a/code/modules/surgery/organs/external/spines.dm +++ b/code/modules/surgery/organs/external/spines.dm @@ -28,12 +28,16 @@ ///Bodypart overlay for spines /datum/bodypart_overlay/mutant/spines - layers = EXTERNAL_ADJACENT|EXTERNAL_BEHIND + layers = list( + EXTERNAL_ADJACENT = BODY_ADJ_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER + ) feature_key = FEATURE_SPINES dyable = TRUE draw_on_husks = HUSK_OVERLAY_GRAYSCALE + offset_location = ENTIRE_BODY -/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ) diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm index 67891dcd06d6..e737a9736421 100644 --- a/code/modules/surgery/organs/external/tails.dm +++ b/code/modules/surgery/organs/external/tails.dm @@ -140,14 +140,18 @@ ///Tail parent type, with wagging functionality /datum/bodypart_overlay/mutant/tail - layers = EXTERNAL_FRONT|EXTERNAL_BEHIND + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER, + ) dyable = TRUE + offset_location = ENTIRE_BODY var/wagging = FALSE /datum/bodypart_overlay/mutant/tail/get_base_icon_state() return "[wagging ? "wagging_" : ""][sprite_datum.icon_state]" //add the wagging tag if we be wagging -/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /obj/item/organ/tail/cat @@ -251,9 +255,13 @@ ///Bodypart overlay for tail spines. Handled by the tail - has no actual organ associated. /datum/bodypart_overlay/mutant/tail_spines - layers = EXTERNAL_ADJACENT|EXTERNAL_BEHIND + layers = list( + EXTERNAL_ADJACENT = BODY_ADJ_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER + ) feature_key = FEATURE_TAILSPINES draw_on_husks = HUSK_OVERLAY_GRAYSCALE + offset_location = ENTIRE_BODY ///Spines wag when the tail does var/wagging = FALSE /// Key for tail spine states, depends on the shape of the tail. Defined in the tail sprite datum. @@ -262,7 +270,7 @@ /datum/bodypart_overlay/mutant/tail_spines/get_base_icon_state() return (!isnull(tail_spine_key) ? "[tail_spine_key]_" : "") + (wagging ? "wagging_" : "") + sprite_datum.icon_state // Select the wagging state if appropriate -/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEJUMPSUIT) /datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ) diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm index f1be5fc90bab..94be1033112e 100644 --- a/code/modules/surgery/organs/external/wings/functional_wings.dm +++ b/code/modules/surgery/organs/external/wings/functional_wings.dm @@ -124,7 +124,7 @@ human.add_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) human.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings) human.AddElement(/datum/element/forced_gravity, 0) - passtable_on(human, SPECIES_FLIGHT_TRAIT) + ADD_TRAIT(human, TRAIT_PASSTABLE, SPECIES_FLIGHT_TRAIT) open_wings() to_chat(human, span_notice("You beat your wings and begin to hover gently above the ground...")) human.set_resting(FALSE, TRUE) @@ -135,7 +135,7 @@ human.remove_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) human.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings) human.RemoveElement(/datum/element/forced_gravity, 0) - passtable_off(human, SPECIES_FLIGHT_TRAIT) + REMOVE_TRAIT(human, TRAIT_PASSTABLE, SPECIES_FLIGHT_TRAIT) to_chat(human, span_notice("You settle gently back onto the ground...")) close_wings() human.refresh_gravity() @@ -183,7 +183,7 @@ feature_key = initial(feature_key) set_appearance_from_name(sprite_datum.name) -/datum/bodypart_overlay/mutant/wings/functional/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/wings/functional/icon_render_key(obj/item/bodypart/limb) . = ..() . += wings_open ? "open" : "closed" diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm index 4acc944a608c..f026771f9170 100644 --- a/code/modules/surgery/organs/external/wings/moth_wings.dm +++ b/code/modules/surgery/organs/external/wings/moth_wings.dm @@ -94,7 +94,10 @@ ///Moth wing bodypart overlay, including burn functionality! /datum/bodypart_overlay/mutant/wings/moth feature_key = FEATURE_MOTH_WINGS - layers = EXTERNAL_BEHIND | EXTERNAL_FRONT + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER, + ) slot_blocker = HIDEMUTWINGS ///Accessory datum of the burn sprite var/datum/sprite_accessory/burn_datum = /datum/sprite_accessory/moth_wings/burnt_off diff --git a/code/modules/surgery/organs/external/wings/wings.dm b/code/modules/surgery/organs/external/wings/wings.dm index bdb5c9087dd3..672e13c81a2e 100644 --- a/code/modules/surgery/organs/external/wings/wings.dm +++ b/code/modules/surgery/organs/external/wings/wings.dm @@ -22,10 +22,15 @@ ///Bodypart overlay of default wings. Does not have any wing functionality /datum/bodypart_overlay/mutant/wings - layers = ALL_EXTERNAL_OVERLAYS + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER, + EXTERNAL_ADJACENT = BODY_ADJ_LAYER, + ) feature_key = FEATURE_WINGS + offset_location = ENTIRE_BODY /// Slot we check against var/slot_blocker = HIDEJUMPSUIT -/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & slot_blocker) diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm index 0f759ebe110b..1542ccb6f5e3 100644 --- a/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -122,7 +122,7 @@ REMOVE_TRAIT(owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) owner.med_hud_set_status() -/obj/item/organ/appendix/get_status_text(advanced, add_tooltips, colored) +/obj/item/organ/appendix/get_status_text(scanpower, add_tooltips, colored) if(!(organ_flags & ORGAN_FAILING) && inflamation_stage) return conditional_tooltip("Inflamed", "Remove surgically.", add_tooltips) return ..() diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index b065098dc4b5..94bb97ea9a1e 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -66,10 +66,12 @@ . = ..() if(ispath(active_item)) active_item = new active_item(src) + active_item.set_custom_materials(null) items_list += WEAKREF(active_item) for(var/typepath in items_to_create) var/atom/new_item = new typepath(src) + new_item.set_custom_materials(null) items_list += WEAKREF(new_item) /obj/item/organ/cyberimp/arm/toolkit/Destroy() @@ -283,6 +285,7 @@ /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg, ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75) //The order of the item list for this implant is not alphabetized due to it actually affecting how it shows up playerside when opening the implant /obj/item/organ/cyberimp/arm/toolkit/paperwork @@ -401,6 +404,7 @@ /obj/item/circular_saw/augment, /obj/item/surgical_drapes, ) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/organ/cyberimp/arm/toolkit/surgery/emagged name = "hacked surgical toolset implant" @@ -499,10 +503,10 @@ /obj/item/organ/cyberimp/arm/strongarm/on_bodypart_remove(obj/item/bodypart/arm) . = ..() - arm.unarmed_damage_low += lower_punch_damage - arm.unarmed_damage_high += upper_punch_damage - arm.unarmed_effectiveness += punch_effectiveness_added - arm.unarmed_grab_damage_bonus += bonus_grab_damage + arm.unarmed_damage_low -= lower_punch_damage + arm.unarmed_damage_high -= upper_punch_damage + arm.unarmed_effectiveness -= punch_effectiveness_added + arm.unarmed_grab_damage_bonus -= bonus_grab_damage /obj/item/organ/cyberimp/arm/strongarm/emp_act(severity) . = ..() diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm index 318e89a3a847..b882872d467d 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm @@ -9,6 +9,7 @@ desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving." icon_state = "nutriment_implant" aug_overlay = "nutripump" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) var/hunger_threshold = NUTRITION_LEVEL_STARVING var/synthesizing = 0 var/poison_amount = 5 @@ -22,7 +23,10 @@ if(owner.nutrition <= hunger_threshold) synthesizing = TRUE - to_chat(owner, span_notice("You feel less hungry...")) + var/feed_text = "You feel less hungry..." + if(owner.nutrition >= NUTRITION_LEVEL_FED) + feed_text = "You feel very full..." + to_chat(owner, span_notice(feed_text)) owner.adjust_nutrition(25 * seconds_per_tick) addtimer(CALLBACK(src, PROC_REF(synth_cool)), 5 SECONDS) @@ -44,6 +48,20 @@ aug_overlay = "nutripump_adv" hunger_threshold = NUTRITION_LEVEL_HUNGRY poison_amount = 10 + custom_materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) + +/obj/item/organ/cyberimp/chest/nutriment/black_market + name = "nutriment pump implant PLUS PLUS PLUS" + desc = "This implant will synthesize and pump into your bloodstream a large amount of nutriment basically whenever." + icon_state = "bm_nutriment_implant" + aug_overlay = "nutripump_bm" + hunger_threshold = NUTRITION_LEVEL_FAT + poison_amount = 15 + +/obj/item/organ/cyberimp/chest/nutriment/black_market/on_life(seconds_per_tick) + . = ..() + if(owner.nutrition >= NUTRITION_LEVEL_FAT && owner.overeatduration <= OVEREAT_TIME_LIMIT) + owner.overeatduration = min(owner.overeatduration + 40 SECONDS, OVEREAT_TIME_LIMIT) /obj/item/organ/cyberimp/chest/reviver name = "reviver implant" @@ -52,6 +70,7 @@ aug_overlay = "reviver" emissive_overlay = TRUE slot = ORGAN_SLOT_HEART_AID + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3) var/revive_cost = 0 var/reviving = FALSE COOLDOWN_DECLARE(reviver_cooldown) @@ -172,6 +191,7 @@ emissive_overlay = TRUE actions_types = list(/datum/action/item_action/organ_action/toggle) w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT) var/on = FALSE /obj/item/organ/cyberimp/chest/thrusters/Initialize(mapload) @@ -283,6 +303,7 @@ Contains a slot which can be upgraded with a gravity anomaly core, improving its performance." icon_state = "herculean_implant" slot = ORGAN_SLOT_SPINE + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3) /// How much faster does the spinal implant improve our lifting speed, workout ability, reducing falling damage and improving climbing and standing speed var/athletics_boost_multiplier = 0.8 /// How much additional throwing speed does our spinal implant grant us. diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm index 19ff1031d797..1d5e48a59e66 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm @@ -56,6 +56,7 @@ icon_state = "eye_implant_medical" HUD_traits = list(TRAIT_MEDICAL_HUD) hud_color = "#1D8FEC" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/cyberimp/eyes/hud/security name = "security HUD implant" @@ -63,6 +64,7 @@ icon_state = "eye_implant_security" HUD_traits = list(TRAIT_SECURITY_HUD) hud_color = "#9A151E" + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6) /obj/item/organ/cyberimp/eyes/hud/diagnostic name = "diagnostic HUD implant" @@ -70,6 +72,7 @@ icon_state = "eye_implant_diagnostic" HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD) hud_color = "#CC6E33" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6) /obj/item/organ/cyberimp/eyes/hud/security/syndicate name = "contraband security HUD implant" diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index f3833f0b4915..2d04b6d1e438 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -45,8 +45,9 @@ limb.remove_bodypart_overlay(bodypart_aug) /datum/bodypart_overlay/augment - layers = EXTERNAL_ADJACENT + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) draw_on_husks = HUSK_OVERLAY_NORMAL + offset_location = ENTIRE_BODY /// Implant that owns this overlay var/obj/item/organ/cyberimp/implant @@ -58,13 +59,12 @@ implant = null return ..() -/datum/bodypart_overlay/augment/generate_icon_cache(obj/item/bodypart/limb) +/datum/bodypart_overlay/augment/icon_render_key(obj/item/bodypart/limb) . = ..() . += implant.get_overlay_state() -/datum/bodypart_overlay/augment/get_overlay(layer, obj/item/bodypart/limb) - layer = bitflag_to_layer(layer) - var/list/imageset = implant.get_overlay(layer, limb) +/datum/bodypart_overlay/augment/get_overlay(obj/item/bodypart/limb, layer_index, layer_real) + var/list/imageset = implant.get_overlay(layer_real, limb) if(blocks_emissive == EMISSIVE_BLOCK_NONE || !limb) return imageset @@ -105,6 +105,7 @@ name = "anti-drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." icon_state = "brain_implant_antidrop" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 4, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 4) var/active = FALSE var/list/stored_items = list() slot = ORGAN_SLOT_BRAIN_CEREBELLUM @@ -168,6 +169,7 @@ desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." icon_state = "brain_implant_rebooter" slot = ORGAN_SLOT_BRAIN_CNS + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) var/static/list/signalCache = list( COMSIG_LIVING_STATUS_STUN, @@ -250,6 +252,7 @@ icon_state = "brain_implant_connector" slot = ORGAN_SLOT_BRAIN_CNS actions_types = list(/datum/action/item_action/organ_action/use) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3) /obj/item/organ/cyberimp/brain/connector/ui_action_click() @@ -355,6 +358,7 @@ slot = ORGAN_SLOT_BRAIN_HIPPOCAMPUS emp_stun_duration = 0 SECONDS emp_immobilize_duration = 4 SECONDS + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5) /// Lazylist of surgeries this implant provides var/list/loaded_surgeries @@ -482,6 +486,7 @@ slot = ORGAN_SLOT_BREATHING_TUBE w_class = WEIGHT_CLASS_TINY aug_overlay = "breathing_tube" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity) . = ..() diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index fbcb9f79da66..16f05dd3d62e 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -60,10 +60,10 @@ if(!special) ADD_TRAIT(organ_owner, TRAIT_DEAF, NO_EARS) -/obj/item/organ/ears/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/ears/get_status_appendix(scanpower, add_tooltips) if(owner.stat == DEAD || !HAS_TRAIT(owner, TRAIT_DEAF)) return - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) if(HAS_TRAIT_FROM(owner, TRAIT_DEAF, QUIRK_TRAIT)) return conditional_tooltip("Subject is permanently deaf.", "Irreparable under normal circumstances.", add_tooltips) if(HAS_TRAIT_FROM(owner, TRAIT_DEAF, GENETIC_MUTATION)) @@ -158,35 +158,39 @@ /// Bodypart overlay for the horrible cat ears /datum/bodypart_overlay/mutant/cat_ears - layers = EXTERNAL_FRONT | EXTERNAL_BEHIND + layers = list( + EXTERNAL_FRONT = BODY_FRONT_LAYER, + EXTERNAL_BEHIND = BODY_BEHIND_LAYER + ) color_source = ORGAN_COLOR_HAIR feature_key = FEATURE_EARS dyable = TRUE + offset_location = UPPER_BODY /// Layer upon which we add the inner ears overlay var/inner_layer = EXTERNAL_FRONT -/datum/bodypart_overlay/mutant/cat_ears/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner, is_husked = FALSE) +/datum/bodypart_overlay/mutant/cat_ears/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, mob/living/carbon/owner) return ..() && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) -/datum/bodypart_overlay/mutant/cat_ears/get_image(image_layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/cat_ears/get_image(obj/item/bodypart/limb, layer_index, layer_real) var/mutable_appearance/base_ears = ..() base_ears.color = (dye_color || draw_color) // Only add inner ears on the inner layer - if(image_layer != bitflag_to_layer(inner_layer)) + if(layer_index != inner_layer) return base_ears // Construct image of inner ears, apply to base ears as an overlay feature_key += "inner" var/mutable_appearance/inner_ears = ..() feature_key = initial(feature_key) - var/mutable_appearance/ear_holder = mutable_appearance(layer = image_layer) + var/mutable_appearance/ear_holder = mutable_appearance(layer = layer_real) ear_holder.overlays += base_ears ear_holder.overlays += inner_ears return ear_holder -/datum/bodypart_overlay/mutant/cat_ears/color_image(image/overlay, layer, obj/item/bodypart/limb) +/datum/bodypart_overlay/mutant/cat_ears/color_image(image/overlay, obj/item/bodypart/limb, layer_index) return // We color base ears manually above in get_image /obj/item/organ/ears/cat/cybernetic @@ -199,20 +203,16 @@ sprite_accessory_override = /datum/sprite_accessory/ears/cat/cybernetic organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5) restyle_flags = NONE -/obj/item/organ/ears/cat/cybernetic/upgraded - name = "cybernetic cat ears" - icon_state = "ears-c-cat-u" - desc = "A cybernetic cat ear, still less durable than human ears." - damage_multiplier = 1.5 - /obj/item/organ/ears/cat/cybernetic/volume name = "volume-adjusting cybernetic cat ears" icon_state = "ears-c-cat-u2" desc = "Advanced cybernetic cat ears capable of dampening loud noises to protect their user." damage_multiplier = 1 bang_protect = 1 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/ears/cat/cybernetic/whisper name = "whisper-sensiive cybernetic cat ears" @@ -221,6 +221,7 @@ damage_multiplier = 3 // 4 would be excessive organ_traits = list(TRAIT_GOOD_HEARING) bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears/cybernetic/green + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/ears/cat/cybernetic/xray name = "wall-penetrating cybernetic cat ears" @@ -229,6 +230,7 @@ damage_multiplier = 3 // As above, 4 would be excessive organ_traits = list(TRAIT_XRAY_HEARING) bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears/cybernetic/blue + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /datum/bodypart_overlay/mutant/cat_ears/cybernetic color_source = null @@ -236,16 +238,16 @@ /// Color of the inner ear var/inner_color = "#F0004A" -/datum/bodypart_overlay/mutant/cat_ears/cybernetic/get_image(image_layer, obj/item/bodypart/limb) - if (image_layer != bitflag_to_layer(inner_layer)) +/datum/bodypart_overlay/mutant/cat_ears/cybernetic/get_image(obj/item/bodypart/limb, layer_index, layer_real) + if (layer_index != inner_layer) return ..() var/mutable_appearance/ear_holder = ..() var/mutable_appearance/inner = ear_holder.overlays[2] inner.color = inner_color return ear_holder -/datum/bodypart_overlay/mutant/cat_ears/cybernetic/get_overlay(layer, obj/item/bodypart/limb) - if (layer != inner_layer) +/datum/bodypart_overlay/mutant/cat_ears/cybernetic/get_overlay(obj/item/bodypart/limb, layer_index, layer_real) + if (layer_index != inner_layer) return ..() var/list/all_images = ..() var/mutable_appearance/ear_holder = all_images[1] @@ -259,6 +261,13 @@ /datum/bodypart_overlay/mutant/cat_ears/cybernetic/blue inner_color = "#0079EA" +/obj/item/organ/ears/cat/cybernetic/upgraded + name = "cybernetic cat ears" + icon_state = "ears-c-cat-u" + desc = "A cybernetic cat ear, still less durable than human ears." + damage_multiplier = 1.5 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) + /obj/item/organ/ears/ghost name = "ghost ears" desc = "All the more to hear you... though it can't hear through walls." @@ -287,12 +296,14 @@ damage_multiplier = 1.2 organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/organ/ears/cybernetic/upgraded name = "cybernetic ears" icon_state = "ears-c-u" desc = "A cybernetic ear, surpassing the performance of organic ears." damage_multiplier = 0.75 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/ears/cybernetic/whisper name = "whisper-sensitive cybernetic ears" @@ -303,6 +314,7 @@ // The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals // This seems like the least invasive solution organ_traits = list(TRAIT_GOOD_HEARING) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/ears/cybernetic/volume name = "volume-adjusting cybernetic ears" @@ -310,13 +322,7 @@ desc = "Advanced cybernetic ears capable of dampening loud noises to protect their user." bang_protect = EAR_PROTECTION_NORMAL damage_multiplier = 0.5 - -/obj/item/organ/ears/cybernetic/volume - name = "volume-adjusting cybernetic ears" - icon_state = "ears-c-u" - desc = "Advanced cybernetic ears capable of dampening loud noises to protect their user." - bang_protect = 1 - damage_multiplier = 0.5 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) // "X-ray ears" that let you hear through walls /obj/item/organ/ears/cybernetic/xray @@ -326,6 +332,7 @@ // Same sensitivity as felinid ears damage_multiplier = 2 organ_traits = list(TRAIT_XRAY_HEARING) + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/ears/cybernetic/emp_act(severity) . = ..() diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 8c217f55f75f..dfa710cd4fe2 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -269,11 +269,11 @@ #define OFFSET_Y 2 /// Similar to get_status_text, but appends the text after the damage report, for additional status info -/obj/item/organ/eyes/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/eyes/get_status_appendix(scanpower, add_tooltips) if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) return if(owner.is_blind()) - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) if(owner.is_blind_from(QUIRK_TRAIT)) return conditional_tooltip("Subject is permanently blind.", "Irreparable under normal circumstances.", add_tooltips) if(owner.is_blind_from(EYE_SCARRING_TRAIT)) @@ -286,7 +286,7 @@ return conditional_tooltip("Subject is blind from eye damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/oculine::name], or protect eyes with a blindfold.", add_tooltips) return "Subject is blind." if(owner.is_nearsighted()) - if(advanced) + if(scanpower >= SCANPOWER_ADVANCED) if(owner.is_nearsighted_from(QUIRK_TRAIT)) return conditional_tooltip("Subject is permanently nearsighted.", "Irreparable under normal circumstances. Prescription glasses will assuage the effects.", add_tooltips) if(owner.is_nearsighted_from(TRAIT_RIGHT_EYE_SCAR) || owner.is_nearsighted_from(TRAIT_LEFT_EYE_SCAR)) @@ -319,8 +319,8 @@ overlays += get_emissive_overlays(eye_left, eye_right, my_head) if(my_head.head_flags & HEAD_EYECOLOR) - eye_right.color = my_head.owner?.get_right_eye_color() || eye_color_right // DARKPACK EDIT CHANGE - Fixing Protean Red Eyes - Original : eye_right.color = eye_color_right || my_head.owner?.get_right_eye_color() - eye_left.color = my_head.owner?.get_left_eye_color() || eye_color_left // DARKPACK EDIT CHANGE - Fixing Protean Red Eyes - Original : eye_left.color = eye_color_left || my_head.owner?.get_left_eye_color() + eye_right.color = my_head.owner?.get_right_eye_color() || eye_color_right + eye_left.color = my_head.owner?.get_left_eye_color() || eye_color_left var/list/eyelids = get_eyelid_overlays(eye_left, eye_right, my_head) if (LAZYLEN(eyelids)) overlays += eyelids diff --git a/code/modules/surgery/organs/internal/eyes/eyes_augments.dm b/code/modules/surgery/organs/internal/eyes/eyes_augments.dm index 0cce64e4c0ca..59e263723898 100644 --- a/code/modules/surgery/organs/internal/eyes/eyes_augments.dm +++ b/code/modules/surgery/organs/internal/eyes/eyes_augments.dm @@ -6,6 +6,7 @@ failing_desc = "seems to be broken." pupils_name = "apertures" penlight_message = "are cybernetic, click-whirring as they refocus" + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/organ/eyes/robotic/emp_act(severity) . = ..() @@ -25,6 +26,7 @@ eye_color_right = "#2f3032" flash_protect = FLASH_PROTECTION_SENSITIVE penlight_message = "are low grade cybernetics, poorly compensating for the light" + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/organ/eyes/robotic/basic/emp_act(severity) . = ..() @@ -47,6 +49,7 @@ flash_protect = FLASH_PROTECTION_SENSITIVE organ_traits = list(TRAIT_XRAY_VISION) penlight_message = "are replaced by small radiation emitters and detectors" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/eyes/robotic/thermals name = "thermal eyes" @@ -61,6 +64,7 @@ flash_protect = FLASH_PROTECTION_SENSITIVE pupils_name = "slit aperatures" penlight_message = "are cybernetic, with vertically slit metalic lenses." + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/eyes/robotic/flashlight name = "flashlight eyes" @@ -108,6 +112,7 @@ flash_protect = FLASH_PROTECTION_WELDER pupils_name = "flash shields" penlight_message = "have polarized cybernetic lenses, blocking bright lights" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) /obj/item/organ/eyes/robotic/shield/Initialize(mapload) . = ..() @@ -127,6 +132,7 @@ eye_color_left = "#19191a" eye_color_right = "#19191a" actions_types = list(/datum/action/item_action/organ_action/use, /datum/action/item_action/organ_action/toggle) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/max_light_beam_distance = 5 var/obj/item/flashlight/eyelight/glow/eye /// base icon state for eye overlays @@ -399,6 +405,7 @@ flash_protect = FLASH_PROTECTION_SENSITIVE pupils_name = "aperture clusters" penlight_message = "are metal hemispheres, resembling insect eyes" + custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5) /obj/item/organ/eyes/robotic/basic/moth name = "basic robotic moth eyes" @@ -517,6 +524,7 @@ penlight_message = "are a wide reinforced faceplate with an inbuilt screen and a multitude of combat sensors" light_reactive = FALSE actions_types = list(/datum/action/item_action/organ_action/use) + custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 4) /// Used to detect when unmasked mobs enter range var/datum/proximity_monitor/tacvisor/proximity_monitor /// List of mob refs -> their overlays diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index c7b0bcce0f61..4d4753f884ff 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -47,14 +47,12 @@ /obj/item/organ/heart/Remove(mob/living/carbon/heartless, special, movement_flags) . = ..() - if(!special) - addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS) + if(!special && !QDELETED(src)) + addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS, TIMER_DELETE_ME) beat = BEAT_NONE owner?.stop_sound_channel(CHANNEL_HEARTBEAT) /obj/item/organ/heart/proc/stop_if_unowned() - if(QDELETED(src)) - return if(IS_ROBOTIC_ORGAN(src)) return if(isnull(owner)) @@ -109,7 +107,7 @@ /obj/item/organ/heart/proc/is_beating() return beating -/obj/item/organ/heart/get_status_text(advanced, add_tooltips, colored) +/obj/item/organ/heart/get_status_text(scanpower, add_tooltips, colored) if(owner.has_status_effect(/datum/status_effect/heart_attack)) return conditional_tooltip("Myocardial Infarction", "Apply defibrillation immediately. Similar electric shocks may work in emergencies.", add_tooltips) if((!beating && !(organ_flags & ORGAN_FAILING) && owner.needs_heart() && owner.stat != DEAD)) @@ -213,6 +211,7 @@ maxHealth = STANDARD_ORGAN_THRESHOLD * 0.75 //This also hits defib timer, so a bit higher than its less important counterparts failing_desc = "seems to be broken." beat_noise = "a steady fsssh of hydraulics" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// Whether or not we have a stabilization available. This prevents our owner from entering softcrit for an amount of time. var/stabilization_available = FALSE /// How long our stabilization lasts for. @@ -300,6 +299,7 @@ toxification_probability = 0 bleed_prevention = TRUE emp_vulnerability = 20 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/heart/cybernetic/surplus name = "surplus prosthetic heart" diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm index 288544cda2cb..00e0ff20a6d4 100644 --- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm +++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm @@ -12,6 +12,7 @@ toxification_probability = 0 COOLDOWN_DECLARE(survival_cooldown) + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) ///Cooldown for the activation of the organ var/survival_cooldown_time = 5 MINUTES ///The lightning effect on our mob when the implant is active @@ -110,8 +111,6 @@ if(!core) return - owner.adjust_blood_volume(5 * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL) - if(owner.health <= owner.crit_threshold) activate_survival(owner) @@ -157,6 +156,7 @@ balloon_alert(user, "core installed") playsound(src, 'sound/machines/click.ogg', 30, TRUE) add_organ_trait(TRAIT_SHOCKIMMUNE) + blood_regeneration_multiplier = 21 update_icon_state() return ITEM_INTERACT_SUCCESS @@ -188,6 +188,7 @@ . = ..() core = new /obj/item/assembly/signaler/anomaly/flux(src) add_organ_trait(TRAIT_SHOCKIMMUNE) + blood_regeneration_multiplier = 21 update_icon_state() /datum/status_effect/voltaic_overdrive diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 2b2bb77780ba..1c70956e7f40 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -246,6 +246,7 @@ maxHealth = STANDARD_ORGAN_THRESHOLD*0.5 toxTolerance = 2 liver_resistance = 0.9 * LIVER_DEFAULT_TOX_RESISTANCE // -10% + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. /obj/item/organ/liver/cybernetic/emp_act(severity) @@ -276,6 +277,7 @@ toxTolerance = 10 //can shrug off up to 10u of toxins liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE // +50% emp_vulnerability = 20 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/liver/cybernetic/surplus name = "surplus prosthetic liver" diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm index a93382c2b828..bb4f1cd0bb36 100644 --- a/code/modules/surgery/organs/internal/lungs/_lungs.dm +++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm @@ -7,8 +7,6 @@ gender = PLURAL w_class = WEIGHT_CLASS_SMALL - var/respiration_type = NONE // The type(s) of gas this lung needs for respiration - healing_factor = STANDARD_ORGAN_HEALING decay_factor = STANDARD_ORGAN_DECAY * 0.9 // fails around 16.5 minutes, lungs are one of the last organs to die (of the ones we have) @@ -94,39 +92,29 @@ var/tritium_irradiation_probability_max = 60 var/cold_message = "your face freezing and an icicle forming" - var/cold_level_1_threshold = 260 - var/cold_level_2_threshold = 200 - var/cold_level_3_threshold = 120 + var/cold_level_1_threshold = COLD_LEVEL_1_THRESHOLD + var/cold_level_2_threshold = COLD_LEVEL_2_THRESHOLD + var/cold_level_3_threshold = COLD_LEVEL_3_THRESHOLD var/cold_level_1_damage = COLD_GAS_DAMAGE_LEVEL_1 //Keep in mind with gas damage levels, you can set these to be negative, if you want someone to heal, instead. var/cold_level_2_damage = COLD_GAS_DAMAGE_LEVEL_2 var/cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3 var/cold_damage_type = BURN var/hot_message = "your face burning and a searing heat" - var/heat_level_1_threshold = 360 - var/heat_level_2_threshold = 400 - var/heat_level_3_threshold = 1000 + var/heat_level_1_threshold = HEAT_LEVEL_1_THRESHOLD + var/heat_level_2_threshold = HEAT_LEVEL_2_THRESHOLD + var/heat_level_3_threshold = HEAT_LEVEL_3_THRESHOLD var/heat_level_1_damage = HEAT_GAS_DAMAGE_LEVEL_1 var/heat_level_2_damage = HEAT_GAS_DAMAGE_LEVEL_2 var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 var/heat_damage_type = BURN - var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine - var/breath_noise = "steady in- and exhalation" -// assign the respiration_type /obj/item/organ/lungs/Initialize(mapload) . = ..() breath_out = new(BREATH_VOLUME) - if(safe_nitro_min) - respiration_type |= RESPIRATION_N2 - if(safe_oxygen_min) - respiration_type |= RESPIRATION_OXYGEN - if(safe_plasma_min) - respiration_type |= RESPIRATION_PLASMA - // Sets up what gases we want to react to, and in what way // always is always processed, while_present is called when the gas is in the breath, and on_loss is called right after a gas is lost // The naming convention goes like this @@ -251,7 +239,7 @@ // Not safe to check the old pp because of can_breath_vacuum breather.throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy) - var/gas_breathed = handle_suffocation(breather, o2_pp, safe_oxygen_min, breath.gases[/datum/gas/oxygen][MOLES]) + var/gas_breathed = handle_suffocation(breather, o2_pp, safe_oxygen_min, breath.moles[/datum/gas/oxygen]) if(o2_pp) breathe_gas_volume(breath, /datum/gas/oxygen, /datum/gas/carbon_dioxide, volume = gas_breathed) return @@ -264,7 +252,7 @@ breathe_gas_volume(breath, /datum/gas/oxygen, /datum/gas/carbon_dioxide) // Heal mob if not in crit. - if(breather.health >= breather.crit_threshold && breather.oxyloss) + if(breather.stat != SOFT_CRIT && breather.stat != HARD_CRIT && breather.get_oxy_loss()) breather.adjust_oxy_loss(-5) /// Maximum Oxygen effects. "Too much O2!" @@ -275,7 +263,7 @@ return BREATH_LOST return - var/ratio = (breath.gases[/datum/gas/oxygen][MOLES] / safe_oxygen_max) * 10 + var/ratio = (breath.moles[/datum/gas/oxygen] / safe_oxygen_max) * 10 breather.apply_damage(clamp(ratio, oxy_breath_dam_min, oxy_breath_dam_max), oxy_damage_type, spread_damage = TRUE) if(!HAS_TRAIT(breather, TRAIT_ANOSMIA)) breather.throw_alert(ALERT_TOO_MUCH_OXYGEN, /atom/movable/screen/alert/too_much_oxy) @@ -299,7 +287,7 @@ // Not safe to check the old pp because of can_breath_vacuum if(!HAS_TRAIT(breather, TRAIT_ANOSMIA)) breather.throw_alert(ALERT_NOT_ENOUGH_NITRO, /atom/movable/screen/alert/not_enough_nitro) - var/gas_breathed = handle_suffocation(breather, nitro_pp, safe_nitro_min, breath.gases[/datum/gas/nitrogen][MOLES]) + var/gas_breathed = handle_suffocation(breather, nitro_pp, safe_nitro_min, breath.moles[/datum/gas/nitrogen]) if(nitro_pp) breathe_gas_volume(breath, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, volume = gas_breathed) return @@ -354,7 +342,7 @@ if(!HAS_TRAIT(breather, TRAIT_ANOSMIA)) breather.throw_alert(ALERT_NOT_ENOUGH_PLASMA, /atom/movable/screen/alert/not_enough_plas) // Breathe insufficient amount of Plasma, exhale CO2. - var/gas_breathed = handle_suffocation(breather, plasma_pp, safe_plasma_min, breath.gases[/datum/gas/plasma][MOLES]) + var/gas_breathed = handle_suffocation(breather, plasma_pp, safe_plasma_min, breath.moles[/datum/gas/plasma]) if(plasma_pp) breathe_gas_volume(breath, /datum/gas/plasma, /datum/gas/carbon_dioxide, volume = gas_breathed) return @@ -380,7 +368,7 @@ if(!HAS_TRAIT(breather, TRAIT_ANOSMIA)) breather.throw_alert(ALERT_TOO_MUCH_PLASMA, /atom/movable/screen/alert/too_much_plas) - var/ratio = (breath.gases[/datum/gas/plasma][MOLES] / safe_plasma_max) * 10 + var/ratio = (breath.moles[/datum/gas/plasma] / safe_plasma_max) * 10 breather.apply_damage(clamp(ratio, plas_breath_dam_min, plas_breath_dam_max), plas_damage_type, spread_damage = TRUE) /// Resets plasma side effects @@ -570,7 +558,7 @@ /// Radioactive, green gas. Toxin damage, and a radiation chance /obj/item/organ/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp) var/gas_breathed = breathe_gas_volume(breath, /datum/gas/tritium) - var/moles_visible = GLOB.meta_gas_info[/datum/gas/tritium][META_GAS_MOLES_VISIBLE] * BREATH_PERCENTAGE + var/moles_visible = GLOB.meta_gas_info[META_GAS_MOLES_VISIBLE][/datum/gas/tritium] * BREATH_PERCENTAGE // Tritium side-effects. if(gas_breathed > moles_visible) var/ratio = gas_breathed * 15 @@ -637,7 +625,7 @@ breather.failed_last_breath = TRUE // The list of gases in the breath. - var/list/breath_gases = breath.gases + var/list/breath_moles = breath.moles // Copy the breath's temperature into breath_out to avoid cooling the output breath down unfairly breath_out.temperature = breath.temperature @@ -651,8 +639,8 @@ // Build out our partial pressures, for use as we go var/list/partial_pressures = list() - for(var/gas_id in breath_gases) - partial_pressures[gas_id] = breath.get_breath_partial_pressure(breath_gases[gas_id][MOLES] * received_pressure_mult) + for(var/gas_id, amount in breath_moles) + partial_pressures[gas_id] = breath.get_breath_partial_pressure(amount * received_pressure_mult) // Treat gas as other types of gas for(var/list/conversion_packet in treat_as) @@ -670,32 +658,31 @@ var/partial_pressure = partial_pressures[breath_id] || 0 var/old_partial_pressure = last_partial_pressures[breath_id] || 0 // Ensures the gas will always be instanciated, so people can interact with it safely - ASSERT_GAS(breath_id, breath) var/inhale = breathe_always[breath_id] call(src, inhale)(breather, breath, partial_pressure, old_partial_pressure) // Now we'll handle the callbacks that want to be run conditionally off our current breath - for(var/breath_id in breath_gases) - var/when_present = breath_present[breath_id] + for(var/gas_id in breath_moles) + var/when_present = breath_present[gas_id] if(!when_present) continue - var/reaction = call(src, when_present)(breather, breath, partial_pressures[breath_id], last_partial_pressures[breath_id]) + var/reaction = call(src, when_present)(breather, breath, partial_pressures[gas_id], last_partial_pressures[gas_id]) if(reaction == BREATH_LOST) - var/on_lose = breath_lost[breath_id] + var/on_lose = breath_lost[gas_id] if(on_lose) - call(src, on_lose)(breather, breath, partial_pressures[breath_id], last_partial_pressures[breath_id]) + call(src, on_lose)(breather, breath, partial_pressures[gas_id], last_partial_pressures[gas_id]) // Finally, we'll run the callbacks that aren't in breath_gases, but WERE in our last breath - for(var/gas_lost in last_partial_pressures) + for(var/gas_id in last_partial_pressures) // If we still have it, go away - if(breath_gases[gas_lost]) + if(breath_moles[gas_id]) continue - var/on_loss = breath_lost[gas_lost] + var/on_loss = breath_lost[gas_id] if(!on_loss) continue - call(src, on_loss)(breather, breath, last_partial_pressures[gas_lost]) + call(src, on_loss)(breather, breath, last_partial_pressures[gas_id]) src.last_partial_pressures = partial_pressures @@ -723,12 +710,11 @@ /// Removes 100% of the given gas type unless given a volume argument. /// Returns the amount of gas theoretically removed. /obj/item/organ/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY) - var/list/breath_gases = breath.gases - volume = min(volume, breath_gases[remove_id][MOLES]) - breath_gases[remove_id][MOLES] -= volume + var/list/breath_moles = breath.moles + volume = min(volume, breath_moles[remove_id]) + breath_moles[remove_id] -= volume if(exchange_id) - ASSERT_GAS(exchange_id, breath_out) - breath_out.gases[exchange_id][MOLES] += volume + breath_out.moles[exchange_id] += volume return volume /// Applies suffocation side-effects to a given Human, scaling based on ratio of required pressure VS "true" pressure. @@ -736,32 +722,28 @@ /obj/item/organ/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0) . = 0 // Can't suffocate without a Human, or without minimum breath pressure. - if(!suffocator || !safe_breath_min) + if(isnull(suffocator) || safe_breath_min <= 0) return // Mob is suffocating. suffocator.failed_last_breath = TRUE // Give them a chance to notice something is wrong. - if(prob(20)) + if(prob(25)) suffocator.emote("gasp") - // If mob is at critical health, check if they can be damaged further. - if(suffocator.health < suffocator.crit_threshold) - // Mob is immune to damage at critical health. - if(HAS_TRAIT(suffocator, TRAIT_NOCRITDAMAGE)) - return - // Reagents like Epinephrine stop suffocation at critical health. - if(suffocator.reagents.has_reagent(crit_stabilizing_reagent, needs_metabolizing = TRUE)) - return - // Low pressure. - if(breath_pp) - var/ratio = safe_breath_min / breath_pp - suffocator.apply_damage(min(5 * ratio, HUMAN_MAX_OXYLOSS), OXY) - return mole_count * ratio / 6 - // Zero pressure. - if(suffocator.health >= suffocator.crit_threshold) - suffocator.apply_damage(HUMAN_MAX_OXYLOSS, OXY) - else - suffocator.apply_damage(HUMAN_CRIT_MAX_OXYLOSS, OXY) + // note: this is where crit damage is handled for mobs that breathe + var/oxy_damage_dealt = SUFFOCATION_OXYLOSS + if(breath_pp > 0) + // we got a partial breath, scale the damage based on how much we got + oxy_damage_dealt *= ((safe_breath_min - breath_pp) / safe_breath_min) + . = mole_count + + // in hard crit, suffocation damage is reduced significantly (or to zero if the relevant trait is present) + if(suffocator.stat == SOFT_CRIT || suffocator.stat == HARD_CRIT) + oxy_damage_dealt *= (HAS_TRAIT(suffocator, TRAIT_NOCRITDAMAGE) ? 0 : SUFFOCATION_OXYLOSS_CRIT_MODIFIER) + + if(oxy_damage_dealt > 0) + suffocator.apply_damage(oxy_damage_dealt, OXY) + return . /obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures var/breath_temperature = breath.temperature @@ -878,7 +860,7 @@ return span_boldwarning("Your lungs feel extremely tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and every breath is a struggle"].") return span_boldwarning("It feels extremely tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and every breath is a struggle"].") -/obj/item/organ/lungs/get_status_appendix(advanced, add_tooltips) +/obj/item/organ/lungs/get_status_appendix(scanpower, add_tooltips) var/initial_pressure_mult = initial(received_pressure_mult) if (received_pressure_mult == initial_pressure_mult) return @@ -940,8 +922,8 @@ /obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime) . = ..() - if (breath?.gases[/datum/gas/plasma]) - var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma][MOLES]) + if (breath?.moles[/datum/gas/plasma]) + var/plasma_pp = breath.get_breath_partial_pressure(breath.moles[/datum/gas/plasma]) breather_slime.adjust_blood_volume(0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. /obj/item/organ/lungs/smoker_lungs @@ -960,6 +942,7 @@ breath_noise = "a steady whirr" organ_flags = ORGAN_ROBOTIC maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. /obj/item/organ/lungs/cybernetic/emp_act(severity) @@ -989,10 +972,11 @@ maxHealth = 2 * STANDARD_ORGAN_THRESHOLD safe_oxygen_min = 13 emp_vulnerability = 20 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) - cold_level_1_threshold = 200 - cold_level_2_threshold = 140 - cold_level_3_threshold = 100 + cold_level_1_threshold = COLD_LEVEL_1_THRESHOLD - 60 + cold_level_2_threshold = COLD_LEVEL_2_THRESHOLD - 60 + cold_level_3_threshold = COLD_LEVEL_3_THRESHOLD - 20 /obj/item/organ/lungs/cybernetic/surplus name = "surplus prosthetic lungs" @@ -1037,7 +1021,7 @@ // Take a "breath" of the air var/datum/gas_mixture/breath = volumed_mix.remove(volumed_mix.total_moles() * BREATH_PERCENTAGE) - var/list/breath_gases = breath.gases + var/list/breath_moles = breath.moles breath.assert_gases( /datum/gas/oxygen, @@ -1048,12 +1032,12 @@ /datum/gas/miasma, ) - var/oxygen_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/oxygen][MOLES]) - var/nitrogen_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/nitrogen][MOLES]) - var/plasma_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/plasma][MOLES]) - var/carbon_dioxide_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/carbon_dioxide][MOLES]) - var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES]) - var/miasma_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/miasma][MOLES]) + var/oxygen_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/oxygen]) + var/nitrogen_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/nitrogen]) + var/plasma_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/plasma]) + var/carbon_dioxide_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/carbon_dioxide]) + var/bz_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/bz]) + var/miasma_pp = breath.get_breath_partial_pressure(breath_moles[/datum/gas/miasma]) safe_oxygen_min = max(0, oxygen_pp - GAS_TOLERANCE) safe_nitro_min = max(0, nitrogen_pp - GAS_TOLERANCE) @@ -1117,8 +1101,8 @@ icon_state = "lungs_ethereal" breath_noise = "a low fluorescent hum" heat_level_1_threshold = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // 150C or 433k, in line with ethereal max safe body temperature - heat_level_2_threshold = 473 - heat_level_3_threshold = 1073 + heat_level_2_threshold = HEAT_LEVEL_2_THRESHOLD + 73 + heat_level_3_threshold = HEAT_LEVEL_3_THRESHOLD + 73 /obj/item/organ/lungs/ethereal/ethereal_smoker name = "smoker aeration reticulum" @@ -1134,7 +1118,7 @@ /// H2O electrolysis /obj/item/organ/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp) - var/gas_breathed = breath.gases[/datum/gas/water_vapor][MOLES] + var/gas_breathed = breath.moles[/datum/gas/water_vapor] breath.adjust_gas(/datum/gas/water_vapor, -gas_breathed) var/list/new_gases = list(/datum/gas/oxygen = gas_breathed, /datum/gas/hydrogen = gas_breathed * 2) breath_out.adjust_multiple_gases(new_gases) diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm index cc6e88854496..8a5b4c1e978f 100644 --- a/code/modules/surgery/organs/internal/stomach/_stomach.dm +++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm @@ -140,12 +140,12 @@ //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with if(HAS_TRAIT_FROM(human, TRAIT_FAT, OBESITY))//I share your pain, past coder. - if(human.overeatduration < (200 SECONDS)) + if(human.overeatduration < (OVEREAT_TIME_LIMIT)) to_chat(human, span_notice("You feel fit again!")) human.remove_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) else - if(human.overeatduration >= (200 SECONDS)) + if(human.overeatduration >= (OVEREAT_TIME_LIMIT)) to_chat(human, span_danger("You suddenly feel blubbery!")) human.add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) @@ -503,6 +503,7 @@ organ_flags = ORGAN_ROBOTIC maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5 metabolism_efficiency = 0.035 // not as good at digestion + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. /obj/item/organ/stomach/cybernetic/emp_act(severity) @@ -539,6 +540,7 @@ disgust_metabolism = 3 emp_vulnerability = 20 metabolism_efficiency = 0.1 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/organ/stomach/cybernetic/tier3/stomach_acid_power(atom/movable/nomnom) if (isliving(nomnom)) diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm index aea5173ae869..6255b5dec3d5 100644 --- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm +++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm @@ -25,11 +25,13 @@ . = ..() RegisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge)) RegisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute)) + RegisterSignal(stomach_owner, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool_act)) /obj/item/organ/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner) . = ..() UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT) UnregisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT) + UnregisterSignal(stomach_owner, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL)) stomach_owner.clear_mood_event("charge") stomach_owner.clear_alert(ALERT_ETHEREAL_CHARGE) stomach_owner.clear_alert(ALERT_ETHEREAL_OVERCHARGE) @@ -49,6 +51,24 @@ adjust_charge(shock_damage * siemens_coeff * 2) to_chat(owner, span_notice("You absorb some of the shock into your body!")) +/obj/item/organ/stomach/ethereal/proc/on_multitool_act(atom/source, mob/user, obj/item/tool) + SIGNAL_HANDLER + + return multitool_act(user, tool) + +/obj/item/organ/stomach/ethereal/multitool_act(mob/living/user, obj/item/tool) + . = ..() + // Intentionally formatted in the exact same way as multitooling a cable for comedic effect. + // It's as if the multitool is mistaking the ethereal/biological battery for a cable. + var/power_info + if(cell.charge > 0) + power_info = span_danger("Total power: [display_power(cell.charge)]\nLoad: [(owner && (owner.stat != DEAD)) ? display_power(ETHEREAL_DISCHARGE_RATE) : 0]\nExcess power: [display_power(max(0, (cell.charge - ETHEREAL_CHARGE_FULL)))]") + else + power_info = span_danger("The [owner ? owner.name : name] is not powered.") + + to_chat(user, power_info) + return ITEM_INTERACT_SUCCESS + /**Changes the energy of the crystal stomach. * Args: * - amount: The change of the energy, in joules. diff --git a/code/modules/surgery/surgery_tools.dm b/code/modules/surgery/surgery_tools.dm index eee5ac18c8a7..05e0188a8724 100644 --- a/code/modules/surgery/surgery_tools.dm +++ b/code/modules/surgery/surgery_tools.dm @@ -160,7 +160,8 @@ inhand_icon_state = "drill" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - hitsound = 'sound/items/weapons/circsawhit.ogg' + hitsound = 'sound/items/tools/drill_hit.ogg' + usesound = 'sound/items/tools/drill_use.ogg' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*3) obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL @@ -333,6 +334,7 @@ drop_sound = SFX_CLOTH_DROP pickup_sound = SFX_CLOTH_PICKUP gender = PLURAL + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT) /obj/item/surgical_drapes/Initialize(mapload) . = ..() @@ -588,7 +590,7 @@ if(HAS_MIND_TRAIT(user, TRAIT_MORBID)) //Freak user.add_mood_event("morbid_dismemberment", /datum/mood_event/morbid_dismemberment) -/obj/item/shears/suicide_act(mob/living/carbon/user) +/obj/item/shears/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is pinching [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) var/timer = 1 SECONDS for(var/obj/item/bodypart/thing in user.get_bodyparts()) @@ -608,7 +610,7 @@ icon_angle = 135 lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25) obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_SMALL @@ -633,7 +635,7 @@ icon_state = "bloodfilter" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT, /datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_NORMAL attack_verb_continuous = list("pumps", "siphons") diff --git a/code/modules/surgery/surgery_tray.dm b/code/modules/surgery/surgery_tray.dm index e34c644880f5..4eb141d20ab5 100644 --- a/code/modules/surgery/surgery_tray.dm +++ b/code/modules/surgery/surgery_tray.dm @@ -105,11 +105,11 @@ if(is_portable) interaction_flags_item |= INTERACT_ITEM_ATTACK_HAND_PICKUP - passtable_on(src, type) + pass_flags |= PASSTABLE RemoveElement(/datum/element/noisy_movement) else interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP - passtable_off(src, type) + pass_flags &= ~PASSTABLE AddElement(/datum/element/noisy_movement) update_appearance() diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm index c1e61ccec6c3..5cae33288059 100644 --- a/code/modules/tgui/external.dm +++ b/code/modules/tgui/external.dm @@ -183,10 +183,7 @@ * * required uiref ref The UI that was closed. */ -/client/verb/uiclose(window_id as text) - // Name the verb, and hide it from the user panel. - set name = "uiclose" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, uiclose, "uiclose", window_id as text) var/mob/user = src?.mob if(!user) return diff --git a/code/modules/tgui_input/say_modal/modal.dm b/code/modules/tgui_input/say_modal/modal.dm index 848befe89780..699e4b40cc53 100644 --- a/code/modules/tgui_input/say_modal/modal.dm +++ b/code/modules/tgui_input/say_modal/modal.dm @@ -92,6 +92,7 @@ if(!payload?["channel"]) CRASH("No channel provided to an open TGUI-Say") window_open = TRUE + saved_text = "" if(payload["channel"] != OOC_CHANNEL && payload["channel"] != LOOC_CHANNEL && payload["channel"] != ADMIN_CHANNEL && payload["channel"] != PRAY_CHANNEL) // DARKPACK EDIT CHANGE - LOOC start_thinking() if(!client.typing_indicators) diff --git a/code/modules/tgui_input/say_modal/speech.dm b/code/modules/tgui_input/say_modal/speech.dm index 52515cd5388e..e3ec1763ac1d 100644 --- a/code/modules/tgui_input/say_modal/speech.dm +++ b/code/modules/tgui_input/say_modal/speech.dm @@ -97,10 +97,11 @@ /** * Makes the player force say what's in their current input box. * Arguments: - * alter_phrases - Optional list of alternate suffixes to blurt out - * immediate - If [TRUE], the say must be invoked inline due to side effects that may cause the mob to be unable to speak + * * alter_phrases - Optional list of alternate suffixes to blurt out + * * immediate - If [TRUE], the say must be invoked inline due to side effects that may cause the mob to be unable to speak + * * major - If [TRUE], a "major action" triggered the force say, which may have additional side effects */ -/mob/living/carbon/human/proc/force_say(list/alter_phrases = null, immediate = FALSE) +/mob/living/carbon/human/proc/force_say(list/alter_phrases = null, immediate = FALSE, major = TRUE) if(stat != CONSCIOUS || !client?.tgui_say?.window_open) return FALSE client.tgui_say.force_say(alter_phrases, immediate) @@ -108,7 +109,7 @@ log_speech_indicators("[key_name(client)] FORCED to stop typing, indicators enabled.") else log_speech_indicators("[key_name(client)] FORCED to stop typing, indicators DISABLED.") - SEND_SIGNAL(src, COMSIG_HUMAN_FORCESAY) + SEND_SIGNAL(src, COMSIG_HUMAN_FORCESAY, major) /** * Gets whatever text is currently in this mob's say box and returns it. diff --git a/code/modules/tgui_panel/external.dm b/code/modules/tgui_panel/external.dm index ae504fdb0c53..c087f1ab44da 100644 --- a/code/modules/tgui_panel/external.dm +++ b/code/modules/tgui_panel/external.dm @@ -8,9 +8,7 @@ /** * tgui panel / chat troubleshooting verb */ -/client/verb/fix_tgui_panel() - set name = "Fix chat" - set category = "OOC" +GAME_VERB(/client, fix_tgui_panel, "Fix chat", "OOC") var/action log_tgui(src, "Started fixing.", context = "verb/fix_tgui_panel") @@ -33,9 +31,7 @@ // Force show the panel to see if there are any errors winset(src, OUTPUT_SELECTOR_LEGACY_OUTPUT_SELECTOR, "left=output_browser") -/client/verb/refresh_tgui() - set name = "Refresh TGUI" - set category = "OOC" +GAME_VERB(/client, refresh_tgui, "Refresh TGUI", "OOC") for(var/window_id in tgui_windows) var/datum/tgui_window/window = tgui_windows[window_id] diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index ecb3ad626a8e..8b1a366c0a05 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -103,6 +103,10 @@ analyze_telemetry(payload) return TRUE + if(type == "requestMetadata") + send_metadata() + return TRUE + /** * public * @@ -110,3 +114,32 @@ */ /datum/tgui_panel/proc/send_roundrestart() window.send_message("roundrestart") + +/** + * private + * + * Sent when a client requests metadata - used for websocket stuff. + */ +/datum/tgui_panel/proc/send_metadata() + var/static/list/webroot_asset_urls + + var/list/metadata = list( + "game_version" = GLOB.game_version, + "server_name" = CONFIG_GET(string/servername), + "round_id" = GLOB.round_id, + "map_name" = SSmapping.current_map?.map_name, + "round_duration" = round(STATION_TIME_PASSED() / 10, 1), + "gamestate" = SSticker.current_state, + ) + // if we're using webroot - also pass along the webroot url and such, so we can embed chat logs with the proper styles/images if desired + if(istype(SSassets.transport, /datum/asset_transport/webroot)) + if(isnull(webroot_asset_urls)) + webroot_asset_urls = list() + for(var/asset_type in list(/datum/asset/simple/tgui_panel, /datum/asset/simple/namespaced/fontawesome, /datum/asset/simple/namespaced/tgfont, /datum/asset/spritesheet_batched/chat)) + var/datum/asset/asset = get_asset_datum(asset_type) + webroot_asset_urls += asset.get_url_mappings() + metadata["webroot"] = list( + "base_url" = CONFIG_GET(string/asset_cdn_url), + "assets" = webroot_asset_urls, + ) + window.send_message("metadata", metadata) diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 0dff6882735f..747ec41dd7c1 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -195,6 +195,27 @@ border-color: #2c0f0c; background-color: #221c1a; } + + /* DARKPACK EDIT ADD START */ + .pentex-knox .wrap { + border-color: #998e81; + } + .pentex-knox .content { + color: #3ce375; + border-color: #998e81; + background-color: #1e1d21; + } + + .world-of-darkness .wrap { + border-color: #07060c; + } + .world-of-darkness .content { + color: #a39a9a; + border-color: #07060c; + background-color: #101419; + } + /* DARKPACK EDIT ADD END */ + diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm index fef1bbdcbf3d..97add0f943d6 100644 --- a/code/modules/transport/tram/tram_controller.dm +++ b/code/modules/transport/tram/tram_controller.dm @@ -65,6 +65,9 @@ ///previous trams that have been destroyed var/list/tram_history + ///cooldown on tram announcement system + COOLDOWN_DECLARE(announce_cooldown) + /datum/tram_mfg_info ///serial number of this tram (what round ID it first appeared in) var/serial_number @@ -270,7 +273,7 @@ set_status_code(EMERGENCY_STOP, FALSE) playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) paired_cabinet.say("Controller reset.") - + nav_beacon.tram_loop.start() for(var/obj/structure/transport/linear/tram/transport_module as anything in transport_modules) //only thing everyone needs to know is the new location. if(transport_module.travelling) //wee woo wee woo there was a double action queued. damn multi tile structs return //we don't care to undo cover_locked controls, though, as that will resolve itself @@ -349,24 +352,39 @@ else recovery_activate_count = max(recovery_activate_count - 1, 0) + if(travel_remaining < 39 && (COOLDOWN_FINISHED(src, announce_cooldown))) + make_announcement("The next station is: [destination_platform].") + COOLDOWN_START(src, announce_cooldown, 4 SECONDS) + scheduled_move = world.time + internal_movement_delay /datum/transport_controller/linear/tram/proc/set_tram_speed(new_speed) internal_movement_delay = round(clamp(50 / new_speed, 0.5, 5), 0.1) +/datum/transport_controller/linear/tram/proc/make_announcement(broadcast) + if(SStts.tts_enabled) + nav_beacon.voice = SStts.tram_voice + else + playsound(nav_beacon, 'sound/machines/tram/info_chime.ogg', 100, vary = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_exponent = 1.4) + + nav_beacon.say(broadcast) + /** * Tram stops normally, performs post-trip actions and updates the tram registration. */ /datum/transport_controller/linear/tram/proc/normal_stop() cycle_doors(CYCLE_OPEN) log_transport("TC: [specific_transport_id] trip completed. Info: nav_pos ([nav_beacon.x], [nav_beacon.y], [nav_beacon.z]) idle_pos ([destination_platform.x], [destination_platform.y], [destination_platform.z]).") + nav_beacon.tram_loop.stop() addtimer(CALLBACK(src, PROC_REF(unlock_controls)), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(platform_arrival_jingle)), 2.5 SECONDS) if((controller_status & SYSTEM_FAULT) && (nav_beacon.loc == destination_platform.loc)) //position matches between controller and tram, we're back on track set_status_code(SYSTEM_FAULT, FALSE) playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) paired_cabinet.say("Controller reset.") log_transport("TC: [specific_transport_id] position data successfully reset.") idle_platform = destination_platform + tram_registration.distance_travelled += (travel_trip_length - travel_remaining) travel_trip_length = 0 current_speed = 0 @@ -379,6 +397,7 @@ /datum/transport_controller/linear/tram/proc/degraded_stop() crash_fx() log_transport("TC: [specific_transport_id] trip completed with a degraded status. Info: [TC_TS_STATUS] nav_pos ([nav_beacon.x], [nav_beacon.y], [nav_beacon.z]) idle_pos ([destination_platform.x], [destination_platform.y], [destination_platform.z]).") + nav_beacon.tram_loop.stop() addtimer(CALLBACK(src, PROC_REF(unlock_controls)), 4 SECONDS) if(controller_status & SYSTEM_FAULT) set_status_code(SYSTEM_FAULT, FALSE) @@ -418,7 +437,7 @@ var/throw_direction = travel_direction for(var/obj/structure/transport/linear/tram/module in transport_modules) module.estop_throw(throw_direction) - + nav_beacon.tram_loop.stop() addtimer(CALLBACK(src, PROC_REF(unlock_controls)), 4 SECONDS) addtimer(CALLBACK(src, PROC_REF(cycle_doors), CYCLE_OPEN), 2 SECONDS) idle_platform = null @@ -712,6 +731,32 @@ return FALSE +/// Plays the arrival jingle associated with the platform +/datum/transport_controller/linear/tram/proc/platform_arrival_jingle() + var/our_channel = SSsounds.random_available_channel() + var/sound/jingle = sound( + idle_platform.arrival_sound, + FALSE, + 0, + our_channel, + 60 + ) + var/list/hearers = playsound(idle_platform, jingle, 60, FALSE, 0, extrarange = 7) + new /datum/threed_sound( + new_parent = idle_platform, + new_sound = jingle, + current_listeners = hearers, + can_add_new_listeners = FALSE, + volume = 60, + sound_range = SOUND_RANGE - 3, + sound_length = 3 SECONDS, + channel = our_channel, + preference_volume = /datum/preference/numeric/volume/sound_instruments, + preference_signal = null, + falloff_exponent = SOUND_FALLOFF_EXPONENT, + falloff_distance = 5 + ) + /** * Moves the tram when hit by an immovable rod * diff --git a/code/modules/transport/tram/tram_controls.dm b/code/modules/transport/tram/tram_controls.dm index 0cb859cc0ed2..8dfc54f8ee7a 100644 --- a/code/modules/transport/tram/tram_controls.dm +++ b/code/modules/transport/tram/tram_controls.dm @@ -16,6 +16,7 @@ light_color = COLOR_BLUE_LIGHT light_range = 0 //we dont want to spam SSlighting with source updates every movement brightness_on = 0 + voice_filter = "highpass=f=300,lowpass=f=3500,aecho=0.8:0.9:70|140:0.3|0.15,alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" /// What sign face prefixes we have icons for var/static/list/available_faces = list() /// The sign face we're displaying @@ -26,6 +27,7 @@ var/specific_transport_id = TRAMSTATION_LINE_1 /// If the sign is adjusted for split type tram windows var/split_mode = FALSE + generate_map_preview = FALSE /obj/machinery/computer/tram_controls/split circuit = /obj/item/circuitboard/computer/tram_controls/split @@ -157,6 +159,9 @@ update_appearance() return + if(controller && (controller?.specific_transport_id != specific_transport_id)) + return + if(isnull(controller) || !controller.controller_operational) icon_screen = "[base_icon_state]_broken" update_appearance() @@ -232,21 +237,22 @@ /obj/machinery/computer/tram_controls/proc/call_response(controller, list/relevant, response_code, response_info) SIGNAL_HANDLER - switch(response_code) - if(REQUEST_SUCCESS) - say("The next station is: [response_info]") + var/datum/transport_controller/linear/tram/tram = transport_ref?.resolve() + if(tram) + if(SStts.tts_enabled) + tram.nav_beacon.voice = SStts.tram_voice - if(REQUEST_FAIL) + if(response_code == REQUEST_FAIL) if(!LAZYFIND(relevant, src)) return switch(response_info) if(NOT_IN_SERVICE) - say("The tram is not in service. Please contact the nearest engineer.") + tram.nav_beacon.say("The tram is not in service. Please contact the nearest engineer.") if(INVALID_PLATFORM) - say("Configuration error. Please contact the nearest engineer.") + tram.nav_beacon.say("Configuration error. Please contact the nearest engineer.") if(INTERNAL_ERROR) - say("Tram controller error. Please contact the nearest engineer or crew member with telecommunications access to reset the controller.") + tram.nav_beacon.say("Tram controller error. Please contact the nearest engineer or crew member with telecommunications access to reset the controller.") else return diff --git a/code/modules/transport/tram/tram_displays.dm b/code/modules/transport/tram/tram_displays.dm index 33c4de918761..e635a068346f 100644 --- a/code/modules/transport/tram/tram_displays.dm +++ b/code/modules/transport/tram/tram_displays.dm @@ -108,6 +108,9 @@ update_appearance() return + if(controller && (controller?.specific_transport_id != configured_transport_id)) + return + if(!controller || !controller.controller_operational || isnull(destination_platform)) sign_face = "[base_icon_state]_NIS" sign_color = COLOR_DISPLAY_RED diff --git a/code/modules/transport/tram/tram_doors.dm b/code/modules/transport/tram/tram_doors.dm index f888ecd8ba5e..686c87f6704a 100644 --- a/code/modules/transport/tram/tram_doors.dm +++ b/code/modules/transport/tram/tram_doors.dm @@ -65,8 +65,8 @@ try_to_close(forced = BYPASS_DOOR_CHECKS) return - if(retry_counter == 1) - playsound(src, 'sound/machines/chime.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + if(retry_counter > 1) + playsound(src, 'sound/machines/tram/door_chime.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) addtimer(CALLBACK(src, PROC_REF(verify_status)), (2.7 SECONDS)) try_to_close() diff --git a/code/modules/transport/tram/tram_machinery.dm b/code/modules/transport/tram/tram_machinery.dm index b4d4ac5db7a1..7e265e65fa03 100644 --- a/code/modules/transport/tram/tram_machinery.dm +++ b/code/modules/transport/tram/tram_machinery.dm @@ -1,4 +1,5 @@ /obj/item/assembly/control/transport + voice_filter = "highpass=f=300,lowpass=f=3500,aecho=0.8:0.9:70|140:0.3|0.15,alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" /// The ID of the tram we're linked to var/specific_transport_id = TRAMSTATION_LINE_1 /// Options to be passed with the requests to the transport subsystem @@ -47,7 +48,8 @@ SIGNAL_HANDLER if(!LAZYFIND(relevant, src)) return - + if(SStts.tts_enabled) + voice = SStts.tram_voice switch(response_code) if(REQUEST_SUCCESS) say("The tram has been called to the platform.") diff --git a/code/modules/transport/tram/tram_signals.dm b/code/modules/transport/tram/tram_signals.dm index 91930be76460..41d71fb78c02 100644 --- a/code/modules/transport/tram/tram_signals.dm +++ b/code/modules/transport/tram/tram_signals.dm @@ -175,20 +175,19 @@ find_uplink() return CLICK_ACTION_SUCCESS -/obj/machinery/transport/crossing_signal/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - . = ..() - - if(weapon.tool_behaviour == TOOL_WRENCH && panel_open) - switch(sign_dir) - if(INBOUND) - sign_dir = OUTBOUND - if(OUTBOUND) - sign_dir = INBOUND +/obj/machinery/transport/crossing_signal/wrench_act_secondary(mob/living/user, obj/item/tool) + if(!panel_open) + return NONE + switch(sign_dir) + if(INBOUND) + sign_dir = OUTBOUND + if(OUTBOUND) + sign_dir = INBOUND - to_chat(user, span_notice("You flip directions on [src].")) - update_appearance() + to_chat(user, span_notice("You flip directions on [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/machinery/transport/crossing_signal/proc/link_sensor() sensor_ref = WEAKREF(find_closest_valid_sensor()) diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm index f596fd293dec..1ea49db950b4 100644 --- a/code/modules/transport/tram/tram_structures.dm +++ b/code/modules/transport/tram/tram_structures.dm @@ -163,53 +163,66 @@ update_appearance() return ITEM_INTERACT_SUCCESS -/obj/structure/tram/attackby_secondary(obj/item/tool, mob/user, list/modifiers, list/attack_modifiers) - switch(state) - if(TRAM_SCREWED_TO_FRAME) - if(tool.tool_behaviour == TOOL_SCREWDRIVER) - user.visible_message(span_notice("[user] begins to unscrew the tram panel from the frame..."), - span_notice("You begin to unscrew the tram panel from the frame...")) - if(tool.use_tool(src, user, 1 SECONDS, volume = 50)) - state = TRAM_IN_FRAME - to_chat(user, span_notice("The screws come out, and a gap forms around the edge of the pane.")) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - if(tool.tool_behaviour) +/obj/structure/tram/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + if(tool.tool_behaviour) + switch(state) + if(TRAM_SCREWED_TO_FRAME) to_chat(user, span_warning("The security screws need to be removed first!")) + return ITEM_INTERACT_BLOCKING + if(TRAM_OUT_OF_FRAME) + to_chat(user, span_warning("The cabling need to be cut first!")) + return ITEM_INTERACT_BLOCKING + return NONE + +/obj/structure/tram/crowbar_act_secondary(mob/living/user, obj/item/tool) + switch(state) if(TRAM_IN_FRAME) - if(tool.tool_behaviour == TOOL_CROWBAR) - user.visible_message(span_notice("[user] wedges \the [tool] into the tram panel's gap in the frame and starts prying..."), - span_notice("You wedge \the [tool] into the tram panel's gap in the frame and start prying...")) - if(tool.use_tool(src, user, 1 SECONDS, volume = 50)) - state = TRAM_OUT_OF_FRAME - to_chat(user, span_notice("The panel pops out of the frame, exposing some cabling that look like they can be cut.")) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - if(tool.tool_behaviour == TOOL_SCREWDRIVER) - user.visible_message(span_notice("[user] resecures the tram panel to the frame..."), - span_notice("You resecure the tram panel to the frame...")) - state = TRAM_SCREWED_TO_FRAME - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + user.visible_message(span_notice("[user] wedges \the [tool] into the tram panel's gap in the frame and starts prying..."), + span_notice("You wedge \the [tool] into the tram panel's gap in the frame and start prying...")) + if(!tool.use_tool(src, user, 1 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + state = TRAM_OUT_OF_FRAME + to_chat(user, span_notice("The panel pops out of the frame, exposing some cabling that look like they can be cut.")) + return ITEM_INTERACT_SUCCESS if(TRAM_OUT_OF_FRAME) - if(tool.tool_behaviour == TOOL_WIRECUTTER) - user.visible_message(span_notice("[user] starts cutting the connective cabling on \the [src]..."), - span_notice("You start cutting the connective cabling on \the [src]")) - if(tool.use_tool(src, user, 1 SECONDS, volume = 50)) - to_chat(user, span_notice("The panels falls out of the way exposing the frame backing.")) - deconstruct(disassembled = TRUE) - - if(tool.tool_behaviour == TOOL_CROWBAR) - user.visible_message(span_notice("[user] snaps the tram panel into place."), - span_notice("You snap the tram panel into place...")) - state = TRAM_IN_FRAME - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - - if(tool.tool_behaviour) - to_chat(user, span_warning("The cabling need to be cut first!")) + user.visible_message(span_notice("[user] snaps the tram panel into place."), + span_notice("You snap the tram panel into place.")) + state = TRAM_IN_FRAME + return ITEM_INTERACT_SUCCESS - return ..() + return NONE //Head back to item_interaction_secondary() to get the same message as other unsuitable tools + +/obj/structure/tram/screwdriver_act_secondary(mob/living/user, obj/item/tool) + switch(state) + if(TRAM_SCREWED_TO_FRAME) + user.visible_message(span_notice("[user] begins to unscrew the tram panel from the frame..."), + span_notice("You begin to unscrew the tram panel from the frame...")) + if(!tool.use_tool(src, user, 1 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + state = TRAM_IN_FRAME + to_chat(user, span_notice("The screws come out, and a gap forms around the edge of the pane.")) + return ITEM_INTERACT_SUCCESS + + if(TRAM_IN_FRAME) + user.visible_message(span_notice("[user] resecures the tram panel to the frame..."), + span_notice("You resecure the tram panel to the frame.")) + state = TRAM_SCREWED_TO_FRAME + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/structure/tram/wirecutter_act_secondary(mob/living/user, obj/item/tool) + if(state != TRAM_OUT_OF_FRAME) + return NONE + user.visible_message(span_notice("[user] starts cutting the connective cabling on \the [src]..."), + span_notice("You start cutting the connective cabling on \the [src]")) + if(!tool.use_tool(src, user, 1 SECONDS, volume = 50)) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("The panels falls out of the way exposing the frame backing.")) + deconstruct(disassembled = TRUE) + return ITEM_INTERACT_SUCCESS /obj/structure/tram/atom_deconstruct(disassembled = TRUE) if(disassembled) diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index 462dd70f1aaf..5e106ac0c188 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -745,11 +745,12 @@ return open_lift_radial(user) -/obj/structure/transport/linear/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers) +/obj/structure/transport/linear/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if(!radial_travel) - return ..() + return NONE - return open_lift_radial(user) + open_lift_radial(user) + return ITEM_INTERACT_SUCCESS /obj/structure/transport/linear/attack_robot(mob/living/user) if(!radial_travel) diff --git a/code/modules/transport/transport_navigation.dm b/code/modules/transport/transport_navigation.dm index 3b5c73b5de1a..0f1e4b03c19e 100644 --- a/code/modules/transport/transport_navigation.dm +++ b/code/modules/transport/transport_navigation.dm @@ -4,7 +4,11 @@ /obj/effect/landmark/transport/nav_beacon/tram name = "tram destination" //the tram buttons will mention this. icon_state = "tram" - + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" + /// the looping sound effect that is played while moving + var/datum/looping_sound/tram/tram_loop + /// What sound do we play when we arrive at this station? + var/arrival_sound = 'sound/machines/tram/other_line_processed.ogg' /// The ID of the tram we're linked to var/specific_transport_id = TRAMSTATION_LINE_1 /// The ID of that particular destination @@ -14,10 +18,12 @@ /obj/effect/landmark/transport/nav_beacon/tram/Initialize(mapload) . = ..() + tram_loop = new(src) LAZYADDASSOCLIST(SStransport.nav_beacons, specific_transport_id, src) /obj/effect/landmark/transport/nav_beacon/tram/Destroy() LAZYREMOVEASSOC(SStransport.nav_beacons, specific_transport_id, src) + QDEL_NULL(tram_loop) return ..() /obj/effect/landmark/transport/nav_beacon/tram/nav @@ -40,24 +46,27 @@ specific_transport_id = TRAMSTATION_LINE_1 /obj/effect/landmark/transport/nav_beacon/tram/nav/tramstation/main - name = TRAMSTATION_LINE_1 + name = "tram announcement system" specific_transport_id = TRAM_NAV_BEACONS dir = WEST /obj/effect/landmark/transport/nav_beacon/tram/platform/tramstation/west - name = "West Wing" + name = "Arrivals" platform_code = TRAMSTATION_WEST tgui_icons = list("Arrivals" = "plane-arrival", "Command" = "bullhorn", "Security" = "gavel") + arrival_sound = 'sound/machines/tram/arrivals_line_processed.ogg' /obj/effect/landmark/transport/nav_beacon/tram/platform/tramstation/central - name = "Central Wing" + name = "Medical" platform_code = TRAMSTATION_CENTRAL tgui_icons = list("Service" = "cocktail", "Medical" = "plus", "Engineering" = "wrench") + arrival_sound = 'sound/machines/tram/medical_line_processed.ogg' /obj/effect/landmark/transport/nav_beacon/tram/platform/tramstation/east - name = "East Wing" + name = "Escape" platform_code = TRAMSTATION_EAST tgui_icons = list("Departures" = "plane-departure", "Cargo" = "box", "Science" = "flask") + arrival_sound = 'sound/machines/tram/escape_line_processed.ogg' //birdshot @@ -78,28 +87,32 @@ dir = WEST /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/sec_wing - name = "Security Wing" + name = "Security" specific_transport_id = BIRDSHOT_LINE_1 platform_code = BIRDSHOT_SECURITY_WING tgui_icons = list("Security" = "gavel") + arrival_sound = 'sound/machines/tram/medical_line_processed.ogg' /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/prison_wing - name = "Prison Wing" + name = "Prison" specific_transport_id = BIRDSHOT_LINE_1 platform_code = BIRDSHOT_PRISON_WING tgui_icons = list("Prison" = "box") + arrival_sound = 'sound/machines/tram/other_line_processed.ogg' /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_left - name = "Port Platform" + name = "Escape" specific_transport_id = BIRDSHOT_LINE_2 platform_code = BIRDSHOT_MAINTENANCE_LEFT tgui_icons = list("Port Platform" = "plane-departure") + arrival_sound = 'sound/machines/tram/escape_line_processed.ogg' /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_right - name = "Starboard Platform" + name = "Arrivals" specific_transport_id = BIRDSHOT_LINE_2 platform_code = BRIDSHOT_MAINTENANCE_RIGHT tgui_icons = list("Starboard Platform" = "plane-arrival") + arrival_sound = 'sound/machines/tram/arrivals_line_processed.ogg' //map-agnostic landmarks diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 23153ef32f69..d714702deeaf 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -39,7 +39,7 @@ /// *Only* run the test provided within the parentheses /// This is useful for debugging when you want to reduce noise, but should never be pushed /// Intended to be used in the manner of `TEST_FOCUS(/datum/unit_test/math)` -#define TEST_FOCUS(test_path) ##test_path { focus = TRUE; } +#define TEST_FOCUS(test_path) ##test_path { test_flags = UNIT_TEST_FOCUS; } /// Run the test provided within the parentheses run_count times /// Useful for debugging flaky tests that only fail sometimes @@ -67,6 +67,16 @@ */ #define TEST_AFTER_CREATE_AND_DESTROY INFINITY +// Unit test bitflags + +/// If any unit test has this bitflag, only unit tests with UNIT_TEST_FOCUS will run. +#define UNIT_TEST_FOCUS (1<<0) +/// This unit test only runs on specially designated unit test maps (Should only ever be one). +#define UNIT_TEST_DEBUG_MAP_ONLY (1<<1) + +#define UNIT_TEST_BASIC (UNIT_TEST_DEBUG_MAP_ONLY) +#define UNIT_TEST_MAP_TEST (NONE) + /// Change color to red on ANSI terminal output, if enabled with -DANSICOLORS. #ifdef ANSICOLORS #define TEST_OUTPUT_RED(text) "\x1B\x5B1;31m[text]\x1B\x5B0m" @@ -117,6 +127,7 @@ #include "blood_volume_procs.dm" #include "bloody_footprints.dm" #include "borg_tools.dm" +#include "boulder_processing.dm" #include "breath.dm" #include "buckle.dm" #include "burning.dm" @@ -177,6 +188,7 @@ #include "focus_only_tests.dm" #include "font_awesome_icons.dm" #include "food_edibility_check.dm" +#include "food_processor.dm" #include "full_heal.dm" #include "gas_transfer.dm" #include "get_turf_pixel.dm" @@ -208,10 +220,12 @@ #include "interaction_door.dm" #include "interaction_silicon.dm" #include "interaction_structures.dm" +#include "job_display_order.dm" #include "json_savefile_importing.dm" #include "keybinding_init.dm" #include "kinetic_crusher.dm" #include "knockoff_component.dm" +#include "language_key_conflicts.dm" #include "language_transfer.dm" #include "leash.dm" #include "lesserform.dm" @@ -223,6 +237,7 @@ #include "lungs.dm" #include "machine_disassembly.dm" #include "mafia.dm" +#include "make_vegan_wellington.dm" #include "map_landmarks.dm" #include "mapload_space_verification.dm" #include "mapping.dm" diff --git a/code/modules/unit_tests/area_contents.dm b/code/modules/unit_tests/area_contents.dm index dea3c0a30574..646ecbaf99ac 100644 --- a/code/modules/unit_tests/area_contents.dm +++ b/code/modules/unit_tests/area_contents.dm @@ -1,6 +1,7 @@ /// Verifies that an area's perception of their "turfs" is correct, and no other area overlaps with them /// Quite slow, but needed /datum/unit_test/maptest_area_contents + test_flags = UNIT_TEST_MAP_TEST priority = TEST_LONGER /datum/unit_test/maptest_area_contents/Run() @@ -10,25 +11,30 @@ area_to_test.cannonize_contained_turfs() for (var/i in 1 to area_to_test.turfs_by_zlevel.len) if (!islist(area_to_test.turfs_by_zlevel[i])) - TEST_FAIL("zlevel index [i] in [area_to_test.type] is not a list.") + var/zlevel_name = SSmapping.get_level(i)?.name + TEST_FAIL("zlevel index [i] (zlevel name: [zlevel_name]) in [area_to_test.type] is not a list.") for (var/turf/turf_to_check as anything in area_to_test.turfs_by_zlevel[i]) if (!isturf(turf_to_check)) - TEST_FAIL("Found a [turf_to_check.type] in [area_to_test.type]'s turf listing") + var/zlevel_name = SSmapping.get_level(i)?.name + TEST_FAIL("Found a [turf_to_check.type] (zlevel name: [zlevel_name]) in [area_to_test.type]'s turf listing") if (turf_to_check.in_contents_of) + var/zlevel_name = SSmapping.get_level(i)?.name var/area/existing = turf_to_check.in_contents_of if (existing == turf_to_check.loc) - TEST_FAIL("Found a duplicate turf [turf_to_check.type] [COORD(turf_to_check)] inside [area_to_test.type]'s turf listing") + TEST_FAIL("Found a duplicate turf [turf_to_check.type] [COORD(turf_to_check)] (zlevel name: [zlevel_name]) inside [area_to_test.type]'s turf listing") else - TEST_FAIL("Found a shared turf [turf_to_check.type] [COORD(turf_to_check)] between [area_to_test.type] and [existing.type]'s turf listings") + TEST_FAIL("Found a shared turf [turf_to_check.type] [COORD(turf_to_check)] (zlevel name: [zlevel_name]) between [area_to_test.type] and [existing.type]'s turf listings") var/area/turfs_actual_area = turf_to_check.loc if (turfs_actual_area != area_to_test) - TEST_FAIL("Found a turf [turf_to_check.type] [COORD(turf_to_check)] which is IN [turfs_actual_area.type], but is registered as being in [area_to_test.type]") + var/zlevel_name = SSmapping.get_level(i)?.name + TEST_FAIL("Found a turf [turf_to_check.type] [COORD(turf_to_check)] (zlevel name: [zlevel_name]) which is IN [turfs_actual_area.type], but is registered as being in [area_to_test.type]") turf_to_check.in_contents_of = turfs_actual_area for(var/turf/position in ALL_TURFS()) if(!position.in_contents_of) - TEST_FAIL("Found a turf [position.type] [COORD(position)] inside [position.loc.type] that is NOT stored in any area's turf listing") + var/zlevel_name = position.z ? SSmapping.get_level(position.z)?.name : null + TEST_FAIL("Found a turf [position.type] [COORD(position)][zlevel_name ? " ([zlevel_name])" : ""] inside [position.loc.type] that is NOT stored in any area's turf listing") diff --git a/code/modules/unit_tests/atmospherics_sanity.dm b/code/modules/unit_tests/atmospherics_sanity.dm index d7348a096d37..f3efb4d0a137 100644 --- a/code/modules/unit_tests/atmospherics_sanity.dm +++ b/code/modules/unit_tests/atmospherics_sanity.dm @@ -2,6 +2,7 @@ * This test checks that all areas are connected to their distribution loops */ /datum/unit_test/atmospherics_sanity + test_flags = UNIT_TEST_MAP_TEST priority = TEST_LONGER // we iterate over all atmospherics devices on the starting networks /// List of areas to start crawling from diff --git a/code/modules/unit_tests/baseturfs.dm b/code/modules/unit_tests/baseturfs.dm index c746964f1b77..e27af536c123 100644 --- a/code/modules/unit_tests/baseturfs.dm +++ b/code/modules/unit_tests/baseturfs.dm @@ -1,4 +1,4 @@ -#define EXPECTED_FLOOR_TYPE /turf/open/floor/iron +#define EXPECTED_FLOOR_TYPE /turf/open/floor // Do this instead of just ChangeTurf to guarantee that baseturfs is completely default on-init behavior #define RESET_TO_EXPECTED(turf) \ turf.ChangeTurf(EXPECTED_FLOOR_TYPE);\ @@ -6,6 +6,7 @@ /// Validates that unmodified baseturfs tear down properly /datum/unit_test/maptest_baseturfs_unmodified_scrape + normal_floor_required = TRUE /datum/unit_test/maptest_baseturfs_unmodified_scrape/Run() // What this is specifically doesn't matter, just as long as the test is built for it @@ -27,6 +28,7 @@ /// Validates that specially placed baseturfs tear down properly /datum/unit_test/maptest_baseturfs_placed_on_top + normal_floor_required = TRUE /datum/unit_test/maptest_baseturfs_placed_on_top/Run() TEST_ASSERT_EQUAL(run_loc_floor_bottom_left.type, EXPECTED_FLOOR_TYPE, "run_loc_floor_bottom_left should be an iron floor") @@ -46,6 +48,7 @@ /// Validates that specially placed baseturfs BELOW tear down properly /datum/unit_test/maptest_baseturfs_placed_on_bottom + normal_floor_required = TRUE /datum/unit_test/maptest_baseturfs_placed_on_bottom/Run() TEST_ASSERT_EQUAL(run_loc_floor_bottom_left.type, EXPECTED_FLOOR_TYPE, "run_loc_floor_bottom_left should be an iron floor") diff --git a/code/modules/unit_tests/boulder_processing.dm b/code/modules/unit_tests/boulder_processing.dm new file mode 100644 index 000000000000..41b93c2ff9ae --- /dev/null +++ b/code/modules/unit_tests/boulder_processing.dm @@ -0,0 +1,52 @@ +/** + * This unit test crates a boulder, spawns it, and then moves it through boulder processing to confirm that boulders can be processed without issue. + */ + +/datum/unit_test/boulder_processing + +/datum/unit_test/boulder_processing/Run() + var/turf/refinery_loc = get_step(run_loc_floor_bottom_left, EAST) + var/turf/smelter_loc = get_step(refinery_loc, EAST) + var/turf/opposite_loc = get_step(smelter_loc, EAST) + var/obj/item/boulder/shabby/test_boulder = EASY_ALLOCATE() //Called because we know it has both iron and glass for each machine. + var/obj/machinery/bouldertech/refinery/test_refine = allocate(/obj/machinery/bouldertech/refinery, refinery_loc) + var/obj/machinery/bouldertech/refinery/smelter/test_smelter = allocate(/obj/machinery/bouldertech/refinery/smelter, smelter_loc) + test_refine.dir = WEST + test_smelter.dir = WEST + //Test to confirm that the boulder is as we expect it to be: + TEST_ASSERT(test_boulder.durability > 0, "Boulder was spawned such that it's durability is less than 1!") + test_boulder.durability = 2 + test_boulder.Move(get_turf(refinery_loc), EAST) + TEST_ASSERT_EQUAL(test_boulder.loc, test_refine, "The boulder was not moved into the refinery's contents!") + for(var/i in 1 to 2) + test_refine.process() + TEST_ASSERT_NOTEQUAL(test_boulder.loc, test_refine, "The boulder was not moved out of the refinery's contents!") + TEST_ASSERT(!test_boulder.has_material_type(/datum/material/glass), "After the boulder was successfully processed by the refinery, no-ferrous materials still remain inside!") + TEST_ASSERT(test_boulder.durability > 0, "Boulder was processed successfully, but exited with durability under 1!") + test_boulder.durability = 2 + test_boulder.Move(get_turf(smelter_loc), EAST) + TEST_ASSERT_EQUAL(test_boulder.loc, test_smelter, "The boulder was not moved into the smelter's contents! We are at: [test_boulder.x], [test_boulder.y], and machine is at [test_smelter.x], [test_smelter.y] which is [test_smelter.loc]") + for(var/i in 1 to 2) + test_smelter.process() + TEST_ASSERT(QDELETED(test_boulder),"After being processed by both a refinery and smelter, the boulder was not qdeleted!") + /// Now we run it in reverse, using the opposite_loc to start with the smelter! + // Manually reset cooldowns for accepting new boulders. + COOLDOWN_RESET(test_refine, accept_cooldown) + COOLDOWN_RESET(test_smelter, accept_cooldown) + //Test to confirm that the boulder is as we expect it to be: + var/obj/item/boulder/shabby/second_boulder = allocate(/obj/item/boulder/shabby, opposite_loc) //Called because we know it has both iron and glass for each machine. + TEST_ASSERT(second_boulder.durability > 0, "Boulder was spawned such that it's durability is less than 1!") + second_boulder.durability = 2 + second_boulder.Move(get_turf(smelter_loc), WEST) + TEST_ASSERT_EQUAL(second_boulder.loc, test_smelter, "The boulder was not moved into the smelter's contents! We are at: [second_boulder.x], [second_boulder.y], and machine is at [test_smelter.x], [test_smelter.y] which is [test_smelter.loc]") + for(var/i in 1 to 2) + test_smelter.process() + TEST_ASSERT_NOTEQUAL(second_boulder.loc, test_smelter, "The boulder was not moved out of the smelter's contents!") + TEST_ASSERT(!second_boulder.has_material_type(/datum/material/iron), "After the boulder was successfully processed by the smelter, ferrous materials still remain inside!") + TEST_ASSERT(second_boulder.durability > 0, "Boulder was processed successfully, but exited with durability under 1!") + second_boulder.durability = 2 + second_boulder.Move(get_turf(refinery_loc), WEST) + TEST_ASSERT_EQUAL(second_boulder.loc, test_refine, "The boulder was not moved into the refinery's contents!") + for(var/i in 1 to 2) + test_refine.process() + TEST_ASSERT(QDELETED(second_boulder), "After being processed by both a refinery and smelter, the boulder was not qdeleted!") diff --git a/code/modules/unit_tests/breath.dm b/code/modules/unit_tests/breath.dm index 52446ef10199..df1a0f99644f 100644 --- a/code/modules/unit_tests/breath.dm +++ b/code/modules/unit_tests/breath.dm @@ -43,7 +43,7 @@ lab_rat = allocate(/mob/living/carbon/human/consistent) source = equip_labrat_internals(lab_rat, /obj/item/tank/internals/emergency_oxygen/empty) source.air_contents.assert_gas(/datum/gas/nitrogen) - source.air_contents.gases[/datum/gas/nitrogen][MOLES] = (10 * ONE_ATMOSPHERE) * source.volume / (R_IDEAL_GAS_EQUATION * T20C) + source.air_contents.moles[/datum/gas/nitrogen] = (10 * ONE_ATMOSPHERE) * source.volume / (R_IDEAL_GAS_EQUATION * T20C) TEST_ASSERT(source.toggle_internals(lab_rat) && !isnull(lab_rat.internal), "Plasmaman toggle_internals() failed to toggle internals") lab_rat.breathe() TEST_ASSERT(lab_rat.failed_last_breath && lab_rat.has_alert(ALERT_NOT_ENOUGH_OXYGEN), "Humans should suffocate from pure n2 tanks") @@ -77,7 +77,7 @@ lab_rat = allocate(/mob/living/carbon/human/species/plasma) source = equip_labrat_internals(lab_rat, /obj/item/tank/internals/emergency_oxygen/empty) source.air_contents.assert_gas(/datum/gas/nitrogen) - source.air_contents.gases[/datum/gas/nitrogen][MOLES] = (10 * ONE_ATMOSPHERE) * source.volume / (R_IDEAL_GAS_EQUATION * T20C) + source.air_contents.moles[/datum/gas/nitrogen] = (10 * ONE_ATMOSPHERE) * source.volume / (R_IDEAL_GAS_EQUATION * T20C) TEST_ASSERT(source.toggle_internals(lab_rat) && !isnull(lab_rat.internal), "Plasmaman toggle_internals() failed to toggle internals") lab_rat.breathe() TEST_ASSERT(lab_rat.failed_last_breath && lab_rat.has_alert(ALERT_NOT_ENOUGH_PLASMA), "Humans should suffocate from pure n2 tanks") diff --git a/code/modules/unit_tests/cable_powernets.dm b/code/modules/unit_tests/cable_powernets.dm index f462dcf5bc96..24da321f5851 100644 --- a/code/modules/unit_tests/cable_powernets.dm +++ b/code/modules/unit_tests/cable_powernets.dm @@ -1,5 +1,6 @@ ///Checking all powernets to see if they are properly connected and powered. /datum/unit_test/cable_powernets + test_flags = UNIT_TEST_MAP_TEST /datum/unit_test/cable_powernets/Run() for(var/datum/powernet/powernets as anything in SSmachines.powernets) diff --git a/code/modules/unit_tests/cargo_dep_order_locations.dm b/code/modules/unit_tests/cargo_dep_order_locations.dm index 106a0eb19a76..aa262628d2d7 100644 --- a/code/modules/unit_tests/cargo_dep_order_locations.dm +++ b/code/modules/unit_tests/cargo_dep_order_locations.dm @@ -1,4 +1,5 @@ /datum/unit_test/cargo_dep_order_locations + test_flags = UNIT_TEST_MAP_TEST /datum/unit_test/cargo_dep_order_locations/Run() for(var/datum/job_department/department as anything in SSjob.joinable_departments) diff --git a/code/modules/unit_tests/crafting.dm b/code/modules/unit_tests/crafting.dm index 7734732389e3..9a6a9a29a4ae 100644 --- a/code/modules/unit_tests/crafting.dm +++ b/code/modules/unit_tests/crafting.dm @@ -65,18 +65,19 @@ LAZYADD(uncreatables_found, req_path) continue + // A recipe might accept an abstract base type as its reqs - e.g. obj/item/food/grown - signifying it can use any item of that type. + // However, we cannot create those abstract base types... but we also cannot pick a random subtype everytime either, + // as sutypes can have different custom_materials between them, so doing that will lead us to sporiadic errors. + // The safest course of action is to make the contributor pick a valid subtype (as generic as possible. please) to use in its place. + var/datum/req_path_datum = req_path + if(req_path_datum.abstract_type == req_path) + LAZYADD(uncreatables_found, req_path) + continue + if(ispath(req_path, /obj/item/stack)) //it's a stack new req_path(turf, /*new_amount =*/ amount, /*merge =*/ FALSE) continue - // Some recipes might accept an abstract base type as its reqs - e.g. obj/item/food/grown - signifying it can use any item of that type. - // Let's not actually create those abstract base types though, and instead pick a random subtype to use. - var/datum/req_path_datum = req_path - if(req_path_datum.abstract_type == req_path) - var/list/subtypes = valid_subtypesof(req_path_datum) - if(length(subtypes)) - req_path = pick(subtypes) - //it's any other item for(var/iteration in 1 to amount) new req_path(turf) @@ -122,9 +123,11 @@ tool.moveToNullspace() if(istext(result) || isnull(result)) //construct_item() returned a text string telling us why it failed. - TEST_FAIL("[recipe.type] couldn't be crafted during unit test[result || ", result is null for some reason!"]") if(uncreatables_found) - TEST_FAIL("The following objects that shouldn't be instantiated during unit tests were found in [recipe]: [english_list(uncreatables_found)]") + TEST_FAIL("Abstract types found in the requirements of [recipe.type]: [english_list(uncreatables_found)]. \ + Use the unit_test_spawn_extras list var of the recipe to spawn non-abstract subtypes instead.") + else + TEST_FAIL("[recipe.type] couldn't be crafted during unit test[result || ", result is null for some reason!"]") clear_trash() return //enforcing materials parity between crafted and spawned for turfs would be more trouble than worth here @@ -161,7 +164,7 @@ var/what_it_is = copycat.transcribe_materials_list(copycat_mats) //compose a text string containing the syntax and paths to use for editing the custom_materials var if(result.custom_materials) - what_it_should_be += " (you can round a bit for values above 100)" + what_it_should_be += " (you can round values above SHEET_MATERIAL_AMOUNT to the nearest decimal)" ///This tells you about other ways to deal with the issue, if you can't just change the materials of the object. For example, if there are two different recipes for it. diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 366ebc29c138..f6c444123824 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -1,5 +1,7 @@ ///Delete one of every type, sleep a while, then check to see if anything has gone fucky /datum/unit_test/create_and_destroy + // Since this unit test takes so damn long, we split it up across all runners + test_flags = parent_type::test_flags & ~UNIT_TEST_DEBUG_MAP_ONLY //You absolutely must run after (almost) everything else priority = TEST_CREATE_AND_DESTROY @@ -15,6 +17,35 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) GLOB.running_create_and_destroy = TRUE var/list/type_paths_to_check = (valid_typesof(/atom/movable) + valid_typesof(/turf)) - uncreatables // No areas please + + // This code is responsible for splitting up create & destroy across multiple integration tests. + var/total_amount_to_check = length(type_paths_to_check) +#ifdef RUNNING_LOCAL_TESTS + // not ci? do everything + var/start_index = 0 + var/end_index = total_amount_to_check +#else + var/runner_count = max(length(config.maplist), 1) + + var/split_up_amount = floor(total_amount_to_check / runner_count) + + var/what_map_index_are_we = 1 + for(var/map_name in config.maplist) + if(SSmapping.current_map.map_name == map_name) + break + what_map_index_are_we++ + + var/start_index = (what_map_index_are_we - 1) * split_up_amount + // Instead of super trying to make it an equal split, we just give the remainder tests to the final runner + var/end_index = (what_map_index_are_we == runner_count) ? total_amount_to_check : start_index + split_up_amount +#endif + + // +1 because byond's list.Copy() implementation is weird + type_paths_to_check = type_paths_to_check.Copy(start_index, end_index + 1) + + log_world("Running create and destroy on [length(type_paths_to_check)] atoms out of the [total_amount_to_check] total") + log_world("([start_index + 1] [type_paths_to_check[1]]) - ([end_index] [type_paths_to_check[length(type_paths_to_check)]])") + for(var/type_path in type_paths_to_check) if(ispath(type_path, /turf)) spawn_at.ChangeTurf(type_path) @@ -28,6 +59,8 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) else var/atom/creation = new type_path(spawn_at) if(QDELETED(creation)) + // Same as below + creation = null continue //Go all in qdel(creation, force = TRUE) @@ -50,7 +83,7 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) var/list/queues_we_care_about = list() // All of em, I want hard deletes too, since we rely on the debug info from them - for(var/i in 1 to GC_QUEUE_HARDDELETE) + for(var/i in GC_QUEUE_FILTER to GC_QUEUE_HARDDELETE) queues_we_care_about += i //Now that we've qdel'd everything, let's sleep until the gc has processed all the shit we care about diff --git a/code/modules/unit_tests/dcs_check_list_arguments.dm b/code/modules/unit_tests/dcs_check_list_arguments.dm index 769574cf95f2..0358ecfc2b90 100644 --- a/code/modules/unit_tests/dcs_check_list_arguments.dm +++ b/code/modules/unit_tests/dcs_check_list_arguments.dm @@ -25,6 +25,7 @@ * This unit test requires every (unless ignored) atom to have been created at least once * for a more accurate search, which is why it's run after create_and_destroy is done running. */ + test_flags = parent_type::test_flags & ~UNIT_TEST_DEBUG_MAP_ONLY priority = TEST_AFTER_CREATE_AND_DESTROY /datum/unit_test/dcs_check_list_arguments/Run() diff --git a/code/modules/unit_tests/designs.dm b/code/modules/unit_tests/designs.dm index a9b293ed24ad..eebbd2a18480 100644 --- a/code/modules/unit_tests/designs.dm +++ b/code/modules/unit_tests/designs.dm @@ -4,10 +4,10 @@ //Can't use allocate because of bug with certain datums var/datum/design/default_design = new /datum/design() - for(var/path in subtypesof(/datum/design) - typesof(/datum/design/surgery)) //We are checking surgery design separatly later since they work differently - var/datum/design/current_design = new path //Create an instance of each design - if (current_design.id == DESIGN_ID_IGNORE) //Don't check designs with ignore ID - continue + for(var/design_id in SSresearch.techweb_designs) //We are checking surgery design separatly later since they work differently + var/datum/design/current_design = SSresearch.techweb_designs[design_id] + if(istype(current_design, /datum/design/surgery)) + return if (isnull(current_design.name) || current_design.name == default_design.name) //Designs with ID must have non default/null Name TEST_FAIL("Design [current_design.type] has default or null name var but has an ID") if ((!isnull(current_design.materials) && LAZYLEN(current_design.materials)) || (!isnull(current_design.reagents_list) && LAZYLEN(current_design.reagents_list))) //Design requires materials @@ -29,28 +29,23 @@ if (isnull(path::desc) && isnull(path::surgery::rnd_desc) && isnull(path::surgery::desc)) TEST_FAIL("Surgery Design [path] has no desc set or inferable from surgery type") +///Check that all designs have a corresponding id and viceversa, and that they're actually implemented (techweb or disks) /datum/unit_test/design_source /datum/unit_test/design_source/Run() var/list/all_designs = list() - for (var/datum/design/design as anything in subtypesof(/datum/design)) - design = new design() - if (design.id == DESIGN_ID_IGNORE) - continue - if (design.id in all_designs) - TEST_FAIL("Design [design.type] shares an ID \"[design.id]\" with another design") - continue + for(var/id in SSresearch.techweb_designs) + var/datum/design/design = SSresearch.techweb_designs[id] all_designs[design.id] = design.type - for (var/datum/techweb_node/node as anything in subtypesof(/datum/techweb_node)) - node = new node() + for (var/node_id in SSresearch.techweb_nodes) + var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id] for (var/design_id in node.design_ids) if (!all_designs[design_id]) TEST_FAIL("Techweb node [node.display_name] ([node.id]) has a design_id \"[design_id]\" which doesn't correspond to any existing design!") continue all_designs -= design_id - qdel(node) // Designs can also be disk-exclusive for (var/obj/item/disk/design_disk/design_disk as anything in subtypesof(/obj/item/disk/design_disk)) @@ -81,3 +76,90 @@ for (var/missing_id in all_designs) TEST_FAIL("Design [all_designs[missing_id]] has an ID \"[missing_id]\" which is not in any of the techweb nodes or tech disks, or it is possibly misconfigured!") + +///Check that the materials present in the printed objects are consistent with the materials used in techweb design that prints said object. +/datum/unit_test/design_mats + +/datum/unit_test/design_mats/Run() + var/list/special_types = typesof(/datum/material_requirement) + typesof(/datum/material_slot) //we skip designs that can be printed with non-specific materials. + + for (var/design_id in SSresearch.techweb_designs) + var/datum/design/design = SSresearch.techweb_designs[design_id] + + var/mat_requirement_design = length(special_types & design.materials) + + if(mat_requirement_design && length(design.transfered_materials)) + TEST_FAIL("'transfer_materials' doesn't work for [design.type] and other designs that have [/datum/material_slot] or [/datum/material_requirement] in their 'materials' var yet") + continue + + //Do not perform further checks if it doesn't have a built path, mat requirements or if it's one of those designs with choosable requirements (harder to implement checks for those) + if(mat_requirement_design || !design.build_path || !length(design.materials)) + continue + + if(length(design.transfered_materials)) + var/list/mats_total = list() + for(var/object_type in design.transfered_materials) + var/list/transfered_to_obj = design.transfered_materials[object_type] + for(var/mat in design.transfered_materials[object_type]) + if(!(mat in design.materials)) + TEST_FAIL("Found material type [mat] in the 'transfered_materials' var of [design.type] that isn't present in its 'materials' var") + continue + mats_total[mat] += transfered_to_obj[mat] + for(var/mat in mats_total) + if(round(mats_total[mat]) > design.materials[mat]) // some sneaky weird bug may require rounding the value down + TEST_FAIL("Amount of [mat] in the 'transfered_materials' var of [design.type] exceeds what present in its 'materials' var \ + ([transcribe_mat_value_as_sheet(mats_total[mat])] vs [transcribe_mat_value_as_sheet(design.materials[mat])])") + + //The design is exempted from the unit test if it doesn't have the standard inherit_materials val. + if(design.inherit_materials != DESIGN_INHERIT_MATS) + continue + + // The object that represents the type of object that can be built from the design, though it's simple spawned in this case + var/atom/movable/generic_instance = allocate_build_path_for_design(design.build_path) + + // The object that represents the type of object built from the design. + var/atom/movable/printed_instance = allocate_build_path_for_design(design.build_path) + + design.transfer_materials(design.materials, 1, printed_instance) + + if(generic_instance.compare_materials(printed_instance)) + continue + + var/target_var = NAMEOF(generic_instance, custom_materials) + var/warning = "[target_var] of [generic_instance.type] differs from the materials of [design.type]" + + var/what_it_should_be + var/what_it_is + if(isstack(generic_instance)) + var/obj/item/stack/generic_stack = generic_instance + var/obj/item/stack/printed_stack = printed_instance + target_var = NAMEOF(generic_stack, mats_per_unit) + what_it_should_be = printed_stack.transcribe_materials_list(printed_stack.mats_per_unit) + what_it_is = generic_stack.transcribe_materials_list(generic_stack.mats_per_unit) + else + what_it_should_be = printed_instance.transcribe_materials_list() + what_it_is = generic_instance.transcribe_materials_list() + + TEST_FAIL("[warning]. should be: [target_var] = [what_it_should_be] (current value: [what_it_is]). \ + Fix it or change the value of the [NAMEOF(design, inherit_materials)] var of [design.type]. \ + You can also edit the [NAMEOF(design, transfered_materials)] list of the design") + + if(!length(printed_instance.contents)) + continue + + var/list/all_mats = printed_instance.get_contents_custom_materials(/obj/item, TRAIT_IGNORED_BY_MAT_REDEMPTION) + for(var/datum/material/mat as anything in all_mats) + if(all_mats[mat] > design.materials[mat]) + var/sheet_val = transcribe_mat_value_as_sheet(all_mats[mat]) + var/design_val = transcribe_mat_value_as_sheet(design.materials[mat]) + TEST_FAIL("The [mat.name] ([mat.type] = [sheet_val]) of [printed_instance.type] plus its contents exceeds what presents in [design.type] ([design_val]). Review the code of the object and fix that.") + +///Proc made to reduce copypasted code when allocating an object from a design, because stacks have a tendency to merge with each other, and we don't want that. +/datum/unit_test/design_mats/proc/allocate_build_path_for_design(build_path) + var/is_stack = ispath(build_path) + if(is_stack) //If this is a stack, we don't want it to merge with any other stack on the same location + var/obj/item/stack/stack_path = build_path + var/stack_amount = initial(stack_path.amount) + //So we need to specify the args up to the merge argument to avoid issues + return allocate(stack_path, run_loc_floor_bottom_left, /*new_amount =*/ stack_amount, /*merge =*/ FALSE) + return allocate(build_path) diff --git a/code/modules/unit_tests/firedoor_regions.dm b/code/modules/unit_tests/firedoor_regions.dm index 6b64a4a72608..0e2dbfc32efe 100644 --- a/code/modules/unit_tests/firedoor_regions.dm +++ b/code/modules/unit_tests/firedoor_regions.dm @@ -7,6 +7,7 @@ * Then, checks if every non-ignored region has a fire alarm in it */ /datum/unit_test/firedoor_regions + test_flags = UNIT_TEST_MAP_TEST priority = TEST_LONGER /datum/unit_test/firedoor_regions/Run() diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm index b8fb27ab1bbe..407dbe446615 100644 --- a/code/modules/unit_tests/fish_unit_tests.dm +++ b/code/modules/unit_tests/fish_unit_tests.dm @@ -155,7 +155,7 @@ inheritability = 100 reagents_to_add = list(/datum/reagent/fishdummy = FISH_REAGENT_AMOUNT) -/datum/fish_trait/dummy/apply_to_fish(obj/item/fish/fish) +/datum/fish_trait/dummy/apply_to_fish(obj/item/fish/fish, initial = TRUE) . = ..() ADD_TRAIT(fish, TRAIT_FISH_TESTING, FISH_TRAIT_DATUM) diff --git a/code/modules/unit_tests/food_processor.dm b/code/modules/unit_tests/food_processor.dm new file mode 100644 index 000000000000..a8f126b234f9 --- /dev/null +++ b/code/modules/unit_tests/food_processor.dm @@ -0,0 +1,27 @@ +/** + * Makes sure that the input and output of food processor recipes, excluding where one is not a food item, + * have either matching food types or that, by adding foodtypes in the 'added_foodtypes' var of the recipe + * and removing foodtypes in the 'removed_foodtypes' var of the recipe, the foodtypes of the input would match the output + * TL;DR consistency. + */ +/datum/unit_test/food_processor + +/datum/unit_test/food_processor/Run() + var/list/food_processes = subtypesof(/datum/food_processor_process) + + for(var/datum/food_processor_process/recipe as anything in food_processes) + if(!ispath(recipe::input, /obj/item/food) || !ispath(recipe::output, /obj/item/food)) + continue + var/obj/item/food/input = recipe::input + var/obj/item/food/output = recipe::output + + var/input_foodtypes = input::foodtypes + var/output_foodtypes = output::foodtypes + + input_foodtypes |= recipe::added_foodtypes + input_foodtypes &= ~recipe::removed_foodtypes + + if(input_foodtypes != output_foodtypes) + var/text_in_flags = jointext(bitfield_to_list(input_foodtypes, FOOD_FLAGS),"|") + var/text_out_flags = jointext(bitfield_to_list(output_foodtypes, FOOD_FLAGS),"|") + TEST_FAIL("foodtypes of input ([text_in_flags]) vs output ([text_out_flags]) of [recipe] don't match! Check the datum again and fix it") diff --git a/code/modules/unit_tests/gas_transfer.dm b/code/modules/unit_tests/gas_transfer.dm index 2b174ad8c625..06f4afd587ca 100644 --- a/code/modules/unit_tests/gas_transfer.dm +++ b/code/modules/unit_tests/gas_transfer.dm @@ -25,13 +25,10 @@ first_mix.volume = 200 second_mix.volume = 200 - ASSERT_GAS(/datum/gas/hypernoblium, first_mix) - ASSERT_GAS(/datum/gas/tritium, second_mix) - - first_mix.gases[/datum/gas/hypernoblium][MOLES] = nob_moles + first_mix.moles[/datum/gas/hypernoblium] = nob_moles first_mix.temperature = nob_temp - second_mix.gases[/datum/gas/tritium][MOLES] = trit_moles + second_mix.moles[/datum/gas/tritium] = trit_moles second_mix.temperature = trit_temp var/initial_pressure = second_mix.return_pressure() diff --git a/code/modules/unit_tests/job_display_order.dm b/code/modules/unit_tests/job_display_order.dm new file mode 100644 index 000000000000..5dc58cb07aad --- /dev/null +++ b/code/modules/unit_tests/job_display_order.dm @@ -0,0 +1,28 @@ +/// Tests to ensure each job with a display order has a unique index. +/datum/unit_test/job_display_order + +/datum/unit_test/job_display_order/Run() + var/alist/unique_indexes = alist() + // joinable_occupations instead of all_occupations because human_ai and ai have the same index otherwise... Is this a source of flaky fails..? Unsure + for(var/datum/job/job in SSjob.joinable_occupations) + var/jobs_display_order = job.display_order_with_department() + if(!jobs_display_order || !job.display_order) + TEST_FAIL("[job] has no set display order.") + else if(unique_indexes["[jobs_display_order]"]) + TEST_FAIL("[job] has the same index as [unique_indexes["[jobs_display_order]"]] of: [jobs_display_order].") + else + unique_indexes["[jobs_display_order]"] = job + +/// Tests to ensure each department has a unique index. +/datum/unit_test/department_display_order + +/datum/unit_test/department_display_order/Run() + var/alist/unique_indexes = alist() + for(var/datum/job_department/department in SSjob.joinable_departments) + var/departments_display_order = department.display_order + if(!departments_display_order) + TEST_FAIL("[department] has no set display order.") + else if(unique_indexes["[departments_display_order]"]) + TEST_FAIL("[department] has the same index as [unique_indexes["[departments_display_order]"]] of: [departments_display_order].") + else + unique_indexes["[departments_display_order]"] = department diff --git a/code/modules/unit_tests/language_key_conflicts.dm b/code/modules/unit_tests/language_key_conflicts.dm new file mode 100644 index 000000000000..4ae8443e9e0c --- /dev/null +++ b/code/modules/unit_tests/language_key_conflicts.dm @@ -0,0 +1,17 @@ +/* // DARKPACK EDIT REMOVAL - (Due to modularity we are bound to have key conflicts as I dont want to/cant remove all the old TG langauges. Fuck my stupid downstream life.) +/// This test ensures that multiple languages aren't mapped to the same prefix key. +/datum/unit_test/language_key_conflicts + +/datum/unit_test/language_key_conflicts/Run() + var/list/used_keys = list() + for(var/datum/language/language as anything in subtypesof(/datum/language)) + var/name = language::name + var/key = language::key + if(!key) + TEST_FAIL("[name] ([language]) does not have a prefix!") + else if(used_keys[key]) + var/datum/language/conflicting_language = used_keys[key] + TEST_FAIL("[name] ([language]) uses the '[key]' prefix, which is also used by [conflicting_language::name] ([conflicting_language])!") + else + used_keys[key] = language +*/ diff --git a/code/modules/unit_tests/lungs.dm b/code/modules/unit_tests/lungs.dm index 81563feeb3c1..0cf8cd045dcd 100644 --- a/code/modules/unit_tests/lungs.dm +++ b/code/modules/unit_tests/lungs.dm @@ -1,7 +1,7 @@ #define TEST_CHECK_BREATH_MESSAGE(lungs_organ, message) "[lungs_organ.type]/check_breath() [message]" #define TEST_ALERT_THROW_MESSAGE(lungs_organ, alert_name) TEST_CHECK_BREATH_MESSAGE(lungs_organ, "failed to throw alert [alert_name] when expected.") #define TEST_ALERT_INHIBIT_MESSAGE(lungs_organ, alert_name) TEST_CHECK_BREATH_MESSAGE(lungs_organ, "threw alert [alert_name] when it wasn't expected.") -#define GET_MOLES(gas_mixture, gas_type) (gas_mixture.gases[gas_type] ? gas_mixture.gases[gas_type][MOLES] : 0) +#define GET_MOLES(gas_mixture, gas_type) (gas_mixture.moles[gas_type] || 0) /// Tests the standard, plasmaman, and lavaland lungs organ to ensure breathing and suffocation behave as expected. /// Performs a check on each main (can be life-sustaining) gas, and ensures gas alerts are only thrown when expected. @@ -176,7 +176,7 @@ test_mix.temperature = T20C for(var/datum/gas/gas_type as anything in gas_to_percent) test_mix.add_gas(gas_type) - test_mix.gases[gas_type][MOLES] = (ONE_ATMOSPHERE * 2500 / (R_IDEAL_GAS_EQUATION * T20C) * gas_to_percent[gas_type]) + test_mix.moles[gas_type] = (ONE_ATMOSPHERE * 2500 / (R_IDEAL_GAS_EQUATION * T20C) * gas_to_percent[gas_type]) return test_mix /// Set up an O2/N2 gas mix which is "ideal" for organic life. diff --git a/code/modules/unit_tests/make_vegan_wellington.dm b/code/modules/unit_tests/make_vegan_wellington.dm new file mode 100644 index 000000000000..8b497ff2058a --- /dev/null +++ b/code/modules/unit_tests/make_vegan_wellington.dm @@ -0,0 +1,84 @@ +/** + * Confirm that it is possible to make a beef wellington exclusively with podpeople "meat" that won't have the MEAT food type. + */ +/datum/unit_test/make_vegan_wellington/Run() + var/turf/table_loc = run_loc_floor_bottom_left + var/turf/griddle_loc = get_step(run_loc_floor_bottom_left, EAST) + var/turf/human_loc = get_step(run_loc_floor_bottom_left, NORTHEAST) + + ///allocate a table. We don't need it for anything other than cutting a meat slab into cutlets. + allocate(/obj/structure/table, table_loc) + + var/obj/machinery/griddle/griddle = allocate(__IMPLIED_TYPE__, griddle_loc) + var/obj/item/knife/kitchen/a_knife = allocate(__IMPLIED_TYPE__, table_loc) + var/obj/machinery/processor/processor = allocate(__IMPLIED_TYPE__, table_loc) + + var/obj/item/reagent_containers/cup/beaker/beaker = allocate(__IMPLIED_TYPE__, table_loc) + + var/datum/crafting_recipe/food/beef_wellington/recipe = locate() in GLOB.cooking_recipes + + // bake_a_cake should already check that batters and doughes can be made, so let's not waste time making the dough from scratch + var/list/to_spawn = recipe.reqs | recipe.unit_test_spawn_extras + for(var/ingredient in to_spawn) + var/datum/ingredient_path = ingredient + if(ingredient_path::abstract_type == ingredient_path) //skip abstract types + continue + var/amount = to_spawn[ingredient] + if(ispath(ingredient, /datum/reagent)) + beaker.reagents.add_reagent(ingredient, amount) + else if(ispath(ingredient, /obj/item/food/meat)) //we will use vegetable variants for this + continue + for(var/i in 1 to amount) + allocate(ingredient, table_loc) + + // Important ingredients made from 100% organic walking vegetables + var/obj/item/food/meat/slab/human/mutant/plant/raw_steak = allocate(__IMPLIED_TYPE__, griddle_loc) + var/obj/item/food/meat/slab/human/mutant/plant/uncut_cutlet = allocate(__IMPLIED_TYPE__, table_loc) + + var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent, human_loc) + + //cut the plant slab into raw cutlet(s) + a_knife.melee_attack_chain(human, uncut_cutlet) + var/obj/item/food/meat/rawcutlet/cutlet + for(var/obj/item/food/meat/rawcutlet/made in table_loc) + allocated += made + cutlet = made + TEST_ASSERT_NOTNULL(cutlet, "Failed making cutlet out of plant meat!") + TEST_ASSERT(meat_check(cutlet), "Cutlet made from plant meat has MEAT foodtype!") + + //process the raw cutlet into raw bacon + cutlet.melee_attack_chain(human, processor) + processor.interact(human) + var/obj/item/food/meat/rawbacon/raw_bacon = locate() in table_loc + TEST_ASSERT_NOTNULL(raw_bacon, "Failed making bacon out of plant cutlet!") + allocated += raw_bacon + TEST_ASSERT(meat_check(raw_bacon), "Bacon made from plant meat has MEAT foodtype!") + + //turn the griddle on and cook steak and bacon on it + griddle.attack_hand(human) + raw_steak.melee_attack_chain(human, griddle, list(ICON_X = "0", ICON_Y = "0")) + raw_bacon.melee_attack_chain(human, griddle, list(ICON_X = "0", ICON_Y = "0")) + griddle.process(90 SECONDS) //should be done. + + var/obj/item/food/meat/steak/steak = locate() in griddle + TEST_ASSERT_NOTNULL(steak, "Failed cooking steak!") + allocated += steak + steak.forceMove(griddle_loc) //move it out of the griddle so that it can be used in recipes. + TEST_ASSERT(meat_check(steak), "Cooked plant \"steak\" has MEAT foodtype!") + + var/obj/item/food/meat/bacon/bacon = locate() in griddle + TEST_ASSERT_NOTNULL(bacon, "Failed cooking bacon!") + allocated += bacon + bacon.forceMove(griddle_loc) //move it out of the griddle + TEST_ASSERT(meat_check(bacon), "Cooked plant \"bacon\" has MEAT foodtype!") + + //final step, make the recipe and check that it doesn't have + var/datum/component/personal_crafting/crafting = human.GetComponent(__IMPLIED_TYPE__) + var/obj/item/food/beef_wellington/wellington = crafting.construct_item(human, recipe) + allocated += wellington + TEST_ASSERT_NOTNULL(wellington, "Failed making beef wellington!") + TEST_ASSERT(meat_check(wellington), "Beef wellington made from plant \"meat\" still has MEAT foodtype!") + +/datum/unit_test/make_vegan_wellington/proc/meat_check(obj/item/food/target) + var/datum/component/edible/edible = target.GetComponent(__IMPLIED_TYPE__) + return !(edible.foodtypes & MEAT) // return FALSE if it has the MEAT foodtype diff --git a/code/modules/unit_tests/map_landmarks.dm b/code/modules/unit_tests/map_landmarks.dm index f81b67aa6672..a454ed447fc4 100644 --- a/code/modules/unit_tests/map_landmarks.dm +++ b/code/modules/unit_tests/map_landmarks.dm @@ -1,5 +1,6 @@ /// Tests that [/datum/job/proc/get_default_roundstart_spawn_point] returns a landmark from all joinable jobs. /datum/unit_test/maptest_job_roundstart_spawnpoints + test_flags = UNIT_TEST_MAP_TEST /datum/unit_test/maptest_job_roundstart_spawnpoints/Run() for(var/datum/job/job as anything in SSjob.joinable_occupations) diff --git a/code/modules/unit_tests/mapload_space_verification.dm b/code/modules/unit_tests/mapload_space_verification.dm index c7c9845956aa..c51ac0ba549d 100644 --- a/code/modules/unit_tests/mapload_space_verification.dm +++ b/code/modules/unit_tests/mapload_space_verification.dm @@ -1,6 +1,7 @@ /// Verifies that there are no space turfs inside a station area, or on any planetary z-level. Sometimes, these are introduced during the load of the map and are not present in the DMM itself. /// Let's just make sure that we have a stop-gap measure in place to catch these if they pop up so we don't put it onto production servers should something errant come up. /datum/unit_test/maptest_mapload_space_verification + test_flags = UNIT_TEST_MAP_TEST // This test is quite taxing time-wise, so let's run it later than other faster tests. priority = TEST_LONGER diff --git a/code/modules/unit_tests/mapping.dm b/code/modules/unit_tests/mapping.dm index 6b1509ba64e2..4a3393ddf955 100644 --- a/code/modules/unit_tests/mapping.dm +++ b/code/modules/unit_tests/mapping.dm @@ -1,19 +1,9 @@ /// Conveys all log_mapping messages as unit test failures, as they all indicate mapping problems. /datum/unit_test/maptest_log_mapping + test_flags = UNIT_TEST_MAP_TEST // Happen before all other tests, to make sure we only capture normal mapping logs. priority = TEST_PRE /datum/unit_test/maptest_log_mapping/Run() - var/static/regex/test_areacoord_regex = regex(@"\(-?\d+,-?\d+,(-?\d+)\)") - for(var/log_entry in GLOB.unit_test_mapping_logs) - // Only fail if AREACOORD was conveyed, and it's a station or mining z-level. - // This is due to mapping errors don't have coords being impossible to diagnose as a unit test, - // and various ruins frequently intentionally doing non-standard things. - if(!test_areacoord_regex.Find(log_entry)) - continue - var/z = text2num(test_areacoord_regex.group[1]) - if(!is_station_level(z) && !is_mining_level(z)) - continue - TEST_FAIL(log_entry) diff --git a/code/modules/unit_tests/mapping_nearstation_test.dm b/code/modules/unit_tests/mapping_nearstation_test.dm index 39898432fa03..6cdfe9be0783 100644 --- a/code/modules/unit_tests/mapping_nearstation_test.dm +++ b/code/modules/unit_tests/mapping_nearstation_test.dm @@ -1,5 +1,6 @@ ///Detects movables that may have been accidentally placed in space, as well as movables which do not have the proper nearspace area (meaning they aren't lit properly.) /datum/unit_test/maptest_mapping_nearstation_test + test_flags = UNIT_TEST_MAP_TEST priority = TEST_PRE /datum/unit_test/maptest_mapping_nearstation_test/Run() diff --git a/code/modules/unit_tests/mouse_bite_cable.dm b/code/modules/unit_tests/mouse_bite_cable.dm index df77976ce47c..dc7fd04d24cb 100644 --- a/code/modules/unit_tests/mouse_bite_cable.dm +++ b/code/modules/unit_tests/mouse_bite_cable.dm @@ -1,5 +1,6 @@ /// Unit Test to ensure that a mouse bites a cable, gets shocked, and dies. /datum/unit_test/mouse_bite_cable + normal_floor_required = TRUE /datum/unit_test/mouse_bite_cable/Run() // use dummy subtype that will bypass the probability check to bite on a cable diff --git a/code/modules/unit_tests/orphaned_genturf.dm b/code/modules/unit_tests/orphaned_genturf.dm index 289b883d2def..ce1d97faec3f 100644 --- a/code/modules/unit_tests/orphaned_genturf.dm +++ b/code/modules/unit_tests/orphaned_genturf.dm @@ -1,6 +1,7 @@ /// Ensures we do not leave genturfs sitting around post work /// They serve as notice to the mapper and have no functionality, but it's good to make note of it here /datum/unit_test/orphaned_genturf + test_flags = UNIT_TEST_MAP_TEST /datum/unit_test/orphaned_genturf/Run() for(var/turf/open/genturf/orphaned in ALL_TURFS()) diff --git a/code/modules/unit_tests/rcd.dm b/code/modules/unit_tests/rcd.dm index 49e9f8461fd0..bdeb615c58e7 100644 --- a/code/modules/unit_tests/rcd.dm +++ b/code/modules/unit_tests/rcd.dm @@ -8,6 +8,9 @@ * the test again on our turf containing our single frame, deconstructing the machines! This should also not spawn * any stacked machine frames. */ +/datum/unit_test/frame_stacking + normal_floor_required = TRUE + /datum/unit_test/frame_stacking/Run() // First test - RCDs stacking frames. var/obj/item/construction/rcd/rcd = allocate(/obj/item/construction/rcd/combat/admin) diff --git a/code/modules/unit_tests/required_map_items.dm b/code/modules/unit_tests/required_map_items.dm index 55f37641ac87..41fe1d448709 100644 --- a/code/modules/unit_tests/required_map_items.dm +++ b/code/modules/unit_tests/required_map_items.dm @@ -6,6 +6,7 @@ * - In the type's initialize, REGISTER_REQUIRED_MAP_ITEM() a minimum and maximum */ /datum/unit_test/maptest_required_map_items + test_flags = UNIT_TEST_MAP_TEST /// A list of all typepaths that we expect to be in the required items list var/list/expected_types = list() @@ -15,17 +16,17 @@ /datum/unit_test/maptest_required_map_items/proc/setup_expected_types() expected_types += /obj/item/blood_hunt expected_types += /obj/effect/landmark/latejoin_masquerade - // DARKPACK EDIT REMOVAL START - // expected_types += subtypesof(/obj/item/stamp/head) - // expected_types += subtypesof(/obj/machinery/modular_computer/preset/cargochat) - - // expected_types += /mob/living/basic/parrot/poly - // expected_types += /mob/living/basic/pet/dog/corgi/ian - // expected_types += /mob/living/carbon/human/species/monkey/punpun - // expected_types += /obj/machinery/computer/communications - // expected_types += /obj/machinery/drone_dispenser - // expected_types += /obj/item/piggy_bank/vault - // DARKPACK EDIT REMOVAL END + /* // DARKPACK EDIT REMOVAL START + expected_types += subtypesof(/obj/item/stamp/head) + expected_types += subtypesof(/obj/machinery/modular_computer/preset/cargochat) + expected_types += subtypesof(/obj/machinery/fax/heads) + expected_types += /mob/living/basic/parrot/poly + expected_types += /mob/living/basic/pet/dog/corgi/ian + expected_types += /mob/living/carbon/human/species/monkey/punpun + expected_types += /obj/machinery/computer/communications + expected_types += /obj/machinery/drone_dispenser + expected_types += /obj/item/piggy_bank/vault + */ // DARKPACK EDIT REMOVAL END /datum/unit_test/maptest_required_map_items/Run() setup_expected_types() diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_shifter_bestial.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_shifter_bestial.png index 1509dd9d172f..1de975ff9bf0 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_shifter_bestial.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_shifter_bestial.png differ diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey.png index 32ebda3ffe7a..1455a51215c0 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_monkey.png differ diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 92e9e2042b2a..0b2f45d80795 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -5,9 +5,6 @@ // Use the new basic mobs system instead. // If you are refactoring a simple_animal, REMOVE it from this list var/list/allowed_types = list( - /mob/living/simple_animal/bot, - /mob/living/simple_animal/bot/mulebot, - /mob/living/simple_animal/bot/mulebot/paranormal, /mob/living/simple_animal/hostile, /mob/living/simple_animal/hostile/asteroid, /mob/living/simple_animal/hostile/asteroid/elite, diff --git a/code/modules/unit_tests/spraycan.dm b/code/modules/unit_tests/spraycan.dm index 2ee4ab14454b..1c46ffb54d96 100644 --- a/code/modules/unit_tests/spraycan.dm +++ b/code/modules/unit_tests/spraycan.dm @@ -1,5 +1,6 @@ /// Tests spray painting the ground to create graffiti. /datum/unit_test/spraypainting + normal_floor_required = TRUE /datum/unit_test/spraypainting/Run() var/mob/living/carbon/human/consistent/artist = EASY_ALLOCATE() diff --git a/code/modules/unit_tests/subsystem_init.dm b/code/modules/unit_tests/subsystem_init.dm index f5168079a907..3f49b5069e09 100644 --- a/code/modules/unit_tests/subsystem_init.dm +++ b/code/modules/unit_tests/subsystem_init.dm @@ -1,5 +1,6 @@ /// Tests that all subsystems that need to properly initialize. /datum/unit_test/subsystem_init + test_flags = UNIT_TEST_MAP_TEST /datum/unit_test/subsystem_init/Run() for(var/datum/controller/subsystem/subsystem as anything in Master.subsystems) diff --git a/code/modules/unit_tests/surgeries.dm b/code/modules/unit_tests/surgeries.dm index 2cf9f9bdb00e..14fd289d0417 100644 --- a/code/modules/unit_tests/surgeries.dm +++ b/code/modules/unit_tests/surgeries.dm @@ -348,3 +348,34 @@ TEST_ASSERT(LIMB_HAS_SURGERY_STATE(chest, SURGERY_SKIN_OPEN), "Surgical state for skin open was incorrectly removed upon wound healing") TEST_ASSERT(LIMB_HAS_SURGERY_STATE(chest, SURGERY_VESSELS_UNCLAMPED), "Surgical state for unclamped vessels was incorrectly removed upon wound healing") TEST_ASSERT(!LIMB_HAS_SURGERY_STATE(chest, SURGERY_BONE_DRILLED), "Surgical state for bone drilled was not correctly removed upon wound healing") + +/// Makes sure surgery returns the correct implement +/datum/unit_test/surgery_implement + +/datum/unit_test/surgery_implement/Run() + var/datum/surgery_operation/limb/incise_skin/surgery = GLOB.operations.operations_by_typepath[__IMPLIED_TYPE__] + + // Tests scalpel which matches via tool behavior type + var/obj/item/scalpel/scalpel = EASY_ALLOCATE() + var/scalpel_quality = UNLINT(surgery.get_tool_quality(scalpel)) + TEST_ASSERT_EQUAL(scalpel_quality, surgery.implements[TOOL_SCALPEL], "Incise skin surgery did not return the correct tool quality for a scalpel, which is the expected tool") + + // Tests retractor which doesn't match via tool behavior type or item type + var/obj/item/retractor/retractor = EASY_ALLOCATE() + var/retractor_quality = UNLINT(surgery.get_tool_quality(retractor)) + TEST_ASSERT_EQUAL(retractor_quality, 0, "Incise skin surgery returned a non-zero tool quality for a retractor, which is not a valid implement for this surgery") + + // Tests knife which matches via item type + var/obj/item/knife/knife = EASY_ALLOCATE() + var/knife_quality = UNLINT(surgery.get_tool_quality(knife)) + TEST_ASSERT_EQUAL(knife_quality, surgery.implements[/obj/item/knife], "Incise skin surgery did not return the correct tool quality for a knife, which is a bespoke scalpel substitute") + + // Tests claymore which matches via tool check + var/obj/item/claymore/claymore = EASY_ALLOCATE() + var/claymore_quality = UNLINT(surgery.get_tool_quality(claymore)) + TEST_ASSERT_EQUAL(claymore_quality, surgery.implements[/obj/item], "Incise skin surgery did not return the correct tool quality for a claymore, which is a generic scalpel substitute") + + // Tests a random item (pillow) which fails via tool check + var/obj/item/pillow/pillow = EASY_ALLOCATE() + var/pillow_quality = UNLINT(surgery.get_tool_quality(pillow)) + TEST_ASSERT_EQUAL(pillow_quality, 0, "Incise skin surgery returned a non-zero tool quality for a pillow, which is not a valid generic scalpel substitute") diff --git a/code/modules/unit_tests/trash_food.dm b/code/modules/unit_tests/trash_food.dm index 8b545d5a751b..123b190a2483 100644 --- a/code/modules/unit_tests/trash_food.dm +++ b/code/modules/unit_tests/trash_food.dm @@ -1,3 +1,4 @@ +/* // DARKPACK EDIT REMOVAL - (Due to modularity, this just cant exist, we have too many food items we dont acctually want apperaing in game) /// Checks to make sure all food trash is included in /obj/effect/spawner/random/trash/food_packaging /datum/unit_test/trash_food @@ -32,3 +33,4 @@ continue if(!food_trash[trash]) TEST_FAIL("[food] must include its trash_type for loot table /obj/effect/spawner/random/trash/food_packaging or be added to this unit tests food_trash_blacklist") +*/ diff --git a/code/modules/unit_tests/turf_icons.dm b/code/modules/unit_tests/turf_icons.dm index e0f6bad45a33..2ef0f8bb0e48 100644 --- a/code/modules/unit_tests/turf_icons.dm +++ b/code/modules/unit_tests/turf_icons.dm @@ -3,7 +3,7 @@ var/modular_mineral_turf_file //= 'icons/turf/mining.dmi' //MODULARITY SUPPORT - insert your snowflake MAP_SWITCH icon file here if you use that define. /datum/unit_test/maptest_turf_icons/Run() - for(var/turf/turf_path as anything in (subtypesof(/turf) - typesof(/turf/closed/mineral))) + for(var/turf/turf_path as anything in (subtypesof(/turf) - typesof(/turf/closed/mineral, /turf/closed/indestructible/rock))) var/icon_state = initial(turf_path.icon_state) var/icon_file = initial(turf_path.icon) diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index 74f41bf10884..c381779b38a5 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -27,36 +27,40 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) /proc/focused_tests() var/list/focused_tests = list() for (var/datum/unit_test/unit_test as anything in subtypesof(/datum/unit_test)) - if (initial(unit_test.focus)) + if (unit_test::test_flags & UNIT_TEST_FOCUS) focused_tests += unit_test - return focused_tests.len > 0 ? focused_tests : null + return length(focused_tests) ? focused_tests : null /datum/unit_test - /// Do not instantiate if type matches this abstract_type = /datum/unit_test - //Bit of metadata for the future maybe - var/list/procs_tested + /// Behavior flags for this unit test + var/test_flags = UNIT_TEST_BASIC + /// The priority of the test, the larger it is the later it fires + var/priority = TEST_DEFAULT + /// How many times this unit test will run. Use the TEST_REPEAT() macro + var/times_to_run = 1 + // internal shit + /// If this test has passed or not + var/succeeded = TRUE /// The bottom left floor turf of the testing zone var/turf/run_loc_floor_bottom_left - /// The top right floor turf of the testing zone var/turf/run_loc_floor_top_right - ///The priority of the test, the larger it is the later it fires - var/priority = TEST_DEFAULT - //internal shit - var/focus = FALSE - var/succeeded = TRUE + /// A list of instances created by this unit test. Use allocate() var/list/allocated + /// Lazy list of why this unit test failed. var/list/fail_reasons - var/times_to_run = 1 - /// List of atoms that we don't want to ever initialize in an agnostic context, like for Create and Destroy. Stored on the base datum for usability in other relevant tests that need this data. + /// List of atoms that we don't want to ever initialize in an agnostic context, like for Create and Destroy. + /// Stored on the base datum for usability in other relevant tests that need this data. var/static/list/uncreatables = null - + /// Reference to the blank z-level containing our testing enviroment var/static/datum/space_level/reservation + /// If this unit test requires a normal turf to run. + var/normal_floor_required = FALSE /proc/cmp_unit_test_priority(datum/unit_test/a, datum/unit_test/b) return initial(a.priority) - initial(b.priority) @@ -66,10 +70,11 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) var/datum/map_template/unit_tests/template = new reservation = template.load_new_z() - if (isnull(uncreatables)) - uncreatables = build_list_of_uncreatables() + if(test_flags & UNIT_TEST_FOCUS) + log_world("::error::[src] has UNIT_TEST_FOCUS present inside var/test_flags. This is a reminder to remove it from your commit!") // So CI fails. + uncreatables ||= build_list_of_uncreatables() - allocated = new + allocated = list() run_loc_floor_bottom_left = get_turf(locate(/obj/effect/landmark/unit_test_bottom_left) in GLOB.landmarks_list) run_loc_floor_top_right = get_turf(locate(/obj/effect/landmark/unit_test_top_right) in GLOB.landmarks_list) @@ -78,8 +83,11 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) return //Make sure that the top and bottom locations in the diagonal are floors. Anything else may get in the way of several tests. - TEST_ASSERT(isfloorturf(run_loc_floor_bottom_left), "run_loc_floor_bottom_left was not a floor ([run_loc_floor_bottom_left])") - TEST_ASSERT(isfloorturf(run_loc_floor_top_right), "run_loc_floor_top_right was not a floor ([run_loc_floor_top_right])") + TEST_ASSERT(isindestructiblefloor(run_loc_floor_bottom_left), "run_loc_floor_bottom_left was not an indestructable floor ([run_loc_floor_bottom_left])") + TEST_ASSERT(isindestructiblefloor(run_loc_floor_top_right), "run_loc_floor_top_right was not an indestructable floor ([run_loc_floor_top_right])") + if(normal_floor_required) + for(var/turf/open/turf in get_area_turfs(run_loc_floor_bottom_left.loc)) + turf.ChangeTurf(/turf/open/floor) /datum/unit_test/Destroy() QDEL_LIST(allocated) @@ -89,6 +97,9 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) if (istype(content, /obj/effect/landmark)) continue qdel(content) + if(normal_floor_required) + for(var/turf/open/turf in get_area_turfs(run_loc_floor_bottom_left.loc)) + turf.ChangeTurf(/turf/open/indestructible) return ..() /datum/unit_test/proc/Run() @@ -367,15 +378,44 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) /proc/RunUnitTests() CHECK_TICK - var/list/tests_to_run = subtypesof(/datum/unit_test) + // Find our primary unit test map & find out if we are the secondary + var/datum/map_config/primary_unit_test_map + var/is_secondary_unit_test_map = FALSE + var/found_secondary_unit_test_map = FALSE + for(var/map_name, _map_config in config.maplist) + var/datum/map_config/map_config = _map_config + if(map_config.is_unit_test_map) + primary_unit_test_map = map_config + if(!LAZYLEN(map_config.skipped_tests) && !found_secondary_unit_test_map) + found_secondary_unit_test_map = TRUE + if(SSmapping.current_map.map_name == map_name) + is_secondary_unit_test_map = TRUE + + var/list/tests_to_run = list() var/list/focused_tests = list() - for (var/_test_to_run in tests_to_run) - var/datum/unit_test/test_to_run = _test_to_run - if (initial(test_to_run.focus)) - focused_tests += test_to_run + for (var/datum/unit_test/potential_test as anything in subtypesof(/datum/unit_test)) +// if you're doing this locally, do ALL of it +// otherwise, we gotta split em up +#ifndef RUNNING_LOCAL_TESTS + // If the test has [UNIT_TEST_DEBUG_MAP_ONLY] and we aren't the primary unit test map, skip it. + // HOWEVER, some unit tests are incompatible with the primary testing map, so we must offload them a secondary one with no blacklisted tests. + // If we didn't find a primary unit test map then we are likely a solo runner. + if((potential_test::test_flags & UNIT_TEST_DEBUG_MAP_ONLY) && \ + !isnull(primary_unit_test_map) && \ + !SSmapping.current_map.is_unit_test_map && \ + !(primary_unit_test_map.skipped_tests?.Find(potential_test) && is_secondary_unit_test_map) \ + ) + continue +#endif + if (potential_test::test_flags & UNIT_TEST_FOCUS) + focused_tests += potential_test + continue + tests_to_run += potential_test if(length(focused_tests)) tests_to_run = focused_tests + primary_unit_test_map = null // I'm paranoid + sortTim(tests_to_run, GLOBAL_PROC_REF(cmp_unit_test_priority)) var/list/test_results = list() diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm index 8fc403ea9c83..1c3e2edc0007 100644 --- a/code/modules/uplink/uplink_items/device_tools.dm +++ b/code/modules/uplink/uplink_items/device_tools.dm @@ -237,8 +237,8 @@ /datum/uplink_item/device_tools/hacked_module name = "Hacked AI Law Upload Module" desc = "When used with an upload console, this module allows you to upload priority laws to an artificial intelligence. \ + This board bypasses all access restrictions on the console. \ Be careful with wording, as artificial intelligences may look for loopholes to exploit." - progression_minimum = 30 MINUTES item = /obj/item/ai_module/syndicate cost = 4 diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index 8f00aa8b2857..8ba4ae0b6293 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -158,7 +158,7 @@ /datum/uplink_item/role_restricted/rebarxbowsyndie name = "Syndicate Rebar Crossbow" - desc = "A much more professional version of the engineer's bootleg rebar crossbow. 3 shot mag, quicker loading, and better ammo. Owners manual included." + desc = "A much more professional version of the engineer's bootleg rebar crossbow. 6 shot mag, quicker loading, and better ammo. Owners manual included." item = /obj/item/storage/box/syndie_kit/rebarxbowsyndie cost = 12 restricted_roles = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN) diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index 265c43dce651..e008dbca98d2 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -654,7 +654,7 @@ operative team's body-cams. They can also pilot the shuttle remotely and view the station's camera net. \ If you're a meathead who's just here to kill people and don't care about strategising or intel, you'll still have someone to bear witness to your murder-spree!" item = /obj/item/antag_spawner/nuke_ops/overwatch - cost = 12 + cost = 10 purchasable_from = UPLINK_FIREBASE_OPS // ~~ Disposable Sentry Gun ~~ diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm deleted file mode 100644 index a3b8b85adffa..000000000000 --- a/code/modules/vehicles/cars/vim.dm +++ /dev/null @@ -1,158 +0,0 @@ -/** - * ## VIM!!!!!!! - * - * It's a teenie miniature mecha... for critters! - * For the critters that cannot be understood, there is a sound creator in the mecha. It also has headlights. - */ -/obj/vehicle/sealed/car/vim - name = "\improper Vim" - desc = "A miniature exosuit from Nanotrasen, developed to let the irreplaceable station pets live a little longer." - icon_state = "vim" - max_integrity = 50 - armor_type = /datum/armor/car_vim - enter_delay = 20 - movedelay = 0.6 - engine_sound_length = 0.3 SECONDS - light_system = OVERLAY_LIGHT_DIRECTIONAL - light_range = 4 - light_power = 1.5 - light_on = FALSE - engine_sound = 'sound/effects/servostep.ogg' - interaction_flags_mouse_drop = NONE - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) - ///Maximum size of a mob trying to enter the mech - var/maximum_mob_size = MOB_SIZE_SMALL - COOLDOWN_DECLARE(sound_cooldown) - -/datum/armor/car_vim - melee = 70 - bullet = 40 - laser = 40 - bomb = 30 - fire = 80 - acid = 80 - -/obj/vehicle/sealed/car/vim/Initialize(mapload) - . = ..() - AddComponent( \ - /datum/component/shell, \ - unremovable_circuit_components = list(new /obj/item/circuit_component/vim), \ - capacity = SHELL_CAPACITY_SMALL, \ - ) - -/obj/vehicle/sealed/car/vim/examine(mob/user) - . = ..() - . += span_notice("[src] can be repaired with a welder.") - -/obj/vehicle/sealed/car/vim/atom_destruction(damage_flag) - new /obj/effect/decal/cleanable/blood/oil(get_turf(src)) - do_sparks(5, TRUE, src) - visible_message(span_bolddanger("[src] blows apart!")) - return ..() - -/obj/vehicle/sealed/car/vim/mob_try_enter(mob/entering) - if(!isanimal_or_basicmob(entering)) - return FALSE - var/mob/living/animal_or_basic = entering - if(animal_or_basic.mob_size > maximum_mob_size) - entering.balloon_alert(entering, "can't fit inside!") - return FALSE - return ..() - -/obj/vehicle/sealed/car/vim/welder_act(mob/living/user, obj/item/W) - if(user.combat_mode) - return - . = TRUE - if(DOING_INTERACTION(user, src)) - balloon_alert(user, "you're already repairing it!") - return - if(atom_integrity >= max_integrity) - balloon_alert(user, "it's not damaged!") - return - if(!W.tool_start_check(user, amount=1, heat_required = HIGH_TEMPERATURE_REQUIRED)) - return - user.balloon_alert_to_viewers("started welding [src]", "started repairing [src]") - audible_message(span_hear("You hear welding.")) - var/did_the_thing - while(atom_integrity < max_integrity) - if(W.use_tool(src, user, 2.5 SECONDS, volume=50)) - did_the_thing = TRUE - atom_integrity += min(VIM_HEAL_AMOUNT, (max_integrity - atom_integrity)) - audible_message(span_hear("You hear welding.")) - else - break - if(did_the_thing) - user.balloon_alert_to_viewers("[(atom_integrity >= max_integrity) ? "fully" : "partially"] repaired [src]") - else - user.balloon_alert_to_viewers("stopped welding [src]", "interrupted the repair!") - -/obj/vehicle/sealed/car/vim/mob_enter(mob/newoccupant, silent = FALSE) - . = ..() - update_appearance() - playsound(src, 'sound/machines/windowdoor.ogg', 50, TRUE) - if(atom_integrity == max_integrity) - SEND_SOUND(newoccupant, sound('sound/vehicles/mecha/nominal.ogg',volume=50)) - -/obj/vehicle/sealed/car/vim/mob_try_exit(mob/pilot, mob/user, silent = FALSE, randomstep = FALSE) - . = ..() - update_appearance() - -/obj/vehicle/sealed/car/vim/generate_actions() - initialize_controller_action_type(/datum/action/vehicle/sealed/climb_out/vim, VEHICLE_CONTROL_DRIVE) - initialize_controller_action_type(/datum/action/vehicle/sealed/noise/chime, VEHICLE_CONTROL_DRIVE) - initialize_controller_action_type(/datum/action/vehicle/sealed/noise/buzz, VEHICLE_CONTROL_DRIVE) - initialize_controller_action_type(/datum/action/vehicle/sealed/headlights/vim, VEHICLE_CONTROL_DRIVE) - -/obj/vehicle/sealed/car/vim/update_overlays() - . = ..() - var/static/piloted_overlay - var/static/headlights_overlay - if(isnull(piloted_overlay)) - piloted_overlay = iconstate2appearance(icon, "vim_piloted") - headlights_overlay = iconstate2appearance(icon, "vim_headlights") - - var/list/drivers = return_drivers() - if(drivers.len) - . += piloted_overlay - if(headlights_toggle) - . += headlights_overlay - -/obj/item/circuit_component/vim - display_name = "Vim" - desc = "A miniature exosuit from Nanotrasen, developed to let the irreplaceable station pets live a little longer." - - /// Sent when the mech chimes. - var/datum/port/output/chime - /// Sent when the mech buzzes. - var/datum/port/output/buzz - /// Whether the mech headlights are currently on. - var/datum/port/output/are_headlights_on - -/obj/item/circuit_component/vim/populate_ports() - are_headlights_on = add_output_port("Are Headlights On", PORT_TYPE_BOOLEAN) - chime = add_output_port("On Chime Used", PORT_TYPE_SIGNAL) - buzz = add_output_port("On Buzz Used", PORT_TYPE_SIGNAL) - -/obj/item/circuit_component/vim/register_shell(atom/movable/shell) - . = ..() - RegisterSignal(shell, COMSIG_VIM_HEADLIGHTS_TOGGLED, PROC_REF(on_headlights_toggle)) - RegisterSignal(shell, COMSIG_VIM_CHIME_USED, PROC_REF(on_chime_used)) - RegisterSignal(shell, COMSIG_VIM_BUZZ_USED, PROC_REF(on_buzz_used)) - -/obj/item/circuit_component/vim/unregister_shell(atom/movable/shell) - . = ..() - UnregisterSignal(shell, COMSIG_VIM_HEADLIGHTS_TOGGLED) - UnregisterSignal(shell, COMSIG_VIM_CHIME_USED) - UnregisterSignal(shell, COMSIG_VIM_BUZZ_USED) - -/obj/item/circuit_component/vim/proc/on_headlights_toggle(datum/source, headlights_on) - SIGNAL_HANDLER - are_headlights_on.set_output(headlights_on) - -/obj/item/circuit_component/vim/proc/on_chime_used() - SIGNAL_HANDLER - chime.set_output(COMPONENT_SIGNAL) - -/obj/item/circuit_component/vim/proc/on_buzz_used() - SIGNAL_HANDLER - buzz.set_output(COMPONENT_SIGNAL) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 2d046b2596a2..b87f18a82f0d 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -37,15 +37,15 @@ mouse_pointer = 'icons/effects/mouse_pointers/mecha_mouse.dmi' /// Significantly heavier than humans inertia_force_weight = 5 - ///How much energy the mech will consume each time it moves. this is the current active energy consumed + /// How much energy the mech will consume each time it moves. this is the current active energy consumed var/step_energy_drain = 0.008 * STANDARD_CELL_CHARGE - ///How much energy we drain each time we mechpunch someone + /// How much energy we drain each time we mechpunch someone var/melee_energy_drain = 0.015 * STANDARD_CELL_CHARGE - ///Power we use to have the lights on + /// Power we use to have the lights on var/light_power_drain = 0.002 * STANDARD_CELL_RATE - ///Modifiers for directional damage reduction + /// Modifiers for directional damage reduction var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 0.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 1.5) - ///if we cant use our equipment(such as due to EMP) + /// If we cant use our equipment(such as due to EMP) var/equipment_disabled = FALSE /// Keeps track of the mech's cell var/obj/item/stock_parts/power_store/cell @@ -55,59 +55,59 @@ var/obj/item/stock_parts/capacitor/capacitor /// Keeps track of the mech's servo motor var/obj/item/stock_parts/servo/servo - ///Contains flags for the mecha + /// Contains flags for the mecha var/mecha_flags = CAN_STRAFE | IS_ENCLOSED | HAS_LIGHTS | MMI_COMPATIBLE | BEACON_TRACKABLE | AI_COMPATIBLE | BEACON_CONTROLLABLE - ///Spark effects are handled by this datum + /// Spark effects are handled by this datum var/datum/effect_system/basic/spark_spread/spark_system - ///How powerful our lights are + /// How powerful our lights are var/lights_power = 6 - ///Just stop the mech from doing anything + /// Just stop the mech from doing anything var/completely_disabled = FALSE - ///Whether this mech is allowed to move diagonally + /// Whether this mech is allowed to move diagonally var/allow_diagonal_movement = TRUE - ///Whether this mech moves into a direct as soon as it goes to move. Basically, turn and step in the same key press. + /// Whether this mech moves into a direct as soon as it goes to move. Basically, turn and step in the same key press. var/pivot_step = FALSE - ///Whether or not the mech destroys walls by running into it. + /// Whether or not the mech destroys walls by running into it. var/bumpsmash = FALSE - ///////////ATMOS - ///Whether the cabin exchanges gases with the environment + // Atmos stuff + /// Whether the cabin exchanges gases with the environment var/cabin_sealed = FALSE - ///Internal air mix datum + /// Internal air mix datum var/datum/gas_mixture/cabin_air - ///Volume of the cabin + /// Volume of the cabin var/cabin_volume = TANK_STANDARD_VOLUME * 3 - ///List of installed remote tracking beacons, including AI control beacons + /// List of installed remote tracking beacons, including AI control beacons var/list/trackers = list() - ///Camera installed into the mech + /// Camera installed into the mech var/obj/machinery/camera/exosuit/chassis_camera var/max_temperature = 25000 - ///Bitflags for internal damage + /// Bitflags for internal damage var/internal_damage = NONE /// % chance for internal damage to occur var/internal_damage_probability = 20 - /// list of possibly dealt internal damage for this mech type + /// List of possibly dealt internal damage for this mech type var/possible_int_damage = MECHA_INT_FIRE|MECHA_INT_TEMP_CONTROL|MECHA_CABIN_AIR_BREACH|MECHA_INT_CONTROL_LOST|MECHA_INT_SHORT_CIRCUIT - /// damage threshold above which we take component damage + /// Damage threshold above which we take component damage var/component_damage_threshold = 10 - ///Stores the DNA enzymes of a carbon so tht only they can access the mech + /// Stores the DNA enzymes of a carbon so tht only they can access the mech var/dna_lock /// A list of all granted accesses var/list/accesses = list() /// If the mech should require ALL or only ONE of the listed accesses var/one_access = TRUE - ///Typepath for the wreckage it spawns when destroyed + /// Typepath for the wreckage it spawns when destroyed var/wreckage - ///single flag for the type of this mech, determines what kind of equipment can be attached to it + /// Single flag for the type of this mech, determines what kind of equipment can be attached to it var/mech_type - ///assoc list: key-typepathlist before init, key-equipmentlist after + /// Assoc list: key-typepathlist before init, key-equipmentlist after var/list/equip_by_category = list( MECHA_L_ARM = null, MECHA_R_ARM = null, @@ -115,7 +115,7 @@ MECHA_POWER = list(), MECHA_ARMOR = list(), ) - ///assoc list: max equips for modules key-count + /// Assoc list: max equips for modules key-count var/list/max_equip_by_category = list( MECHA_L_ARM = 1, MECHA_R_ARM = 1, @@ -123,94 +123,71 @@ MECHA_POWER = 1, MECHA_ARMOR = 0, ) - ///flat equipment for iteration + /// Flat equipment for iteration var/list/flat_equipment - ///Handles an internal ore box for mining mechs + /// Internal ore box for mining mechs, or one picked up by a hydraulic clamp var/obj/structure/ore_box/ore_box ///Whether our steps are silent due to no gravity var/step_silent = FALSE - ///Sound played when the mech moves + /// Sound played when the mech moves var/stepsound = 'sound/vehicles/mecha/mechstep.ogg' - ///Sound played when the mech walks + /// Sound played when the mech walks var/turnsound = 'sound/vehicles/mecha/mechturn.ogg' - ///Sounds for types of melee attack + /// Sounds for types of melee attack var/brute_attack_sound = 'sound/items/weapons/punch4.ogg' var/burn_attack_sound = 'sound/items/tools/welder.ogg' var/tox_attack_sound = 'sound/effects/spray2.ogg' - ///Sound on wall destroying + /// Sound on wall destroying var/destroy_wall_sound = 'sound/effects/meteorimpact.ogg' - ///Melee attack verb + /// Melee attack verb var/list/attack_verbs = list("hit", "hits", "hitting") - ///Cooldown duration between melee punches + /// Cooldown duration between melee punches var/melee_cooldown = CLICK_CD_SLOW - ///TIme taken to leave the mech + /// Time taken to leave the mech var/exit_delay = 2 SECONDS - ///Time you get slept for if you get forcible ejected by the mech exploding + /// Time you get slept for if you get forcible ejected by the mech exploding var/destruction_sleep_duration = 2 SECONDS - ///In case theres a different iconstate for AI/MMI pilot(currently only used for ripley) + /// In case theres a different iconstate for AI/MMI pilot(currently only used for ripley) var/silicon_icon_state = null - ///Currently ejecting, and unable to do things + /// Currently ejecting, and unable to do things var/is_currently_ejecting = FALSE - ///Safety for weapons. Won't fire if enabled, and toggled by middle click. + /// Safety for weapons. Won't fire if enabled, and toggled by middle click. var/weapons_safety = FALSE - ///Don't play standard sound when set safety if TRUE. + /// Don't play standard sound when set safety if TRUE. var/safety_sound_custom = FALSE - var/datum/effect_system/fluid_spread/smoke/smoke_system - - ////Action vars - ///Ref to any active thrusters we might have + // Action vars + /// Ref to any active thrusters we might have var/obj/item/mecha_parts/mecha_equipment/thrusters/active_thrusters - ///Bool for energy shield on/off - var/defense_mode = FALSE - - ///Bool for leg overload on/off + /// Bool for leg overload on/off VAR_FINAL/overclock_mode = FALSE - ///Whether it is possible to toggle overclocking from the cabin + /// Whether it is possible to toggle overclocking from the cabin var/can_use_overclock = FALSE - ///Speed and energy usage modifier for leg overload + /// Speed and energy usage modifier for leg overload var/overclock_coeff = 1.5 - ///Current leg actuator temperature. Increases when overloaded, decreases when not. + /// Current leg actuator temperature. Increases when overloaded, decreases when not. var/overclock_temp = 0 - ///Temperature threshold at which actuators may start causing internal damage + /// Temperature threshold at which actuators may start causing internal damage var/overclock_temp_danger = 15 - ///Whether the mech has an option to enable safe overclocking + /// Whether the mech has an option to enable safe overclocking var/overclock_safety_available = FALSE - ///Whether the overclocking turns off automatically when overheated + /// Whether the overclocking turns off automatically when overheated var/overclock_safety = FALSE /// Action type for overclocking, if null - no action var/overclock_action_type = /datum/action/vehicle/sealed/mecha/mech_overclock /// Name of the overclock action var/overclock_name = "overclock" - //Bool for zoom on/off - var/zoom_mode = FALSE - - ///Remaining smoke charges - var/smoke_charges = 5 - ///Cooldown between using smoke - var/smoke_cooldown = 10 SECONDS - - ///check for phasing, if it is set to text (to describe how it is phasing: "flying", "phasing") it will let the mech walk through walls. - var/phasing = "" - ///Power we use every time we phaze through something - var/phasing_energy_drain = 0.2 * STANDARD_CELL_CHARGE - ///icon_state for flick() when phazing - var/phase_state = "" - - ///Wether we are strafing + /// Whether we are strafing var/strafe = FALSE - ///Bool for whether this mech can only be used on lavaland - var/lavaland_only = FALSE - - /// ref to screen object that displays in the middle of the UI + /// Ref to screen object that displays in the middle of the UI var/atom/movable/screen/map_view/ui_view /// Theme of the mech TGUI @@ -218,6 +195,9 @@ /// Module selected by default when mech UI is opened var/ui_selected_module_index + /// Whether we've been knocked down, unable to move + var/toppled = FALSE + /datum/armor/sealed_mecha melee = 20 bullet = 10 @@ -234,7 +214,6 @@ spark_system = new(src, 2, FALSE) spark_system.attach(src) - smoke_system = new(src, 3, holder = src) cabin_air = new(cabin_volume) @@ -274,9 +253,9 @@ AddElement(/datum/element/hostile_machine) /obj/vehicle/sealed/mecha/Destroy() - /// If the former occupants get polymorphed, mutated, chestburstered, - /// or otherwise replaced by another mob, that mob is no longer in .occupants - /// and gets deleted with the mech. However, they do remain in .contents + // If the former occupants get polymorphed, mutated, chestburstered, + // or otherwise replaced by another mob, that mob is no longer in .occupants + // and gets deleted with the mech. However, they do remain in .contents var/list/potential_occupants = contents | occupants for(var/mob/buggy_ejectee in potential_occupants) mob_exit(buggy_ejectee, silent = TRUE, forced = TRUE) @@ -297,7 +276,6 @@ QDEL_NULL(servo) QDEL_NULL(cabin_air) QDEL_NULL(spark_system) - QDEL_NULL(smoke_system) QDEL_NULL(ui_view) QDEL_LIST(trackers) QDEL_NULL(chassis_camera) @@ -307,7 +285,7 @@ diag_hud.remove_atom_from_hud(src) //YEET return ..() -///Add parts on mech spawning. Skipped in manual construction. +/// Add parts on mech spawning. Skipped in manual construction. /obj/vehicle/sealed/mecha/proc/populate_parts() cell = new /obj/item/stock_parts/power_store/cell/high(src) scanmod = new /obj/item/stock_parts/scanning_module(src) @@ -329,37 +307,42 @@ var/mob/living/silicon/ai/unlucky_ai for(var/mob/living/occupant as anything in occupants) - if(isAI(occupant)) - //FIXME: Nothiing about this block works - var/mob/living/silicon/ai/ai = occupant - if(!ai.linked_core && !ai.can_shunt) // we probably shouldnt gib AIs with a core or shunting abilities - unlucky_ai = occupant - ai.investigate_log("has been gibbed by having their mech destroyed.", INVESTIGATE_DEATHS) - ai.gib(DROP_ALL_REMAINS) //No wreck, no AI to recover - else - mob_exit(ai, silent = TRUE, forced = TRUE) // so we dont ghost the AI - continue - else + if(!isAI(occupant)) mob_exit(occupant, forced = TRUE) if(!isbrain(occupant)) // who would win.. 1 brain vs 1 sleep proc.. occupant.SetSleeping(destruction_sleep_duration) + continue - if(wreckage) - var/obj/structure/mecha_wreckage/WR = new wreckage(loc, unlucky_ai) - for(var/obj/item/mecha_parts/mecha_equipment/E in flat_equipment) - if(E.detachable && prob(30)) - WR.crowbar_salvage += E - E.detach(WR) //detaches from src into WR - E.active = TRUE - else - E.detach(loc) - qdel(E) - if(cell) - WR.crowbar_salvage += cell - cell.forceMove(WR) - cell.use(rand(0, cell.charge), TRUE) - cell = null - return ..() + var/mob/living/silicon/ai/ai = occupant + if(ai.linked_core || ai.can_shunt) // we probably shouldnt gib AIs with a core or shunting abilities + mob_exit(ai, silent = TRUE, forced = TRUE) // so we dont ghost the AI + continue + + unlucky_ai = occupant + ai.investigate_log("has been gibbed by having their mech destroyed.", INVESTIGATE_DEATHS) + ai.gib(DROP_ALL_REMAINS) //No wreck, no AI to recover + + if(ore_box) + INVOKE_ASYNC(ore_box, TYPE_PROC_REF(/obj/structure/ore_box, dump_box_contents)) + + if(!wreckage) + return ..() + + var/obj/structure/mecha_wreckage/wreck = new wreckage(loc, unlucky_ai) + for(var/obj/item/mecha_parts/mecha_equipment/equipment in flat_equipment) + if(equipment.detachable && prob(30)) + wreck.crowbar_salvage += equipment + equipment.detach(wreck) //detaches from src into wreck + equipment.active = TRUE + else + equipment.detach(loc) + qdel(equipment) + + if(cell) + wreck.crowbar_salvage += cell + cell.forceMove(wreck) + cell.use(rand(0, cell.charge), TRUE) + cell = null /obj/vehicle/sealed/mecha/update_icon_state() @@ -400,9 +383,9 @@ mob_occupant.update_mouse_pointer() //override this proc if you need to split up mecha control between multiple people (see savannah_ivanov.dm) -/obj/vehicle/sealed/mecha/auto_assign_occupant_flags(mob/M) +/obj/vehicle/sealed/mecha/auto_assign_occupant_flags(mob/occupant) if(driver_amount() < max_drivers) - add_control_flags(M, FULL_MECHA_CONTROL) + add_control_flags(occupant, FULL_MECHA_CONTROL) /obj/vehicle/sealed/mecha/generate_actions() initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_eject) @@ -416,14 +399,15 @@ initialize_controller_action_type(/datum/action/vehicle/sealed/mecha/strafe, VEHICLE_CONTROL_DRIVE) /obj/vehicle/sealed/mecha/add_occupant(mob/M, control_flags, forced) - if(..()) + . = ..() + if(.) generate_equipment_actions(M) /obj/vehicle/sealed/mecha/remove_occupant(mob/M) remove_all_equipment_actions(M) return ..() -///Generates action buttons for all eligible equipment and grants them to the occupant with VEHICLE_CONTROL_SETTINGS flag. +/// Generates action buttons for all eligible equipment and grants them to the occupant with VEHICLE_CONTROL_SETTINGS flag. /obj/vehicle/sealed/mecha/proc/generate_equipment_actions(mob/occupant) if(!(occupant in occupants) || !(occupants[occupant] & VEHICLE_CONTROL_SETTINGS)) return @@ -433,7 +417,7 @@ grant_equipment_action(occupant, equipment) -///Removes all equipment actions from a specific occupant. +/// Removes all equipment actions from a specific occupant. /obj/vehicle/sealed/mecha/proc/remove_all_equipment_actions(mob/occupant) var/list/actions = LAZYACCESS(occupant_actions, occupant) if(!actions) @@ -442,7 +426,6 @@ for(var/equipment_type in actions) if(!ispath(equipment_type, /obj/item/mecha_parts/mecha_equipment)) continue - remove_action_type_from_mob(equipment_type, occupant) /** @@ -497,16 +480,6 @@ return base_icon_state return "[base_icon_state]-open" -/obj/vehicle/sealed/mecha/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) - if(!phasing || get_charge() <= phasing_energy_drain || throwing) - return ..() - if(phase_state) - flick(phase_state, src) - var/turf/destination_turf = get_step(loc, movement_dir) - if(!check_teleport_valid(src, destination_turf) || SSmapping.level_trait(destination_turf.z, ZTRAIT_NOPHASE)) - return FALSE - return TRUE - /obj/vehicle/sealed/mecha/get_cell() return cell @@ -521,7 +494,8 @@ to_chat(mob_occupant, span_notice("Equipment control unit has been rebooted successfully.")) set_mouse_pointer() -/obj/vehicle/sealed/mecha/proc/update_part_values() ///Updates the values given by scanning module and capacitor tier, called when a part is removed or inserted. +/// Updates the values given by scanning module and capacitor tier, called when a part is removed or inserted. +/obj/vehicle/sealed/mecha/proc/update_part_values() update_energy_drain() if(capacitor) @@ -599,7 +573,7 @@ /obj/vehicle/sealed/mecha/generate_integrity_message() var/examine_text = "" - var/integrity = atom_integrity*100/max_integrity + var/integrity = atom_integrity / max_integrity * 100 switch(integrity) if(85 to 100) @@ -615,7 +589,7 @@ return examine_text -///Locate an internal tack in the utility modules +/// Locate an internal tack in the utility modules /obj/vehicle/sealed/mecha/proc/get_internal_tank() var/obj/item/mecha_parts/mecha_equipment/air_tank/module = locate(/obj/item/mecha_parts/mecha_equipment/air_tank) in equip_by_category[MECHA_UTILITY] return module?.internal_tank @@ -742,7 +716,7 @@ playsound(src,'sound/machines/clockcult/brass_skewer.ogg', 40, TRUE) log_message("Toggled lights off due to the lack of power.", LOG_MECHA) -///Called when a driver clicks somewhere. Handles everything like equipment, punches, etc. +/// Called when a driver clicks somewhere. Handles everything like equipment, punches, etc. /obj/vehicle/sealed/mecha/proc/on_mouseclick(mob/user, atom/target, list/modifiers) SIGNAL_HANDLER if(LAZYACCESS(modifiers, MIDDLE_CLICK)) @@ -756,14 +730,7 @@ return if(!isturf(target) && !isturf(target.loc)) // Prevents inventory from being drilled return - if(completely_disabled || is_currently_ejecting || (mecha_flags & CANNOT_INTERACT)) - return - if(phasing) - balloon_alert(user, "not while [phasing]!") - return - if(user.incapacitated) - return - if(!get_charge()) + if(!can_interact_with(target, user, modifiers)) return if(src == target) return @@ -818,6 +785,15 @@ if(target.mech_melee_attack(src, user)) TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown) +/obj/vehicle/sealed/mecha/proc/can_interact_with(atom/target, mob/user, list/modifiers) + if(completely_disabled || is_currently_ejecting || (mecha_flags & CANNOT_INTERACT)) + return FALSE + if(user.incapacitated) + return FALSE + if(!get_charge()) + return FALSE + return TRUE + /// Driver alt clicks anything while in mech /obj/vehicle/sealed/mecha/proc/on_click_alt(mob/user, atom/target, params) SIGNAL_HANDLER @@ -837,13 +813,13 @@ toggle_strafe() -/// middle mouse click signal wrapper for AI users +/// Middle mouse click signal wrapper for AI users /obj/vehicle/sealed/mecha/proc/on_middlemouseclick(mob/user, atom/target, params) SIGNAL_HANDLER if(isAI(user)) on_mouseclick(user, target, params) -///Displays a special speech bubble when someone inside the mecha speaks +/// Displays a special speech bubble when someone inside the mecha speaks /obj/vehicle/sealed/mecha/proc/display_speech_bubble(datum/source, list/speech_args) SIGNAL_HANDLER var/list/speech_bubble_recipients = list() @@ -854,10 +830,7 @@ var/image/mech_speech = image('icons/mob/effects/talk.dmi', src, "machine[say_test(speech_args[SPEECH_MESSAGE])]",MOB_LAYER+1) INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay_global), mech_speech, speech_bubble_recipients, 3 SECONDS) -///////////////////////////////////// -//////// Atmospheric stuff //////// -///////////////////////////////////// - +// Atmospheric stuff /obj/vehicle/sealed/mecha/remove_air(amount) if((mecha_flags & IS_ENCLOSED) && cabin_sealed) return cabin_air.remove(amount) @@ -871,17 +844,17 @@ /obj/vehicle/sealed/mecha/return_analyzable_air() return cabin_air -///fetches pressure of the gas mixture we are using +/// Fetches pressure of the gas mixture we are using /obj/vehicle/sealed/mecha/proc/return_pressure() var/datum/gas_mixture/air = return_air() return air?.return_pressure() -///fetches temp of the gas mixture we are using +/// Fetches temp of the gas mixture we are using /obj/vehicle/sealed/mecha/return_temperature() var/datum/gas_mixture/air = return_air() return air?.return_temperature() -///makes cabin unsealed, dumping cabin air outside or airtight filling the cabin with external air mix +/// Makes cabin unsealed, dumping cabin air outside or airtight filling the cabin with external air mix /obj/vehicle/sealed/mecha/proc/set_cabin_seal(mob/user, cabin_sealed) if(!(mecha_flags & IS_ENCLOSED)) balloon_alert(user, "cabin can't be sealed!") @@ -962,16 +935,18 @@ overclock_mode = forced_state else overclock_mode = !overclock_mode + log_message("Toggled [overclock_name].", LOG_MECHA) for(var/mob/occupant as anything in occupants) balloon_alert(occupant, "[overclock_name] [overclock_mode ? "on":"off"]") var/datum/action/act = locate(/datum/action/vehicle/sealed/mecha/mech_overclock) in occupant.actions act?.build_all_button_icons(UPDATE_BUTTON_ICON) + if(overclock_mode) - movedelay = movedelay / overclock_coeff + movedelay /= overclock_coeff visible_message(span_notice("[src] starts heating up, making humming sounds.")) else - movedelay = initial(movedelay) + movedelay *= overclock_coeff visible_message(span_notice("[src] cools down and the humming stops.")) update_energy_drain() return TRUE @@ -982,15 +957,14 @@ step_energy_drain = initial(step_energy_drain) / servo.rating else step_energy_drain = 2 * initial(step_energy_drain) + if(overclock_mode) step_energy_drain *= overclock_coeff if(capacitor) - phasing_energy_drain = initial(phasing_energy_drain) / capacitor.rating melee_energy_drain = initial(melee_energy_drain) / capacitor.rating light_power_drain = initial(light_power_drain) / capacitor.rating else - phasing_energy_drain = initial(phasing_energy_drain) melee_energy_drain = initial(melee_energy_drain) light_power_drain = initial(light_power_drain) diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index 99f32ddc987f..05641719ee00 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -20,7 +20,13 @@ MECHA_POWER = 1, MECHA_ARMOR = 1, ) - var/obj/durand_shield/shield + + /// Bool for energy shield on/off + var/defense_mode = FALSE + /// Fake shield object we use as a way to redirect attacks off ourselves + var/obj/durand_shield/shield = null + /// Is the shield currently switching modes? + var/switching = FALSE /datum/armor/mecha_durand melee = 40 @@ -33,137 +39,145 @@ /obj/vehicle/sealed/mecha/durand/Initialize(mapload) . = ..() - shield = new /obj/durand_shield(loc, src, plane, layer, dir) - RegisterSignal(src, COMSIG_MECHA_ACTION_TRIGGER, PROC_REF(relay)) + shield = new(src, src) + vis_contents += shield /obj/vehicle/sealed/mecha/durand/Destroy() if(shield) QDEL_NULL(shield) return ..() - /obj/vehicle/sealed/mecha/durand/generate_actions() . = ..() initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_defense_mode) /obj/vehicle/sealed/mecha/durand/process() . = ..() - if(defense_mode && !use_energy(0.01 * STANDARD_CELL_CHARGE)) //Defence mode can only be on with a occupant so we check if one of them can toggle it and toggle - for(var/O in occupants) - var/mob/living/occupant = O - var/datum/action/action = LAZYACCESSASSOC(occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/mech_defense_mode) - if(action) - action.Trigger() - break - -/obj/vehicle/sealed/mecha/durand/Move(direction) - . = ..() - if(shield) - shield.forceMove(loc) - shield.setDir(dir) - -/obj/vehicle/sealed/mecha/durand/forceMove(turf/T) - . = ..() - shield.forceMove(T) + // Defence mode can only be on with a occupant so we check if one of them can toggle it and toggle + if(defense_mode && !use_energy(0.01 * STANDARD_CELL_CHARGE)) + toggle_defense() /obj/vehicle/sealed/mecha/durand/mob_exit(mob/M, silent = FALSE, randomstep = FALSE, forced = FALSE) if(defense_mode) - var/datum/action/action = LAZYACCESSASSOC(occupant_actions, M, /datum/action/vehicle/sealed/mecha/mech_defense_mode) - if(action) - INVOKE_ASYNC(action, TYPE_PROC_REF(/datum/action, Trigger), null, NONE, FALSE) + toggle_defense() return ..() -///Relays the signal from the action button to the shield, and creates a new shield if the old one is MIA. -/obj/vehicle/sealed/mecha/durand/proc/relay(datum/source, mob/owner, list/signal_args) - SIGNAL_HANDLER - if(!shield) //if the shield somehow got deleted - stack_trace("Durand triggered relay without a shield") - shield = new /obj/durand_shield(loc, src, layer) - shield.setDir(dir) - //Redirects projectiles to the shield if defense_check decides they should be blocked and returns true. /obj/vehicle/sealed/mecha/durand/projectile_hit(obj/projectile/hitting_projectile, def_zone, piercing_hit, blocked) if(defense_check(hitting_projectile.loc) && shield) return shield.projectile_hit(hitting_projectile, def_zone, piercing_hit, blocked) return ..() -/**Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. -Expects a turf. Returns true if the attack should be blocked, false if not.*/ +/** + * Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. + * Expects a turf. Returns true if the attack should be blocked, false if not. + **/ /obj/vehicle/sealed/mecha/durand/proc/defense_check(turf/aloc) - if (!defense_mode || !shield || shield.switching) + if (!defense_mode || !shield || switching) return FALSE - . = FALSE + switch(dir) - if (1) - if(abs(x - aloc.x) <= (y - aloc.y) * -2) - . = TRUE - if (2) - if(abs(x - aloc.x) <= (y - aloc.y) * 2) - . = TRUE - if (4) - if(abs(y - aloc.y) <= (x - aloc.x) * -2) - . = TRUE - if (8) - if(abs(y - aloc.y) <= (x - aloc.x) * 2) - . = TRUE - return + if (NORTH) + return abs(x - aloc.x) <= (y - aloc.y) * -2 + if (SOUTH) + return abs(x - aloc.x) <= (y - aloc.y) * 2 + if (EAST) + return abs(y - aloc.y) <= (x - aloc.x) * -2 + if (WEST) + return abs(y - aloc.y) <= (x - aloc.x) * 2 + +/obj/vehicle/sealed/mecha/durand/proc/toggle_defense(mob/living/user) + if(!LAZYLEN(occupants)) + return + + if(switching && (user || !defense_mode)) // Allow force shutdowns during animation + return + + if(!defense_mode && cell?.charge < 100) // If it's off, and we have less than 100 units of power + if (user) + balloon_alert(user, "insufficient power") + return + + switching = TRUE + defense_mode = !defense_mode + + if(user) + balloon_alert(user, "shield [defense_mode ? "enabled" : "disabled"]") + log_message("User has toggled defense mode -- now [defense_mode ? "enabled" : "disabled"].", LOG_MECHA) + else + log_message("defense mode state changed -- now [defense_mode ? "enabled" : "disabled"].", LOG_MECHA) + + for(var/mob/living/occupant as anything in occupants) + var/datum/action/button = occupant_actions[occupant][/datum/action/vehicle/sealed/mecha/mech_defense_mode] + button.button_icon_state = "mech_defense_mode_[defense_mode ? "on" : "off"]" + button.build_all_button_icons() + + shield.set_light_on(defense_mode) + + if(defense_mode) + shield.icon_state = "shield" + flick("shield_raise", shield) + playsound(src, 'sound/vehicles/mecha/mech_shield_raise.ogg', 50, FALSE) + else + shield.icon_state = "shield_null" + flick("shield_drop", shield) + playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE) + + addtimer(VARSET_CALLBACK(src, switching, FALSE), 0.7 SECONDS) // Shield animation length /obj/vehicle/sealed/mecha/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) - if(defense_check(user.loc)) + if(defense_check(get_turf(user))) log_message("Attack absorbed by defense field. Attacker - [user].", LOG_MECHA, color="orange") return shield.attack_generic(user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration) return ..() -/obj/vehicle/sealed/mecha/durand/blob_act(obj/structure/blob/B) - if(defense_check(B.loc)) - log_message("Attack by blob. Attacker - [B].", LOG_MECHA, color="red") - log_message("Attack absorbed by defense field.", LOG_MECHA, color="orange") - shield.blob_act(B) - else - . = ..() - -/obj/vehicle/sealed/mecha/durand/attackby(obj/item/W as obj, mob/user as mob, list/modifiers, list/attack_modifiers) - if(defense_check(user.loc)) - log_message("Attack absorbed by defense field. Attacker - [user], with [W]", LOG_MECHA, color="orange") - shield.attackby(W, user, modifiers) - else - . = ..() +/obj/vehicle/sealed/mecha/durand/blob_act(obj/structure/blob/blob) + if(!defense_check(get_turf(blob))) + return ..() + log_message("Attack by blob. Attacker - [blob].", LOG_MECHA, color="red") + log_message("Attack absorbed by defense field.", LOG_MECHA, color="orange") + return shield.blob_act(blob) + +/obj/vehicle/sealed/mecha/durand/attackby(obj/item/weapon, mob/user as mob, list/modifiers, list/attack_modifiers) + if(defense_check(get_turf(user))) + log_message("Attack absorbed by defense field. Attacker - [user], with [weapon]", LOG_MECHA, color="orange") + return shield.attackby(weapon, user, modifiers) + return ..() /obj/vehicle/sealed/mecha/durand/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - if(defense_check(AM.loc)) + if(defense_check(get_turf(AM))) log_message("Impact with [AM] absorbed by defense field.", LOG_MECHA, color="orange") - shield.hitby(AM, skipcatch, hitpush, blocked, throwingdatum) - else - . = ..() + return shield.hitby(AM, skipcatch, hitpush, blocked, throwingdatum) + return ..() /datum/action/vehicle/sealed/mecha/mech_defense_mode - name = "Toggle an energy shield that blocks all attacks from the faced direction at a heavy power cost." + name = "Toggle Shield" + desc = "Toggle an energy shield that blocks all attacks from the faced direction at a heavy power cost." button_icon_state = "mech_defense_mode_off" /datum/action/vehicle/sealed/mecha/mech_defense_mode/Trigger(mob/clicker, trigger_flags, forced_state = FALSE) . = ..() if(!.) return - if(!chassis || !(owner in chassis.occupants)) - return - SEND_SIGNAL(chassis, COMSIG_MECHA_ACTION_TRIGGER, owner, args) //Signal sent to the mech, to be handed to the shield. See durand.dm for more details + if(chassis && (owner in chassis.occupants)) + var/obj/vehicle/sealed/mecha/durand/durand = chassis + durand.toggle_defense(owner) -//////////////////////////// -///// Shield processing //// -//////////////////////////// +// Shield processing -/**An object to take the hit for us when using the Durand's defense mode. -It is spawned in during the durand's initilization, and always stays on the same tile. -Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the -attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its -own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out.*/ +/** + * An object to take the hit for us when using the Durand's defense mode. + * It is spawned in during the durand's initilization. + * Normally invisible, until defense mode is actvated. When the durand detects an attack that should be blocked, the + * attack is passed to the shield. The shield takes the damage, uses it to calculate charge cost, and then sets its + * own integrity back to max. Shield is automatically dropped if we run out of power or the user gets out. + **/ /obj/durand_shield //projectiles get passed to this when defense mode is enabled name = "defense grid" icon = 'icons/mob/effects/durand_shield.dmi' icon_state = "shield_null" - invisibility = INVISIBILITY_MAXIMUM //no showing on right-click - pixel_y = 4 + pixel_z = 4 max_integrity = 10000 anchored = TRUE light_system = OVERLAY_LIGHT @@ -171,100 +185,22 @@ own integrity back to max. Shield is automatically dropped if we run out of powe light_power = 1 light_color = LIGHT_COLOR_FAINT_CYAN light_on = FALSE - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF //The shield should not take damage from fire, lava, or acid; that's the mech's job. - ///Our link back to the durand + light_flags = LIGHT_ATTACHED + vis_flags = VIS_INHERIT_DIR | VIS_INHERIT_LAYER | VIS_INHERIT_PLANE | VIS_INHERIT_ID + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF // The shield should not take damage from fire, lava, or acid; that's the mech's job. + /// Our link back to the durand var/obj/vehicle/sealed/mecha/durand/chassis - ///To keep track of things during the animation - var/switching = FALSE -/obj/durand_shield/Initialize(mapload, chassis, plane, layer, dir) +/obj/durand_shield/Initialize(mapload, obj/vehicle/sealed/mecha/durand/chassis) . = ..() src.chassis = chassis - src.layer = ABOVE_MOB_LAYER - SET_PLANE_IMPLICIT(src, plane) - setDir(dir) - RegisterSignal(chassis, COMSIG_MECHA_ACTION_TRIGGER, PROC_REF(activate)) - RegisterSignal(chassis, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(shield_glide_size_update)) /obj/durand_shield/Destroy() - UnregisterSignal(src, COMSIG_MECHA_ACTION_TRIGGER) if(chassis) - UnregisterSignal(chassis, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE) chassis.shield = null chassis = null return ..() -/obj/durand_shield/proc/shield_glide_size_update(datum/source, target) - SIGNAL_HANDLER - glide_size = target - -/** - * Handles activating and deactivating the shield. - * - * This proc is called by a signal sent from the mech's action button and - * relayed by the mech itself. The "forced" variable, `signal_args[1]`, will - * skip the to-pilot text and is meant for when the shield is disabled by - * means other than the action button (like running out of power). - * - * Arguments: - * * source: the shield - * * owner: mob that activated the shield - * * signal_args: whether it's forced - */ -/obj/durand_shield/proc/activate(datum/source, mob/owner, list/signal_args) - SIGNAL_HANDLER - if(!LAZYLEN(chassis?.occupants)) - return - if(switching && !signal_args[1]) - return - if(!chassis.defense_mode && (!chassis.cell || chassis.cell.charge < 100)) //If it's off, and we have less than 100 units of power - chassis.balloon_alert(owner, "insufficient power") - return - switching = TRUE - chassis.defense_mode = !chassis.defense_mode - if(!signal_args[1]) - chassis.balloon_alert(owner, "shield [chassis.defense_mode?"enabled":"disabled"]") - chassis.log_message("User has toggled defense mode -- now [chassis.defense_mode?"enabled":"disabled"].", LOG_MECHA) - else - chassis.log_message("defense mode state changed -- now [chassis.defense_mode?"enabled":"disabled"].", LOG_MECHA) - for(var/occupant in chassis.occupants) - var/datum/action/button = chassis.occupant_actions[occupant][/datum/action/vehicle/sealed/mecha/mech_defense_mode] - button.button_icon_state = "mech_defense_mode_[chassis.defense_mode ? "on" : "off"]" - button.build_all_button_icons() - - set_light_on(chassis.defense_mode) - - if(chassis.defense_mode) - SetInvisibility(INVISIBILITY_NONE, id=type) - flick("shield_raise", src) - playsound(src, 'sound/vehicles/mecha/mech_shield_raise.ogg', 50, FALSE) - icon_state = "shield" - resetdir(chassis, dir, dir) // to set the plane for the shield properly when it's turned on - RegisterSignal(chassis, COMSIG_ATOM_DIR_CHANGE, PROC_REF(resetdir)) - else - flick("shield_drop", src) - playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE) - icon_state = "shield_null" - addtimer(CALLBACK(src, PROC_REF(make_invisible)), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) - UnregisterSignal(chassis, COMSIG_ATOM_DIR_CHANGE) - switching = FALSE - -/** - * Sets invisibility to INVISIBILITY_MAXIMUM if defense mode is disabled - * - * We need invisibility set to higher than 25 for the shield to not appear - * in the right-click context menu, but if we do it too early, we miss the - * deactivate animation. Hense, timer and this proc. - */ -/obj/durand_shield/proc/make_invisible() - if(!chassis.defense_mode) - RemoveInvisibility(type) - -/obj/durand_shield/proc/resetdir(datum/source, olddir, newdir) - SIGNAL_HANDLER - - setDir(newdir) - /obj/durand_shield/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0) if(!chassis) qdel(src) @@ -277,10 +213,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe return if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 150))) chassis.cell?.charge = 0 - for(var/O in chassis.occupants) - var/mob/living/occupant = O - var/datum/action/action = LAZYACCESSASSOC(chassis.occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/mech_defense_mode) - action.Trigger() + chassis.toggle_defense() atom_integrity = 10000 /obj/durand_shield/play_attack_sound() diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index 974ec17818a3..951035fdaa91 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -73,6 +73,10 @@ fire = 100 acid = 100 +/obj/vehicle/sealed/mecha/gygax/dark/Initialize(mapload) + . = ..() + add_minimap_blip(src, MINIMAP_SYNDICATE_MECH_BLIP, "syndiemech") + /obj/vehicle/sealed/mecha/gygax/dark/loaded/Initialize(mapload) . = ..() max_ammo() diff --git a/code/modules/vehicles/mecha/combat/honker.dm b/code/modules/vehicles/mecha/combat/honker.dm index f5ad579cda19..9c63dc718983 100644 --- a/code/modules/vehicles/mecha/combat/honker.dm +++ b/code/modules/vehicles/mecha/combat/honker.dm @@ -60,6 +60,10 @@ MECHA_ARMOR = 2, ) +/obj/vehicle/sealed/mecha/honker/dark/Initialize(mapload, built_manually) + . = ..() + add_minimap_blip(src, MINIMAP_SYNDICATE_MECH_BLIP, "syndiemech") + /obj/vehicle/sealed/mecha/honker/dark/loaded equip_by_category = list( MECHA_L_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/honker, diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index e0e214242aa3..083bf66e3dd1 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -24,6 +24,15 @@ ) bumpsmash = TRUE + /// Reusable smoke generator system + var/datum/effect_system/fluid_spread/smoke/smoke_system + /// Remaining smoke charges + var/smoke_charges = 5 + /// Cooldown between using smoke + var/smoke_cooldown = 10 SECONDS + /// Bool for zoom on/off + var/zoom_mode = FALSE + /datum/armor/mecha_marauder melee = 70 bullet = 60 @@ -33,6 +42,14 @@ fire = 100 acid = 100 +/obj/vehicle/sealed/mecha/marauder/Initialize(mapload, built_manually) + . = ..() + smoke_system = new(src, 3, holder = src) + +/obj/vehicle/sealed/mecha/marauder/Destroy() + QDEL_NULL(smoke_system) + return ..() + /obj/vehicle/sealed/mecha/marauder/generate_actions() . = ..() initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_smoke) @@ -54,20 +71,51 @@ servo = new /obj/item/stock_parts/servo/femto(src) update_part_values() +/obj/vehicle/sealed/mecha/marauder/remove_occupant(mob/driver) + . = ..() + zoom_mode = FALSE + +/obj/vehicle/sealed/mecha/marauder/can_move(direction) + . = ..() + if(!. || !zoom_mode) + return + + if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) + to_chat(occupants, "[icon2html(src, occupants)][span_warning("Unable to move while in zoom mode!")]") + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) + return FALSE + /datum/action/vehicle/sealed/mecha/mech_smoke name = "Smoke" button_icon_state = "mech_smoke" +/datum/action/vehicle/sealed/mecha/mech_smoke/IsAvailable(feedback) + . = ..() + if (!.) + return + + var/obj/vehicle/sealed/mecha/marauder/maradeur = chassis + if(!TIMER_COOLDOWN_FINISHED(maradeur, COOLDOWN_MECHA_SMOKE)) + if (feedback) + owner.balloon_alert(owner, "smoke charges on cooldown!") + return FALSE + + if (!maradeur.smoke_charges) + if (feedback) + owner.balloon_alert(owner, "out of smoke charges!") + return FALSE + /datum/action/vehicle/sealed/mecha/mech_smoke/Trigger(mob/clicker, trigger_flags) . = ..() if(!.) return if(!chassis || !(owner in chassis.occupants)) return - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_SMOKE) && chassis.smoke_charges>0) - chassis.smoke_system.start() - chassis.smoke_charges-- - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_SMOKE, chassis.smoke_cooldown) + var/obj/vehicle/sealed/mecha/marauder/maradeur = chassis + if(TIMER_COOLDOWN_FINISHED(maradeur, COOLDOWN_MECHA_SMOKE) && maradeur.smoke_charges) + maradeur.smoke_system.start() + maradeur.smoke_charges-- + TIMER_COOLDOWN_START(maradeur, COOLDOWN_MECHA_SMOKE, maradeur.smoke_cooldown) /datum/action/vehicle/sealed/mecha/mech_zoom name = "Zoom" @@ -79,11 +127,12 @@ return if(!owner.client || !chassis || !(owner in chassis.occupants)) return - chassis.zoom_mode = !chassis.zoom_mode - button_icon_state = "mech_zoom_[chassis.zoom_mode ? "on" : "off"]" - chassis.log_message("Toggled zoom mode.", LOG_MECHA) - to_chat(owner, "[icon2html(chassis, owner)]Zoom mode [chassis.zoom_mode?"en":"dis"]abled.") - if(chassis.zoom_mode) + var/obj/vehicle/sealed/mecha/marauder/maradeur = chassis + maradeur.zoom_mode = !maradeur.zoom_mode + button_icon_state = "mech_zoom_[maradeur.zoom_mode ? "on" : "off"]" + maradeur.log_message("Toggled zoom mode.", LOG_MECHA) + to_chat(owner, "[icon2html(maradeur, owner)]Zoom mode [maradeur.zoom_mode ? "en" : "dis"]abled.") + if(maradeur.zoom_mode) owner.client.view_size.setTo(4.5) SEND_SOUND(owner, sound('sound/vehicles/mecha/imag_enh.ogg', volume=50)) else @@ -161,6 +210,10 @@ fire = 100 acid = 100 +/obj/vehicle/sealed/mecha/marauder/mauler/Initialize(mapload) + . = ..() + add_minimap_blip(src, MINIMAP_SYNDICATE_MECH_BLIP, "syndiemech") + /obj/vehicle/sealed/mecha/marauder/mauler/loaded equip_by_category = list( MECHA_L_ARM = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg, diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm index e193f4e5e1ca..5ca91ce58177 100644 --- a/code/modules/vehicles/mecha/combat/phazon.dm +++ b/code/modules/vehicles/mecha/combat/phazon.dm @@ -1,6 +1,6 @@ /obj/vehicle/sealed/mecha/phazon - desc = "This is a Phazon exosuit. The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge anomalous technology and expensive materials." name = "\improper Phazon" + desc = "This is a Phazon exosuit. The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge anomalous technology and expensive materials." icon_state = "phazon" base_icon_state = "phazon" movedelay = 2 @@ -21,7 +21,13 @@ MECHA_POWER = 1, MECHA_ARMOR = 2, ) - phase_state = "phazon-phase" + + /// Are we currently phasing through walls? + var/phasing = FALSE + /// Power we use every time we phaze through something + var/phasing_energy_drain = 0.2 * STANDARD_CELL_CHARGE + /// Icon_state for flick() when phasing + var/phase_state = "phazon-phase" /datum/armor/mecha_phazon melee = 30 @@ -37,6 +43,42 @@ initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_toggle_phasing) initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_switch_damtype) +/obj/vehicle/sealed/mecha/phazon/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) + if(!phasing || get_charge() <= phasing_energy_drain || throwing) + return ..() + if(phase_state) + flick(phase_state, src) + var/turf/destination_turf = get_step(loc, movement_dir) + if(!check_teleport_valid(src, destination_turf) || SSmapping.level_trait(destination_turf.z, ZTRAIT_NOPHASE)) + return FALSE + return TRUE + +/obj/vehicle/sealed/mecha/phazon/vehicle_move(direction, forcerotate) + . = ..() + if(. && phasing) + use_energy(phasing_energy_drain) + +/obj/vehicle/sealed/mecha/phazon/try_bumpsmash(atom/obstacle) + if(phasing) // Theres only one cause for phasing canpass fails + to_chat(occupants, "[icon2html(src, occupants)][span_warning("A dull, universal force is preventing you from phasing here!")]") + spark_system.start() + return + return ..() + +/obj/vehicle/sealed/mecha/phazon/update_energy_drain() + . = ..() + if(capacitor) + phasing_energy_drain = initial(phasing_energy_drain) / capacitor.rating + else + phasing_energy_drain = initial(phasing_energy_drain) + +/obj/vehicle/sealed/mecha/phazon/can_interact_with(atom/target, mob/user, list/modifiers) + . = ..() + if (!. || !phasing) + return + balloon_alert(user, "not while phasing!") + return FALSE + /datum/action/vehicle/sealed/mecha/mech_switch_damtype name = "Reconfigure arm microtool arrays" button_icon_state = "mech_damtype_brute" @@ -73,7 +115,8 @@ return if(!chassis || !(owner in chassis.occupants)) return - chassis.phasing = chassis.phasing ? "" : "phasing" - button_icon_state = "mech_phasing_[chassis.phasing ? "on" : "off"]" - chassis.balloon_alert(owner, "[chassis.phasing ? "enabled" : "disabled"] phasing") + var/obj/vehicle/sealed/mecha/phazon/phazon = chassis + phazon.phasing = !phazon.phasing + button_icon_state = "mech_phasing_[phazon.phasing ? "on" : "off"]" + phazon.balloon_alert(owner, "[phazon.phasing ? "enabled" : "disabled"] phasing") build_all_button_icons() diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm index 13f594f243bd..4f9794a7c93c 100644 --- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm +++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm @@ -37,8 +37,8 @@ MECHA_POWER = 1, MECHA_ARMOR = 1, ) - //no tax on flying, since the power cost is in the leap itself. - phasing_energy_drain = 0 + /// Are we currently in the middle of a skyfall jump? + var/flying = FALSE /datum/armor/mecha_savannah_ivanov melee = 45 @@ -71,6 +71,22 @@ initialize_controller_action_type(/datum/action/vehicle/sealed/mecha/skyfall, VEHICLE_CONTROL_DRIVE) initialize_controller_action_type(/datum/action/vehicle/sealed/mecha/ivanov_strike, VEHICLE_CONTROL_EQUIPMENT) +// Pass through obstacles freely if we're flying +/obj/vehicle/sealed/mecha/savannah_ivanov/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) + if(!flying || throwing) + return ..() + var/turf/destination_turf = get_step(loc, movement_dir) + if(!check_teleport_valid(src, destination_turf) || SSmapping.level_trait(destination_turf.z, ZTRAIT_NOPHASE)) + return FALSE + return TRUE + +/obj/vehicle/sealed/mecha/savannah_ivanov/can_interact_with(atom/target, mob/user, list/modifiers) + . = ..() + if (!. || !flying) + return + balloon_alert(user, "not while airborne!") + return FALSE + ///Savannah Skyfall /datum/action/vehicle/sealed/mecha/skyfall name = "Savannah Skyfall" @@ -86,17 +102,18 @@ return if(!owner || !chassis || !(owner in chassis.occupants)) return - if(chassis.phasing) + var/obj/vehicle/sealed/mecha/savannah_ivanov/savannah = chassis + if(savannah.flying) to_chat(owner, span_warning("You're already airborne!")) return - if(TIMER_COOLDOWN_RUNNING(chassis, COOLDOWN_MECHA_SKYFALL)) - var/timeleft = S_TIMER_COOLDOWN_TIMELEFT(chassis, COOLDOWN_MECHA_SKYFALL) + if(TIMER_COOLDOWN_RUNNING(savannah, COOLDOWN_MECHA_SKYFALL)) + var/timeleft = S_TIMER_COOLDOWN_TIMELEFT(savannah, COOLDOWN_MECHA_SKYFALL) to_chat(owner, span_warning("You need to wait [DisplayTimeText(timeleft, 1)] before attempting to Skyfall.")) return if(skyfall_charge_level) abort_skyfall() return - chassis.balloon_alert(owner, "charging skyfall...") + savannah.balloon_alert(owner, "charging skyfall...") INVOKE_ASYNC(src, PROC_REF(skyfall_charge_loop)) /** @@ -146,7 +163,8 @@ new /obj/effect/skyfall_landingzone(launch_turf, chassis) chassis.resistance_flags |= INDESTRUCTIBLE //not while jumping at least chassis.mecha_flags |= QUIET_STEPS|QUIET_TURNS|CANNOT_INTERACT - chassis.phasing = "flying" + var/obj/vehicle/sealed/mecha/savannah_ivanov/savannah = chassis + savannah.flying = TRUE chassis.movedelay = 1 chassis.set_density(FALSE) chassis.layer = ABOVE_ALL_MOB_LAYER @@ -177,7 +195,8 @@ playsound(chassis, 'sound/effects/explosion/explosion1.ogg', 50, 1) chassis.resistance_flags &= ~INDESTRUCTIBLE chassis.mecha_flags &= ~(QUIET_STEPS|QUIET_TURNS|CANNOT_INTERACT) - chassis.phasing = initial(chassis.phasing) + var/obj/vehicle/sealed/mecha/savannah_ivanov/savannah = chassis + savannah.flying = FALSE chassis.movedelay = initial(chassis.movedelay) chassis.set_density(TRUE) chassis.layer = initial(chassis.layer) diff --git a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm index 543ee426507f..f2f42d1f85b2 100644 --- a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm +++ b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm @@ -91,6 +91,10 @@ /obj/item/mecha_parts/mecha_equipment/proc/handle_ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) SHOULD_CALL_PARENT(FALSE) + +/obj/item/mecha_parts/mecha_equipment/proc/get_equip_cooldown(atom/target) + return equip_cooldown + /** * Checks whether this mecha equipment can be active * Returns a bool @@ -119,7 +123,7 @@ return TRUE /obj/item/mecha_parts/mecha_equipment/proc/action(mob/source, atom/target, list/modifiers) - TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT(type), equip_cooldown)//Cooldown is on the MECH so people dont bypass it by switching equipment + TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT(type), get_equip_cooldown(target))//Cooldown is on the MECH so people dont bypass it by switching equipment SEND_SIGNAL(source, COMSIG_MOB_USED_MECH_EQUIPMENT, chassis) chassis.use_energy(energy_drain) return TRUE @@ -137,7 +141,7 @@ if(!chassis) return FALSE chassis.use_energy(energy_drain) - return do_after(user, equip_cooldown, target, extra_checks = CALLBACK(src, PROC_REF(do_after_checks), target, flags), interaction_key = interaction_key) + return do_after(user, get_equip_cooldown(target), target, extra_checks = CALLBACK(src, PROC_REF(do_after_checks), target, flags), interaction_key = interaction_key) ///Do after wrapper for mecha equipment /obj/item/mecha_parts/mecha_equipment/proc/do_after_mecha(atom/target, mob/user, delay, flags) @@ -156,8 +160,8 @@ if(flags & MECH_DO_AFTER_ADJACENCY_FLAG && !(chassis.Adjacent(target))) return FALSE -/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/vehicle/sealed/mecha/M, attach_right = FALSE, mob/user) - return default_can_attach(M, attach_right, user) +/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/vehicle/sealed/mecha/mech, attach_right = FALSE, mob/user) + return default_can_attach(mech, attach_right, user) /obj/item/mecha_parts/mecha_equipment/proc/default_can_attach(obj/vehicle/sealed/mecha/mech, attach_right = FALSE, mob/user) if(!(mech_flags & mech.mech_type)) diff --git a/code/modules/vehicles/mecha/equipment/tools/air_tank.dm b/code/modules/vehicles/mecha/equipment/tools/air_tank.dm index eae27f5a183a..654a6efc49bf 100644 --- a/code/modules/vehicles/mecha/equipment/tools/air_tank.dm +++ b/code/modules/vehicles/mecha/equipment/tools/air_tank.dm @@ -5,10 +5,11 @@ icon_state = "mecha_air_tank" equipment_slot = MECHA_UTILITY can_be_toggled = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) ///Whether the pressurization should start automatically when the cabin is sealed airtight var/auto_pressurize_on_seal = TRUE ///The internal air tank obj of the mech - var/obj/machinery/portable_atmospherics/canister/internal_tank + var/obj/machinery/portable_atmospherics/canister/mecha/internal_tank ///Volume of this air tank var/volume = TANK_STANDARD_VOLUME * 10 ///Maximum pressure of this air tank @@ -25,6 +26,9 @@ ///Target pressure of the pump var/tank_pump_pressure = ONE_ATMOSPHERE +/obj/machinery/portable_atmospherics/canister/mecha + custom_materials = null + /obj/item/mecha_parts/mecha_equipment/air_tank/Initialize(mapload) . = ..() internal_tank = new(src) diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm index 15a60fbb6d56..2636186bb06d 100644 --- a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm @@ -30,6 +30,7 @@ energy_drain = 20 range = MECHA_MELEE equip_cooldown = 20 + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) /// ref to the patient loaded in the sleeper var/mob/living/carbon/patient @@ -51,7 +52,7 @@ return to_chat(source, "[icon2html(src, source)][span_notice("You start putting [target] into [src]...")]") chassis.visible_message(span_warning("[chassis] starts putting [target] into \the [src].")) - if(!do_after(source, equip_cooldown, target, extra_checks=CALLBACK(src, PROC_REF(patient_insertion_check), target, source))) + if(!do_after(source, get_equip_cooldown(atomtarget), target, extra_checks=CALLBACK(src, PROC_REF(patient_insertion_check), target, source))) return if(!chassis || !(get_dir(chassis, target) & chassis.dir)) return @@ -213,6 +214,7 @@ range = MECHA_MELEE|MECHA_RANGED equip_cooldown = 10 energy_drain = 10 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) ///Lazylist of syringes that we've picked up var/list/syringes ///List of all scanned reagents, starts with epinephrine and multiver diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm index a4b600f496e5..9a097d772e4c 100644 --- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm @@ -11,7 +11,7 @@ icon_state = "mecha_drill" equipment_slot = MECHA_UTILITY can_be_toggled = TRUE - equip_cooldown = 15 + equip_cooldown = 1.5 SECONDS energy_drain = 0.01 * STANDARD_CELL_CHARGE force = 15 harmful = TRUE @@ -19,6 +19,7 @@ tool_behaviour = TOOL_DRILL toolspeed = 0.9 mech_flags = EXOSUIT_MODULE_WORKING | EXOSUIT_MODULE_COMBAT + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) var/drill_delay = 7 var/drill_level = DRILL_BASIC @@ -128,9 +129,9 @@ // Drilling a turf is a one-and-done procedure. if(isturf(target)) var/turf/T = target + . = ..() T.drill_act(src, source) - - return ..() + return // Drilling objects and mobs is a repeating procedure. while(do_after_mecha(target, source, drill_delay)) @@ -153,6 +154,11 @@ return ..() +/obj/item/mecha_parts/mecha_equipment/drill/get_equip_cooldown(atom/target) + if (isturf(target)) + return equip_cooldown * 0.1 + return equip_cooldown + /turf/proc/drill_act(obj/item/mecha_parts/mecha_equipment/drill/drill, mob/user) return @@ -223,6 +229,7 @@ drill_level = DRILL_HARDENED force = 15 toolspeed = 0.7 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3.25) /obj/item/mecha_parts/mecha_equipment/mining_scanner name = "exosuit mining scanner" @@ -231,6 +238,7 @@ equip_cooldown = 1.5 SECONDS equipment_slot = MECHA_UTILITY mech_flags = EXOSUIT_MODULE_WORKING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25) var/scanning_time = 0 COOLDOWN_DECLARE(area_scan_cooldown) @@ -248,7 +256,7 @@ return if(!LAZYLEN(chassis.occupants)) return - scanning_time = world.time + equip_cooldown + scanning_time = world.time + get_equip_cooldown() mineral_scan_pulse(get_turf(src), scanner = src) /obj/item/mecha_parts/mecha_equipment/mining_scanner/get_snowflake_data() diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index 6b4e4e77ffef..f584bb3822d0 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -11,6 +11,7 @@ equip_cooldown = 150 energy_drain = STANDARD_CELL_CHARGE range = MECHA_RANGED + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5) var/teleport_range = 7 /obj/item/mecha_parts/mecha_equipment/teleporter/action(mob/source, atom/target, list/modifiers) @@ -32,6 +33,7 @@ equip_cooldown = 50 energy_drain = 300 range = MECHA_RANGED + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(mob/source, atom/target, list/modifiers) @@ -73,6 +75,7 @@ equip_cooldown = 10 energy_drain = 100 range = MECHA_MELEE|MECHA_RANGED + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) ///Which atom we are movable_target onto for var/atom/movable/movable_target ///Whether we will throw movable atomstothrow by locking onto them or just throw them back from where we click @@ -167,6 +170,7 @@ desc = "Boosts exosuit armor against melee attacks" icon_state = "mecha_abooster_ccw" armor_mod = /datum/armor/mecha_equipment_ccw_boost + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5) /datum/armor/mecha_equipment_ccw_boost melee = 20 @@ -176,6 +180,7 @@ desc = "Boosts exosuit armor against ranged kinetic and energy projectiles. Completely blocks taser shots." icon_state = "mecha_abooster_proj" armor_mod = /datum/armor/mecha_equipment_ranged_boost + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5) /datum/armor/mecha_equipment_ranged_boost bullet = 15 @@ -187,6 +192,7 @@ exosuit slightly more vulnerable to kinetic blows due to taking up valuable hull cushioning." icon_state = "mecha_abooster_emp" armor_mod = /datum/armor/mecha_equipment_energy_boost + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5) /datum/armor/mecha_equipment_energy_boost melee = -5 @@ -222,6 +228,7 @@ can_be_toggled = TRUE active = FALSE equipment_slot = MECHA_UTILITY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /// Repaired health per second var/health_boost = 0.5 var/icon/droid_overlay @@ -297,6 +304,7 @@ equipment_slot = MECHA_POWER can_be_toggled = TRUE active = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) ///Type of fuel the generator is using. Is set in generator_init() to add the starting amount of fuel var/obj/item/stack/sheet/fuel = null ///Fuel used per second while idle, not generating, in units @@ -385,7 +393,13 @@ ///Introduces the actual fuel type to be used, as well as the starting amount of said fuel /obj/item/mecha_parts/mecha_equipment/generator/proc/generator_init() - fuel = new /obj/item/stack/sheet/mineral/plasma(src, 1) + fuel = new /obj/item/stack/sheet/mineral/plasma(src, 10) + +/// Version without the initial fuel +/obj/item/mecha_parts/mecha_equipment/generator/printed + +/obj/item/mecha_parts/mecha_equipment/generator/generator_init() + return /////////////////////////////////////////// THRUSTERS ///////////////////////////////////////////// @@ -396,6 +410,7 @@ equipment_slot = MECHA_UTILITY can_be_toggled = TRUE active_label = "Thrusters" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.5) var/effect_type = /obj/effect/particle_effect/sparks /obj/item/mecha_parts/mecha_equipment/thrusters/try_attach_part(mob/user, obj/vehicle/sealed/mecha/mecha, attach_right) @@ -532,6 +547,7 @@ icon = 'icons/obj/devices/mecha_equipment.dmi' icon_state = "mecha_camera" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/camera_kit/try_attach_part(mob/user, obj/vehicle/sealed/mecha/mech, attach_right) if(mech.chassis_camera) diff --git a/code/modules/vehicles/mecha/equipment/tools/radio.dm b/code/modules/vehicles/mecha/equipment/tools/radio.dm index 18740fc22b9b..63a5c76e8b6f 100644 --- a/code/modules/vehicles/mecha/equipment/tools/radio.dm +++ b/code/modules/vehicles/mecha/equipment/tools/radio.dm @@ -4,6 +4,7 @@ desc = "A basic component of every vehicle." icon_state = "mecha_radio" equipment_slot = MECHA_UTILITY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5) ///Internal radio item var/obj/item/radio/mech/radio @@ -48,3 +49,4 @@ /obj/item/radio/mech subspace_transmission = TRUE + custom_materials = null diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm index 76a23c281595..ff727fb57908 100644 --- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm @@ -13,6 +13,7 @@ toolspeed = 0.8 harmful = TRUE mech_flags = EXOSUIT_MODULE_RIPLEY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) ///Bool for whether we beat the hell out of things we punch (and tear off their arms) var/killer_clamp = FALSE ///How much base damage this clamp does @@ -161,6 +162,7 @@ mech_flags = ALL can_be_triggered = TRUE action_type = /datum/action/vehicle/sealed/mecha/equipment/extinguisher_action + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) ///Minimum amount of reagent needed to activate. var/required_amount = 80 @@ -233,6 +235,7 @@ energy_drain = 0 // internal RCD handles power consumption based on matter use range = MECHA_MELEE | MECHA_RANGED item_flags = NO_MAT_REDEMPTION + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 10) ///The location the mech was when it began using the rcd var/atom/initial_location = FALSE @@ -329,6 +332,7 @@ desc = "A pressurized canopy attachment kit for an Autonomous Power Loader Unit \"Ripley\" MK-I exosuit, to convert it to the slower, but space-worthy MK-II design. This kit cannot be removed, once applied." icon_state = "ripleyupgrade" mech_flags = EXOSUIT_MODULE_RIPLEY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) var/result = /obj/vehicle/sealed/mecha/ripley/mk2 /obj/item/mecha_parts/mecha_equipment/ripleyupgrade/can_attach(obj/vehicle/sealed/mecha/ripley/mecha, attach_right = FALSE, mob/user) @@ -400,6 +404,7 @@ desc = "A hardpoint modification kit for an Autonomous Power Loader Unit \"Ripley\" MK-I exosuit, to convert it to the Paddy lightweight security design. This kit cannot be removed, once applied." icon_state = "paddyupgrade" mech_flags = EXOSUIT_MODULE_RIPLEY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5) result = /obj/vehicle/sealed/mecha/ripley/paddy /obj/item/mecha_parts/mecha_equipment/ripleyupgrade/paddy/can_attach(obj/vehicle/sealed/mecha/ripley/mecha, attach_right = FALSE, mob/user) diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index 91d49c5bc7e8..2ed37dc4101c 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -101,6 +101,7 @@ projectile = /obj/projectile/beam/laser fire_sound = 'sound/items/weapons/laser.ogg' harmful = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/energy/disabler equip_cooldown = 1.5 SECONDS @@ -113,6 +114,7 @@ projectiles_per_shot = 5 fire_sound = 'sound/items/weapons/taser2.ogg' firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy equip_cooldown = 15 @@ -122,6 +124,7 @@ energy_drain = 6 KILO JOULES projectile = /obj/projectile/beam/laser/heavylaser fire_sound = 'sound/items/weapons/lasercannonfire.ogg' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion equip_cooldown = 20 @@ -131,6 +134,7 @@ energy_drain = 1.2 KILO JOULES projectile = /obj/projectile/ion fire_sound = 'sound/items/weapons/laser.ogg' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla equip_cooldown = 35 @@ -141,6 +145,7 @@ projectile = /obj/projectile/energy/tesla/cannon fire_sound = 'sound/effects/magic/lightningbolt.ogg' harmful = TRUE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4) /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse equip_cooldown = 30 @@ -165,6 +170,7 @@ fire_sound = 'sound/items/weapons/plasma_cutter.ogg' harmful = TRUE mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) ///Exosuit thermal guns @@ -236,6 +242,7 @@ fire_sound = 'sound/items/weapons/kinetic_accel.ogg' harmful = TRUE mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser name = "\improper PBT \"Pacifier\" mounted taser" @@ -258,6 +265,7 @@ range = MECHA_MELEE|MECHA_RANGED kickback = FALSE mech_flags = EXOSUIT_MODULE_HONK + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/honker/action(mob/source, atom/target, list/modifiers) if(!action_checks(target)) @@ -357,6 +365,7 @@ projectiles_cache_max = 96 harmful = TRUE ammo_type = MECHA_AMMO_INCENDIARY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced name = "\improper S.H.H. \"Quietus\" Carbine" @@ -383,6 +392,7 @@ variance = 25 harmful = TRUE ammo_type = MECHA_AMMO_BUCKSHOT + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg name = "\improper Ultra AC 2" @@ -399,6 +409,7 @@ projectile_delay = 2 harmful = TRUE ammo_type = MECHA_AMMO_LMG + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) /// Missiles /// SRM-8 Missile Rack - Used by Nuclear Operatives - Explodes when it hits anything @@ -415,6 +426,7 @@ equip_cooldown = 60 harmful = TRUE ammo_type = MECHA_AMMO_MISSILE_SRM + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) /// PEP-6 Missile Rack - Used by Robotics - Explodes only when it hits dense objects like walls, borgs and mechs /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching @@ -439,7 +451,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/action(mob/source, atom/target, list/modifiers) if(!action_checks(target)) return - TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT(type), equip_cooldown) + TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT(type), get_equip_cooldown(target)) chassis.use_energy(energy_drain) var/newtonian_target = dir2angle(REVERSE_DIR(chassis.dir)) var/obj/O = new projectile(chassis.loc) @@ -470,7 +482,8 @@ missile_speed = 1.5 equip_cooldown = 60 ammo_type = MECHA_AMMO_FLASHBANG - var/det_time = 20 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3) + var/det_time = 2 SECONDS /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(obj/item/grenade/flashbang/F, mob/user) var/turf/T = get_turf(src) @@ -489,6 +502,7 @@ projectile = /obj/item/grenade/clusterbuster equip_cooldown = 90 ammo_type = MECHA_AMMO_CLUSTERBANG + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar name = "banana mortar" @@ -503,6 +517,7 @@ equip_cooldown = 20 mech_flags = EXOSUIT_MODULE_HONK ammo_type = MECHA_AMMO_BANANA_PEEL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar name = "mousetrap mortar" @@ -517,6 +532,7 @@ equip_cooldown = 10 mech_flags = EXOSUIT_MODULE_HONK ammo_type = MECHA_AMMO_MOUSETRAP + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/proj_init(obj/item/assembly/mousetrap/armed/M) M.secured = TRUE @@ -541,6 +557,7 @@ var/punch_damage = 35 mech_flags = EXOSUIT_MODULE_HONK ammo_type = MECHA_AMMO_PUNCHING_GLOVE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 3.75) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove/get_snowflake_data() . = ..() @@ -623,6 +640,7 @@ toolspeed = 0.8 mech_flags = EXOSUIT_MODULE_PADDY projectiles_per_shot = 0 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5) ///Chassis but typed for the cargo_hold var var/obj/vehicle/sealed/mecha/ripley/secmech ///Audio for using the hydraulic clamp diff --git a/code/modules/vehicles/mecha/mech_bay.dm b/code/modules/vehicles/mecha/mech_bay.dm index 4011b490b855..7f6ca714176a 100644 --- a/code/modules/vehicles/mecha/mech_bay.dm +++ b/code/modules/vehicles/mecha/mech_bay.dm @@ -94,6 +94,7 @@ /obj/machinery/computer/mech_bay_power_console name = "mech bay power control console" desc = "Displays the status of mechs connected to the recharge station." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/mech_bay_power_console") icon_screen = "recharge_comp" icon_keyboard = "rd_key" circuit = /obj/item/circuitboard/computer/mech_bay_power_console diff --git a/code/modules/vehicles/mecha/mech_melee_attack.dm b/code/modules/vehicles/mecha/mech_melee_attack.dm index ed16bb8f60dc..d4f624ab9cf2 100644 --- a/code/modules/vehicles/mecha/mech_melee_attack.dm +++ b/code/modules/vehicles/mecha/mech_melee_attack.dm @@ -146,7 +146,7 @@ var/damage = rand(mecha_attacker.force * 0.5, mecha_attacker.force) if (mecha_attacker.damtype == BRUTE || mecha_attacker.damtype == BURN) - var/def_zone = get_random_valid_zone(user.zone_selected, even_weights = TRUE) + var/def_zone = get_random_valid_zone(user?.zone_selected, even_weights = TRUE) var/zone_readable = parse_zone_with_bodypart(def_zone) apply_damage(damage, mecha_attacker.damtype, def_zone, run_armor_check( def_zone = def_zone, diff --git a/code/modules/vehicles/mecha/mecha_actions.dm b/code/modules/vehicles/mecha/mecha_actions.dm index 2fd55c14e4b0..34d9e82e53bc 100644 --- a/code/modules/vehicles/mecha/mecha_actions.dm +++ b/code/modules/vehicles/mecha/mecha_actions.dm @@ -107,7 +107,6 @@ chassis.toggle_strafe() - /obj/vehicle/sealed/mecha/proc/toggle_strafe() if(!(mecha_flags & CAN_STRAFE)) to_chat(occupants, "this mecha doesn't support strafing!") @@ -124,7 +123,7 @@ var/datum/action/action = LAZYACCESSASSOC(occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/strafe) action?.build_all_button_icons() -///swap seats, for two person mecha +/// Swap seats, for two person mecha /datum/action/vehicle/sealed/mecha/swap_seat name = "Switch Seats" button_icon_state = "mech_seat_swap" diff --git a/code/modules/vehicles/mecha/mecha_control_console.dm b/code/modules/vehicles/mecha/mecha_control_console.dm index 9ad6a4e0f6bf..06f3f3052325 100644 --- a/code/modules/vehicles/mecha/mecha_control_console.dm +++ b/code/modules/vehicles/mecha/mecha_control_console.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/mecha name = "exosuit control console" desc = "Used to remotely locate or lockdown exosuits." + icon_state = MAP_SWITCH("computer", "/obj/machinery/computer/mecha") icon_screen = "mecha" icon_keyboard = "tech_key" req_access = list(ACCESS_ROBOTICS) @@ -79,6 +80,7 @@ icon = 'icons/obj/devices/new_assemblies.dmi' icon_state = "motion2" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5) /// If this beacon allows for AI control. Exists to avoid using istype() on checking var/ai_beacon = FALSE /// Cooldown variable for EMP pulsing @@ -155,5 +157,6 @@ /obj/item/mecha_parts/mecha_tracking/ai_control name = "exosuit AI control beacon" desc = "A device used to transmit exosuit data. Also allows active AI units to take control of said exosuit." + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2) ai_beacon = TRUE flag_to_check = BEACON_CONTROLLABLE diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm index f41b3006e038..393c478b5198 100644 --- a/code/modules/vehicles/mecha/mecha_defense.dm +++ b/code/modules/vehicles/mecha/mecha_defense.dm @@ -59,7 +59,7 @@ /obj/vehicle/sealed/mecha/attack_hand(mob/living/user, list/modifiers) . = ..() - if(.) + if(. || !user.combat_mode) return user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code. user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) @@ -73,26 +73,25 @@ /obj/vehicle/sealed/mecha/attack_alien(mob/living/user, list/modifiers) log_message("Attack by alien. Attacker - [user].", LOG_MECHA, color="red") playsound(loc, 'sound/items/weapons/slash.ogg', 100, TRUE) - attack_generic(user, rand(user.melee_damage_lower, user.melee_damage_upper), BRUTE, MELEE, 0) + return attack_generic(user, rand(user.melee_damage_lower, user.melee_damage_upper), BRUTE, MELEE, 0) /obj/vehicle/sealed/mecha/attack_animal(mob/living/simple_animal/user, list/modifiers) log_message("Attack by simple animal. Attacker - [user].", LOG_MECHA, color="red") if(!user.melee_damage_upper && !user.obj_damage) user.emote("custom", message = "[user.friendly_verb_continuous] [src].") - return 0 - else - var/play_soundeffect = 1 - if(user.environment_smash) - play_soundeffect = 0 - playsound(src, 'sound/effects/bang.ogg', 50, TRUE) - var/animal_damage = rand(user.melee_damage_lower,user.melee_damage_upper) - if(user.obj_damage) - animal_damage = user.obj_damage - animal_damage = min(animal_damage, 20*user.environment_smash) - log_combat(user, src, "attacked") - attack_generic(user, animal_damage, user.melee_damage_type, MELEE, play_soundeffect) - return 1 + return FALSE + + var/play_soundeffect = 1 + if(user.environment_smash) + play_soundeffect = 0 + playsound(src, 'sound/effects/bang.ogg', 50, TRUE) + var/animal_damage = rand(user.melee_damage_lower,user.melee_damage_upper) + if(user.obj_damage) + animal_damage = user.obj_damage + animal_damage = min(animal_damage, 20*user.environment_smash) + log_combat(user, src, "attacked") + return attack_generic(user, animal_damage, user.melee_damage_type, MELEE, play_soundeffect) /obj/vehicle/sealed/mecha/hulk_damage() return 15 @@ -420,16 +419,18 @@ if(servo) stock_parts += servo - if(length(stock_parts)) - var/obj/item/stock_parts/part_to_remove = tgui_input_list(user, "Which part to remove?", "Part Removal", stock_parts) - if(!(locate(part_to_remove) in contents)) - return - user.put_in_hands(part_to_remove) - locate_parts() - diag_hud_set_mechcell() - tool.play_tool_sound(src) + if(!length(stock_parts)) + balloon_alert(user, "no parts!") + return + + var/obj/item/stock_parts/part_to_remove = tgui_input_list(user, "Which part to remove?", "Part Removal", stock_parts) + if(!(locate(part_to_remove) in contents)) return - balloon_alert(user, "no parts!") + + user.put_in_hands(part_to_remove) + locate_parts() + diag_hud_set_mechcell() + tool.play_tool_sound(src) /obj/vehicle/sealed/mecha/welder_act(mob/living/user, obj/item/W) if(user.combat_mode) @@ -445,7 +446,7 @@ return user.balloon_alert_to_viewers("started welding [src]", "started repairing [src]") audible_message(span_hear("You hear welding.")) - var/did_the_thing + var/did_the_thing = FALSE while(atom_integrity < max_integrity) if(W.use_tool(src, user, 2.5 SECONDS, volume=50)) did_the_thing = TRUE @@ -453,12 +454,12 @@ audible_message(span_hear("You hear welding.")) else break + if(did_the_thing) user.balloon_alert_to_viewers("[(atom_integrity >= max_integrity) ? "fully" : "partially"] repaired [src]") else user.balloon_alert_to_viewers("stopped welding [src]", "interrupted the repair!") - /obj/vehicle/sealed/mecha/proc/full_repair(charge_cell) repair_damage(max_integrity) if(cell && charge_cell) @@ -489,62 +490,66 @@ visual_effect_icon = ATTACK_EFFECT_MECHFIRE else if(damtype == TOX) visual_effect_icon = ATTACK_EFFECT_MECHTOXIN - ..() - + return ..() -/obj/vehicle/sealed/mecha/proc/ammo_resupply(obj/item/mecha_ammo/A, mob/user,fail_chat_override = FALSE) - if(!A.rounds) +/obj/vehicle/sealed/mecha/proc/ammo_resupply(obj/item/mecha_ammo/ammo, mob/user,fail_chat_override = FALSE) + if(!ammo.rounds) if(!fail_chat_override) balloon_alert(user, "the box is empty!") return FALSE + var/ammo_needed var/found_gun + for(var/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gun in flat_equipment) ammo_needed = 0 - if(gun.ammo_type != A.ammo_type) + if(gun.ammo_type != ammo.ammo_type) continue found_gun = TRUE - if(A.direct_load) + if(ammo.direct_load) ammo_needed = initial(gun.projectiles) - gun.projectiles else ammo_needed = gun.projectiles_cache_max - gun.projectiles_cache if(!ammo_needed) continue - if(ammo_needed < A.rounds) - if(A.direct_load) + + if(ammo_needed < ammo.rounds) + if(ammo.direct_load) gun.projectiles = gun.projectiles + ammo_needed else gun.projectiles_cache = gun.projectiles_cache + ammo_needed - playsound(get_turf(user),A.load_audio,50,TRUE) - to_chat(user, span_notice("You add [ammo_needed] [A.ammo_type][ammo_needed > 1?"s":""] to \the [gun]")) - A.rounds = A.rounds - ammo_needed - if(A.custom_materials) //Change material content of the ammo box according to the amount of ammo deposited into the weapon + playsound(get_turf(user), ammo.load_audio, 50, TRUE) + to_chat(user, span_notice("You add [ammo_needed] [ammo.ammo_type][ammo_needed > 1 ? "s" : ""] to \the [gun]")) + ammo.rounds = ammo.rounds - ammo_needed + if(ammo.custom_materials) //Change material content of the ammo box according to the amount of ammo deposited into the weapon /// list of materials contained in the ammo box after we put it through the equation so we can stick this list into set_custom_materials() var/list/new_material_content = list() - for(var/datum/material/current_material in A.custom_materials) + for(var/datum/material/current_material in ammo.custom_materials) if(istype(current_material, /datum/material/iron)) //we can flatten an empty ammo box into a sheet of iron (2000 units) so we have to make sure the box always has this amount at minimum - new_material_content[current_material] = (A.custom_materials[current_material] - SHEET_MATERIAL_AMOUNT) * (A.rounds / initial(A.rounds)) + SHEET_MATERIAL_AMOUNT + new_material_content[current_material] = (ammo.custom_materials[current_material] - SHEET_MATERIAL_AMOUNT) * (ammo.rounds / initial(ammo.rounds)) + SHEET_MATERIAL_AMOUNT else - new_material_content[current_material] = A.custom_materials[current_material] * (A.rounds / initial(A.rounds)) - A.set_custom_materials(new_material_content) - A.update_name() + new_material_content[current_material] = ammo.custom_materials[current_material] * (ammo.rounds / initial(ammo.rounds)) + ammo.set_custom_materials(new_material_content) + ammo.update_name() return TRUE - if(A.direct_load) - gun.projectiles = gun.projectiles + A.rounds + if(ammo.direct_load) + gun.projectiles = gun.projectiles + ammo.rounds else - gun.projectiles_cache = gun.projectiles_cache + A.rounds - playsound(get_turf(user),A.load_audio,50,TRUE) - to_chat(user, span_notice("You add [A.rounds] [A.ammo_type][A.rounds > 1?"s":""] to \the [gun]")) - if(A.qdel_on_empty) - qdel(A) + gun.projectiles_cache = gun.projectiles_cache + ammo.rounds + + playsound(get_turf(user),ammo.load_audio,50,TRUE) + to_chat(user, span_notice("You add [ammo.rounds] [ammo.ammo_type][ammo.rounds > 1 ? "s" : ""] to \the [gun]")) + if(ammo.qdel_on_empty) + qdel(ammo) return TRUE - A.rounds = 0 - A.set_custom_materials(list(/datum/material/iron=SHEET_MATERIAL_AMOUNT)) - A.update_appearance() + ammo.rounds = 0 + ammo.set_custom_materials(list(/datum/material/iron=SHEET_MATERIAL_AMOUNT)) + ammo.update_appearance() return TRUE + if(!fail_chat_override) if(found_gun) balloon_alert(user, "ammo storage is full!") diff --git a/code/modules/vehicles/mecha/mecha_mob_interaction.dm b/code/modules/vehicles/mecha/mecha_mob_interaction.dm index 296352dc8c44..3b3411202314 100644 --- a/code/modules/vehicles/mecha/mecha_mob_interaction.dm +++ b/code/modules/vehicles/mecha/mecha_mob_interaction.dm @@ -197,7 +197,6 @@ if(driver.client) driver.update_mouse_pointer() driver.client.view_size.resetToDefault() - zoom_mode = FALSE . = ..() update_appearance() diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm index 5477f5f2581b..4aef503d1a07 100644 --- a/code/modules/vehicles/mecha/mecha_movement.dm +++ b/code/modules/vehicles/mecha/mecha_movement.dm @@ -75,49 +75,24 @@ /obj/vehicle/sealed/mecha/vehicle_move(direction, forcerotate = FALSE) if(!COOLDOWN_FINISHED(src, cooldown_vehicle_move)) return FALSE + COOLDOWN_START(src, cooldown_vehicle_move, movedelay) + if(completely_disabled) return FALSE + if(!direction) return FALSE + + if(!can_move(direction)) + return FALSE + if(ismovable(loc)) //Mech is inside an object, tell it we moved var/atom/loc_atom = loc return loc_atom.relaymove(src, direction) - var/obj/machinery/portable_atmospherics/canister/internal_tank = get_internal_tank() - if(internal_tank?.connected_port) - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) - to_chat(occupants, "[icon2html(src, occupants)][span_warning("Unable to move while connected to the air system port!")]") - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) - return FALSE + if(!Process_Spacemove(direction)) return FALSE - if(zoom_mode) - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) - to_chat(occupants, "[icon2html(src, occupants)][span_warning("Unable to move while in zoom mode!")]") - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) - return FALSE - var/list/missing_parts = list() - if(isnull(cell)) - missing_parts += "power cell" - if(isnull(capacitor)) - missing_parts += "capacitor" - if(isnull(servo)) - missing_parts += "servo" - if(length(missing_parts)) - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) - to_chat(occupants, "[icon2html(src, occupants)][span_warning("Missing [english_list(missing_parts)].")]") - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) - return FALSE - if((step_energy_drain != 0) && !use_energy(step_energy_drain)) - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) - to_chat(occupants, "[icon2html(src, occupants)][span_warning("Insufficient power to move!")]") - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) - return FALSE - if(lavaland_only && is_mining_level(z)) - if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) - to_chat(occupants, "[icon2html(src, occupants)][span_warning("Invalid Environment.")]") - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) - return FALSE var/olddir = dir @@ -148,20 +123,49 @@ //Otherwise just walk normally . = try_step_multiz(direction) - if(phasing) - use_energy(phasing_energy_drain) if(strafe) setDir(olddir) +/// Check if anything is blocking our movement +/obj/vehicle/sealed/mecha/proc/can_move(direction) + if(toppled) + return FALSE + + var/obj/machinery/portable_atmospherics/canister/internal_tank = get_internal_tank() + if(internal_tank?.connected_port) + if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) + to_chat(occupants, "[icon2html(src, occupants)][span_warning("Unable to move while connected to the air system port!")]") + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) + return FALSE + + var/list/missing_parts = list() + if(isnull(cell)) + missing_parts += "power cell" + if(isnull(capacitor)) + missing_parts += "capacitor" + if(isnull(servo)) + missing_parts += "servo" + + if(length(missing_parts)) + if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) + to_chat(occupants, "[icon2html(src, occupants)][span_warning("Missing [english_list(missing_parts)].")]") + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) + return FALSE + + if((step_energy_drain != 0) && !use_energy(step_energy_drain)) + if(TIMER_COOLDOWN_FINISHED(src, COOLDOWN_MECHA_MESSAGE)) + to_chat(occupants, "[icon2html(src, occupants)][span_warning("Insufficient power to move!")]") + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MESSAGE, 2 SECONDS) + return FALSE + return TRUE + /obj/vehicle/sealed/mecha/Bump(atom/obstacle) . = ..() - if(phasing) //Theres only one cause for phasing canpass fails - to_chat(occupants, "[icon2html(src, occupants)][span_warning("A dull, universal force is preventing you from [phasing] here!")]") - spark_system.start() - return if(.) //mech was thrown/door/whatever return + try_bumpsmash(obstacle) +/obj/vehicle/sealed/mecha/proc/try_bumpsmash(atom/obstacle) // Whether or not we're on our mecha melee cooldown var/on_cooldown = TIMER_COOLDOWN_RUNNING(src, COOLDOWN_MECHA_MELEE_ATTACK) @@ -172,6 +176,7 @@ TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown * 0.3) if(!obstacle || obstacle.CanPass(src, get_dir(obstacle, src) || dir)) // The else is in case the obstacle is in the same turf. step(src,dir) + if(isobj(obstacle)) var/obj/obj_obstacle = obstacle if(!obj_obstacle.anchored && obj_obstacle.move_resist <= move_force) @@ -191,3 +196,11 @@ // Delay's a bit faster then standard cameras to "avoid running out of the camera's fov" whatever that means // An EMPd mecha with a lowered view_range on its camera can still sometimes run out into static before updating, however. SScameras.camera_moved(chassis_camera, get_turf(old_loc), get_turf(chassis_camera), 0.5 SECONDS) + +/obj/vehicle/sealed/mecha/proc/right_self(fallen_angle) + if(!toppled) + return + toppled = FALSE + var/matrix/to_turn = turn(transform, 360 - fallen_angle) + animate(src, transform = to_turn, 0.5 SECONDS) + playsound(src, 'sound/vehicles/mecha/nominal.ogg', 50) diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index e04d7bc2d145..6154b257efe3 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -39,109 +39,130 @@ /obj/item/mecha_parts/chassis/ripley name = "\improper Ripley chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/ripley + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/ripley_torso name = "\improper Ripley torso" desc = "A torso part of Ripley APLU. Contains power unit, processing core and life support systems." icon_state = "ripley_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.75) /obj/item/mecha_parts/part/ripley_left_arm name = "\improper Ripley left arm" desc = "A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools." icon_state = "ripley_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) /obj/item/mecha_parts/part/ripley_right_arm name = "\improper Ripley right arm" desc = "A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools." icon_state = "ripley_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) /obj/item/mecha_parts/part/ripley_left_leg name = "\improper Ripley left leg" desc = "A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "ripley_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) /obj/item/mecha_parts/part/ripley_right_leg name = "\improper Ripley right leg" desc = "A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems." icon_state = "ripley_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) ///////// Odysseus /obj/item/mecha_parts/chassis/odysseus name = "\improper Odysseus chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/odysseus + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/odysseus_head name = "\improper Odysseus head" desc = "An Odysseus head. Contains an integrated medical HUD scanner." icon_state = "odysseus_head" + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3) /obj/item/mecha_parts/part/odysseus_torso name = "\improper Odysseus torso" desc="A torso part of Odysseus. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper." icon_state = "odysseus_torso" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) /obj/item/mecha_parts/part/odysseus_left_arm name = "\improper Odysseus left arm" desc = "An Odysseus left arm. Data and power sockets are compatible with specialized medical equipment." icon_state = "odysseus_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3) /obj/item/mecha_parts/part/odysseus_right_arm name = "\improper Odysseus right arm" desc = "An Odysseus right arm. Data and power sockets are compatible with specialized medical equipment." icon_state = "odysseus_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3) /obj/item/mecha_parts/part/odysseus_left_leg name = "\improper Odysseus left leg" desc = "An Odysseus left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." icon_state = "odysseus_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5) /obj/item/mecha_parts/part/odysseus_right_leg name = "\improper Odysseus right leg" desc = "An odysseus right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients." icon_state = "odysseus_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5) ///////// Gygax /obj/item/mecha_parts/chassis/gygax name = "\improper Gygax chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/gygax + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/gygax_torso name = "\improper Gygax torso" desc = "A torso part of Gygax. Contains power unit, processing core and life support systems." icon_state = "gygax_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_head name = "\improper Gygax head" desc = "A Gygax head. Houses advanced surveillance and targeting sensors." icon_state = "gygax_head" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_left_arm name = "\improper 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" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_right_arm name = "\improper 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" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_left_leg name = "\improper Gygax left leg" desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed." icon_state = "gygax_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_right_leg name = "\improper Gygax right leg" desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed." icon_state = "gygax_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/gygax_armor gender = PLURAL name = "\improper Gygax armor plates" desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction." icon_state = "gygax_armor" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5) //////////// Durand @@ -149,104 +170,124 @@ /obj/item/mecha_parts/chassis/durand name = "\improper Durand chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/durand + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5) /obj/item/mecha_parts/part/durand_torso name = "\improper Durand torso" desc = "A torso part of Durand. Contains power unit, processing core and life support systems within a robust protective frame." icon_state = "durand_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/durand_head name = "\improper Durand head" desc = "A Durand head. Houses advanced surveillance and targeting sensors." icon_state = "durand_head" + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/durand_left_arm name = "\improper Durand left arm" desc = "A Durand left arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well." icon_state = "durand_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/durand_right_arm name = "\improper Durand right arm" desc = "A Durand right arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well." icon_state = "durand_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/durand_left_leg name = "\improper Durand left leg" desc = "A Durand left leg. Built particularly sturdy to support the Durand's heavy weight and defensive needs." icon_state = "durand_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/durand_right_leg name = "\improper Durand right leg" desc = "A Durand right leg. Built particularly sturdy to support the Durand's heavy weight and defensive needs." icon_state = "durand_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/durand_armor gender = PLURAL name = "\improper Durand armor plates" desc = "A set of armor plates for the Durand. Built heavy to resist an incredible amount of brute force." icon_state = "durand_armor" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10) ////////// Clarke /obj/item/mecha_parts/chassis/clarke name = "\improper Clarke chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/clarke + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/clarke_torso name = "\improper Clarke torso" desc = "A torso part of Clarke. Contains power unit, processing core and life support systems." icon_state = "clarke_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.75) /obj/item/mecha_parts/part/clarke_head name = "\improper Clarke head" desc = "A Clarke head. Contains an integrated diagnostic HUD scanner." icon_state = "clarke_head" + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3) /obj/item/mecha_parts/part/clarke_left_arm name = "\improper Clarke left arm" desc = "A Clarke left arm. Data and power sockets are compatible with most exosuit tools." icon_state = "clarke_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) /obj/item/mecha_parts/part/clarke_right_arm name = "\improper Clarke right arm" desc = "A Clarke right arm. Data and power sockets are compatible with most exosuit tools." icon_state = "clarke_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5) ////////// HONK /obj/item/mecha_parts/chassis/honker name = "\improper H.O.N.K chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/honker + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/honker_torso name = "\improper H.O.N.K torso" desc = "A torso part of H.O.N.K. Contains chuckle unit, bananium core and honk support systems." icon_state = "honker_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/honker_head name = "\improper H.O.N.K head" desc = "A H.O.N.K head. Appears to lack a face plate." icon_state = "honker_head" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/part/honker_left_arm name = "\improper H.O.N.K left arm" desc = "A H.O.N.K left arm. With unique sockets that accept odd weaponry designed by clown scientists." icon_state = "honker_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/part/honker_right_arm name = "\improper H.O.N.K right arm" desc = "A H.O.N.K right arm. With unique sockets that accept odd weaponry designed by clown scientists." icon_state = "honker_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/part/honker_left_leg name = "\improper H.O.N.K left leg" desc = "A H.O.N.K left leg. The foot appears just large enough to fully accommodate a clown shoe." icon_state = "honker_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/part/honker_right_leg name = "\improper H.O.N.K right leg" desc = "A H.O.N.K right leg. The foot appears just large enough to fully accommodate a clown shoe." icon_state = "honker_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5) ////////// Phazon @@ -254,82 +295,98 @@ /obj/item/mecha_parts/chassis/phazon name = "\improper Phazon chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/phazon + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) /obj/item/mecha_parts/part/phazon_torso name="\improper Phazon torso" desc="A Phazon torso part. The socket for the ectoplasmic core that powers the exosuit's unique phase drives is located in the middle." icon_state = "phazon_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 17.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/phazon_head name="\improper Phazon head" desc="A Phazon head. Its sensors are carefully calibrated to provide vision and data even when the exosuit is phasing." icon_state = "phazon_head" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/mecha_parts/part/phazon_left_arm name="\improper Phazon left arm" desc="A Phazon left arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand." icon_state = "phazon_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/phazon_right_arm name="\improper Phazon right arm" desc="A Phazon right arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand." icon_state = "phazon_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/phazon_left_leg name="\improper Phazon left leg" desc="A Phazon left leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged." icon_state = "phazon_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/phazon_right_leg name="\improper Phazon right leg" desc="A Phazon right leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged." icon_state = "phazon_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/phazon_armor name="Phazon armor" desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties." icon_state = "phazon_armor" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10) // Savannah-Ivanov /obj/item/mecha_parts/chassis/savannah_ivanov name = "\improper Savannah-Ivanov chassis" construct_type = /datum/component/construction/unordered/mecha_chassis/savannah_ivanov + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5) /obj/item/mecha_parts/part/savannah_ivanov_torso name="\improper Savannah-Ivanov torso" desc="A Savannah-Ivanov torso part. It's missing a huge chunk of space..." icon_state = "savannah_ivanov_harness" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5) /obj/item/mecha_parts/part/savannah_ivanov_head name="\improper Savannah-Ivanov head" desc="A Savannah-Ivanov head. It's sensors have been adjusted to support graceful landings." icon_state = "savannah_ivanov_head" + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT) /obj/item/mecha_parts/part/savannah_ivanov_left_arm name="\improper Savannah-Ivanov left arm" desc="A Savannah-Ivanov left arm. Hidden rocket fabrication included in the wrists." icon_state = "savannah_ivanov_l_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/savannah_ivanov_right_arm name="\improper Savannah-Ivanov right arm" desc="A Savannah-Ivanov left arm. Hidden rocket fabrication included in the wrists." icon_state = "savannah_ivanov_r_arm" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/savannah_ivanov_left_leg name="\improper Savannah-Ivanov left leg" desc="A Savannah-Ivanov left leg. In production they were designed to carry more than two passengers, so the leaping functionality was added as to not waste potential." icon_state = "savannah_ivanov_l_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/savannah_ivanov_right_leg name="\improper Savannah-Ivanov right leg" desc="A Savannah-Ivanov left leg. In production they were designed to carry more than two passengers, so the leaping functionality was added as to not waste potential." icon_state = "savannah_ivanov_r_leg" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) /obj/item/mecha_parts/part/savannah_ivanov_armor name="Savannah-Ivanov armor" desc="Savannah-Ivanov armor plates. They are uniquely shaped and reinforced to deal with the stresses of two pilots, grandiose leaps, and missiles." icon_state = "savannah_ivanov_armor" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10) ///////// Circuitboards @@ -403,13 +460,16 @@ /obj/item/circuitboard/mecha/phazon/peripherals name = "Phazon Peripherals Control module (Exosuit Board)" icon_state = "mcontroller" + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT) /obj/item/circuitboard/mecha/phazon/targeting name = "Phazon Weapon Control and Targeting module (Exosuit Board)" icon_state = "mcontroller" + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT) /obj/item/circuitboard/mecha/phazon/main name = "Phazon Central Control module (Exosuit Board)" + custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT) /obj/item/circuitboard/mecha/clarke/peripherals name = "Clarke Peripherals Control module (Exosuit Board)" diff --git a/code/modules/vehicles/mecha/miniature/vim.dm b/code/modules/vehicles/mecha/miniature/vim.dm new file mode 100644 index 000000000000..af72be3bb488 --- /dev/null +++ b/code/modules/vehicles/mecha/miniature/vim.dm @@ -0,0 +1,86 @@ +/** + * ## VIM!!!!!!! + * + * It's a teenie miniature mecha... for critters! + * For the critters that cannot be understood, there is a sound creator in the mecha. It also has headlights. + */ +/obj/vehicle/sealed/mecha/vim + name = "\improper Vim" + desc = "A miniature exosuit from Nanotrasen, developed to let the irreplaceable station pets live a little longer." + icon_state = "vim" + base_icon_state = "vim" + max_integrity = 50 + armor_type = /datum/armor/mecha_vim + enter_delay = 2 SECONDS + movedelay = 0.6 + light_system = OVERLAY_LIGHT_DIRECTIONAL + light_range = 4 + light_power = 1.5 + light_on = FALSE + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10.55, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) + stepsound = 'sound/effects/servostep.ogg' + pivot_step = TRUE + step_energy_drain = 4 + mecha_flags = CAN_STRAFE | HAS_LIGHTS | IS_ENCLOSED + mech_type = EXOSUIT_MODULE_VIM + interaction_flags_mouse_drop = NONE + move_force = MOVE_FORCE_EXTREMELY_WEAK + move_resist = MOVE_FORCE_VERY_WEAK + density = FALSE + pass_flags = PASSVEHICLE | PASSMOB | PASSTABLE + pass_flags_self = PASSVEHICLE | PASSMOB | PASSTABLE + inertia_force_weight = 0.5 // lighter than other mechs and people + accesses = list(ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_MINING) + ui_theme = PDA_THEME_CAT // since the mech is for pets ~NYAAAA~ + equip_by_category = list( + MECHA_L_ARM = null, // armless mech + MECHA_R_ARM = null, + MECHA_UTILITY = list(), + MECHA_POWER = list(), + MECHA_ARMOR = list(), + ) + max_equip_by_category = list( + MECHA_L_ARM = 0, // armless mech + MECHA_R_ARM = 0, + MECHA_UTILITY = 3, + MECHA_POWER = 1, + MECHA_ARMOR = 1, + ) + ///Maximum size of a mob trying to enter the mech + var/maximum_mob_size = MOB_SIZE_SMALL + COOLDOWN_DECLARE(sound_cooldown) + +/datum/armor/mecha_vim + melee = 70 + bullet = 40 + laser = 40 + bomb = 30 + fire = 80 + acid = 80 + +/obj/vehicle/sealed/mecha/vim/mob_try_enter(mob/entering) + if(issilicon(entering)) + entering.balloon_alert(entering, "can't fit inside!") + return FALSE + + var/mob/living/animal_or_basic = entering + if(animal_or_basic.mob_size > maximum_mob_size) + entering.balloon_alert(entering, "can't fit inside!") + return FALSE + + mob_enter(entering) + moved_inside(entering) + +/obj/vehicle/sealed/mecha/vim/generate_actions() + . = ..() + initialize_controller_action_type(/datum/action/vehicle/sealed/noise/chime, VEHICLE_CONTROL_DRIVE) + initialize_controller_action_type(/datum/action/vehicle/sealed/noise/buzz, VEHICLE_CONTROL_DRIVE) + +/obj/vehicle/sealed/mecha/vim/toggle_lights(forced_state = null, mob/user) + . = ..() + update_appearance() + +/obj/vehicle/sealed/mecha/vim/update_overlays() + . = ..() + if(mecha_flags & LIGHTS_ON) + . += mutable_appearance(icon, "vim_headlights") diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 98907b8a26ee..5a484fbe07bb 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -47,19 +47,13 @@ . = ..() ore_box = new(src) -/obj/vehicle/sealed/mecha/clarke/atom_destruction() - if(ore_box) - INVOKE_ASYNC(ore_box, TYPE_PROC_REF(/obj/structure/ore_box, dump_box_contents)) - return ..() - /obj/vehicle/sealed/mecha/clarke/generate_actions() . = ..() initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_search_ruins) initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/clarke_scoop_body) -//Ore Box Controls - -///Special equipment for the Clarke mech, handles moving ore without giving the mech a hydraulic clamp and cargo compartment. +// Ore Box Controls +/// Special equipment for the Clarke mech, handles moving ore without giving the mech a hydraulic clamp and cargo compartment. /obj/item/mecha_parts/mecha_equipment/orebox_manager name = "ore storage module" desc = "An automated ore box management device, complete with a built-in boulder processor." diff --git a/code/modules/vehicles/motorized_wheelchair.dm b/code/modules/vehicles/motorized_wheelchair.dm index 771b9ab55ab0..b127d0b35b24 100644 --- a/code/modules/vehicles/motorized_wheelchair.dm +++ b/code/modules/vehicles/motorized_wheelchair.dm @@ -6,7 +6,7 @@ foldabletype = null max_integrity = 150 ttv_icon = "motor_chair_ttv" - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5) ///How "fast" the wheelchair goes only affects ramming var/speed = 2 ///Self explanatory, ratio of how much power we use diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm index e389403a13dc..11e30da92b57 100644 --- a/code/modules/vehicles/pimpin_ride.dm +++ b/code/modules/vehicles/pimpin_ride.dm @@ -181,6 +181,7 @@ icon = 'icons/obj/service/janicart_upgrade.dmi' icon_state = "janicart_upgrade" greyscale_config = /datum/greyscale_config/janicart_upgrade + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) /// The greyscale config for the on-cart installed upgrade overlay var/overlay_greyscale_config = /datum/greyscale_config/janicart_upgrade/installed diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm index 5c395243caf3..788ad3b779d2 100644 --- a/code/modules/vehicles/vehicle_actions.dm +++ b/code/modules/vehicles/vehicle_actions.dm @@ -387,11 +387,11 @@ animate(vehicle, pixel_z = 6, time = 0.3 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL) animate(pixel_z = -6, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE) playsound(vehicle, 'sound/vehicles/skateboard_ollie.ogg', 50, TRUE) - passtable_on(rider, VEHICLE_TRAIT) - passtable_on(vehicle, VEHICLE_TRAIT) + ADD_TRAIT(rider, TRAIT_PASSTABLE, VEHICLE_TRAIT) + vehicle.pass_flags |= PASSTABLE rider.Move(landing_turf, vehicle_target.dir) - passtable_off(rider, VEHICLE_TRAIT) - passtable_off(vehicle, VEHICLE_TRAIT) + REMOVE_TRAIT(rider, TRAIT_PASSTABLE, VEHICLE_TRAIT) + vehicle.pass_flags &= ~PASSTABLE /datum/action/vehicle/ridden/scooter/skateboard/kickflip name = "Kickflip" @@ -440,6 +440,8 @@ addtimer(CALLBACK(board, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard, pick_up_board), rider, TRUE), 0.5 SECONDS) // so the board can still handle "picking it up" +///cooldown between uses of the sound maker +#define VIM_SOUND_COOLDOWN (1 SECONDS) //VIM ACTION DATUMS @@ -456,7 +458,7 @@ . = ..() if(!.) return FALSE - var/obj/vehicle/sealed/car/vim/vim_mecha = vehicle_entered_target + var/obj/vehicle/sealed/mecha/vim/vim_mecha = vehicle_entered_target if(!COOLDOWN_FINISHED(vim_mecha, sound_cooldown)) vim_mecha.balloon_alert(owner, "on cooldown!") return FALSE @@ -472,10 +474,6 @@ sound_path = 'sound/machines/chime.ogg' sound_message = "chimes!" -/datum/action/vehicle/sealed/noise/chime/Trigger(mob/clicker, trigger_flags) - if(..()) - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_CHIME_USED) - /datum/action/vehicle/sealed/noise/buzz name = "Buzz." desc = "Negative!" @@ -483,15 +481,4 @@ sound_path = 'sound/machines/buzz/buzz-sigh.ogg' sound_message = "buzzes." -/datum/action/vehicle/sealed/noise/buzz/Trigger(mob/clicker, trigger_flags) - if(..()) - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_BUZZ_USED) - -/datum/action/vehicle/sealed/headlights/vim - button_icon_state = "vim_headlights" - -/datum/action/vehicle/sealed/headlights/vim/Trigger(mob/clicker, trigger_flags) - . = ..() - if(!.) - return - SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_HEADLIGHTS_TOGGLED, vehicle_entered_target.headlights_toggle) +#undef VIM_SOUND_COOLDOWN diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index 4f9085a2cb8f..7bc162c77ef7 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -13,7 +13,7 @@ desc = "A keyring with a small steel key, and a rubber stun baton accessory." icon_state = "keysec" -/obj/item/key/security/suicide_act(mob/living/carbon/user) +/obj/item/key/security/suicide_act(mob/living/user) if(!user.emote("spin")) //In the off chance that someone attempts this suicide while under the effects of mime's bane they deserve the silliness. user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] ear and starts [user.p_their()] motor! It looks like [user.p_theyre()] trying to commit suicide... But [user.p_they()] sputters and stalls out! ")) playsound(src, 'sound/misc/sadtrombone.ogg', 50, TRUE, -1) @@ -43,12 +43,8 @@ embed_chance = 30 fall_chance = 70 -/obj/item/key/janitor/suicide_act(mob/living/carbon/user) +/obj/item/key/janitor/suicide_act(mob/living/user) switch(user.mind?.get_skill_level(/datum/skill/cleaning)) - if(SKILL_LEVEL_NONE to SKILL_LEVEL_NOVICE) //Their mind is too weak to ascend as a janny - user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and is trying to become one with the janicart, but has no idea where to start! It looks like [user.p_theyre()] trying to commit suicide!")) - user.gib(DROP_ALL_REMAINS) - return MANUAL_SUICIDE if(SKILL_LEVEL_APPRENTICE to SKILL_LEVEL_JOURNEYMAN) //At least they tried user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and has inefficiently become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!")) user.AddElement(/datum/element/cleaning) @@ -71,6 +67,11 @@ addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), 151) return MANUAL_SUICIDE + //Their mind is too weak to ascend as a janny + user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and is trying to become one with the janicart, but has no idea where to start! It looks like [user.p_theyre()] trying to commit suicide!")) + user.gib(DROP_ALL_REMAINS) + return MANUAL_SUICIDE + /obj/item/key/proc/manual_suicide(mob/living/user) if(user) user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 68109446e1dc..234a8453879c 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -11,32 +11,31 @@ "icon" = "wine-bottle", "products" = list( /obj/item/reagent_containers/cup/glass/bottle/curacao = 5, + /obj/item/reagent_containers/cup/glass/bottle/coconut_rum = 5, /obj/item/reagent_containers/cup/glass/bottle/applejack = 5, - /obj/item/reagent_containers/cup/glass/bottle/wine_voltaic = 5, /obj/item/reagent_containers/cup/glass/bottle/tequila = 5, + /obj/item/reagent_containers/cup/glass/bottle/aperitivo = 5, /obj/item/reagent_containers/cup/glass/bottle/rum = 5, /obj/item/reagent_containers/cup/glass/bottle/cognac = 5, + /obj/item/reagent_containers/cup/glass/bottle/maraschino = 5, /obj/item/reagent_containers/cup/glass/bottle/wine = 5, /obj/item/reagent_containers/cup/glass/bottle/absinthe = 5, /obj/item/reagent_containers/cup/glass/bottle/vermouth = 5, /obj/item/reagent_containers/cup/glass/bottle/gin = 5, - /obj/item/reagent_containers/cup/glass/bottle/grenadine = 4, /obj/item/reagent_containers/cup/glass/bottle/hcider = 5, /obj/item/reagent_containers/cup/glass/bottle/amaretto = 5, /obj/item/reagent_containers/cup/glass/bottle/ale = 6, + /obj/item/reagent_containers/cup/glass/bottle/yuyake = 5, /obj/item/reagent_containers/cup/glass/bottle/grappa = 5, /obj/item/reagent_containers/cup/glass/bottle/navy_rum = 5, /obj/item/reagent_containers/cup/glass/bottle/maltliquor = 6, /obj/item/reagent_containers/cup/glass/bottle/kahlua = 5, /obj/item/reagent_containers/cup/glass/bottle/sake = 5, + /obj/item/reagent_containers/cup/glass/bottle/shochu = 5, /obj/item/reagent_containers/cup/glass/bottle/beer = 6, /obj/item/reagent_containers/cup/glass/bottle/vodka = 5, /obj/item/reagent_containers/cup/glass/bottle/whiskey = 5, - /obj/item/reagent_containers/cup/glass/bottle/coconut_rum = 5, - /obj/item/reagent_containers/cup/glass/bottle/yuyake = 5, - /obj/item/reagent_containers/cup/glass/bottle/shochu = 5, - /obj/item/reagent_containers/cup/glass/bottle/aperitivo = 5, - /obj/item/reagent_containers/cup/glass/bottle/maraschino = 5, + /obj/item/reagent_containers/cup/glass/bottle/wine_voltaic = 5, /obj/item/reagent_containers/cup/soda_cans/beer = 10, /obj/item/reagent_containers/cup/soda_cans/beer/rice = 10, ), @@ -46,7 +45,10 @@ "name" = "Non-Alcoholic", "icon" = "bottle-water", "products" = list( + /obj/item/reagent_containers/cup/glass/bottle/hakka_mate = 5, /obj/item/reagent_containers/cup/glass/ice = 10, + /obj/item/reagent_containers/cup/glass/bottle/grenadine = 4, + /obj/item/reagent_containers/cup/soda_cans/melon_soda = 5, /obj/item/reagent_containers/cup/glass/bottle/juice/lemonjuice = 4, /obj/item/reagent_containers/cup/glass/bottle/juice/limejuice = 4, /obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice = 4, @@ -57,8 +59,6 @@ /obj/item/reagent_containers/cup/soda_cans/sol_dry = 8, /obj/item/reagent_containers/cup/soda_cans/cola = 8, /obj/item/reagent_containers/cup/soda_cans/tonic = 8, - /obj/item/reagent_containers/cup/glass/bottle/hakka_mate = 5, - /obj/item/reagent_containers/cup/soda_cans/melon_soda = 5, ), ), @@ -85,16 +85,16 @@ ) contraband = list( + /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, /obj/item/reagent_containers/cup/glass/mug/tea = 12, /obj/item/reagent_containers/cup/glass/bottle/fernet = 5, - /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, ) premium = list( + /obj/item/reagent_containers/cup/glass/bottle/bitters = 5, + /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, /obj/item/reagent_containers/cup/bottle/ethanol = 4, /obj/item/reagent_containers/cup/glass/bottle/champagne = 5, /obj/item/reagent_containers/cup/glass/bottle/trappist = 5, - /obj/item/reagent_containers/cup/glass/bottle/bitters = 5, - /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, ) product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" diff --git a/code/modules/vending/custom.dm b/code/modules/vending/custom.dm index 78a1f811fe95..979abb5ec888 100644 --- a/code/modules/vending/custom.dm +++ b/code/modules/vending/custom.dm @@ -285,6 +285,10 @@ /// Charges the user if its not the owner var/datum/bank_account/payee = id_card.registered_account if(!compartmentLoadAccessCheck(user)) + if(istype(id_card, /obj/item/card/id/departmental_budget)) + balloon_alert(user, "invalid payment card") + to_chat(user, span_warning("You cannot use a departmental card for this.")) + return if(!payee.has_money(dispensed_item.custom_price)) balloon_alert(user, "insufficient funds!") return diff --git a/code/modules/vending/hotdog.dm b/code/modules/vending/hotdog.dm index 9d89702a9239..f4d40ba4f269 100644 --- a/code/modules/vending/hotdog.dm +++ b/code/modules/vending/hotdog.dm @@ -56,4 +56,4 @@ if(dispense_returned) return if(istype(vended_item, /obj/item/food)) - ADD_TRAIT(vended_item, TRAIT_FOOD_CHEF_MADE, VENDING_MACHINE_TRAIT) + ADD_TRAIT(vended_item, TRAIT_HANDMADE, VENDING_MACHINE_TRAIT) diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index 500dac812948..978af216fafc 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -37,3 +37,4 @@ /obj/item/vending_refill/donksoft machine_name = "Donksoft Toy Vendor" icon_state = "refill_donksoft" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5) diff --git a/code/modules/vending/vendor/inventory.dm b/code/modules/vending/vendor/inventory.dm index c5d3baa4eddc..9aa454275b7b 100644 --- a/code/modules/vending/vendor/inventory.dm +++ b/code/modules/vending/vendor/inventory.dm @@ -208,11 +208,14 @@ if(greyscale_colors) vended_item.set_greyscale(colors=greyscale_colors) - if(IsReachableBy(user) && user.put_in_hands(vended_item)) + + var/sigreturn = SEND_SIGNAL(user, COMSIG_MOB_VENDING_PURCHASE, src, vended_item) + if(!(sigreturn & VENDING_NO_PICKUP) && IsReachableBy(user) && user.put_in_hands(vended_item)) to_chat(user, span_notice("You take [item_record.name] out of the slot.")) vended_item.do_pickup_animation(user, src) else to_chat(user, span_warning("[capitalize(format_text(item_record.name))] falls onto the floor!")) + SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[item_record.product_path]")) /** diff --git a/code/modules/vending/vendor/tilting.dm b/code/modules/vending/vendor/tilting.dm index 971633c683b9..8aac3f3209ea 100644 --- a/code/modules/vending/vendor/tilting.dm +++ b/code/modules/vending/vendor/tilting.dm @@ -310,3 +310,9 @@ var/matrix/to_turn = turn(transform, -tilted_rotation) animate(src, transform = to_turn, 0.2 SECONDS) tilted_rotation = 0 + +/obj/machinery/vending/onZImpact(turf/impacted_turf, levels, impact_flags) + impact_flags |= ZIMPACT_NO_MESSAGE + if(fall_and_crush(impacted_turf, squish_damage, paralyze_time = 6 SECONDS, crush_dir = UP, rotation = pick(90, 270)) & SUCCESSFULLY_FELL_OVER) + impact_flags |= ZIMPACT_NO_SPIN + return ..() diff --git a/code/modules/wiremod/components/abstract/module.dm b/code/modules/wiremod/components/abstract/module.dm index bf84a9f7976f..b81c4f070ee4 100644 --- a/code/modules/wiremod/components/abstract/module.dm +++ b/code/modules/wiremod/components/abstract/module.dm @@ -229,11 +229,11 @@ . = list() .["global_port_types"] = GLOB.wiremod_basic_types -/obj/item/circuit_component/module/attackby(obj/item/I, mob/living/user, list/modifiers, list/attack_modifiers) - if(istype(I, /obj/item/circuit_component)) - internal_circuit.attackby(I, user, modifiers) - return - return ..() +/obj/item/circuit_component/module/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/circuit_component)) + return NONE + internal_circuit.item_interaction(user, tool, modifiers) + return ITEM_INTERACT_SUCCESS #define WITHIN_RANGE(id, table) (id >= 1 && id <= length(table)) diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm index 5f6197e885f6..487744420dee 100644 --- a/code/modules/wiremod/core/integrated_circuit.dm +++ b/code/modules/wiremod/core/integrated_circuit.dm @@ -17,6 +17,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// The name that appears on the shell. var/display_name = "" @@ -168,7 +169,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) balloon_alert(user, "owner id set for [tool]") owner_id = WEAKREF(tool) return ITEM_INTERACT_SUCCESS - + return NONE /obj/item/integrated_circuit/screwdriver_act(mob/living/user, obj/item/tool) diff --git a/code/modules/wiremod/core/marker.dm b/code/modules/wiremod/core/marker.dm index e50c238659e3..dabf877ac4da 100644 --- a/code/modules/wiremod/core/marker.dm +++ b/code/modules/wiremod/core/marker.dm @@ -4,6 +4,7 @@ Acts as a normal multitool otherwise. Use in hand to clear marked entity so that you can mark another entity." icon_state = "multitool_circuit" apc_scanner = FALSE // would conflict with mark clearing + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /// The marked atom of this multitool var/atom/marked_atom diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm index 9c07a5e9e489..74d396aee545 100644 --- a/code/modules/wiremod/core/usb_cable.dm +++ b/code/modules/wiremod/core/usb_cable.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' base_icon_state = "coil" w_class = WEIGHT_CLASS_TINY - custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.75) + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25) /// The currently connected circuit var/obj/item/integrated_circuit/attached_circuit diff --git a/code/modules/wiremod/shell/assembly.dm b/code/modules/wiremod/shell/assembly.dm index 136f255b610c..3a658814bdcc 100644 --- a/code/modules/wiremod/shell/assembly.dm +++ b/code/modules/wiremod/shell/assembly.dm @@ -8,6 +8,7 @@ desc = "A small electronic device that can house an integrated circuit." icon_state = "wiremod" assembly_behavior = ASSEMBLY_ALL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /// A reference to any holder to use power from instead of the circuit's own cell var/atom/movable/power_use_proxy diff --git a/code/modules/wiremod/shell/compact_remote.dm b/code/modules/wiremod/shell/compact_remote.dm index 3bf216a4c326..e76900044730 100644 --- a/code/modules/wiremod/shell/compact_remote.dm +++ b/code/modules/wiremod/shell/compact_remote.dm @@ -14,6 +14,7 @@ light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/compact_remote/Initialize(mapload) . = ..() diff --git a/code/modules/wiremod/shell/controller.dm b/code/modules/wiremod/shell/controller.dm index f68dd0c50b20..214bf44acf8f 100644 --- a/code/modules/wiremod/shell/controller.dm +++ b/code/modules/wiremod/shell/controller.dm @@ -15,6 +15,7 @@ light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/controller/Initialize(mapload) . = ..() diff --git a/code/modules/wiremod/shell/gun.dm b/code/modules/wiremod/shell/gun.dm index 6e9043a146a7..b68fd8e2db89 100644 --- a/code/modules/wiremod/shell/gun.dm +++ b/code/modules/wiremod/shell/gun.dm @@ -16,6 +16,7 @@ automatic_charge_overlays = FALSE trigger_guard = TRIGGER_GUARD_ALLOW_ALL gun_flags = NOT_A_REAL_GUN + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT) /obj/item/ammo_casing/energy/wiremod_gun projectile_type = /obj/projectile/energy/wiremod_gun diff --git a/code/modules/wiremod/shell/implant.dm b/code/modules/wiremod/shell/implant.dm index 409c1921c6f3..d07c7924d7cb 100644 --- a/code/modules/wiremod/shell/implant.dm +++ b/code/modules/wiremod/shell/implant.dm @@ -1,6 +1,7 @@ /obj/item/implant/circuit name = "circuit implant" actions_types = null + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) implant_info = "Functions as a shell for integrated circuits. Activation conditions and effects are defined by the installed circuit." diff --git a/code/modules/wiremod/shell/keyboard.dm b/code/modules/wiremod/shell/keyboard.dm index 505c89e0dde5..546eaf573405 100644 --- a/code/modules/wiremod/shell/keyboard.dm +++ b/code/modules/wiremod/shell/keyboard.dm @@ -9,6 +9,7 @@ light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/keyboard_shell/Initialize(mapload) . = ..() diff --git a/code/modules/wiremod/shell/module.dm b/code/modules/wiremod/shell/module.dm index a19a02f7fd9e..6c2458d5ec95 100644 --- a/code/modules/wiremod/shell/module.dm +++ b/code/modules/wiremod/shell/module.dm @@ -6,6 +6,7 @@ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.5 incompatible_modules = list(/obj/item/mod/module/circuit) cooldown_time = 0.5 SECONDS + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) /// A reference to the shell component, used to access the shell and its attached circuit var/datum/component/shell/shell diff --git a/code/modules/wiremod/shell/moneybot.dm b/code/modules/wiremod/shell/moneybot.dm index 2a6aa015faef..73abc89e2dc3 100644 --- a/code/modules/wiremod/shell/moneybot.dm +++ b/code/modules/wiremod/shell/moneybot.dm @@ -16,7 +16,8 @@ var/locked = FALSE /obj/structure/money_bot/atom_deconstruct(disassembled = TRUE) - new /obj/item/holochip(drop_location(), stored_money) + if(stored_money) + new /obj/item/holochip(drop_location(), stored_money) /obj/structure/money_bot/proc/add_money(to_add) stored_money += to_add diff --git a/code/modules/wiremod/shell/scanner.dm b/code/modules/wiremod/shell/scanner.dm index 29a061a535a2..a5415784821a 100644 --- a/code/modules/wiremod/shell/scanner.dm +++ b/code/modules/wiremod/shell/scanner.dm @@ -14,6 +14,7 @@ light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/wiremod_scanner/Initialize(mapload) . = ..() diff --git a/code/modules/wiremod/shell/shell_items.dm b/code/modules/wiremod/shell/shell_items.dm index eac5715f22b6..aafa5dacc386 100644 --- a/code/modules/wiremod/shell/shell_items.dm +++ b/code/modules/wiremod/shell/shell_items.dm @@ -30,23 +30,27 @@ name = "bot assembly" icon_state = "setup_medium_box-open" shell_to_spawn = /obj/structure/bot + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/shell/money_bot name = "money bot assembly" icon_state = "setup_large-open" shell_to_spawn = /obj/structure/money_bot + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 0.5) /obj/item/shell/drone name = "drone assembly" icon_state = "setup_medium_med-open" shell_to_spawn = /mob/living/circuit_drone w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/shell/server name = "server assembly" icon_state = "setup_stationary-open" shell_to_spawn = /obj/structure/server screw_delay = 10 SECONDS + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/shell/airlock name = "circuit airlock assembly" @@ -55,20 +59,24 @@ shell_to_spawn = /obj/machinery/door/airlock/shell screw_delay = 10 SECONDS w_class = WEIGHT_CLASS_BULKY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/shell/dispenser name = "circuit dispenser assembly" icon_state = "setup_drone_arms-open" shell_to_spawn = /obj/structure/dispenser_bot + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5) /obj/item/shell/bci name = "brain-computer interface assembly" icon_state = "bci-open" shell_to_spawn = /obj/item/organ/cyberimp/bci w_class = WEIGHT_CLASS_TINY + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT) /obj/item/shell/scanner_gate name = "scanner gate assembly" icon = 'icons/obj/machines/scangate.dmi' icon_state = "scangate_black_open" shell_to_spawn = /obj/structure/scanner_gate_shell + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2) diff --git a/code/modules/wiremod/shell/undertile.dm b/code/modules/wiremod/shell/undertile.dm index 69ef66b61c0e..3344b88dd82e 100644 --- a/code/modules/wiremod/shell/undertile.dm +++ b/code/modules/wiremod/shell/undertile.dm @@ -6,6 +6,7 @@ lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' icon_state = "undertile" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/undertile_circuit/Initialize(mapload) . = ..() diff --git a/code/modules/wiremod/shell/wallmount.dm b/code/modules/wiremod/shell/wallmount.dm index d461f696da13..f672fce10cf3 100644 --- a/code/modules/wiremod/shell/wallmount.dm +++ b/code/modules/wiremod/shell/wallmount.dm @@ -31,3 +31,4 @@ icon_state = "wallmount_assembly" result_path = /obj/structure/wallmount_circuit pixel_shift = 32 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT) diff --git a/config/awaymissionconfig.txt b/config/awaymissionconfig.txt index 00e8a58e93f9..63fd0dfcf73e 100644 --- a/config/awaymissionconfig.txt +++ b/config/awaymissionconfig.txt @@ -7,9 +7,11 @@ #Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once. #DO tick the associated code file for the away mission you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors! +#_maps/RandomZLevels/Academy.dmm #_maps/RandomZLevels/TheBeach.dmm #_maps/RandomZLevels/moonoutpost19.dmm #_maps/RandomZLevels/undergroundoutpost45.dmm #_maps/RandomZLevels/research.dmm #_maps/RandomZLevels/SnowCabin.dmm +#_maps/RandomZLevels/heretic.dmm #_maps/RandomZLevels/museum.dmm diff --git a/config/config.txt b/config/config.txt index 30dba7a77891..35e0d9a62f1b 100644 --- a/config/config.txt +++ b/config/config.txt @@ -35,7 +35,7 @@ $include crimson/config.txt #HUB ## Lobby time: This is the amount of time between rounds that players have to setup their characters and be ready. -LOBBY_COUNTDOWN 120 +LOBBY_COUNTDOWN 300 ## Round End Time: This is the amount of time after the round ends that players have to murder death kill each other. ROUND_END_COUNTDOWN 90 @@ -604,9 +604,6 @@ PR_ANNOUNCEMENTS_PER_ROUND 5 ## Uncomment to block granting profiling privileges to users with R_DEBUG, for performance purposes #FORBID_ADMIN_PROFILING -## Uncomment to disable TTS messages on whispering, such as radio messages or the whisper verb. Useful for reducing your TTS load. -#TTS_NO_WHISPER - ## Link to a HTTP server that's been set up on a server. Docker-compose file can be found in tools/tts #TTS_HTTP_URL http://localhost:5002 @@ -623,6 +620,12 @@ PR_ANNOUNCEMENTS_PER_ROUND 5 #TTS_VOICE_BLACKLIST Sans Undertale #TTS_VOICE_BLACKLIST Papyrus Undertale +## Override the voice that the Tram system uses. If left undefined, the tram will pick a random voice. +#TTS_TRAM_ANNOUNCER_OVERRIDE Sans Undertale + +## Override the voice that computers use. If left undefined, the subsystem will pick a random consistent computer voice. +#TTS_COMPUTER_VOICE_OVERRIDE Papyrus Undertale + ## Comment to disable sending a toast notification on the host server when initializations complete. ## Even if this is enabled, a notification will only be sent if there are no clients connected. TOAST_NOTIFICATION_ON_INIT @@ -656,3 +659,8 @@ GENERATE_ASSETS_IN_INIT ## Path from the config folder to the policy json POLICY_JSON_PATH policy.json +# Which CIDs will not be considered for stickybans. This is the default CID that Wine spits out, +# and for the purpose of not default banning all Linux players, we'll just ignore it. +# People can spoof this CID and ignore that element of stickybans forever, but they can equally +# just keep generating new ones. Kind of doesn't matter. +IGNORED_CIDS 4055623708 diff --git a/config/darkpack_config.txt b/config/darkpack_config.txt index 5ba00c7d9d0b..d25d67e5495e 100644 --- a/config/darkpack_config.txt +++ b/config/darkpack_config.txt @@ -67,3 +67,13 @@ ROLEPLAY_ONLY_MERITS 1 ## Configs for the type of attack we use when we click at a ranged distance. Only one can be enabled at a time. #DIRECTIONAL_COMBAT SWING_COMBAT + +## Configs for passive bloodpool drain, if this is enabled, then the below timer can be adjusted to make vampires and ghouls lose 1 blood point when the timer is up +#PASSIVE_BP_DRAIN +PASSIVE_BP_DRAIN_TIMER 12000 + +## Configs for which Discipline keybinds are enabled (unbound by default) and how they behave +## Default keybinds where you select a Discipline then activate a power +DISCIPLINE_KEYBINDS +## Gives every single power a keybind, will majorly clutter the keybinds menu if uncommented in exchange for being very convenient for players +#INDIVIDUAL_POWER_KEYBINDS diff --git a/config/game_options.txt b/config/game_options.txt index 9916cb44c4fe..c58c96e122ec 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -164,11 +164,11 @@ ALLOW_RANDOM_EVENTS ## The lower bound, in deciseconds, for how soon another random event can be scheduled. ## Defaults to 1500 deciseconds or 2.5 minutes -EVENTS_FREQUENCY_LOWER 1500 +EVENTS_FREQUENCY_LOWER 15000 ## The upper bound, in deciseconds, for how soon another random event can be scheduled. ## Defaults to 4200 deciseconds or 7 minutes -EVENTS_FREQUENCY_UPPER 4200 +EVENTS_FREQUENCY_UPPER 42000 ## AI ### diff --git a/config/logging.txt b/config/logging.txt index cd9b38b62039..c116110bd464 100644 --- a/config/logging.txt +++ b/config/logging.txt @@ -50,6 +50,9 @@ LOG_MECHA ## log OOC channel LOG_OOC +## log minimap drawing +LOG_MINIMAP_DRAWING + ## log pda messages LOG_PDA diff --git a/config/map_vote.txt b/config/map_vote.txt index d026d6bdff4f..de6f36a7f8db 100644 --- a/config/map_vote.txt +++ b/config/map_vote.txt @@ -12,4 +12,4 @@ MAP_VOTE_MAXIMUM_TALLIES 200 MAP_VOTE_TALLY_CARRYOVER_PERCENTAGE 100 ## Pop requirement to exclude recently played maps from votes. -MAP_VOTE_MIN_POP_TO_REMEMBER_MAP 0 +MAP_VOTE_MINIMUM_POP_TO_REMEMBER_MAPS 0 diff --git a/config/maps.txt b/config/maps.txt index 80dbde84fe03..51c84eb7c648 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -50,9 +50,9 @@ endmap votable endmap -#map wawastation +#map kilostation votable - minplayers 40 + maxplayers 40 endmap #map westfieldmall @@ -74,3 +74,6 @@ endmap map runtimestation endmap + +map runtimestation_minimal +endmap diff --git a/config/robot_voices.json b/config/robot_voices.json new file mode 100644 index 000000000000..e8bf62bf73cc --- /dev/null +++ b/config/robot_voices.json @@ -0,0 +1,46 @@ +{ + "/datum/customer_data/american": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/italian": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/french": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/japanese": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/japanese/salaryman": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/moth": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/mexican": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/british": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/british/gent": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/british/bobby": [ + "Example Man", + "Example Woman" + ], + "/datum/customer_data/malfunction": [ + "Example Man", + "Example Woman" + ] +} diff --git a/dependencies.sh b/dependencies.sh index bf5a66f6e7c7..b6d9f2eb3121 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -10,9 +10,6 @@ export BYOND_MINOR=1659 #rust_g git tag export RUST_G_VERSION=6.2.0 -# node version -export NODE_VERSION_LTS=22.11.0 - # Bun version export BUN_VERSION=1.3.5 @@ -26,7 +23,7 @@ export PYTHON_VERSION=3.11.0 export DREAMLUAU_REPO="tgstation/dreamluau" #dreamluau git tag -export DREAMLUAU_VERSION=0.2.1 +export DREAMLUAU_VERSION=0.1.2 #hypnagogic repo export CUTTER_REPO=spacestation13/hypnagogic diff --git a/dreamluau.dll b/dreamluau.dll index 6975fad39969..cc2d56d2d1e4 100644 Binary files a/dreamluau.dll and b/dreamluau.dll differ diff --git a/html/admin/banpanel.css b/html/admin/banpanel.css index 8ad4f648e7a7..33deafb6619c 100644 --- a/html/admin/banpanel.css +++ b/html/admin/banpanel.css @@ -29,42 +29,10 @@ text-align: center; } -.command { - background-color: #948f02; -} - -.security { - background-color: #a30000; -} - -.engineering { - background-color: #fb5613; -} - -.medical { - background-color: #337296; -} - -.science { - background-color: #993399; -} - -.supply { - background-color: #a8732b; -} - -.silicon { - background-color: #ff00ff; -} - .abstract { background-color: #708090; } -.service { - background-color: #6eaa2c; -} - .ghostandotherroles { background-color: #5c00e6; } @@ -73,6 +41,6 @@ background-color: #6d3f40; } -.undefineddepartment { +.no_department { background-color: #111cf7; } diff --git a/html/changelogs/AutoChangeLog-pr-1157.yml b/html/changelogs/AutoChangeLog-pr-1157.yml deleted file mode 100644 index 8dc62a7a02f0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-1157.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ambrose997" -delete-after: True -changes: - - rscadd: "Added the katana as one of the blade options for the Burning Blade ritual." - - bugfix: "saves the inhand_icon_state before restoring to original_icon_state to avoid the wrong sprite being used." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-1161.yml b/html/changelogs/AutoChangeLog-pr-1161.yml deleted file mode 100644 index 8d1f48805c92..000000000000 --- a/html/changelogs/AutoChangeLog-pr-1161.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Icarus-The-Sun" -delete-after: True -changes: - - rscadd: "Adds Acute Sense Merit" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-1223.yml b/html/changelogs/AutoChangeLog-pr-1223.yml new file mode 100644 index 000000000000..d12728c2cc69 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1223.yml @@ -0,0 +1,4 @@ +author: "TheCarnalest" +delete-after: True +changes: + - qol: "You can now use keybinds to select and cast Disciplines" \ No newline at end of file diff --git a/html/changelogs/archive/2026-06.yml b/html/changelogs/archive/2026-06.yml index 79d68e7a99cf..ddb91a323e82 100644 --- a/html/changelogs/archive/2026-06.yml +++ b/html/changelogs/archive/2026-06.yml @@ -138,3 +138,26 @@ - qol: all ritual tomes now print a sorted list rather than a mishmash dwinters99: - code_imp: randomized trash and SOME randomized turfs now retain icon_state var-edits +2026-06-29: + Ambrose997: + - rscadd: Added the katana as one of the blade options for the Burning Blade ritual. + - bugfix: saves the inhand_icon_state before restoring to original_icon_state to + avoid the wrong sprite being used. + - rscadd: adds a clarification for the victim that they should respond in vague + thoughts or symbolism + - admin: admins now see every usage of auspex 4 mind reading + - balance: Increases telepathy cooldown to 9 minutes. + FalloutFalcon: + - balance: tweaks alot of loot pools to have less tg items and more darkpack ones + - bugfix: Aggravated damage now transfers to limbs when changing species (such as + via fera shapeshifting) + - bugfix: Showing flavor text while masked checks the holder not the reader + - balance: Melee force and attack difficulty is more inline with TTRPG numbers + - rscadd: Item outlines and tooltips now match colors of the huds we use. + - qol: Going through transfer points brings items your dragging or buckled to with + you + Icarus-The-Sun: + - rscadd: Adds Acute Sense Merit + - rscadd: Adds Disfigured, Glowing Eyes, and Smell of the Grave flaws + buffyuwu: + - qol: Country of Origin now grants the appropriate languages diff --git a/html/changelogs/archive/2026-07.yml b/html/changelogs/archive/2026-07.yml new file mode 100644 index 000000000000..ffbf8e5d447f --- /dev/null +++ b/html/changelogs/archive/2026-07.yml @@ -0,0 +1,141 @@ +2026-07-06: + FalloutFalcon: + - bugfix: Rainstorms work again + - balance: All current events can now only trigger once + - balance: if the faulty grid city trait is active it wont ALSO trigger the blackout + event. Fuse-boxes should only break once therefore. + - balance: Small chance for blackout to only MOSTLY fuck up a fusebox + - rscadd: Klaives; the silvered blades of the fera + - qol: Clan and Tribe keys wont spawn if the map does not have any corresponding + doors + Icarus-The-Sun: + - bugfix: grocery store sells real spaghetti + Magisterium2022: + - bugfix: Fixes Sense the Sin outputting text to target instead of user. +2026-07-13: + Ambrose997: + - code_imp: Mind reading success rolls after it's picked from the telepathy menu + rather than before. + - code_imp: Undisguised Implant Thought usage no longer requires a roll. + - code_imp: Separates the mind reading and implant thought cooldowns. + - balance: Mind Reading cooldown set to 3 Minutes. + - balance: Implant Thought cooldown set to 5 seconds. + - balance: Increases message length for the specific thought searches via mind reading + (From TFN). + - bugfix: Clicking "Cancel" on the telepathy menu no longer runs the highlighted + option anyway. + - bugfix: fixed previously unnoticed bug resulting from nested quotes clashing. + Beautiful TG coders: + - code_imp: TG Pull. Thank you TG. + Dusk-a: + - balance: Crinos and Hispo no longer get stunned by broken glass + FalloutFalcon: + - balance: Bashing a door of its hinges scales distance thrown based on strength + and roll difficulty + SirSwagmeyer: + - rscadd: Adds eyes, ears, and limb regrowth for bloodheal. + - balance: buffed the bolt projectile and leopoldite armor a bit. + - bugfix: fixed the crossbow reloading issue + Stutternov: + - rscadd: Adds new sawn off variants of the AK, pump-shotgun, lever action, and + musket. + chazzyjazzy: + - rscadd: adds passive blood drain as a mechanic for vampires and ghouls which can + be toggled on in darkpack_config.txt with the default timer of 20 minutes + - config: adds passive blood drain config option + - config: adds passive blood drain timer config option + - rscadd: adds back oldbase's Mytherceria + - rscdel: removes the Mytherceria wards since there were only three of them and + one of them gave people motion sickness + - rscadd: adds the 'graveyard' random event in place of what we had before which + fires once per round with about the same rarity as the sarcophagus event. in + this event, 20% of the graves across the map will spawn 2 zombies max each + - rscadd: artifacts and all tremere spellbooks can now be sold at pawn shops + - rscadd: masquerade sensitive items can now be sold at pawnshops, but you may breach + if you don't pass a manip + subterfuge diff 8 roll + - rscadd: adds three new zombie types, the fat zombie, the skeleton, and the suit + zombie + - rscadd: the graveyard zombies now have bloodpoints and can be bitten + - rscadd: necromancy users can now purchase an 'obolus' (a coin forged from a Wraith's + soul) from the necromancy tome, which can be sold + - rscadd: necromancy users can now purchase graveyard keys from their necromancy + tome, giovanni start with them as they are assumed to control the graveyard's + mortal front + - rscadd: adds being able to speak to observer ghosts to necromancy 1 Shroudsight + similar to spirit speech for Garou + - balance: Shroudsight now has triple the cooldown (3 minutes -> 9 minutes) to compensate + for the 'talking to ghosts' trait which has been shown to be too powerful, it + also now has a vitae cost of 1 + - rscadd: graveyard keys can now open and shut the graveyard gate + - bugfix: fixes shroudsight double-rolling, it now only rolls it's appropriate roll + datum (perception) + awareness + - rscdel: removes the 'graveyard keeper' role + - code_imp: deletes the 'graveyard' subsystem + - config: extends the lobby time to 5 minutes, 2 minutes was too short + - config: multiplies the time between events by 10x since they were firing once + every 2.5 minutes which is way too short in a 3 hour round +2026-07-20: + Beautiful TG coders: + - code_imp: TG Pull. Thank you TG. + FalloutFalcon: + - refactor: refactors beastmaster to handle taming a existing mob rather then spawning + a new one + - code_imp: deleting or killing a summon is handled much better + - qol: Attack information as it relates to rolls is now displayed in a weapons combat + information + - qol: Attacking with a weapon BELOW a single bonus dice no longer makes a roll + that includes your entire dice pool + - balance: Weapons with a dice pool that is not rounded turns the remainder into + a chance for a bonus dice. + - bugfix: Private rolling to admins properly displays to them + - bugfix: Vampire artifact spawner should only spawn vampire artifacts + Fghj240: + - qol: Ghosts can see alien embryo stage and all virus symptoms when health scanning + - code_imp: Health scanners now support multiple scan levels + - bugfix: Fixes medical kiosks not being able to identify advanced disease cures. + - rscdel: Removed ImmunoSilence and its trait + - balance: Aggressive healing has much lower stats + - map: Added sepsisillin pills to virology + - spellcheck: Clarified the description of aggressive healing + LT3: + - bugfix: Tram signs only update on signals from their linked tram + Lotte103: + - map: Added Thermomachines and Plasma Cannister to the HFR Room on Catwalk + - map: Replaced glass windows with reinforced plasmaglass windows in Atmos and Ordnance + on Catwalk. Improving safety and allowing Atmos to operate the gas turbine without + breaching the Atmos pump room. + Stutternov: + - bugfix: Fixes AK sawing oversight. + TealSeer: + - bugfix: fixed FaxBond not sending notifications when faxes are received + TheCarnalest: + - bugfix: Scry the Hearthstone now displays guestbook names. + - rscadd: Scry the Hearthstone now gives you direction and distance to players in + your area as well as alerting you when they leave and enter, but can no longer + be used outdoors. + lelandkemble: + - rscadd: Added craftable anti-mech tripwires. A mech that foolishly steps on one + will fall down and be immobilized temporarily. Don't let it fall on you! +2026-07-22: + Art-gif-dotcom: + - bugfix: fixed dementation 4 working incorrectly + FalloutFalcon: + - bugfix: Scars wont save for vampires even if they have the box ticked + - code_imp: cleans up some random signal stuff + - bugfix: Pierced Veil should work as intended for delerium effects + - code_imp: changelog is generated once a day instead of a week + - rscadd: Endpost and Message+ now use a generic helper for displaying a notification + as a balloon alert. + - bugfix: Text messages properly use the phone numbers for the texters rather then + phones + - rscadd: The strange goat plushie has some extra interactions + - rscadd: Adds our plushies to a few spots that was missed, primarly the arcade + lootpool + NullDagaf: + - rscadd: you can now break the handcuffs apart instead of just wriggling yourself + out of them + SabKatTemp2: + - rscadd: Adds promethean clay merit +2026-07-23: + Art-gif-dotcom: + - bugfix: fixed klaives not working properly diff --git a/icons/area/areas_away_missions.dmi b/icons/area/areas_away_missions.dmi index 5f35dc6a0483..d3825633d2ad 100644 Binary files a/icons/area/areas_away_missions.dmi and b/icons/area/areas_away_missions.dmi differ diff --git a/icons/effects/64x64.dmi b/icons/effects/64x64.dmi index ebf768329f95..2f52a6fc04b3 100644 Binary files a/icons/effects/64x64.dmi and b/icons/effects/64x64.dmi differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index c9723f51e2b2..12ccaf2bf20c 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 16bbde48e016..81f3e155f532 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/eldritch.dmi b/icons/effects/eldritch.dmi index 9676a833588e..9d76f065af0b 100644 Binary files a/icons/effects/eldritch.dmi and b/icons/effects/eldritch.dmi differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index 1a6984cdd90d..51dd6b823c87 100644 Binary files a/icons/effects/mapping_helpers.dmi and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi index 014a14ca4b14..22dfb091db95 100644 Binary files a/icons/effects/random_spawners.dmi and b/icons/effects/random_spawners.dmi differ diff --git a/icons/hud/actions.dmi b/icons/hud/actions.dmi index 6d51cc55534a..d95481b1ef31 100644 Binary files a/icons/hud/actions.dmi and b/icons/hud/actions.dmi differ diff --git a/icons/hud/implants.dmi b/icons/hud/implants.dmi index b85ab4573ff2..64ba66dc4068 100644 Binary files a/icons/hud/implants.dmi and b/icons/hud/implants.dmi differ diff --git a/icons/map_icons/objects.dmi b/icons/map_icons/objects.dmi index c6f765f81e8b..45969ab9ce87 100644 Binary files a/icons/map_icons/objects.dmi and b/icons/map_icons/objects.dmi differ diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index d1c714b49b08..bade57646dfc 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ diff --git a/icons/mob/actions/actions_vehicle.dmi b/icons/mob/actions/actions_vehicle.dmi index 3ad640405134..3a7fd6455500 100644 Binary files a/icons/mob/actions/actions_vehicle.dmi and b/icons/mob/actions/actions_vehicle.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index b3113ed457a8..ef94644898e5 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/digi_template_equpiment.dmi b/icons/mob/clothing/digi_template_equipment.dmi similarity index 100% rename from icons/mob/clothing/digi_template_equpiment.dmi rename to icons/mob/clothing/digi_template_equipment.dmi diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 5302374caab9..42bc4b19b7df 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi index 6dad4d75a7b0..73c09c79a8fa 100644 Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ diff --git a/icons/mob/human/bodyparts.dmi b/icons/mob/human/bodyparts.dmi index a0c6638af50e..14e425f0defb 100644 Binary files a/icons/mob/human/bodyparts.dmi and b/icons/mob/human/bodyparts.dmi differ diff --git a/icons/mob/human/bodyparts_greyscale.dmi b/icons/mob/human/bodyparts_greyscale.dmi index d700049f49a8..ad8dca9417da 100644 Binary files a/icons/mob/human/bodyparts_greyscale.dmi and b/icons/mob/human/bodyparts_greyscale.dmi differ diff --git a/icons/mob/human/human_face.dmi b/icons/mob/human/human_face.dmi index 6b5d57bcbbb9..c01f1c91ef95 100644 Binary files a/icons/mob/human/human_face.dmi and b/icons/mob/human/human_face.dmi differ diff --git a/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi b/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi index a8e122dfe529..fcbb4e2743d5 100644 Binary files a/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi and b/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi differ diff --git a/icons/mob/human/species/monkey/bodyparts.dmi b/icons/mob/human/species/monkey/bodyparts.dmi index 9dba64eb7d35..7ecf04bc9f9e 100644 Binary files a/icons/mob/human/species/monkey/bodyparts.dmi and b/icons/mob/human/species/monkey/bodyparts.dmi differ diff --git a/icons/mob/human/species/voidwalker.dmi b/icons/mob/human/species/voidwalker.dmi deleted file mode 100644 index f7e616864f1a..000000000000 Binary files a/icons/mob/human/species/voidwalker.dmi and /dev/null differ diff --git a/icons/mob/inhands/equipment/tools_lefthand.dmi b/icons/mob/inhands/equipment/tools_lefthand.dmi index adaedb6483f7..5c0cf513166b 100644 Binary files a/icons/mob/inhands/equipment/tools_lefthand.dmi and b/icons/mob/inhands/equipment/tools_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/tools_righthand.dmi b/icons/mob/inhands/equipment/tools_righthand.dmi index 454a225c82a7..3cd25f19f4ee 100644 Binary files a/icons/mob/inhands/equipment/tools_righthand.dmi and b/icons/mob/inhands/equipment/tools_righthand.dmi differ diff --git a/icons/mob/inhands/items/vacuum_wand_lefthand.dmi b/icons/mob/inhands/items/vacuum_wand_lefthand.dmi new file mode 100644 index 000000000000..8bd509597bc9 Binary files /dev/null and b/icons/mob/inhands/items/vacuum_wand_lefthand.dmi differ diff --git a/icons/mob/inhands/items/vacuum_wand_righthand.dmi b/icons/mob/inhands/items/vacuum_wand_righthand.dmi new file mode 100644 index 000000000000..5bfc27763cda Binary files /dev/null and b/icons/mob/inhands/items/vacuum_wand_righthand.dmi differ diff --git a/icons/mob/rideables/mecha.dmi b/icons/mob/rideables/mecha.dmi index d21037c49ab0..7e1480aad357 100644 Binary files a/icons/mob/rideables/mecha.dmi and b/icons/mob/rideables/mecha.dmi differ diff --git a/icons/mob/rideables/vehicles.dmi b/icons/mob/rideables/vehicles.dmi index c97cb85e275d..dfae5e2b76e8 100644 Binary files a/icons/mob/rideables/vehicles.dmi and b/icons/mob/rideables/vehicles.dmi differ diff --git a/icons/mob/simple/animal.dmi b/icons/mob/simple/animal.dmi index 52073541f896..879b3452c7ef 100644 Binary files a/icons/mob/simple/animal.dmi and b/icons/mob/simple/animal.dmi differ diff --git a/icons/mob/simple/lavaland/bileworm_old.dmi b/icons/mob/simple/lavaland/bileworm_old.dmi deleted file mode 100644 index 8337f6cc4f18..000000000000 Binary files a/icons/mob/simple/lavaland/bileworm_old.dmi and /dev/null differ diff --git a/icons/mob/simple/lavaland/lavaland_monsters.dmi b/icons/mob/simple/lavaland/lavaland_monsters.dmi index f338fab310ae..1b7be6f3f091 100644 Binary files a/icons/mob/simple/lavaland/lavaland_monsters.dmi and b/icons/mob/simple/lavaland/lavaland_monsters.dmi differ diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi index 6fc8b054ca51..6ca5f8655deb 100644 Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 60e1ced0cd2c..8c805e5390e8 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/devices/scanner.dmi b/icons/obj/devices/scanner.dmi index 0bd6b6cd1db8..5b7366ed15f8 100644 Binary files a/icons/obj/devices/scanner.dmi and b/icons/obj/devices/scanner.dmi differ diff --git a/icons/obj/fluff/map_previews.dmi b/icons/obj/fluff/map_previews.dmi new file mode 100644 index 000000000000..027f664fe168 Binary files /dev/null and b/icons/obj/fluff/map_previews.dmi differ diff --git a/icons/obj/fluff/map_previews_template.dmi b/icons/obj/fluff/map_previews_template.dmi new file mode 100644 index 000000000000..778966219458 Binary files /dev/null and b/icons/obj/fluff/map_previews_template.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index ea5433eadf4e..7114d1af8f93 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/food/lizard.dmi b/icons/obj/food/lizard.dmi index 670887d3bc1d..377a202a2780 100644 Binary files a/icons/obj/food/lizard.dmi and b/icons/obj/food/lizard.dmi differ diff --git a/icons/obj/food/martian.dmi b/icons/obj/food/martian.dmi index fb5528818a19..5c1599d459cd 100644 Binary files a/icons/obj/food/martian.dmi and b/icons/obj/food/martian.dmi differ diff --git a/icons/obj/food/meat.dmi b/icons/obj/food/meat.dmi index add2667d04e8..7f4835c8040e 100644 Binary files a/icons/obj/food/meat.dmi and b/icons/obj/food/meat.dmi differ diff --git a/icons/obj/food/moth.dmi b/icons/obj/food/moth.dmi index 170d7bc2bc05..2da5d7e459db 100644 Binary files a/icons/obj/food/moth.dmi and b/icons/obj/food/moth.dmi differ diff --git a/icons/obj/items_cyborg.dmi b/icons/obj/items_cyborg.dmi index 17a657709792..4f483a4fbd8f 100644 Binary files a/icons/obj/items_cyborg.dmi and b/icons/obj/items_cyborg.dmi differ diff --git a/icons/obj/machines/computer.dmi b/icons/obj/machines/computer.dmi index 5a6cd0c7e516..ac668359592a 100644 Binary files a/icons/obj/machines/computer.dmi and b/icons/obj/machines/computer.dmi differ diff --git a/icons/obj/machines/minimap_table.dmi b/icons/obj/machines/minimap_table.dmi new file mode 100644 index 000000000000..bb68f2da612c Binary files /dev/null and b/icons/obj/machines/minimap_table.dmi differ diff --git a/icons/obj/machines/minimap_table_hologram.dmi b/icons/obj/machines/minimap_table_hologram.dmi new file mode 100644 index 000000000000..3e0fe4d2e700 Binary files /dev/null and b/icons/obj/machines/minimap_table_hologram.dmi differ diff --git a/icons/obj/machines/wall_healer.dmi b/icons/obj/machines/wall_healer.dmi index f09ad6f7339d..2e53dee7fa57 100644 Binary files a/icons/obj/machines/wall_healer.dmi and b/icons/obj/machines/wall_healer.dmi differ diff --git a/icons/obj/machines/wallmounts.dmi b/icons/obj/machines/wallmounts.dmi index abb110520f99..d4126b7ec20f 100644 Binary files a/icons/obj/machines/wallmounts.dmi and b/icons/obj/machines/wallmounts.dmi differ diff --git a/icons/obj/medical/chemical_tanks.dmi b/icons/obj/medical/chemical_tanks.dmi index 96582c2ae299..4864cce4bbeb 100644 Binary files a/icons/obj/medical/chemical_tanks.dmi and b/icons/obj/medical/chemical_tanks.dmi differ diff --git a/icons/obj/medical/organs/organs.dmi b/icons/obj/medical/organs/organs.dmi index 24d9ef9cbe28..7b73c7edbaee 100644 Binary files a/icons/obj/medical/organs/organs.dmi and b/icons/obj/medical/organs/organs.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 70f5aaa62be5..f284a1539b58 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/poster.dmi b/icons/obj/poster.dmi index 2aa9eb0f4dde..01911b56c7e1 100644 Binary files a/icons/obj/poster.dmi and b/icons/obj/poster.dmi differ diff --git a/icons/obj/science/gizmos.dmi b/icons/obj/science/gizmos.dmi index 30792121a2c0..3d65b5afde8d 100644 Binary files a/icons/obj/science/gizmos.dmi and b/icons/obj/science/gizmos.dmi differ diff --git a/icons/obj/service/kitchen.dmi b/icons/obj/service/kitchen.dmi index ff9a3e2a58c3..7029ff6cd50b 100644 Binary files a/icons/obj/service/kitchen.dmi and b/icons/obj/service/kitchen.dmi differ diff --git a/icons/obj/storage/box.dmi b/icons/obj/storage/box.dmi index 4101697250c3..e59cb1924120 100644 Binary files a/icons/obj/storage/box.dmi and b/icons/obj/storage/box.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 0f1f57eb860a..4c8209021996 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/icons/obj/tripwire.dmi b/icons/obj/tripwire.dmi new file mode 100644 index 000000000000..4bb97542b868 Binary files /dev/null and b/icons/obj/tripwire.dmi differ diff --git a/icons/turf/mining.dmi b/icons/turf/mining.dmi index 79f41ca92ab2..cb64a62b8e55 100644 Binary files a/icons/turf/mining.dmi and b/icons/turf/mining.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index df9c9386647d..fc6c8dcef373 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/icons/ui/chat/emoji.dmi b/icons/ui/chat/emoji.dmi index cf94375083c5..2f9e7353e329 100644 Binary files a/icons/ui/chat/emoji.dmi and b/icons/ui/chat/emoji.dmi differ diff --git a/icons/ui/chat/language.dmi b/icons/ui/chat/language.dmi index 7cb84ee3af94..3a8a6148f44a 100644 Binary files a/icons/ui/chat/language.dmi and b/icons/ui/chat/language.dmi differ diff --git a/icons/ui_icons/minimap/draw_tools.dmi b/icons/ui_icons/minimap/draw_tools.dmi new file mode 100644 index 000000000000..ba72a74475e4 Binary files /dev/null and b/icons/ui_icons/minimap/draw_tools.dmi differ diff --git a/icons/ui_icons/minimap/map_blips.dmi b/icons/ui_icons/minimap/map_blips.dmi new file mode 100644 index 000000000000..ce7c1e579c9a Binary files /dev/null and b/icons/ui_icons/minimap/map_blips.dmi differ diff --git a/icons/ui_icons/minimap/map_blips_large.dmi b/icons/ui_icons/minimap/map_blips_large.dmi new file mode 100644 index 000000000000..420551877aef Binary files /dev/null and b/icons/ui_icons/minimap/map_blips_large.dmi differ diff --git a/icons/ui_icons/minimap/minimap.dmi b/icons/ui_icons/minimap/minimap.dmi new file mode 100644 index 000000000000..7eeb5680b90f Binary files /dev/null and b/icons/ui_icons/minimap/minimap.dmi differ diff --git a/icons/ui_icons/minimap/minimap_buttons.dmi b/icons/ui_icons/minimap/minimap_buttons.dmi new file mode 100644 index 000000000000..5f8655815619 Binary files /dev/null and b/icons/ui_icons/minimap/minimap_buttons.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/draw_blue.dmi b/icons/ui_icons/minimap/minimap_mouse/draw_blue.dmi new file mode 100644 index 000000000000..bae80afea3c2 Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/draw_blue.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/draw_erase.dmi b/icons/ui_icons/minimap/minimap_mouse/draw_erase.dmi new file mode 100644 index 000000000000..1290b9e55598 Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/draw_erase.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/draw_purple.dmi b/icons/ui_icons/minimap/minimap_mouse/draw_purple.dmi new file mode 100644 index 000000000000..690bd390167d Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/draw_purple.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/draw_red.dmi b/icons/ui_icons/minimap/minimap_mouse/draw_red.dmi new file mode 100644 index 000000000000..83d06fcd1ac0 Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/draw_red.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/draw_yellow.dmi b/icons/ui_icons/minimap/minimap_mouse/draw_yellow.dmi new file mode 100644 index 000000000000..5489f87ce420 Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/draw_yellow.dmi differ diff --git a/icons/ui_icons/minimap/minimap_mouse/label.dmi b/icons/ui_icons/minimap/minimap_mouse/label.dmi new file mode 100644 index 000000000000..ad619da8e83f Binary files /dev/null and b/icons/ui_icons/minimap/minimap_mouse/label.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 08d9f5395516..8c8c102d97d2 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -1,8 +1,5 @@ //Please use mob or src (not usr) in these procs. This way they can be called in the same fashion as procs. -/client/verb/wiki() - set name = "wiki" - set desc = "Brings you to the Wiki" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, wiki, "wiki") var/wikiurl = CONFIG_GET(string/wikiurl) if(!wikiurl) @@ -21,10 +18,7 @@ output += "?title=Special%3ASearch&profile=default&search=[query]" DIRECT_OUTPUT(src, link(output)) -/client/verb/forum() - set name = "forum" - set desc = "Visit the forum." - set hidden = TRUE +GAME_VERB_HIDDEN(/client, forum, "forum") var/forumurl = CONFIG_GET(string/forumurl) if(!forumurl) @@ -32,10 +26,7 @@ return DIRECT_OUTPUT(src, link(forumurl)) -/client/verb/rules() - set name = "rules" - set desc = "Show Server Rules." - set hidden = TRUE +GAME_VERB_HIDDEN(/client, rules, "rules") var/rulesurl = CONFIG_GET(string/rulesurl) if(!rulesurl) @@ -43,10 +34,7 @@ return DIRECT_OUTPUT(src, link(rulesurl)) -/client/verb/github() - set name = "github" - set desc = "Visit Github" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, github, "github") var/githuburl = CONFIG_GET(string/githuburl) if(!githuburl) @@ -54,10 +42,7 @@ return DIRECT_OUTPUT(src, link(githuburl)) -/client/verb/config() - set name = "config" - set desc = "View the server configuration files." - set hidden = TRUE +GAME_VERB_HIDDEN(/client, config, "config") var/configurl = CONFIG_GET(string/configurl) if(!configurl) @@ -65,9 +50,7 @@ return DIRECT_OUTPUT(src, link(configurl)) -/client/verb/reportissue() - set name = "report-issue" - set desc = "Report an issue" +GAME_VERB_DESC(/client, reportissue, "report-issue", "Report an issue", null) // DARKPACK EDIT CHANGE START // "our" url, all other ones should be upstreams @@ -135,9 +118,7 @@ DIRECT_OUTPUT(src, link(jointext(concatable, ""))) -/client/verb/changelog() - set name = "Changelog" - set category = "OOC" +GAME_VERB(/client, changelog, "Changelog", "OOC") if(!GLOB.changelog_tgui) GLOB.changelog_tgui = new /datum/changelog() @@ -147,18 +128,14 @@ prefs.lastchangelog = GLOB.changelog_hash prefs.save_preferences() -/client/verb/hotkeys_help() - set name = "Hotkeys Help" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, hotkeys_help, "Hotkeys Help") if(!GLOB.hotkeys_tgui) GLOB.hotkeys_tgui = new /datum/hotkeys_help() GLOB.hotkeys_tgui.ui_interact(mob) -/client/verb/emote_panel() - set name = "Emote Panel" - set hidden = TRUE +GAME_VERB_HIDDEN(/client, emote_panel, "Emote Panel") if(!isliving(mob)) to_chat(mob, span_notice("You can only use this while you're alive!")) diff --git a/modular_darkpack/master_files/code/controllers/configuration/entries/darkpack_config_entries.dm b/modular_darkpack/master_files/code/controllers/configuration/entries/darkpack_config_entries.dm index 4f39472d1b55..77a3517b69e5 100644 --- a/modular_darkpack/master_files/code/controllers/configuration/entries/darkpack_config_entries.dm +++ b/modular_darkpack/master_files/code/controllers/configuration/entries/darkpack_config_entries.dm @@ -4,3 +4,10 @@ /// Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system. /datum/config_entry/flag/mentor_legacy_system protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/passive_bp_drain + default = FALSE + +/datum/config_entry/number/passive_bp_drain_timer + default = 20 MINUTES + min_val = 1 MINUTES diff --git a/modular_darkpack/master_files/code/game/objects/items.dm b/modular_darkpack/master_files/code/game/objects/items.dm index 381615140712..f435bbd73031 100644 --- a/modular_darkpack/master_files/code/game/objects/items.dm +++ b/modular_darkpack/master_files/code/game/objects/items.dm @@ -1,4 +1,8 @@ /obj/item + ///How strong must we be to break this item on resist? (also cuffs and such) + ///Set to null to disallow breaking. + var/cuff_break_strength_needed = null + var/onflooricon var/onflooricon_state var/masquerade_violating diff --git a/modular_darkpack/master_files/code/game/objects/items/handcuffs.dm b/modular_darkpack/master_files/code/game/objects/items/handcuffs.dm new file mode 100644 index 000000000000..b62000ae4a33 --- /dev/null +++ b/modular_darkpack/master_files/code/game/objects/items/handcuffs.dm @@ -0,0 +1,26 @@ +/obj/item/restraints/handcuffs + cuff_break_strength_needed = 6 + +/obj/item/restraints/handcuffs/alien + cuff_break_strength_needed = 8 + +/obj/item/restraints/handcuffs/fake + cuff_break_strength_needed = 5 // our lock is fake, not the bind itself + +/obj/item/restraints/handcuffs/cable + cuff_break_strength_needed = 5 + +/obj/item/restraints/handcuffs/cable/sinew + cuff_break_strength_needed = 4 + +/obj/item/restraints/handcuffs/cable/zipties + cuff_break_strength_needed = 4 + +/obj/item/restraints/legcuffs + cuff_break_strength_needed = 6 + +/obj/item/restraints/legcuffs/beartrap + cuff_break_strength_needed = null // please no + +/obj/item/restraints/legcuffs/bola + cuff_break_strength_needed = null // PLEASE no diff --git a/modular_darkpack/master_files/code/modules/client/preferences/country_of_origin.dm b/modular_darkpack/master_files/code/modules/client/preferences/country_of_origin.dm index f70b69aabb34..9ecc78337365 100644 --- a/modular_darkpack/master_files/code/modules/client/preferences/country_of_origin.dm +++ b/modular_darkpack/master_files/code/modules/client/preferences/country_of_origin.dm @@ -56,3 +56,124 @@ return FALSE var/country = preferences.read_preference(/datum/preference/choiced/country_of_origin) return (country == "United States") + +/datum/preference/choiced/country_of_origin/apply_to_human(mob/living/carbon/human/target, value) + var/static/list/country_language_map + if(!country_language_map) + country_language_map = list( + // spanish-speaking countries + "Argentina" = list(/datum/language/spanish), + "Bolivia" = list(/datum/language/spanish), + "Chile" = list(/datum/language/spanish), + "Colombia" = list(/datum/language/spanish), + "Costa Rica" = list(/datum/language/spanish), + "Cuba" = list(/datum/language/spanish), + "Dominican Republic" = list(/datum/language/spanish), + "Ecuador" = list(/datum/language/spanish), + "El Salvador" = list(/datum/language/spanish), + "Equatorial Guinea" = list(/datum/language/spanish), + "Guatemala" = list(/datum/language/spanish), + "Honduras" = list(/datum/language/spanish), + "Mexico" = list(/datum/language/spanish), + "Nicaragua" = list(/datum/language/spanish), + "Panama" = list(/datum/language/spanish), + "Paraguay" = list(/datum/language/spanish), + "Peru" = list(/datum/language/spanish), + "Puerto Rico" = list(/datum/language/spanish), + "Spain" = list(/datum/language/spanish), + "Uruguay" = list(/datum/language/spanish), + "Venezuela" = list(/datum/language/spanish), + // arabic/middle eastern countries + "Algeria" = list(/datum/language/arabic), + "Bahrain" = list(/datum/language/arabic), + "Comoros" = list(/datum/language/arabic), + "Djibouti" = list(/datum/language/arabic), + "Egypt" = list(/datum/language/arabic), + "Iraq" = list(/datum/language/arabic), + "Jordan" = list(/datum/language/arabic), + "Lebanon" = list(/datum/language/arabic), + "Libya" = list(/datum/language/arabic), + "Mauritania" = list(/datum/language/arabic), + "Morocco" = list(/datum/language/arabic), + "Oman" = list(/datum/language/arabic), + "Kuwait" = list(/datum/language/arabic), + "Qatar" = list(/datum/language/arabic), + "Saudi Arabia" = list(/datum/language/arabic), + "Somalia" = list(/datum/language/arabic), + "State of Palestine" = list(/datum/language/arabic), + "Sudan" = list(/datum/language/arabic), + "Syria" = list(/datum/language/arabic), + "Tunisia" = list(/datum/language/arabic), + "United Arab Emirates" = list(/datum/language/arabic), + "Yemen" = list(/datum/language/arabic), + // farsi + arabic + "Afghanistan" = list(/datum/language/farsi, /datum/language/arabic), + "Iran" = list(/datum/language/farsi, /datum/language/arabic), + "Tajikistan" = list(/datum/language/farsi, /datum/language/arabic), + // french-speaking countries + "Belgium" = list(/datum/language/french), + "Benin" = list(/datum/language/french), + "Burkina Faso" = list(/datum/language/french), + "Cameroon" = list(/datum/language/french), + "Central African Republic" = list(/datum/language/french), + "Chad" = list(/datum/language/french), + "Côte d'Ivoire" = list(/datum/language/french), + "Democratic Republic of the Congo" = list(/datum/language/french), + "France" = list(/datum/language/french), + "French Polynesia" = list(/datum/language/french), + "Gabon" = list(/datum/language/french), + "Guinea" = list(/datum/language/french), + "Haiti" = list(/datum/language/french), + "Luxembourg" = list(/datum/language/french), + "Madagascar" = list(/datum/language/french), + "Mali" = list(/datum/language/french), + "Mauritius" = list(/datum/language/french), + "Monaco" = list(/datum/language/french), + "Niger" = list(/datum/language/french), + "Republic of the Congo" = list(/datum/language/french), + "Rwanda" = list(/datum/language/french), + "Senegal" = list(/datum/language/french), + "Seychelles" = list(/datum/language/french), + "Togo" = list(/datum/language/french), + // german-speaking countries + "Austria" = list(/datum/language/german), + "Germany" = list(/datum/language/german), + "Liechtenstein" = list(/datum/language/german), + "Switzerland" = list(/datum/language/german), + // russian-speaking countries + "Belarus" = list(/datum/language/russian), + "Kazakhstan" = list(/datum/language/russian), + "Kyrgyzstan" = list(/datum/language/russian), + "Russia" = list(/datum/language/russian), + "Turkmenistan" = list(/datum/language/russian), + "Uzbekistan" = list(/datum/language/russian), + // italian-speaking countries + "Italy" = list(/datum/language/italian), + "San Marino" = list(/datum/language/italian), + // korean + "North Korea" = list(/datum/language/korean), + "South Korea" = list(/datum/language/korean), + // greek + "Cyprus" = list(/datum/language/greek), + "Greece" = list(/datum/language/greek), + // mandarin + "China" = list(/datum/language/mandarin), + "Singapore" = list(/datum/language/mandarin), + "Taiwan" = list(/datum/language/mandarin), + "Japan" = list(/datum/language/japanese), + "Poland" = list(/datum/language/polish), + "Czech Republic" = list(/datum/language/czech), + "Ukraine" = list(/datum/language/ukrainian, /datum/language/russian), + "Armenia" = list(/datum/language/armenian), + "Israel" = list(/datum/language/hebrew), + "Hong Kong" = list(/datum/language/mandarin, /datum/language/cantonese), + "Philippines" = list(/datum/language/tagalog), + "Ireland" = list(/datum/language/irish), + "Vatican City" = list(/datum/language/latin), + ) + var/list/languages = country_language_map[value] + if(!languages) + return + for(var/language_type in languages) + if(!target.has_language(language_type)) + target.grant_language(language_type, SPOKEN_LANGUAGE|UNDERSTOOD_LANGUAGE, source = "country_of_origin") diff --git a/modular_darkpack/master_files/code/modules/client/preferences_savefile.dm b/modular_darkpack/master_files/code/modules/client/preferences_savefile.dm index 2232ef576220..a1eb3d9fe5f2 100644 --- a/modular_darkpack/master_files/code/modules/client/preferences_savefile.dm +++ b/modular_darkpack/master_files/code/modules/client/preferences_savefile.dm @@ -2,6 +2,15 @@ // List of known guestbook names we have saved var/list/guestbook_names = list() + var/list/preference_storyteller_stats = list() + // Associative list of disciplines and their current level. like: list("/datum/discipline/animalism" = 2) + var/list/discipline_levels = list() + // Alternative job titles stored in preferences. Assoc list, ie. alt_job_titles["Scientist"] = "Cytologist" + var/list/alt_job_titles = list() + /// Whether this player is whitelisted to bypass discipline sheet validation limits + var/discipline_trusted = FALSE + + /datum/preferences/load_preferences() discipline_trusted = savefile.get_entry("discipline_trusted", FALSE) // deserialization and its consequences . = ..() diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon.dm index 28a1b83162b5..18064b806ea6 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon.dm @@ -12,3 +12,47 @@ suckbar_loc = null GLOB.masquerade_breakers_list -= src return ..() + +/mob/living/carbon/resist_restraints() + var/obj/item/I = null + if(handcuffed) + I = handcuffed + changeNext_move(I.resist_cooldown) + last_special = world.time + I.resist_cooldown + else if(legcuffed) + I = legcuffed + changeNext_move(CLICK_CD_RANGE) + last_special = world.time + CLICK_CD_RANGE + else + return + + var/resist_type = "Remove" + if(!isnull(I.cuff_break_strength_needed)) + resist_type = tgui_alert(src, "Remove your restraints, or try to break them?", "[I]", list("Remove", "Break")) + + switch(resist_type) + if("Remove") + cuff_resist(I) + if("Break") + var/missing_strength = I.cuff_break_strength_needed - st_get_stat(STAT_STRENGTH) + if(missing_strength > 0) + // we gotta substitute the rest with willpower + var/datum/storyteller_roll/restraint_break/roll = new() + roll.successes_needed = missing_strength + + switch(roll.st_roll(src, I)) + if(ROLL_SUCCESS) + playsound(src, 'sound/effects/rock/rocktap3.ogg', 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + cuff_resist(I, null, INSTANT_CUFFBREAK) // OUT WITH THE CUFFS + if(ROLL_COOLDOWN) + pass() + else + playsound(src, 'sound/effects/jingle.ogg', 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + visible_message(span_warning("[src] aggressively wrenches against [I]!")) + qdel(roll) + else + playsound(src, 'sound/effects/rock/rocktap3.ogg', 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + cuff_resist(I, null, INSTANT_CUFFBREAK) + + else + return diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm index 94b43988b00d..93619c911c34 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/examine.dm @@ -57,6 +57,12 @@ if(HAS_TRAIT(src, TRAIT_ANIMAL_MUSK)) . += span_warning("[p_they(TRUE)] smell[p_s()] weirdly animal like...
") + if(HAS_TRAIT(src, TRAIT_GRAVE_SMELL)) + . += span_warning("[p_They()] smell[p_s()] like petrichor and freshly turned soil.
") + + if((!is_eyes_covered()) && HAS_TRAIT(src, TRAIT_GLOWING_EYES)) + . += span_warning("[p_Their()] eyes glow unnaturally!
") + if(!(obscured_slots & HIDEFACE)) switch(st_get_stat(STAT_APPEARANCE)) if(0) @@ -73,6 +79,8 @@ . += span_rose(span_bold("[pick(five)]
")) if(HAS_TRAIT(src, TRAIT_PERMAFANGS) && !HAS_TRAIT(src, TRAIT_DULLFANGS)) . += span_warning("[p_They()] [p_have()] visible fangs in [p_their()] mouth.
") + if(HAS_TRAIT(src, TRAIT_DISFIGURED_APPEARANCE)) + . += span_warning("[p_They()] [p_are()] visibly disfigured.
") if(!src.head) if(HAS_TRAIT(src, TRAIT_THIRD_EYE)) . += span_bolddanger("[p_They()] [p_have()] a third eye on [p_their()] forehead!
") diff --git a/modular_darkpack/master_files/icons/mob/actions/backgrounds.dmi b/modular_darkpack/master_files/icons/mob/actions/backgrounds.dmi index 96425f0b24dc..7cd2cc8b1806 100644 Binary files a/modular_darkpack/master_files/icons/mob/actions/backgrounds.dmi and b/modular_darkpack/master_files/icons/mob/actions/backgrounds.dmi differ diff --git a/modular_darkpack/modules/aggravated_damage/code/generic_healing.dm b/modular_darkpack/modules/aggravated_damage/code/generic_healing.dm index 74e65aac5e2b..173757204cc4 100644 --- a/modular_darkpack/modules/aggravated_damage/code/generic_healing.dm +++ b/modular_darkpack/modules/aggravated_damage/code/generic_healing.dm @@ -1,7 +1,7 @@ // Generic helpers to simulate the healing of the TTRPG /// Returns amount of dots healed -/mob/living/proc/heal_storyteller_health(dots_to_heal, heal_aggravated = FALSE, heal_scars = FALSE, heal_blood = FALSE) +/mob/living/proc/heal_storyteller_health(dots_to_heal, heal_aggravated = FALSE, heal_scars = FALSE, heal_blood = FALSE, heal_burn = FALSE) if(dots_to_heal <= 0) return 0 @@ -13,6 +13,12 @@ if(heal_scars && dots_to_heal > 0) healed_dots += heal_storyteller_scars(dots_to_heal) + if(heal_burn) + while(dots_to_heal > 0 && get_fire_loss() > 0) + heal_ordered_damage(1 TTRPG_DAMAGE, list(BURN)) + dots_to_heal-- + healed_dots++ + if(heal_aggravated) while(dots_to_heal > 0 && get_agg_loss()+get_fire_loss() > 0) heal_ordered_damage(1 TTRPG_DAMAGE, list(BURN, AGGRAVATED)) diff --git a/modular_darkpack/modules/areas/code/interiors/graveyard_interior.dm b/modular_darkpack/modules/areas/code/interiors/graveyard_interior.dm new file mode 100644 index 000000000000..e07e97a16e6c --- /dev/null +++ b/modular_darkpack/modules/areas/code/interiors/graveyard_interior.dm @@ -0,0 +1,6 @@ +/area/vtm/interior/graveyard + name = "Graveyard Interior" + icon_state = "interior" + outdoors = FALSE + zone_type = ZONE_NO_MASQUERADE + musictracks = list('modular_darkpack/modules/ambience/sounds/music/enterlair.ogg', 'modular_darkpack/modules/ambience/sounds/music/giovanni_moldy_old_world.ogg') diff --git a/modular_darkpack/modules/graveyard/code/graveyard_area.dm b/modular_darkpack/modules/areas/code/outsides/graveyard_exterior.dm similarity index 51% rename from modular_darkpack/modules/graveyard/code/graveyard_area.dm rename to modular_darkpack/modules/areas/code/outsides/graveyard_exterior.dm index 23b76cdc264b..ab6b6f160dc1 100644 --- a/modular_darkpack/modules/graveyard/code/graveyard_area.dm +++ b/modular_darkpack/modules/areas/code/outsides/graveyard_exterior.dm @@ -5,10 +5,3 @@ musictracks = list('modular_darkpack/modules/ambience/sounds/music/infected_warehouse.ogg', 'modular_darkpack/modules/ambience/sounds/music/giovanni_moldy_old_world.ogg') outdoors = TRUE zone_type = ZONE_NO_MASQUERADE - -/area/vtm/graveyard/interior - name = "Graveyard Interior" - icon_state = "interior" - outdoors = FALSE - zone_type = ZONE_NO_MASQUERADE - musictracks = list('modular_darkpack/modules/ambience/sounds/music/enterlair.ogg', 'modular_darkpack/modules/ambience/sounds/music/giovanni_moldy_old_world.ogg') diff --git a/modular_darkpack/modules/beastmaster/code/beastmaster_minion_management.dm b/modular_darkpack/modules/beastmaster/code/beastmaster_minion_management.dm index 174f17144070..0964cfb3b8e5 100644 --- a/modular_darkpack/modules/beastmaster/code/beastmaster_minion_management.dm +++ b/modular_darkpack/modules/beastmaster/code/beastmaster_minion_management.dm @@ -9,23 +9,17 @@ ) /mob/living/carbon/human/proc/add_beastmaster_minion(mob/living/minion_or_type, turf/spawn_location) - //first, make sure the beastmaster_minions list is accurate - for(var/mob/living/minion in beastmaster_minions) - if(QDELETED(minion) || minion.stat == DEAD) - beastmaster_minions -= minion - minion_command_components -= minion - - //limit of (leadership) + 1 - var/max_minions = st_get_stat(STAT_LEADERSHIP) + 1 - if(length(beastmaster_minions) >= max_minions) - to_chat(src, span_warning("You cannot control more than [max_minions] minion[max_minions > 1 ? "s" : ""]!")) + if(!can_tame_beastmaster_minion(minion_or_type, TRUE)) return FALSE + if(istype(minion_or_type)) + minion_or_type.wipe_old_beastmasters() + //does the mob exist? if not, spawn it. if its already spawned in, just reference them var/mob/living/minion - if(ispath(minion_or_type, /mob/living)) + if(ispath(minion_or_type)) minion = new minion_or_type(spawn_location || get_turf(src)) - else if(isliving(minion_or_type)) + else if(istype(minion_or_type)) minion = minion_or_type else return FALSE @@ -63,7 +57,7 @@ //if we didnt have beastmaster minions before, then register beastmaster signals. var/had_minions = length(beastmaster_minions) beastmaster_minions += minion - RegisterSignal(minion, COMSIG_LIVING_DEATH, PROC_REF(on_minion_death)) + RegisterSignals(minion, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MOB_WIPE_BEASTMASTER), PROC_REF(on_wipe_beastmaster)) if(!had_minions) register_beastmaster_signals() @@ -72,14 +66,10 @@ return TRUE //when the minion dies we need to remove them from beastmaster_minions, and if there are no more minions, remove the signals from the master. -/mob/living/carbon/human/proc/on_minion_death(mob/living/minion) +/mob/living/carbon/human/proc/on_wipe_beastmaster(mob/living/minion) SIGNAL_HANDLER - beastmaster_minions -= minion - minion_command_components -= minion - UnregisterSignal(minion, COMSIG_LIVING_DEATH) - if(!length(beastmaster_minions)) - unregister_beastmaster_signals() + remove_beastmaster_minion(minion) /mob/living/carbon/human/proc/remove_beastmaster_minion(mob/living/minion) if(!minion) @@ -102,9 +92,28 @@ //remove them from the owner's minion's list and unregister signals if the list is now empty beastmaster_minions -= minion minion_command_components -= minion - UnregisterSignal(minion, COMSIG_LIVING_DEATH) + UnregisterSignal(minion, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MOB_WIPE_BEASTMASTER)) if(!length(beastmaster_minions)) unregister_beastmaster_signals() +/mob/living/carbon/human/proc/can_tame_beastmaster_minion(mob/living/living_minion, feedback) + if(istype(living_minion)) + if(living_minion in beastmaster_minions) + if(feedback) + to_chat(src, span_warning("[living_minion] already heads your commands.")) + return FALSE + + //limit of (leadership) + 1 + var/max_minions = st_get_stat(STAT_LEADERSHIP) + 1 + if(length(beastmaster_minions) >= max_minions) + if(feedback) + to_chat(src, span_warning("You cannot control more than [max_minions] minion[max_minions > 1 ? "s" : ""]!")) + return FALSE + + return TRUE + +/mob/proc/wipe_old_beastmasters() + SEND_SIGNAL(src, COMSIG_MOB_WIPE_BEASTMASTER) + #undef BEASTMASTER_COMMANDS diff --git a/modular_darkpack/modules/blood_drinking/code/bite_helper_procs.dm b/modular_darkpack/modules/blood_drinking/code/bite_helper_procs.dm index 55bc48b1ad6e..c57c61fe3665 100644 --- a/modular_darkpack/modules/blood_drinking/code/bite_helper_procs.dm +++ b/modular_darkpack/modules/blood_drinking/code/bite_helper_procs.dm @@ -26,17 +26,16 @@ adjust_blood_pool(amount, updating_health, on_spawn) -//runs a bite animation for biting people and biting people and biting p +/// Runs a bite animation for biting people and biting people and biting p /mob/living/carbon/human/proc/add_bite_animation() - remove_overlay(HALO_LAYER) - var/mutable_appearance/bite_overlay = mutable_appearance('modular_darkpack/modules/deprecated/icons/icons.dmi', "bite", -HALO_LAYER) - overlays_standing[HALO_LAYER] = bite_overlay - apply_overlay(HALO_LAYER) - addtimer(CALLBACK(src, PROC_REF(clear_bite_animation_overlay)), 1.5 SECONDS) + var/mutable_appearance/bite_overlay = mutable_appearance('modular_darkpack/modules/blood_drinking/icons/bite_overlay.dmi', "bite", -HALO_LAYER) + add_overlay(bite_overlay) + addtimer(CALLBACK(src, PROC_REF(clear_bite_animation_overlay), bite_overlay), 1.5 SECONDS) -/mob/living/carbon/human/proc/clear_bite_animation_overlay() - if(src) - remove_overlay(HALO_LAYER) +/mob/living/carbon/human/proc/clear_bite_animation_overlay(mutable_appearance/bite_overlay) + if(QDELETED(src)) + return + cut_overlay(bite_overlay) //Here is where you handle any circumstantial modifiers to bloodpool gains diff --git a/modular_darkpack/modules/blood_drinking/icons/bite_overlay.dmi b/modular_darkpack/modules/blood_drinking/icons/bite_overlay.dmi new file mode 100644 index 000000000000..3ae598880c64 Binary files /dev/null and b/modular_darkpack/modules/blood_drinking/icons/bite_overlay.dmi differ diff --git a/modular_darkpack/modules/cars/code/car.dm b/modular_darkpack/modules/cars/code/car.dm index 15bea8e12e18..6d2e665ef7b7 100644 --- a/modular_darkpack/modules/cars/code/car.dm +++ b/modular_darkpack/modules/cars/code/car.dm @@ -124,6 +124,9 @@ access = "[rand(1,9999999)]" AddComponent(/datum/component/door_ownership) + if(mapload) + GLOB.city_door_lock_ids |= access + // DARKPACK TODO - see about reimplementing this sprite for cars /* headlight_image = new(src) @@ -457,7 +460,7 @@ if(length(exit_side)) dumpe.Move(get_step(dumpe, angle2dir(pick(exit_side)))) else if(length(exit_alt)) - dumpe.Move(get_step(dumpe, exit_alt)) + dumpe.Move(get_step(dumpe, pick(exit_alt))) to_chat(dumpe, span_notice("You exit [src].")) if(dumpe?.client) diff --git a/modular_darkpack/modules/city_traits/code/negative_traits.dm b/modular_darkpack/modules/city_traits/code/negative_traits.dm index ba2b4f7305b8..390a9173556f 100644 --- a/modular_darkpack/modules/city_traits/code/negative_traits.dm +++ b/modular_darkpack/modules/city_traits/code/negative_traits.dm @@ -9,9 +9,11 @@ /datum/station_trait/thunder_storm/on_round_start() . = ..() - SSweather.run_weather(/datum/weather/rain_storm/endless) + /* CRIMSON EDIT REMOVAL - remove when rain is fixed + SSweather.run_weather(/datum/weather/particle/rain_storm/endless) + */ // CRIMSON EDIT REMOVAL - remove when rain is fixed -/datum/weather/rain_storm/endless +/datum/weather/particle/rain_storm/endless name = "endless rain" probability = 0 target_trait = ZTRAIT_STATION @@ -36,6 +38,9 @@ trait_type = STATION_TRAIT_NEGATIVE can_revert = FALSE darkpack_allowed = TRUE + trait_to_give = STATION_TRAIT_BLACKOUT + newspaper_message = "We continue to receive delays from city officals on estimates when power will be returned city-wide." + newspaper_chance = 60 /datum/station_trait/faulty_power_grid/on_round_start() . = ..() diff --git a/modular_darkpack/modules/company_logos/code/company_logos.dm b/modular_darkpack/modules/company_logos/code/company_logos.dm index 35be926ef778..dfdb16aa10d0 100644 --- a/modular_darkpack/modules/company_logos/code/company_logos.dm +++ b/modular_darkpack/modules/company_logos/code/company_logos.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(all_brandnames, brand_list_by_name()) RegisterSignal(target, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examine_more)) /datum/element/corp_label/Detach(datum/target) - UnregisterSignal(target, list(COMSIG_ATOM_EXAMINE)) + UnregisterSignal(target, list(COMSIG_ATOM_EXAMINE, COMSIG_ATOM_EXAMINE_MORE)) return ..() /datum/element/corp_label/proc/on_examine(datum/source, mob/user, list/examine_list) diff --git a/modular_darkpack/modules/deprecated/icons/48x32.dmi b/modular_darkpack/modules/deprecated/icons/48x32.dmi index 6b677c776a10..e445b7b430bb 100644 Binary files a/modular_darkpack/modules/deprecated/icons/48x32.dmi and b/modular_darkpack/modules/deprecated/icons/48x32.dmi differ diff --git a/modular_darkpack/modules/deprecated/icons/icons.dmi b/modular_darkpack/modules/deprecated/icons/icons.dmi index c8b80ed95f54..d33bb80b7833 100644 Binary files a/modular_darkpack/modules/deprecated/icons/icons.dmi and b/modular_darkpack/modules/deprecated/icons/icons.dmi differ diff --git a/modular_darkpack/modules/deprecated/icons/lefthand.dmi b/modular_darkpack/modules/deprecated/icons/lefthand.dmi index d48611bbe07a..70c8b27714e7 100644 Binary files a/modular_darkpack/modules/deprecated/icons/lefthand.dmi and b/modular_darkpack/modules/deprecated/icons/lefthand.dmi differ diff --git a/modular_darkpack/modules/deprecated/icons/righthand.dmi b/modular_darkpack/modules/deprecated/icons/righthand.dmi index a83b8c7b3674..9bbfc5b2ed55 100644 Binary files a/modular_darkpack/modules/deprecated/icons/righthand.dmi and b/modular_darkpack/modules/deprecated/icons/righthand.dmi differ diff --git a/modular_darkpack/modules/do_emotes/code/do_verbs.dm b/modular_darkpack/modules/do_emotes/code/do_verbs.dm index 96e87bab5b33..41bcd386a99d 100644 --- a/modular_darkpack/modules/do_emotes/code/do_verbs.dm +++ b/modular_darkpack/modules/do_emotes/code/do_verbs.dm @@ -1,6 +1,4 @@ -/mob/verb/do_verb() - set name = "Do" - set hidden = TRUE +GAME_VERB(/mob, do_verb, "Do", null) if(GLOB.say_disabled) // This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) return diff --git a/modular_darkpack/modules/doors/code/helpers/door_access.dm b/modular_darkpack/modules/doors/code/helpers/door_access.dm index 07ad85602d4a..48384222371d 100644 --- a/modular_darkpack/modules/doors/code/helpers/door_access.dm +++ b/modular_darkpack/modules/doors/code/helpers/door_access.dm @@ -6,6 +6,7 @@ /obj/effect/mapping_helpers/door/access/payload(obj/structure/vampdoor/payload) payload.lock_id = lock_id + GLOB.city_door_lock_ids |= lock_id /obj/effect/mapping_helpers/door/access/all name = "all access" diff --git a/modular_darkpack/modules/doors/code/keys/keys.dm b/modular_darkpack/modules/doors/code/keys/keys.dm index 354e585e2746..42c98e809e52 100644 --- a/modular_darkpack/modules/doors/code/keys/keys.dm +++ b/modular_darkpack/modules/doors/code/keys/keys.dm @@ -1,3 +1,24 @@ +GLOBAL_LIST_INIT(key_access_by_types, init_key_access_by_types()) +GLOBAL_LIST_INIT(city_door_lock_ids, list()) + +/// Builds a list of the access locks because we cant pull lists from un initlizied keys and we dont want to qdel a key for every spawn. +/proc/init_key_access_by_types() + var/list/keys_by_type = list() + for(var/subtype in valid_subtypesof(/obj/item/vamp/keys)) + var/obj/item/vamp/keys/temp_key = new subtype() + keys_by_type[subtype] = temp_key.accesslocks + qdel(temp_key) + + return keys_by_type + +/proc/key_has_matching_door(key_type) + for(var/access in GLOB.key_access_by_types[key_type]) + if(access in GLOB.city_door_lock_ids) + return TRUE + + return FALSE + + /obj/item/vamp/keys name = "keys" desc = "Those can open some doors." diff --git a/modular_darkpack/modules/doors/code/vampdoor.dm b/modular_darkpack/modules/doors/code/vampdoor.dm index 8d55a1924410..9fdb6c5d079d 100644 --- a/modular_darkpack/modules/doors/code/vampdoor.dm +++ b/modular_darkpack/modules/doors/code/vampdoor.dm @@ -41,6 +41,9 @@ /obj/structure/vampdoor/Initialize(mapload) . = ..() + if(mapload) + GLOB.city_door_lock_ids |= lock_id + register_context() var/static/list/loc_connections = list( @@ -118,15 +121,17 @@ . = ..() fix_door() -/obj/structure/vampdoor/proc/break_door(mob/user) +/obj/structure/vampdoor/proc/break_door(mob/living/user) if(door_broken) return FALSE playsound(get_turf(src), 'modular_darkpack/master_files/sounds/effects/door/get_bent.ogg', 100, FALSE) var/obj/item/shield/door/broken_door = new(get_turf(src)) broken_door.icon_state = base_icon_state if(user) + var/strength_dots = user.st_get_stat(STAT_STRENGTH) + var/throw_distance = clamp(rand(strength_dots - 1, strength_dots + 1) - bash_successes_needed, 0, 5) var/atom/throw_target = get_edge_target_turf(src, user.dir) - broken_door.throw_at(throw_target, rand(2, 4), 4, user) + broken_door.throw_at(throw_target, throw_distance, 4, user) name = "door frame" desc = "An empty door frame. Someone removed the door by force. A special door repair kit should be able to fix this." door_broken = TRUE diff --git a/modular_darkpack/modules/dwelling/code/_dwelling_gvars_defines.dm b/modular_darkpack/modules/dwelling/code/_dwelling_gvars_defines.dm deleted file mode 100644 index 6fc354a242dc..000000000000 --- a/modular_darkpack/modules/dwelling/code/_dwelling_gvars_defines.dm +++ /dev/null @@ -1,59 +0,0 @@ -GLOBAL_VAR_INIT (dwelling_number_major, 4) -GLOBAL_VAR_INIT (dwelling_number_moderate, 10) -GLOBAL_LIST_EMPTY (dwelling_list) -GLOBAL_LIST_EMPTY (dwelling_area_list) - -/datum/proc/distribute_dwelling_loot() //Primary setup proc. Calling this setups the loot tables and dwellings. - for(var/area/vtm/interior/dwelling/dwelling_area in GLOB.dwelling_area_list) - dwelling_area.setup_loot() - -/datum/proc/adjust_dwelling_loot(type,value) - if(!type || !value) return - var/total_dwellings = GLOB.dwelling_area_list.len - switch(type) - if("major") - GLOB.dwelling_number_major = value - if("moderate") - GLOB.dwelling_number_moderate = value - if((GLOB.dwelling_number_major + GLOB.dwelling_number_moderate) > total_dwellings) - switch(type) - if("major") - GLOB.dwelling_number_moderate = total_dwellings - GLOB.dwelling_number_major - if("moderate") - GLOB.dwelling_number_major = total_dwellings - GLOB.dwelling_number_moderate - -/client/proc/cmd_admin_set_dwelling_ratios() - set name = "Adjust Dwelling Loot Ratios" - set category = "Admin" - if (!check_rights(R_ADMIN)) - return - - if(SSticker.current_state > GAME_STATE_PREGAME) - to_chat(usr, span_warning("The game has already started and loot distributions have been already rolled. This command can only be used before the round starts.")) - return - - if(GLOB.dwelling_area_list.len == 0) - to_chat(usr, span_warning("Dwelling areas not initialized or no dwelling areas found. This will likely resolve itself before the round starts, please try again in a few seconds.")) - return - - var/total_dwellings = GLOB.dwelling_area_list.len - var/current_major = GLOB.dwelling_number_major - var/current_moderate = GLOB.dwelling_number_moderate - var/msg - - switch(tgui_input_list(usr, "Total dwellings: [total_dwellings], Major: [current_major], Moderate: [current_moderate], Select a value to edit:","Edit dwellings",list("Major","Moderate"),timeout = 0)) - if("Major") - var/new_number = tgui_input_number(usr, "Enter major dwellings number:","Dwellings Number",GLOB.dwelling_number_major, total_dwellings * 10, 0, timeout = 0) - if(!new_number) return - if(new_number > total_dwellings) new_number = total_dwellings - adjust_dwelling_loot("major",new_number) - msg = "Dwelling Loot Distribution type major adjusted to [new_number] by [key_name_admin(usr)] " - if("Moderate") - var/new_number = tgui_input_number(usr, "Enter moderate dwellings number:","Dwellings Number",GLOB.dwelling_number_moderate, total_dwellings * 10, 0, timeout = 0) - if(!new_number) return - if(new_number > total_dwellings) new_number = total_dwellings - adjust_dwelling_loot("moderate",new_number) - msg = "Dwelling Loot Distribution type moderate adjusted to [new_number] by [key_name_admin(usr)] " - if(msg) - log_admin(msg) - message_admins(msg) diff --git a/modular_darkpack/modules/dwelling/code/area_dwelling.dm b/modular_darkpack/modules/dwelling/code/area_dwelling.dm deleted file mode 100644 index 151d4355e976..000000000000 --- a/modular_darkpack/modules/dwelling/code/area_dwelling.dm +++ /dev/null @@ -1,118 +0,0 @@ -/area/vtm/interior/dwelling - name = "NPC Dwelling Master Definition" - icon_state = "interior" - ambience_index = AMBIENCE_OFFICE - outdoors = FALSE - wall_rating = 1 - var/area_tag = "default" - var/area_heat = 0 - var/area_heat_max - var/alarm_trigerred = 0 - var/alarm_disabled = 0 - var/list/cased_by = list() - var/loot_spawned = 0 - var/obj/structure/vtm/dwelling_alarm/alarm_panel - var/list/dwelling_doors = list() - var/list/dwelling_windows = list() - var/list/loot_containers = list() - var/forced_loot - var/list/loot_list = list("type" = "none", - "minor" = 0, - "moderate" = 0, - "major" = 0, - ) - -/area/vtm/interior/dwelling/proc/add_heat(ammount = 0) //Adds heat to given area, then checks if alarm shoudl be trigerred - if(alarm_disabled == 1) return - if(alarm_trigerred == 1) - INVOKE_ASYNC(alarm_panel, TYPE_PROC_REF(/obj/structure/vtm/dwelling_alarm/, contact_cops)) - return - area_heat += ammount - if(area_heat >= area_heat_max && alarm_panel.alarm_active == 0) - alarm_panel.alarm_arm() - return - -/area/vtm/interior/dwelling/proc/setup_loot_table(type) //Called during setup, this proc contains the look drop values - switch(type) - if("major") - loot_list["type"] = "major" - loot_list["minor"] = rand(1,2) - loot_list["moderate"] = rand(4,6) - loot_list["major"] = rand(3,6) - area_heat_max = 20 - if("moderate") - loot_list["type"] = "moderate" - loot_list["minor"] = rand(4,6) - loot_list["moderate"] = rand(3,6) - loot_list["major"] = rand(1,2) - area_heat_max = 50 - if("minor") - loot_list["type"] = "minor" - loot_list["minor"] = rand(4,6) - loot_list["moderate"] = rand(1,2) - loot_list["major"] = rand(0,1) - area_heat_max = 50 - -/area/vtm/interior/dwelling/proc/setup_loot_containers() // Called during setup - var/loot_sum = loot_list["minor"] + loot_list["moderate"] + loot_list["major"] - while(loot_sum > 0) - var/obj/structure/vtm/dwelling_container/picked_container = pick(loot_containers) - if(!picked_container) - return "Error: No containers to pick" - picked_container.search_tries += 2 - picked_container.search_hits_left += 1 - loot_sum -= 1 - for(var/obj/structure/vtm/dwelling_container/loot_container in loot_containers) - if(loot_container.search_tries <= 4) loot_container.search_tries += 2 - return - -/area/vtm/interior/dwelling/proc/setup_loot() //Primary setup proc - if(forced_loot) - setup_loot_table(forced_loot) - if(loot_list["type"] == "none") - if(GLOB.dwelling_number_major > 0) - GLOB.dwelling_number_major -= 1 - setup_loot_table("major") - if(loot_list["type"] == "none") - if(GLOB.dwelling_number_moderate > 0) - GLOB.dwelling_number_moderate -= 1 - setup_loot_table("moderate") - if(loot_list["type"] == "none") - setup_loot_table("minor") - for (var/obj/structure/vampdoor/dwelling/dwelling_door in dwelling_doors) - dwelling_door.set_security(loot_list["type"]) - setup_loot_containers() - loot_spawned = 1 - GLOB.dwelling_list.Add(src) - return - -/area/vtm/interior/dwelling/proc/return_loot_value() //Used during seeding - var/list/pick_list = list() - if(loot_list["minor"] > 0) - pick_list.Add("minor") - if(loot_list["moderate"] > 0) - pick_list.Add("moderate") - if(loot_list["major"] > 0) - pick_list.Add("major") - - switch(pick_list.len) - if(0) - return 0 - else - var/list_choice = pick(pick_list) - loot_list[list_choice] -= 1 - return list_choice - -/area/vtm/interior/dwelling/Initialize(mapload) - . = ..() - GLOB.dwelling_area_list.Add(src) - -/area/vtm/interior/dwelling/Destroy() - . = ..() - GLOB.dwelling_area_list.Remove(src) - if(GLOB.dwelling_list.Find(src) != 0) GLOB.dwelling_list.Remove(src) - alarm_panel = null - cased_by = null - dwelling_doors = null - loot_containers = null - dwelling_windows = null diff --git a/modular_darkpack/modules/dwelling/code/areas/area_dwelling_instances.dm b/modular_darkpack/modules/dwelling/code/areas/area_dwelling_instances.dm deleted file mode 100644 index 47d2ca59eb9a..000000000000 --- a/modular_darkpack/modules/dwelling/code/areas/area_dwelling_instances.dm +++ /dev/null @@ -1,138 +0,0 @@ -/area/vtm/interior/dwelling/ghetto01 - name = "Civilian Residence No. 1, South Ghetto." - area_tag = "gh-s-1" - -/area/vtm/interior/dwelling/ghetto02 - name = "Civilian Residence No. 2, South Ghetto." - area_tag = "gh-s-2" - -/area/vtm/interior/dwelling/ghetto03 - name = "Civilian Residence No. 3, South Ghetto." - area_tag = "gh-s-3" - -/area/vtm/interior/dwelling/ghetto04 - name = "Civilian Residence No. 4, South Ghetto." - area_tag = "gh-s-4" - -/area/vtm/interior/dwelling/ghetto05 - name = "Civilian Residence No. 5, South Ghetto." - area_tag = "gh-s-5" - -/area/vtm/interior/dwelling/ghetto06 - name = "Civilian Residence No. 6, South Ghetto." - area_tag = "gh-s-6" - -/area/vtm/interior/dwelling/ghetto07 - name = "Civilian Residence No. 7, South Ghetto." - area_tag = "gh-s-7" - -/area/vtm/interior/dwelling/ghetto08 - name = "Civilian Residence No. 1, Central Ghetto." - area_tag = "gh-c-1" - -/area/vtm/interior/dwelling/ghetto09 - name = "Civilian Residence No. 2, Central Ghetto." - area_tag = "gh-c-2" - -/area/vtm/interior/dwelling/ghetto10 - name = "Civilian Residence No. 3, Central Ghetto." - area_tag = "gh-c-3" - -/area/vtm/interior/dwelling/ghetto11 - name = "Civilian Residence No. 4, Central Ghetto." - area_tag = "gh-c-4" - -/area/vtm/interior/dwelling/ghetto12 - name = "Civilian Residence No. 5, Central Ghetto." - area_tag = "gh-c-5" - -/area/vtm/interior/dwelling/ghetto13 - name = "Civilian Residence No. 6, Central Ghetto." - area_tag = "gh-c-6" - -/area/vtm/interior/dwelling/ghetto14 - name = "Civilian Residence No. 7, Central Ghetto." - area_tag = "gh-c-7" - -/area/vtm/interior/dwelling/ghetto15 - name = "Civilian Residence No. 8, Central Ghetto." - area_tag = "gh-c-8" - -/area/vtm/interior/dwelling/ghetto16 - name = "Civilian Residence No. 1, North Ghetto." - area_tag = "gh-n-1" - -/area/vtm/interior/dwelling/ghetto17 - name = "Civilian Residence No. 2, North Ghetto." - area_tag = "gh-n-2" - -/area/vtm/interior/dwelling/ghetto18 - name = "Civilian Residence No. 3, North Ghetto." - area_tag = "gh-n-3" - -/area/vtm/interior/dwelling/ghetto19 - name = "Civilian Residence No. 4, North Ghetto." - area_tag = "gh-n-4" - -/area/vtm/interior/dwelling/ghetto20 - name = "Civilian Residence No. 5, North Ghetto." - area_tag = "gh-n-5" - -//Chinatown - -/area/vtm/interior/dwelling/chinatown01 - - name = "Civilian Residence No. 1, East Chinatown." - area_tag = "ch-e-1" - -/area/vtm/interior/dwelling/chinatown02 - - name = "Civilian Residence No. 2, East Chinatown." - area_tag = "ch-e-2" - -/area/vtm/interior/dwelling/chinatown03 - - name = "Civilian Residence No. 3, East Chinatown." - area_tag = "ch-e-3" - -/area/vtm/interior/dwelling/chinatown04 - - name = "Civilian Residence No. 4, East Chinatown." - area_tag = "ch-e-4" - -/area/vtm/interior/dwelling/chinatown05 - - name = "Civilian Residence No. 5, East Chinatown." - area_tag = "ch-e-5" - -/area/vtm/interior/dwelling/chinatown06 - - name = "Civilian Residence No. 1, West Chinatown." - area_tag = "ch-w-1" - -/area/vtm/interior/dwelling/chinatown07 - - name = "Civilian Residence No. 2, West Chinatown." - area_tag = "ch-w-2" - -/area/vtm/interior/dwelling/chinatown08 - - name = "Civilian Residence No. 3, West Chinatown." - area_tag = "ch-w-3" - -//Pacigic Heights - -/area/vtm/interior/dwelling/pacific01 - - name = "Civilian Residence No. 1, East Pacific Heights." - area_tag = "ph-e-1" - -/area/vtm/interior/dwelling/pacific02 - - name = "Civilian Residence No. 2, East Pacific Heights." - area_tag = "ph-e-2" - -/area/vtm/interior/dwelling/pacific03 - - name = "Civilian Residence No. 1, West Pacific Heights." - area_tag = "ph-w-1" diff --git a/modular_darkpack/modules/dwelling/code/obj_dwelling.dm b/modular_darkpack/modules/dwelling/code/obj_dwelling.dm deleted file mode 100644 index 3b1c31845e5f..000000000000 --- a/modular_darkpack/modules/dwelling/code/obj_dwelling.dm +++ /dev/null @@ -1,383 +0,0 @@ -//All objects def for dwelling stuff - -//Loot items - -/obj/item/vtm/dwelling_loot - name = "Dwelling Loot Master Item" - desc = "If you can see this with the base description, someone did a funny. Please report this as a bug." - icon = 'icons/obj/clothing/accessories.dmi' - icon_state = "bronze" - layer = OBJ_LAYER - w_class = WEIGHT_CLASS_NORMAL - var/loot_value = 0 // From 1 to 3 assings value and changes description. This should be replaced by a full proc at some point, but will do for a first implementation. - -/obj/item/vtm/dwelling_loot/Initialize(mapload) - . = ..() - switch(loot_value) - if(1) - AddComponent(/datum/component/selling, 50, "loot_small", TRUE, -1, 5) - if(2) - AddComponent(/datum/component/selling, 150, "loot_medium", TRUE, -1, 5) - if(3) - AddComponent(/datum/component/selling, 350, "loot_large", TRUE, -1, 5) - -/obj/item/vtm/dwelling_loot/minor - name = "minor valuable" - desc = "A small trinket of low value. Can be fenced for some money." - icon_state = "bronze" - loot_value = 1 - grid_width = 1 GRID_BOXES - grid_height = 1 GRID_BOXES - -/obj/item/vtm/dwelling_loot/moderate - name = "moderate valuable" - desc = "A small trinket of decent value. Can be fenced for money." - icon_state = "silver" - loot_value = 2 - grid_width = 2 GRID_BOXES - grid_height = 1 GRID_BOXES - -/obj/item/vtm/dwelling_loot/major - name = "major valuable" - desc = "A small trinket of excellent value. Can be fenced for good money." - icon_state = "gold" - loot_value = 3 - grid_width = 2 GRID_BOXES - grid_height = 2 GRID_BOXES - -// Loot Containers - -/obj/structure/vtm/dwelling_container - name = "Personal storage" - desc = "A container full of personal items. Can be serched to reveal the items within." - icon = 'icons/obj/crates.dmi' - icon_state = "crate" - layer = BELOW_OBJ_LAYER - color = "#A17037" - density = TRUE - anchored = TRUE - var/area/vtm/interior/dwelling/area_reference - var/search_tries = 0 - var/search_hits_left = 0 // These should be automated by the system, btu tries typically are double the hits. - var/currently_searched = 0 // Terminator for when in use - -/obj/structure/vtm/dwelling_container/Initialize(mapload) - var/area/vtm/interior/dwelling/current_area = get_area(src) - if(current_area) - current_area.loot_containers.Add(src) - area_reference = current_area - . = ..() - -/obj/structure/vtm/dwelling_container/proc/roll_for_loot() // This assumes that there are still tries left and outputs loot value to be turned into loot. Also does some self-repairing should it detect an impossible value. - if(search_hits_left > search_tries) // Self-maitnenance. Ammount of tries can't be lower than ammount of assigned sucesses, so they are equalized in case this state is detected. This should not happen unless vars where changed by hand. - search_tries = search_hits_left - if(search_hits_left == 0) - search_tries = 0 - return 0 - if(search_hits_left == search_tries) - search_tries -= 1 - search_hits_left -= 1 - return(area_reference.return_loot_value()) - if(search_hits_left < search_tries) - if(rand(1,2) == 1) - search_tries -= 1 - return "fail" - else - search_tries -= 1 - search_hits_left -= 1 - return(area_reference.return_loot_value()) - -/obj/structure/vtm/dwelling_container/proc/dispense_loot(loot_type) // This proc creates the actual loot item. Pulling it out like this allows to individualize loot tables per specific item. - var/container_turf = get_turf(src) - switch(loot_type) - if(null) - return - if("minor") - new /obj/item/vtm/dwelling_loot/minor(container_turf) - if("moderate") - new /obj/item/vtm/dwelling_loot/moderate(container_turf) - if("major") - new /obj/item/vtm/dwelling_loot/major(container_turf) - - -/obj/structure/vtm/dwelling_container/attack_hand(mob/living/user) - add_fingerprint(user) // For frorencics, adds user fingerprints - if(!area_reference) // Terminators - to_chat(user, span_warning("Error: No area reference detected. This is a bug.")) - return - if(search_tries == 0) - to_chat(user, span_warning("This container does not seem to have anything of note inside.")) - return - if(currently_searched == 1) - to_chat(user, span_warning("Someone is currently using this object.")) - return - currently_searched = 1 // Starts searching - while(search_tries > 0) - area_reference.add_heat(5) - var/search_time = search_tries * 30 - if(do_mob(user, src, search_time)) - var/loot_roll = roll_for_loot() - switch(loot_roll) - if(0) - search_hits_left = 0 - to_chat(user, span_warning("You search through the container, but don't find anything of value. You doubt you will be able to find much else here.")) - if("fail") - to_chat(user, span_warning("You search through the container, but don't find anything of value.")) - if("minor","moderate","major") - to_chat(user, span_notice("You find an item of [loot_roll] value!")) - dispense_loot(loot_roll) - else break - if(search_tries == 0) - icon_state = "crateopen" - update_icon() - currently_searched = 0 - -/obj/structure/vtm/dwelling_container/Destroy() - . = ..() - area_reference.loot_containers.Remove(src) - area_reference = null - -// Doors - -/obj/structure/vampdoor/dwelling - - base_icon_state = "wood" - icon_state = "wood-1" - var/area/vtm/interior/dwelling/area_reference - locked = 1 - -/obj/structure/vampdoor/dwelling/proc/set_security(sec_type) - switch(sec_type) - if("minor") - lockpick_difficulty = 5 - if("moderate") - lockpick_difficulty = 6 - if("major") - lockpick_difficulty = 7 - lock_id = area_reference.area_tag - -/obj/structure/vampdoor/dwelling/proc/start_casing(mob/user) //Returns casing and lockpick infromation after a while. - if(area_reference.alarm_trigerred == 1) //Eliminator if the alarm was already trigerred - to_chat(user, span_warning("This house has already been breached and the alarm triggered. Casing is no longer possible.")) - return - to_chat(user, span_notice("You begin casing the house...")) - if(do_mob(user, src, 30 SECONDS)) - switch(area_reference.loot_list["type"]) - if("major") - to_chat(user, span_notice("Both the door and the security system are top notch. Robbing this house is risky but should carry a decent reward. If triggered, the security system will need to be reset every thirty seconds.")) - if("moderate") - to_chat(user, span_notice("The door and security system seem average for [CITY_NAME]. Robbing this house carries a moderate risk and moderate rewards. If triggered, the security system will need to be reset every two minutes. ")) - if("minor") - to_chat(user, span_notice("The door and security system seem to be of poor quality. Robbing this house should provide minor rewards, but the security system can be disabled completely.")) - area_reference.cased_by.Add(user) - return - -/obj/structure/vampdoor/dwelling/proc_unlock(severity) - if(!area_reference) return - area_reference.add_heat(severity) - -/obj/structure/vampdoor/dwelling/examine(mob/user, door = src) - . = ..() - if(area_reference.cased_by.Find(user) == 0) - start_casing(user) - -/obj/structure/vampdoor/dwelling/Initialize(mapload) - var/area/vtm/interior/dwelling/current_area = get_area(src) - if(current_area) - current_area.dwelling_doors.Add(src) - area_reference = current_area - . = ..() - -/obj/structure/vampdoor/dwelling/Destroy() - . = ..() - area_reference.dwelling_doors.Remove(src) - area_reference = null - -/obj/structure/window/fulltile/dwelling - var/area/vtm/interior/dwelling/area_reference - -/obj/structure/window/fulltile/dwelling/process_break_in(severity) - if(!area_reference) return - area_reference.add_heat(severity) - -/obj/structure/window/fulltile/dwelling/Initialize(mapload, direct) - . = ..() - var/area/vtm/interior/dwelling/current_area = get_area(src) - if(current_area) - area_reference = current_area - area_reference.dwelling_windows.Add(src) - -/obj/structure/window/fulltile/dwelling/Destroy() - if(area_reference) - area_reference.dwelling_windows.Remove(src) - area_reference = null - . = ..() - -/turf/closed/wall/vampwall/city/low/window/dwelling - window = /obj/structure/window/fulltile/dwelling - -/obj/structure/curtain/dwelling - name = "plain curtains" - icon_type = "bounty" - icon_state = "bounty-closed" - open = FALSE - opacity = TRUE - density = FALSE - opaque_closed = TRUE - color = null - alpha = 255 - base_pixel_y = 12 - pixel_y = 12 - -/obj/item/vtm/dwelling_alarm_card - name = "alarm disabler card" - desc = "A small card with a magnetic strip. Can be used to disable triggered security systems. Does not work on systems that have not sent an alarm signal yet." - icon = 'modular_darkpack/modules/deprecated/icons/items.dmi' - icon_state = "card3" - inhand_icon_state = "card3" - lefthand_file = 'modular_darkpack/modules/deprecated/icons/lefthand.dmi' - righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' - item_flags = NOBLUDGEON - flags_1 = HEAR_1 - w_class = WEIGHT_CLASS_SMALL - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100) - resistance_flags = FIRE_PROOF | ACID_PROOF - ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/onfloor.dmi') - -/obj/structure/vtm/dwelling_alarm - name = "A home alarm console" - desc = "A small console with a display and small keyboard. A small hole to the side of the panel looks like it would just fit a lockpick." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "doorctrl" - density = FALSE - anchored = TRUE - pixel_y = 32 - var/area/vtm/interior/dwelling/area_reference - var/alarm_timer = 0 - var/alarm_active = 0 - var/alarm_safety = 0 - -/obj/structure/vtm/dwelling_alarm/Initialize(mapload) - var/area/vtm/interior/dwelling/current_area = get_area(src) - if(current_area) - current_area.alarm_panel = src - area_reference = current_area - . = ..() - -/obj/structure/vtm/dwelling_alarm/proc/contact_cops() //Contains the actual act of yelling at cops - var/randomized_response_time = rand(1 SECONDS, 30 SECONDS) - sleep(randomized_response_time) - SEND_SIGNAL(SSdcs, COMSIG_GLOB_REPORT_CRIME, CRIME_BURGLARY, get_turf(src)) - -/obj/structure/vtm/dwelling_alarm/proc/alarm_trigger() //Starts the alarm for the house, calls cops - area_reference.alarm_trigerred = 1 - icon_state = "doorctrl-denied" - update_icon() - set_light(4,2,"#FF0000",1) - say("Intrusion detected! Contacting local PD!") - playsound(src, 'sound/effects/alert.ogg', 50) - INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/structure/vtm/dwelling_alarm/, contact_cops)) - -/obj/structure/vtm/dwelling_alarm/proc/alarm_loop() //Alarm loop - while(alarm_timer > world.time) - if(area_reference.alarm_disabled == 1 || alarm_timer == 0) return - stoplag(1) - if(area_reference.alarm_trigerred == 0) - if(area_reference.alarm_disabled == 1 || alarm_timer == 0) return - alarm_trigger() - return - -/obj/structure/vtm/dwelling_alarm/proc/minigame_loop() // Second alarm loop. - var/light_time = rand(3 SECONDS, 6 SECONDS) - var/blink_time - switch(area_reference.loot_list["type"]) - if("minor") - blink_time = 20 - if("moderate") - blink_time = 15 - if("major") - blink_time = 10 - while(alarm_timer > world.time) - if(area_reference.alarm_trigerred == 1 || alarm_timer == 0) return - icon_state = "doorctrl1" - alarm_safety = 0 - update_icon() - sleep(light_time) - if(area_reference.alarm_trigerred == 1 || alarm_timer == 0) return - icon_state = "doorctrl-p" - update_icon() - alarm_safety = 1 - sleep(blink_time) - - -/obj/structure/vtm/dwelling_alarm/proc/restart_alarm() //Delays triggering on an activated alarm - var/alarm_delay - switch(area_reference.loot_list["type"]) - if("minor","moderate") - alarm_delay = 60 SECONDS - if("major") - alarm_delay = 30 SECONDS - alarm_timer = world.time + alarm_delay - return - -/obj/structure/vtm/dwelling_alarm/proc/alarm_arm() //Arms itself and starts the alarm/minigame loops - desc = "A small console with a display and small keyboard. It seems to be running a security check. A small hole to the side of the panel looks like it would just fit a lockpick." - say("Intrusion detected. Performing detailed scan.") - playsound(src, 'sound/ambience/signal.ogg', 25) - restart_alarm() - alarm_active = 1 - INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/structure/vtm/dwelling_alarm/, alarm_loop)) - INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/structure/vtm/dwelling_alarm/, minigame_loop)) - -/obj/structure/vtm/dwelling_alarm/proc/alarm_disarm() //Shuts the alarm down - say("Alarm disarmed. Have a nice day.") - desc = initial(desc) - icon_state = "doorctrl-p" - update_icon() - area_reference.alarm_disabled = 1 - alarm_active = 0 - alarm_timer = 0 - return - -/obj/structure/vtm/dwelling_alarm/proc/alarm_reset() // Decides what to do during sucessful reset. - switch(area_reference.loot_list["type"]) - if("minor") - alarm_disarm() - if("moderate","major") - say("Error. Fluctuation in power supply. Restarting security scan...") - restart_alarm() - -/obj/structure/vtm/dwelling_alarm/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/vamp/keys/hack)) - if(area_reference.alarm_disabled == 1) - to_chat(user, span_warning("The alarm is disabled and nothing seems to be able to change that.")) - return - if(alarm_active == 0) - to_chat(user, span_warning("You start to wiggle the lockpick in the opening. This will likely turn the alarm on if you do not stop!")) - if(do_mob(user, src, 10 SECONDS)) - alarm_arm() - return - if(alarm_active == 1) - if(area_reference.alarm_trigerred == 1) - to_chat(user, span_warning("The alarm has already been set off, there is no point in messing with it now.")) - return - if(alarm_safety == 0) - to_chat(user, span_warning("You feel a button depress at the end of the opening. The alarm seems to activate!")) - alarm_trigger() - return - if(alarm_safety == 1) - to_chat(user, span_notice("You feel a button depress at the end of the opening. The display on the alarm flickers briefly!")) - alarm_reset() - return - if(istype(I, /obj/item/vtm/dwelling_alarm_card)) - if(area_reference.alarm_trigerred == 0) - to_chat(user, span_notice("You slide the card into a slot on the side of the alarm box. There is no visible reaction. ")) - return - if(area_reference.alarm_trigerred == 1) - to_chat(user, span_notice("You slide the card into a slot on the side of the alarm box. The alarm seems to start a disarming sequence.")) - alarm_disarm() - return - -/obj/structure/vtm/dwelling_alarm/Destroy() - . = ..() - area_reference = null diff --git a/modular_darkpack/modules/dwelling/code/objs/dwelling_window_defs.dm b/modular_darkpack/modules/dwelling/code/objs/dwelling_window_defs.dm deleted file mode 100644 index e55f5970ac19..000000000000 --- a/modular_darkpack/modules/dwelling/code/objs/dwelling_window_defs.dm +++ /dev/null @@ -1,14 +0,0 @@ -/obj/structure/window_frame/dwelling/city - icon_state = "city-window" - base_icon_state = "city" - window = /obj/structure/window/fulltile/dwelling - -/obj/structure/window_frame/dwelling/junk - base_icon_state = "junk" - icon_state = "junk-window" - window = /obj/structure/window/fulltile/dwelling - -/obj/structure/window_frame/dwelling/old - base_icon_state = "old" - icon_state = "old-window" - window = /obj/structure/window/fulltile/dwelling diff --git a/modular_darkpack/modules/dwelling/code/turfs/turfs_dwelling_instances.dm b/modular_darkpack/modules/dwelling/code/turfs/turfs_dwelling_instances.dm deleted file mode 100644 index cc8140556640..000000000000 --- a/modular_darkpack/modules/dwelling/code/turfs/turfs_dwelling_instances.dm +++ /dev/null @@ -1,7 +0,0 @@ -/turf/closed/wall/vampwall/city/low/window/dwelling/junk - base_icon_state = "junk" - icon_state = "junk-window" - -/turf/closed/wall/vampwall/city/low/window/dwelling/old - base_icon_state = "old" - icon_state = "old-window" diff --git a/modular_darkpack/modules/economy/code/dollar.dm b/modular_darkpack/modules/economy/code/dollar.dm index 8dd28635a077..8e607c7bed1c 100644 --- a/modular_darkpack/modules/economy/code/dollar.dm +++ b/modular_darkpack/modules/economy/code/dollar.dm @@ -56,9 +56,17 @@ /obj/item/stack/dollar/thousand amount = 1000 + /obj/item/stack/dollar/rand + amount = 15 /obj/item/stack/dollar/rand/Initialize(mapload, new_amount, merge = TRUE, list/mat_override = null, mat_amt = 1) + amount = round(gaussian(amount, amount * 0.2)) . = ..() - amount = rand(5, 30) update_appearance() + +/obj/item/stack/dollar/rand/ten + amount = 10 + +/obj/item/stack/dollar/rand/hundred + amount = 100 diff --git a/modular_darkpack/modules/economy/code/selling/lombard.dm b/modular_darkpack/modules/economy/code/selling/lombard.dm index e9de7896655e..e53aa18468d4 100644 --- a/modular_darkpack/modules/economy/code/selling/lombard.dm +++ b/modular_darkpack/modules/economy/code/selling/lombard.dm @@ -8,6 +8,11 @@ difficulty = SALE_DIFFICULTY numerical = TRUE +/datum/storyteller_roll/selling_masquerade_sensitive + bumper_text = "selling supernatural items" + applicable_stats = list(STAT_MANIPULATION, STAT_SUBTERFUGE) + difficulty = 8 + /obj/lombard name = "pawnshop" desc = "Sell your stuff." @@ -15,8 +20,23 @@ icon_state = "sell" icon = 'modular_darkpack/modules/retail/icons/vendors_shops.dmi' anchored = TRUE + var/mob/living/carbon/human/npc/owner var/black_market = FALSE var/datum/storyteller_roll/fencing/sell_roll + var/datum/storyteller_roll/selling_masquerade_sensitive/masquerade_roll + +/obj/lombard/Initialize(mapload) + . = ..() + for(var/mob/living/carbon/human/npc/potential_owner in range(2, src)) + if(istype(potential_owner, /mob/living/carbon/human/npc/shop) || istype(potential_owner, /mob/living/carbon/human/npc/illegal)) + owner = potential_owner + break + if(owner) + RegisterSignal(owner, COMSIG_QDELETING, PROC_REF(cleanup_owner)) + +/obj/lombard/proc/cleanup_owner() + SIGNAL_HANDLER + owner = null /obj/lombard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) var/datum/component/selling/selling_comp = tool.GetComponent(/datum/component/selling) @@ -40,6 +60,8 @@ to_chat(user, selling_comp.sale_fail_message()) return FALSE + sell_masquerade_sensitive_item(user, selling_comp) + var/sale_price = calculate_sale_price(sold, user, selling_comp) spawn_money(sale_price, loc) @@ -61,6 +83,12 @@ if(!length(items_to_sell)) return list() + // One masquerade roll for the whole batch, using the first item as reference + var/obj/item/reference_item = items_to_sell[1] + var/datum/component/selling/reference_comp = reference_item.GetComponent(/datum/component/selling) + if(reference_comp) + sell_masquerade_sensitive_item(user, reference_comp) + var/list/sold_items = list() var/total_sale_price = 0 @@ -229,6 +257,29 @@ return matching_items +/obj/lombard/proc/sell_masquerade_sensitive_item(mob/living/user, datum/component/selling/reference_comp) + if(!issupernatural(user)) + return TRUE + if(!reference_comp.masquerade_violating) + return TRUE + if(!masquerade_roll) + masquerade_roll = new() + + var/roll_output = masquerade_roll.st_roll(user, src) + var/datum/socialrole/shop/shop_role = owner?.socialrole + + if(roll_output != ROLL_SUCCESS) + to_chat(user, span_warning("You get a bad feeling about selling that supernatural item...")) + SEND_SIGNAL(user, COMSIG_MASQUERADE_VIOLATION) + if(shop_role && length(shop_role.masquerade_item_failure_phrases)) + owner.realistic_say(pick(shop_role.masquerade_item_failure_phrases)) + return FALSE + else + to_chat(user, span_notice("You successfully fence the supernatural item with enough finesse that the sale won't be traced back to you.")) + if(shop_role && length(shop_role.masquerade_item_phrases)) + owner.realistic_say(pick(shop_role.masquerade_item_phrases)) + return TRUE + /obj/lombard/blackmarket name = "black market" desc = "Sell illegal goods." diff --git a/modular_darkpack/modules/economy/code/selling/selling.dm b/modular_darkpack/modules/economy/code/selling/selling.dm index c22a58368d90..32e488cc2c83 100644 --- a/modular_darkpack/modules/economy/code/selling/selling.dm +++ b/modular_darkpack/modules/economy/code/selling/selling.dm @@ -13,8 +13,10 @@ var/humanity_loss ///Down to what point humanity can be reduced when selling the item. var/humanity_loss_limit + ///Does selling this object threaten the masquerade? if so, make a (stat) + subterfuge roll to avoid losing masq + var/masquerade_violating -/datum/component/selling/Initialize(new_cost, new_object_category, new_illegal, new_humanity_loss, new_humanity_loss_limit) +/datum/component/selling/Initialize(new_cost, new_object_category, new_illegal, new_humanity_loss, new_humanity_loss_limit, new_masquerade_sensitivity = FALSE) if(!isobj(parent)) //Only items can be sold return COMPONENT_INCOMPATIBLE cost = new_cost @@ -22,6 +24,7 @@ illegal = new_illegal humanity_loss = new_humanity_loss humanity_loss_limit = new_humanity_loss_limit + masquerade_violating = new_masquerade_sensitivity //Whether it can be sold -- overriden by subtypes such as organs, which can only be sold if they have a certain health. /datum/component/selling/proc/can_sell() @@ -35,7 +38,7 @@ /datum/component/selling/proc/sale_fail_message() return span_notice("You cannot sell [parent].") -/datum/component/selling/organ/Initialize(new_cost, new_object_category, new_illegal, new_humanity_loss, new_humanity_loss_limit) +/datum/component/selling/organ/Initialize(new_cost, new_object_category, new_illegal, new_humanity_loss, new_humanity_loss_limit, new_masquerade_sensitivity = FALSE) if(!istype(parent, /obj/item/organ)) return COMPONENT_INCOMPATIBLE ..() diff --git a/modular_darkpack/modules/events/code/blackout_event.dm b/modular_darkpack/modules/events/code/blackout_event.dm index ab7036ba74d3..f600cbb1f625 100644 --- a/modular_darkpack/modules/events/code/blackout_event.dm +++ b/modular_darkpack/modules/events/code/blackout_event.dm @@ -3,28 +3,27 @@ typepath = /datum/round_event/blackout weight = 6 min_players = 5 - max_occurrences = 2 + max_occurrences = 1 earliest_start = 10 MINUTES category = EVENT_CATEGORY_ENGINEERING description = "A cascading failure in the city's power grid." darkpack_allowed = TRUE +/datum/round_event_control/darkpack/blackout/can_spawn_event(players_amt, allow_magic) + . = ..() + if(HAS_TRAIT(SSstation, STATION_TRAIT_BLACKOUT)) + return FALSE // Dont piss in my soup twice. + /datum/round_event/blackout start_when = 1 announce_when = 5 /datum/round_event/blackout/announce(fake) - priority_announce( - "A breaking news notification has appeared on your phone - rolling blackouts are affecting your area due to inclement weather.", - "Local BREAKING NEWS Alert", - 'modular_darkpack/modules/events/sounds/news_notification.ogg', - ANNOUNCEMENT_TYPE_PRIORITY, - color_override = "red", - ) + endpost_announce("Rolling blackouts are impacting your area due to inclement weather. City workers are delayed due to widespread outages across the city.") /datum/round_event/blackout/start() for(var/obj/fusebox/F in GLOB.fuseboxes) if(prob(50)) continue - F.take_damage(101) + F.take_damage(rand(75,200)) F.power_off() diff --git a/modular_darkpack/modules/events/code/economy_crash_event.dm b/modular_darkpack/modules/events/code/economy_crash_event.dm index a2a9376b2219..a1aeee023b76 100644 --- a/modular_darkpack/modules/events/code/economy_crash_event.dm +++ b/modular_darkpack/modules/events/code/economy_crash_event.dm @@ -21,13 +21,6 @@ /datum/round_event/financial_crisis/announce(fake) var/chosen_announcement = "[pick(announcement_messages)] Customers are encouraged to contact the branch during normal business hours between 8:00am and 5:00pm, Monday through Friday." - priority_announce( - "[chosen_announcement]", - "BREAKING Financial News ALERT", - 'modular_darkpack/modules/events/sounds/news_notification.ogg', - ANNOUNCEMENT_TYPE_PRIORITY, - color_override = "green", - ) endpost_announce("[chosen_announcement]", "BianchiBank") /datum/round_event/financial_crisis/start() diff --git a/modular_darkpack/modules/events/code/graveyard_event.dm b/modular_darkpack/modules/events/code/graveyard_event.dm new file mode 100644 index 000000000000..86a9a70dea0e --- /dev/null +++ b/modular_darkpack/modules/events/code/graveyard_event.dm @@ -0,0 +1,45 @@ +/datum/round_event_control/darkpack/graveyard + name = "Zombie Attack" + typepath = /datum/round_event/graveyard + weight = 1 + min_players = 10 + max_occurrences = 2 + earliest_start = 90 MINUTES + category = EVENT_CATEGORY_INVASION + description = "Zombies rise at the Graveyard - giving Necromancers an opportunity to control, or suppress, the restless dead." + +/datum/round_event_control/darkpack/graveyard/can_spawn_event(players_amt, allow_magic) + . = ..() + if(!.) + return FALSE + if(!locate(/obj/vampgrave) in GLOB.generic_event_spawns) + return FALSE + // run the event if at least one player has necromancy + for(var/mob/living/player in GLOB.player_list) + if(!player.get_discipline(/datum/discipline/necromancy)) + continue + return TRUE + return FALSE + +/datum/round_event/graveyard + start_when = 1 + announce_when = 5 + end_when = 155 // 5 minutes of zombies + +/datum/round_event/graveyard/announce(fake) + for(var/mob/living/player in GLOB.player_list) + if(!player.get_discipline(/datum/discipline/necromancy)) + continue + to_chat(player, span_hypnophrase("You feel uneasiness from across the Shroud... a great mass of spirits awaken.")) + +/datum/round_event/graveyard/start() + for(var/obj/vampgrave/grave in GLOB.generic_event_spawns) + if(!prob(20)) + continue + grave.zombies_rising = TRUE + +/datum/round_event/graveyard/end() + for(var/obj/vampgrave/grave in GLOB.generic_event_spawns) + grave.zombies_rising = FALSE + return ..() + diff --git a/modular_darkpack/modules/events/code/sarcophagus_event.dm b/modular_darkpack/modules/events/code/sarcophagus_event.dm index 680c58da9165..b0fd074f2c9f 100644 --- a/modular_darkpack/modules/events/code/sarcophagus_event.dm +++ b/modular_darkpack/modules/events/code/sarcophagus_event.dm @@ -28,16 +28,12 @@ /datum/round_event/sarcophagus start_when = 1 announce_when = 5 + announce_chance = 20 /datum/round_event/sarcophagus/announce(fake) - if(prob(20)) - priority_announce( - "You receive a notification about a viral Endpost - a respected archaeologist notes that the location of a long-lost Assyrian sarcophagus alongside it's key, which was famously stolen, seems to be in your city according to newly published criminological records tracking the suspected thief.", - "Viral News Story", - 'modular_darkpack/modules/events/sounds/news_notification.ogg', - ANNOUNCEMENT_TYPE_PRIORITY, - color_override = "yellow", - ) + var/endpost_author = pick("thesupernaturalguy71", "mhaley71", "justplumbin92", "illuminati_truther777", "satanwatch_now") + var/endpost_post = pick("saw something soooo weird... :) new video coming soon on my channel", "(the post has an extremely blurry image attached of what looks to be some kind of strange tomb.)") + endpost_announce(endpost_post, endpost_author) /datum/round_event/sarcophagus/start() var/list/landmarks = list() diff --git a/modular_darkpack/modules/events/code/szlachta_attack_event.dm b/modular_darkpack/modules/events/code/szlachta_attack_event.dm index 9ac12e54f600..7a54b9fb2684 100644 --- a/modular_darkpack/modules/events/code/szlachta_attack_event.dm +++ b/modular_darkpack/modules/events/code/szlachta_attack_event.dm @@ -3,7 +3,7 @@ typepath = /datum/round_event/szlachta weight = 3 min_players = 10 - max_occurrences = 2 + max_occurrences = 1 earliest_start = 90 MINUTES category = EVENT_CATEGORY_INVASION description = "Roving, loose szlachta have found their way into the city." @@ -17,6 +17,7 @@ /datum/round_event/szlachta start_when = 1 announce_when = 5 + announce_chance = 75 /datum/round_event/szlachta/announce(fake) var/endpost_szlachta_author = pick("thesupernaturalguy71", "mhaley71", "justplumbin92", "illuminati_truther777", "satanwatch_now") diff --git a/modular_darkpack/modules/external_organs/code/gargoyle_wings.dm b/modular_darkpack/modules/external_organs/code/gargoyle_wings.dm index 2757626ddb7d..769b8a6d94c2 100644 --- a/modular_darkpack/modules/external_organs/code/gargoyle_wings.dm +++ b/modular_darkpack/modules/external_organs/code/gargoyle_wings.dm @@ -10,7 +10,7 @@ var/hidden = FALSE //using parent's example with open or closed wings -/datum/bodypart_overlay/mutant/wings/functional/gargoyle/generate_icon_cache() +/datum/bodypart_overlay/mutant/wings/functional/gargoyle/icon_render_key(obj/item/bodypart/limb) . = ..() . += hidden ? "hidden" : "visible" diff --git a/modular_darkpack/modules/fire/code/sprinkler.dm b/modular_darkpack/modules/fire/code/sprinkler.dm index d5ce70881bb3..859a22db193d 100644 --- a/modular_darkpack/modules/fire/code/sprinkler.dm +++ b/modular_darkpack/modules/fire/code/sprinkler.dm @@ -63,7 +63,7 @@ else looping_sound.stop() current_spray_range = 1 - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/machinery/sprinkler/update_overlays() . = ..() diff --git a/modular_darkpack/modules/flavor_text/code/custom_examine_text.dm b/modular_darkpack/modules/flavor_text/code/custom_examine_text.dm index 03f7e7e98b78..56d36a26d055 100644 --- a/modular_darkpack/modules/flavor_text/code/custom_examine_text.dm +++ b/modular_darkpack/modules/flavor_text/code/custom_examine_text.dm @@ -1,8 +1,4 @@ -/mob/living/carbon/human/verb/set_custom_examine_text() - set name = "Set Custom Examine Text" - set category = "IC" - set desc = "Set a custom examine message to what your character is doing at the moment." - +GAME_VERB_DESC(/mob/living/carbon/human, set_custom_examine_text, "Set Custom Examine Text", "Set a custom examine message to what your character is doing at the moment.", "IC") var/new_text = tgui_input_text(src, "Set your new custom examine text.", "Examine Text", custom_examine_message, MAX_MESSAGE_LEN, TRUE) custom_examine_message = new_text diff --git a/modular_darkpack/modules/flavor_text/code/examine.dm b/modular_darkpack/modules/flavor_text/code/examine.dm index b4177352fb43..867cda5a95f7 100644 --- a/modular_darkpack/modules/flavor_text/code/examine.dm +++ b/modular_darkpack/modules/flavor_text/code/examine.dm @@ -30,7 +30,7 @@ var/nsfw_content = user.client?.prefs.read_preference(/datum/preference/toggle/nsfw_content_pref) var/flavor_text_nsfw = "" var/ooc_notes = "" - var/show_flavor_text_when_masked = user.client?.prefs.read_preference(/datum/preference/toggle/show_flavor_text_when_masked) + var/show_flavor_text_when_masked = holder.client?.prefs.read_preference(/datum/preference/toggle/show_flavor_text_when_masked) if(ishuman(holder)) var/mob/living/carbon/human/holder_human = holder diff --git a/modular_darkpack/modules/frenzy/code/frenzy.dm b/modular_darkpack/modules/frenzy/code/frenzy.dm index da9fe6b2184c..5f3e38e8d905 100644 --- a/modular_darkpack/modules/frenzy/code/frenzy.dm +++ b/modular_darkpack/modules/frenzy/code/frenzy.dm @@ -121,10 +121,7 @@ return frenzy_result -/mob/living/carbon/human/proc/manual_frenzy_roll(atom/movable/AM as mob|obj in oview(DEFAULT_SIGHT_DISTANCE)) - set name = "Manual Frenzy Roll" - set desc = "Trigger a roll for a frenzy" - +GAME_VERB_PROC_DESC(/mob/living/carbon/human, manual_frenzy_roll, "Manual Frenzy Roll", "Trigger a roll for a frenzy", null, atom/movable/AM as mob|obj in oview(DEFAULT_SIGHT_DISTANCE)) if(!istype(AM)) return if(!issupernatural(src)) @@ -136,10 +133,7 @@ trigger_kindred_frenzy(AM) // Used by the berserker merit. or possibly even for that one vampire thing of riding the frenzy in future? -/mob/living/carbon/human/proc/manual_frenzy(atom/movable/AM as mob|obj in oview(DEFAULT_SIGHT_DISTANCE)) - set name = "Manual Frenzy" - set desc = "Enter a frenzy at will" - +GAME_VERB_PROC_DESC(/mob/living/carbon/human, manual_frenzy, "Manual Frenzy", "Enter a frenzy at will", null, atom/movable/AM as mob|obj in oview(DEFAULT_SIGHT_DISTANCE)) if(!istype(AM)) return if(!issupernatural(src)) diff --git a/modular_darkpack/modules/graveyard/code/graveyard.dm b/modular_darkpack/modules/graveyard/code/graveyard.dm deleted file mode 100644 index 3d28b8b02e32..000000000000 --- a/modular_darkpack/modules/graveyard/code/graveyard.dm +++ /dev/null @@ -1,268 +0,0 @@ -/mob/living/basic/zombie/darkpack - name = "Shambling Corpse" - desc = "When there is no more room in Hell, the dead will walk on Earth." - icon = 'modular_darkpack/modules/graveyard/icons/zombies.dmi' - icon_state = "zombie" - icon_living = "zombie" - icon_dead = "zombie_dead" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - maxHealth = 50 - health = 50 - melee_damage_lower = 21 - melee_damage_upper = 21 - obj_damage = 2 - attack_verb_continuous = "bites" - attack_verb_simple = "bite" - attack_sound = 'modular_darkpack/modules/deprecated/sounds/zombuzi.ogg' - status_flags = CANPUSH - basic_mob_flags = DEL_ON_DEATH - speed = 1 - faction = list("zombie") - ai_controller = /datum/ai_controller/basic_controller/zombie/darkpack - outfit = null - - var/obj/vampgrave/source_grave - -/mob/living/basic/zombie/darkpack/Initialize(mapload) - . = ..() - // the parent is causing them to appear as space station 13 zombies - this removes that. - icon = 'modular_darkpack/modules/graveyard/icons/zombies.dmi' - icon_state = icon_living - cut_overlays() - update_body() - AddElement(/datum/element/ai_retaliate) - -/mob/living/basic/zombie/darkpack/Destroy() - if(source_grave) - source_grave.spawned_zombies -= src - source_grave = null - return ..() - -// need a custom targeting strategy so they don't kill other zombies -/datum/targeting_strategy/basic/zombie_darkpack - -/datum/targeting_strategy/basic/zombie_darkpack/can_attack(mob/living/basic/basic_mob, atom/target, vision_range) - if(istype(target, /mob/living/basic/zombie/darkpack)) - return FALSE - - // don't break down the fence - just try to break the gate - if(istype(target, /obj/structure/vampfence/rich)) - return FALSE - - if(istype(target, /obj/structure/vampgate)) - return TRUE - - // use the parent class for everything else - return ..() - -// planning subtree specifically for finding and targeting vampire gates -/datum/ai_planning_subtree/find_and_attack_vampgate - var/scan_range = 9 - -/datum/ai_planning_subtree/find_and_attack_vampgate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - var/mob/living/basic/zombie = controller.pawn - - var/atom/current_target = controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET] - - // if we're attacking a gate, use the targeting strategy to find nearby living mobs. - if(istype(current_target, /obj/structure/vampgate)) - var/datum/targeting_strategy/targeter = GET_TARGETING_STRATEGY(controller.blackboard[BB_TARGETING_STRATEGY]) - if(targeter) - for(var/mob/living/potential_target in oview(controller.blackboard[BB_VISION_RANGE], zombie)) - if(targeter.can_attack(zombie, potential_target, controller.blackboard[BB_VISION_RANGE])) - // if we can attack the potential target clear the gate from the list and attack the nearby living thing. - controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET) - return - - // if we already have a living current target don't run this - if(isliving(current_target)) - return - - // if we currently have a mob target from the blackboard then don't run this - if(controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET)) - return - - // is there a nearby vampgate? - for(var/obj/structure/vampgate/gate in oview(scan_range, zombie)) - if(!gate.broken) - // theres one, kill it - controller.set_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET, gate) - controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION) - return - -// AI controller for darkpack zombies -/datum/ai_controller/basic_controller/zombie/darkpack - blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/zombie_darkpack, - BB_TARGET_MINIMUM_STAT = DEAD, - BB_VISION_RANGE = 9, - ) - ai_movement = /datum/ai_movement/basic_avoidance - idle_behavior = /datum/idle_behavior/idle_random_walk - planning_subtrees = list( - /datum/ai_planning_subtree/target_retaliate, - /datum/ai_planning_subtree/find_and_attack_vampgate, - /datum/ai_planning_subtree/simple_find_target, - /datum/ai_planning_subtree/basic_melee_attack_subtree, - ) - -/obj/vampgrave - icon = 'modular_darkpack/modules/graveyard/icons/graves.dmi' - icon_state = "grave1" - name = "grave" - plane = GAME_PLANE - layer = ABOVE_NORMAL_TURF_LAYER - anchored = TRUE - density = TRUE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - - var/spawn_interval = 15 MINUTES - var/max_zombies_per_grave = 2 - var/list/spawned_zombies = list() - -/obj/vampgrave/Initialize(mapload) - . = ..() - randomize_appearance() - spawn_interval += rand(-10 SECONDS, 10 SECONDS) // Prevent them from all spawning at the same time. - addtimer(CALLBACK(src, PROC_REF(try_spawn_zombie)), spawn_interval, TIMER_STOPPABLE | TIMER_LOOP) - -//they have the indestructible flag so this should never happen but just in case -/obj/vampgrave/Destroy() - spawned_zombies.Cut() - return ..() - -/obj/vampgrave/proc/try_spawn_zombie() - - clean_zombie_list() - if(!should_spawn()) - return - if(length(spawned_zombies) >= max_zombies_per_grave) - return - - spawn_zombie() - -/obj/vampgrave/proc/should_spawn() - // Check if graveyard keeper is online - for(var/mob/living/carbon/human/H in GLOB.player_list) - if(!H.mind) - continue - if(istype(H.mind.assigned_role, /datum/job/vampire/graveyard) && !considered_afk(H.mind)) - return TRUE - return FALSE - -/obj/vampgrave/proc/clean_zombie_list() - for(var/mob/living/basic/zombie/darkpack/Z in spawned_zombies) - if(QDELETED(Z)) - spawned_zombies -= Z - -/obj/vampgrave/proc/spawn_zombie() - var/mob/living/basic/zombie/darkpack/Z = new(loc) - Z.source_grave = src - spawned_zombies += Z - - visible_message(span_danger("The ground at [src] stirs as something claws its way out!")) - -/obj/vampgrave/proc/randomize_appearance() - icon_state = "grave[rand(1, 10)]" - if(check_holidays(CHRISTMAS) && is_outdoors()) - icon_state += "-snow" - -/obj/vampgrave/proc/is_outdoors() - var/area/my_area = get_area(src) - return my_area.outdoors - -// Adminbus or testing -/obj/vampgrave/rapid - name = "upturned grave" - spawn_interval = 30 SECONDS - max_zombies_per_grave = 1 - -/obj/structure/vampgate - name = "graveyard gate" - desc = "It opens and closes." - icon = 'modular_darkpack/modules/graveyard/icons/gate.dmi' - icon_state = "gate" - pixel_x = -32 - base_pixel_x = -32 - anchored = TRUE - density = TRUE - max_integrity = 500 - prevent_destruction = TRUE - - var/repairing = FALSE - -/obj/structure/vampgate/Initialize(mapload) - . = ..() - var/turf/right_turf = get_step(src, EAST) - var/turf/left_turf = get_step(src, WEST) - if(right_turf) - right_turf.set_density(TRUE) - if(left_turf) - left_turf.set_density(TRUE) - -/obj/structure/vampgate/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0) - . = ..() - if(!broken) - if(sound_effect) - playsound(get_turf(src), 'modular_darkpack/master_files/sounds/effects/door/get_bent.ogg', 100, FALSE) - - shake_gate() - - if(atom_integrity <= 0) - break_open() - -/obj/structure/vampgate/atom_destruction(damage_flag) - . = ..() - break_open() - -/obj/structure/vampgate/proc/shake_gate() - pixel_z += rand(-1, 1) - pixel_w += rand(-1, 1) - addtimer(CALLBACK(src, PROC_REF(reset_position)), 0.2 SECONDS) - -/obj/structure/vampgate/proc/reset_position() - pixel_z = initial(pixel_z) - pixel_w = initial(pixel_w) - -/obj/structure/vampgate/proc/break_open() - if(broken) - return - - broken = TRUE - density = FALSE - icon_state = "gate-open" - visible_message(span_boldwarning("[src] breaks open!")) - -/obj/structure/vampgate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(istype(tool, /obj/item/melee/vamp/tire)) - attempt_repair(user) - return ITEM_INTERACT_SUCCESS - - return NONE - -/obj/structure/vampgate/proc/attempt_repair(mob/living/user) - if(repairing) - to_chat(user, span_warning("Someone is already repairing [src]!")) - return - - if(atom_integrity >= max_integrity) - to_chat(user, span_notice("[src] is already fully repaired.")) - return - - repairing = TRUE - - if(do_after(user, 5 SECONDS, src)) - repair_damage(50) - - if(atom_integrity > 0 && broken) - broken = FALSE - density = TRUE - icon_state = "gate" - visible_message(span_notice("[src] is repaired and closed!")) - - playsound(src, 'modular_darkpack/master_files/sounds/effects/repair.ogg', 50, TRUE) - to_chat(user, span_notice("You repair some damage on [src]. ([atom_integrity]/[max_integrity])")) - else - to_chat(user, span_warning("You stop repairing [src].")) - - repairing = FALSE diff --git a/modular_darkpack/modules/graveyard/code/vampgate.dm b/modular_darkpack/modules/graveyard/code/vampgate.dm new file mode 100644 index 000000000000..0252d47584fb --- /dev/null +++ b/modular_darkpack/modules/graveyard/code/vampgate.dm @@ -0,0 +1,111 @@ +/obj/structure/vampgate + name = "graveyard gate" + desc = "It opens and closes." + icon = 'modular_darkpack/modules/graveyard/icons/gate.dmi' + icon_state = "gate" + pixel_x = -32 + base_pixel_x = -32 + anchored = TRUE + density = TRUE + max_integrity = 500 + prevent_destruction = TRUE + + var/repairing = FALSE + +/obj/structure/vampgate/Initialize(mapload) + . = ..() + var/turf/right_turf = get_step(src, EAST) + var/turf/left_turf = get_step(src, WEST) + if(right_turf) + right_turf.set_density(TRUE) + if(left_turf) + left_turf.set_density(TRUE) + +/obj/structure/vampgate/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0) + . = ..() + if(!broken) + if(sound_effect) + playsound(get_turf(src), 'modular_darkpack/master_files/sounds/effects/door/get_bent.ogg', 100, FALSE) + + shake_gate() + + if(atom_integrity <= 0) + break_open() + +/obj/structure/vampgate/atom_destruction(damage_flag) + . = ..() + break_open() + +/obj/structure/vampgate/proc/shake_gate() + pixel_z += rand(-1, 1) + pixel_w += rand(-1, 1) + addtimer(CALLBACK(src, PROC_REF(reset_position)), 0.2 SECONDS) + +/obj/structure/vampgate/proc/reset_position() + pixel_z = initial(pixel_z) + pixel_w = initial(pixel_w) + +/obj/structure/vampgate/proc/break_open() + if(broken) + return + + broken = TRUE + density = FALSE + icon_state = "gate-open" + visible_message(span_boldwarning("[src] breaks open!")) + +/obj/structure/vampgate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/melee/vamp/tire)) + attempt_repair(user) + return ITEM_INTERACT_SUCCESS + + if(istype(tool, /obj/item/vamp/keys/graveyard)) + if(!density && broken) + to_chat(user, span_warning("The gate is broken and hanging open, in desperate need of repair.")) + return ITEM_INTERACT_SUCCESS + if(!density && !broken) + to_chat(user, span_notice("You start closing the gate...")) + if(do_after(user, 5 SECONDS, src)) + density = TRUE + icon_state = "gate" + to_chat(user, span_notice("You close the gate.")) + else + to_chat(user, span_notice("You walk away from the gate.")) + else + to_chat(user, span_notice("You start opening the gate...")) + if(do_after(user, 5 SECONDS, src)) + density = FALSE + icon_state = "gate-open" + to_chat(user, span_notice("You open the gate.")) + else + to_chat(user, span_notice("You walk away from the gate.")) + return ITEM_INTERACT_SUCCESS + + return NONE + +/obj/structure/vampgate/proc/attempt_repair(mob/living/user) + if(repairing) + to_chat(user, span_warning("Someone is already repairing [src]!")) + return + + if(atom_integrity >= max_integrity) + to_chat(user, span_notice("[src] is already fully repaired.")) + return + + repairing = TRUE + + if(do_after(user, 5 SECONDS, src)) + repair_damage(50) + + if(atom_integrity > 0 && broken) + broken = FALSE + density = TRUE + icon_state = "gate" + visible_message(span_notice("[src] is repaired and closed!")) + + playsound(src, 'modular_darkpack/master_files/sounds/effects/repair.ogg', 50, TRUE) + to_chat(user, span_notice("You repair some damage on [src]. ([atom_integrity]/[max_integrity])")) + else + to_chat(user, span_warning("You stop repairing [src].")) + + repairing = FALSE diff --git a/modular_darkpack/modules/graveyard/code/vampgrave.dm b/modular_darkpack/modules/graveyard/code/vampgrave.dm new file mode 100644 index 000000000000..fe6080801da0 --- /dev/null +++ b/modular_darkpack/modules/graveyard/code/vampgrave.dm @@ -0,0 +1,71 @@ +/obj/vampgrave + icon = 'modular_darkpack/modules/graveyard/icons/graves.dmi' + icon_state = "grave1" + name = "grave" + plane = GAME_PLANE + layer = ABOVE_NORMAL_TURF_LAYER + anchored = TRUE + density = TRUE + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + + var/spawn_interval = 2 MINUTES + var/max_zombies_per_grave = 2 + var/list/spawned_zombies = list() + /// Whether this grave is currently allowed to spawn zombies, typically flipped by the graveyard event + var/zombies_rising = FALSE + +/obj/vampgrave/Initialize(mapload) + . = ..() + GLOB.generic_event_spawns += src + randomize_appearance() + spawn_interval += rand(-20 SECONDS, 20 SECONDS) // Prevent them from all spawning at the same time. + addtimer(CALLBACK(src, PROC_REF(try_spawn_zombie)), spawn_interval, TIMER_STOPPABLE | TIMER_LOOP) + +//they have the indestructible flag so this should never happen but just in case +/obj/vampgrave/Destroy() + GLOB.generic_event_spawns -= src + spawned_zombies.Cut() + return ..() + +/obj/vampgrave/proc/try_spawn_zombie() + if(!zombies_rising) + return + clean_zombie_list() + if(length(spawned_zombies) >= max_zombies_per_grave) + return + + spawn_zombie() + +/obj/vampgrave/proc/clean_zombie_list() + for(var/mob/living/basic/zombie/darkpack/Z in spawned_zombies) + if(QDELETED(Z) || Z.stat == DEAD) + spawned_zombies -= Z + +/obj/vampgrave/proc/spawn_zombie() + var/zombie_type = pick( + /mob/living/basic/zombie/darkpack, + /mob/living/basic/zombie/darkpack/skeleton, + /mob/living/basic/zombie/darkpack/fat_zombie, + /mob/living/basic/zombie/darkpack/suit_zombie, + ) + var/mob/living/basic/zombie/darkpack/Z = new zombie_type(loc) + Z.source_grave = src + spawned_zombies += Z + + visible_message(span_danger("The ground at [src] stirs as something claws its way out!")) + +/obj/vampgrave/proc/randomize_appearance() + icon_state = "grave[rand(1, 10)]" + if(check_holidays(CHRISTMAS) && is_outdoors()) + icon_state += "-snow" + +/obj/vampgrave/proc/is_outdoors() + var/area/my_area = get_area(src) + return my_area.outdoors + +// Adminbus or testing +/obj/vampgrave/rapid + name = "upturned grave" + spawn_interval = 30 SECONDS + max_zombies_per_grave = 1 + diff --git a/modular_darkpack/modules/guestbook/code/mob.dm b/modular_darkpack/modules/guestbook/code/mob.dm index 5043dd07f95f..1d7e1a0b2c1e 100644 --- a/modular_darkpack/modules/guestbook/code/mob.dm +++ b/modular_darkpack/modules/guestbook/code/mob.dm @@ -1,8 +1,5 @@ ///Shows guestbook tgui window -/mob/verb/guestbook() - set name = "Guestbook" - set category = "IC" - set desc = "View your character's Guestbook." +GAME_VERB_DESC(/mob, guestbook, "Guestbook", "View your character's Guestbook.", "IC") if(!mind) var/fail_message = "You have no mind!" if(isobserver(src)) diff --git a/modular_darkpack/modules/jobs/code/_departments.dm b/modular_darkpack/modules/jobs/code/_departments.dm index 323beef07c9e..55420e018485 100644 --- a/modular_darkpack/modules/jobs/code/_departments.dm +++ b/modular_darkpack/modules/jobs/code/_departments.dm @@ -1,30 +1,32 @@ -/datum/job_department/citizen - department_name = DEPARTMENT_CITIZEN - department_bitflags = DEPARTMENT_BITFLAG_CITIZEN - // Don't add department_head! citizens names should not be in bold. +/** + * Faction sorting is a little sematic but its generally + * Vampire + * Fera + * Human + * sorted then further by + * Supernatural + * Antag + * Human + */ -/// A special prince only department, for use by the preferences menu -/datum/job_department/prince - department_name = DEPARTMENT_PRINCE - department_bitflags = DEPARTMENT_BITFLAG_PRINCE - department_head = /datum/job/vampire/prince +// Kindred + +// Cammy /datum/job_department/camarilla department_name = DEPARTMENT_CAMARILLA department_bitflags = DEPARTMENT_BITFLAG_CAMARILLA department_head = /datum/job/vampire/prince department_experience_type = EXP_TYPE_CAMARILLA display_order = 1 - label_class = "camarilla" ui_color = "#6681a5" /datum/job_department/church department_name = DEPARTMENT_CHURCH department_bitflags = DEPARTMENT_BITFLAG_CHURCH - department_head = /datum/job/vampire/prince + department_head = /datum/job/vampire/primogen_lasombra department_experience_type = EXP_TYPE_CHURCH - display_order = 1 - label_class = "church" + display_order = 2 ui_color = "#8c66a5" /datum/job_department/clinic @@ -32,71 +34,41 @@ department_bitflags = DEPARTMENT_BITFLAG_CLINIC department_head = /datum/job/vampire/primogen_malkavian department_experience_type = EXP_TYPE_CLINIC - display_order = 1 - label_class = "clinic" + display_order = 3 ui_color = "#6681a5" -/datum/job_department/anarch - department_name = DEPARTMENT_ANARCH - department_bitflags = DEPARTMENT_BITFLAG_ANARCH - department_head = /datum/job/vampire/baron - department_experience_type = EXP_TYPE_ANARCH - display_order = 1 - label_class = "anarch" - ui_color = "#a56666" - -/datum/job_department/supply - department_name = DEPARTMENT_SUPPLY - department_bitflags = DEPARTMENT_BITFLAG_SUPPLY - department_head = /datum/job/vampire/dealer - department_experience_type = EXP_TYPE_WAREHOUSE - display_order = 1 - label_class = "supply" - ui_color = "#a58866" - /datum/job_department/strip_club department_name = DEPARTMENT_STRIP_CLUB department_bitflags = DEPARTMENT_BITFLAG_STRIP_CLUB department_head = /datum/job/vampire/primogen_toreador department_experience_type = EXP_TYPE_CLUB - display_order = 1 - label_class = "strip_club" + display_order = 4 ui_color = "#a566a5ff" +// Anarch +/datum/job_department/anarch + department_name = DEPARTMENT_ANARCH + department_bitflags = DEPARTMENT_BITFLAG_ANARCH + department_head = /datum/job/vampire/baron + department_experience_type = EXP_TYPE_ANARCH + display_order = 5 + ui_color = "#a56666" + +// Antuk or whatever /datum/job_department/giovanni department_name = DEPARTMENT_GIOVANNI department_bitflags = DEPARTMENT_BITFLAG_GIOVANNI department_head = /datum/job/vampire/capo department_experience_type = EXP_TYPE_GIOVANNI - display_order = 1 - label_class = "giovanni" + display_order = 6 ui_color = "#66a569ff" -/datum/job_department/police - department_name = DEPARTMENT_POLICE - department_bitflags = DEPARTMENT_BITFLAG_POLICE - department_head = /datum/job/vampire/police_captain - department_experience_type = EXP_TYPE_POLICE - display_order = 1 - label_class = "police" - ui_color = "#6a6288ff" - -/datum/job_department/sabbat - department_name = DEPARTMENT_SABBAT - department_bitflags = DEPARTMENT_BITFLAG_SABBAT - department_head = /datum/job/vampire/sabbatductus - department_experience_type = EXP_TYPE_SABBAT - display_order = 1 - label_class = "sabbat" - ui_color = "#4e4e4eff" - /datum/job_department/chantry department_name = DEPARTMENT_CHANTRY department_bitflags = DEPARTMENT_BITFLAG_CHANTRY department_head = /datum/job/vampire/regent department_experience_type = EXP_TYPE_CHANTRY - display_order = 1 - label_class = "chantry" + display_order = 7 ui_color = "#a56666ff" /datum/job_department/manor @@ -104,37 +76,72 @@ department_bitflags = DEPARTMENT_BITFLAG_MANOR department_head = /datum/job/vampire/voivode department_experience_type = EXP_TYPE_MANOR - display_order = 1 - label_class = "manor" + display_order = 8 ui_color = "#a066a5ff" -/datum/job_department/city_services - department_name = DEPARTMENT_CITY_SERVICES - department_bitflags = DEPARTMENT_BITFLAG_CITY_SERVICES +// Antag* +/datum/job_department/sabbat + department_name = DEPARTMENT_SABBAT + department_bitflags = DEPARTMENT_BITFLAG_SABBAT + department_head = /datum/job/vampire/sabbatductus + department_experience_type = EXP_TYPE_SABBAT + display_order = 9 + ui_color = "#4e4e4eff" +// Fera /datum/job_department/gaia department_name = DEPARTMENT_GAIA department_bitflags = DEPARTMENT_BITFLAG_GAIA department_head = /datum/job/vampire/councillor department_experience_type = EXP_TYPE_GAIA - display_order = 1 - label_class = "gaia" + display_order = 10 ui_color = "#b4bd64" +// Antag* /datum/job_department/pentex department_name = DEPARTMENT_PENTEX department_bitflags = DEPARTMENT_BITFLAG_PENTEX department_head = /datum/job/vampire/branch_lead department_experience_type = EXP_TYPE_SPIRAL - display_order = 1 - label_class = "pentex" + display_order = 11 ui_color = COLOR_CORP_ENDRON +/datum/job_department/supply + department_name = DEPARTMENT_SUPPLY + department_bitflags = DEPARTMENT_BITFLAG_SUPPLY + department_head = /datum/job/vampire/dealer + department_experience_type = EXP_TYPE_WAREHOUSE + display_order = 12 + ui_color = "#a58866" + +// Humans +/datum/job_department/police + department_name = DEPARTMENT_POLICE + department_bitflags = DEPARTMENT_BITFLAG_POLICE + department_head = /datum/job/vampire/police_captain + department_experience_type = EXP_TYPE_POLICE + display_order = 13 + ui_color = "#6a6288ff" + +/datum/job_department/city_services + department_name = DEPARTMENT_CITY_SERVICES + department_bitflags = DEPARTMENT_BITFLAG_CITY_SERVICES + display_order = 14 + // give its own ui color? + +// Antag* /datum/job_department/society_of_leopold department_name = DEPARTMENT_SOCIETY_OF_LEOPOLD department_bitflags = DEPARTMENT_BITFLAG_SOCIETY_OF_LEOPOLD department_head = /datum/job/vampire/abbe + // why are you reusing the church xp. department_experience_type = EXP_TYPE_CHURCH - display_order = 1 - label_class = "society" + display_order = 15 ui_color = "#fff022" + +// Bottom of the barrel +/datum/job_department/citizen + department_name = DEPARTMENT_CITIZEN + department_bitflags = DEPARTMENT_BITFLAG_CITIZEN + display_order = 16 + // Don't add department_head! citizens names should not be in bold. diff --git a/modular_darkpack/modules/jobs/code/_jobs.dm b/modular_darkpack/modules/jobs/code/_jobs.dm index 0ef1d9bb4443..3b9a46b2cd21 100644 --- a/modular_darkpack/modules/jobs/code/_jobs.dm +++ b/modular_darkpack/modules/jobs/code/_jobs.dm @@ -12,7 +12,7 @@ ///Minimum vampire Generation necessary to do this job. var/minimal_generation = HIGHEST_GENERATION_LIMIT ///Minimum Masquerade level necessary to do this job. - var/minimal_masquerade = 0 + var/minimum_masquerade = 0 /// Character must be at least this age (in years) since embrace (chronological_age - age) to join as role. var/minimum_immortal_age = 0 /// Character must not be over this age (in years) since embrace (chronological_age - age) to join as role. (Defaults null, set to desired age.) diff --git a/modular_darkpack/modules/jobs/code/anarchs/baron.dm b/modular_darkpack/modules/jobs/code/anarchs/baron.dm index ad9e055b1461..ca815fab1478 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/baron.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/baron.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/baron display_order = JOB_DISPLAY_ORDER_BARON - department_for_prefs = /datum/job_department/anarch departments_list = list( /datum/job_department/anarch, ) @@ -18,7 +17,7 @@ allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You lead the Anarchs in the City. A Camarilla faction that values freedom and individuality. While not a fan of the traditions, you still respect the Masquerade." - minimal_masquerade = 3 + minimum_masquerade = 3 /datum/outfit/job/vampire/baron name = "Baron" diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index f6a459625b9d..cf0dad0a02e1 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/bruiser display_order = JOB_DISPLAY_ORDER_BRUISER - department_for_prefs = /datum/job_department/anarch departments_list = list( /datum/job_department/anarch, ) @@ -29,7 +28,7 @@ allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Traditions - in the anarch way." - minimal_masquerade = 2 + minimum_masquerade = 2 /datum/outfit/job/vampire/bruiser name = "Bruiser" diff --git a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm index f2387584403c..d2722725efdb 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/emissary display_order = JOB_DISPLAY_ORDER_EMISSARY - department_for_prefs = /datum/job_department/anarch departments_list = list( /datum/job_department/anarch, ) @@ -18,7 +17,7 @@ allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You are a diplomat for the anarchs. Make deals, keep the peace, all through words, not violence. But the latter may come to pass if the former fails." - minimal_masquerade = 2 + minimum_masquerade = 2 /datum/outfit/job/vampire/emissary name = "emissary" diff --git a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm index bf4db7ce0b42..e2eceed65329 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/sweeper display_order = JOB_DISPLAY_ORDER_SWEEPER - department_for_prefs = /datum/job_department/anarch departments_list = list( /datum/job_department/anarch, ) @@ -18,7 +17,7 @@ allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You are the observer of the anarchs. You watch out for any new kindred, suspicious individuals, and any new rumors near the anarch turf, and then report it to your anarchs." - minimal_masquerade = 2 + minimum_masquerade = 2 /datum/outfit/job/vampire/sweeper name = "Sweeper" diff --git a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm index 942a0a345751..c8bd0dba784d 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/tapster display_order = JOB_DISPLAY_ORDER_TAPSTER - department_for_prefs = /datum/job_department/anarch departments_list = list( /datum/job_department/anarch, ) @@ -28,7 +27,7 @@ allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL) splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2) description = "You are a bartender of the local biker hangout. Serve the eclectic clients that pass through, and try not to ask too many questions." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/tapster name = "Tapster" diff --git a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm index 304562163cbb..cb4053c3e849 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm @@ -17,13 +17,12 @@ outfit = /datum/outfit/job/vampire/harpy display_order = JOB_DISPLAY_ORDER_HARPY - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 12 //Uncomment when players get exp enough - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index 06f306df194f..203a5992d562 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -16,12 +16,11 @@ outfit = /datum/outfit/job/vampire/hound display_order = JOB_DISPLAY_ORDER_HOUND - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) - minimal_masquerade = 3 + minimum_masquerade = 3 allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm index f183f410efcf..4816a28c0b25 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm @@ -17,14 +17,13 @@ outfit = /datum/outfit/job/vampire/banuprim display_order = JOB_DISPLAY_ORDER_BANU - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 12 minimum_immortal_age = 50 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm index 53a4ca093ca8..d5090b7b1ad3 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm @@ -17,15 +17,14 @@ outfit = /datum/outfit/job/vampire/lasombraprim display_order = JOB_DISPLAY_ORDER_LASOMBRA - department_for_prefs = /datum/job_department/camarilla departments_list = list( - /datum/job_department/camarilla, /datum/job_department/church, + /datum/job_department/camarilla, ) minimal_generation = 12 minimum_immortal_age = 50 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_LASOMBRA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm index aa3e5e18cad1..174c2c996329 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm @@ -17,15 +17,14 @@ outfit = /datum/outfit/job/vampire/malkav display_order = JOB_DISPLAY_ORDER_MALKAVIAN - department_for_prefs = /datum/job_department/camarilla departments_list = list( - /datum/job_department/camarilla, /datum/job_department/clinic, + /datum/job_department/camarilla, ) minimal_generation = 12 minimum_immortal_age = 5 // Actually Malkavian Primo is whoever showed for work that day. Crazy bunch. - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm index d00204daa570..9f5d30d84860 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm @@ -17,7 +17,6 @@ outfit = /datum/outfit/job/vampire/nosferatu display_order = JOB_DISPLAY_ORDER_NOSFERATU - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, /datum/job_department/city_services @@ -25,7 +24,7 @@ minimal_generation = 12 minimum_immortal_age = 15 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_NOSFERATU) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm index 5449b28f3e1a..b9ccff0ea6e2 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm @@ -17,15 +17,14 @@ outfit = /datum/outfit/job/vampire/toreador display_order = JOB_DISPLAY_ORDER_TOREADOR - department_for_prefs = /datum/job_department/camarilla departments_list = list( - /datum/job_department/camarilla, /datum/job_department/strip_club, + /datum/job_department/camarilla, ) minimal_generation = 12 minimum_immortal_age = 50 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TOREADOR) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm index 8e76e5182a4d..2a4ae75592e8 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm @@ -17,14 +17,13 @@ outfit = /datum/outfit/job/vampire/ventrue display_order = JOB_DISPLAY_ORDER_VENTRUE - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 12 minimum_immortal_age = 50 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_VENTRUE) diff --git a/modular_darkpack/modules/jobs/code/camarilla/prince.dm b/modular_darkpack/modules/jobs/code/camarilla/prince.dm index 8aa3c468e128..e86b3edde072 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/prince.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/prince.dm @@ -17,14 +17,13 @@ outfit = /datum/outfit/job/vampire/prince display_order = JOB_DISPLAY_ORDER_PRINCE - department_for_prefs = /datum/job_department/prince departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 10 minimum_immortal_age = 75 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) diff --git a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm index ac1d8d33f2d8..b4d93e481a52 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm @@ -17,13 +17,12 @@ outfit = /datum/outfit/job/vampire/clerk display_order = JOB_DISPLAY_ORDER_CLERK - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 12 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD) diff --git a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm index f4fe96127eb5..ad4bd4741b58 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm @@ -17,13 +17,12 @@ outfit = /datum/outfit/job/vampire/sheriff display_order = JOB_DISPLAY_ORDER_SHERIFF - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) minimal_generation = 12 - minimal_masquerade = 5 + minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index a0bc69b9c7cf..033b4c42a85c 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/towerwork job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_TOWERWORK - department_for_prefs = /datum/job_department/camarilla departments_list = list( /datum/job_department/camarilla, ) @@ -27,7 +26,7 @@ allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) description = "You work directly for the Millenium Tower and its administrative staff in a variety of ways, you may even be a personal retainer of one of the top three, to the point that any oddities that you may see over night or hear are either things you are already aware or you simply laugh them off and try not to think about it." - minimal_masquerade = 4 + minimum_masquerade = 4 /datum/outfit/job/vampire/towerwork name = "Tower Employee" diff --git a/modular_darkpack/modules/jobs/code/clinic/director.dm b/modular_darkpack/modules/jobs/code/clinic/director.dm index f3f808c8dfac..4229413981c9 100644 --- a/modular_darkpack/modules/jobs/code/clinic/director.dm +++ b/modular_darkpack/modules/jobs/code/clinic/director.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/clinic_director job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_CLINICS_DIRECTOR - department_for_prefs = /datum/job_department/clinic departments_list = list( /datum/job_department/clinic, ) diff --git a/modular_darkpack/modules/jobs/code/clinic/doctor.dm b/modular_darkpack/modules/jobs/code/clinic/doctor.dm index a97df424953a..85a14831b9f9 100644 --- a/modular_darkpack/modules/jobs/code/clinic/doctor.dm +++ b/modular_darkpack/modules/jobs/code/clinic/doctor.dm @@ -10,7 +10,6 @@ outfit = /datum/outfit/job/vampire/clinic_doctor display_order = JOB_DISPLAY_ORDER_DOCTOR - department_for_prefs = /datum/job_department/clinic departments_list = list( /datum/job_department/clinic, ) diff --git a/modular_darkpack/modules/jobs/code/garou/councillor.dm b/modular_darkpack/modules/jobs/code/garou/councillor.dm index 976372ccf28c..9bfc9dea083f 100644 --- a/modular_darkpack/modules/jobs/code/garou/councillor.dm +++ b/modular_darkpack/modules/jobs/code/garou/councillor.dm @@ -20,7 +20,6 @@ allowed_tribes = TRIBE_LIST_GAIA display_order = JOB_DISPLAY_ORDER_COUNCIL - department_for_prefs = /datum/job_department/gaia departments_list = list( /datum/job_department/gaia, ) diff --git a/modular_darkpack/modules/jobs/code/garou/guardian.dm b/modular_darkpack/modules/jobs/code/garou/guardian.dm index 464107009dd8..23b2d8c18175 100644 --- a/modular_darkpack/modules/jobs/code/garou/guardian.dm +++ b/modular_darkpack/modules/jobs/code/garou/guardian.dm @@ -20,7 +20,6 @@ allowed_tribes = TRIBE_LIST_GAIA display_order = JOB_DISPLAY_ORDER_GUARDIAN - department_for_prefs = /datum/job_department/gaia departments_list = list( /datum/job_department/gaia, ) diff --git a/modular_darkpack/modules/jobs/code/garou/truthcatcher.dm b/modular_darkpack/modules/jobs/code/garou/truthcatcher.dm index 65c4b9dfb0b0..c0f610d7e326 100644 --- a/modular_darkpack/modules/jobs/code/garou/truthcatcher.dm +++ b/modular_darkpack/modules/jobs/code/garou/truthcatcher.dm @@ -21,7 +21,6 @@ allowed_auspice = list(AUSPICE_PHILODOX) display_order = JOB_DISPLAY_ORDER_TRUTHCATCHER - department_for_prefs = /datum/job_department/gaia departments_list = list( /datum/job_department/gaia, ) diff --git a/modular_darkpack/modules/jobs/code/garou/warder.dm b/modular_darkpack/modules/jobs/code/garou/warder.dm index ce3662b1bca4..5d991a16154f 100644 --- a/modular_darkpack/modules/jobs/code/garou/warder.dm +++ b/modular_darkpack/modules/jobs/code/garou/warder.dm @@ -21,7 +21,6 @@ allowed_auspice = list(AUSPICE_AHROUN) display_order = JOB_DISPLAY_ORDER_WARDER - department_for_prefs = /datum/job_department/gaia departments_list = list( /datum/job_department/gaia, ) diff --git a/modular_darkpack/modules/jobs/code/garou/wyrmfoe.dm b/modular_darkpack/modules/jobs/code/garou/wyrmfoe.dm index 0424c932a150..30091dc9cb7d 100644 --- a/modular_darkpack/modules/jobs/code/garou/wyrmfoe.dm +++ b/modular_darkpack/modules/jobs/code/garou/wyrmfoe.dm @@ -20,7 +20,6 @@ allowed_tribes = TRIBE_LIST_GAIA display_order = JOB_DISPLAY_ORDER_WYRMFOE - department_for_prefs = /datum/job_department/gaia departments_list = list( /datum/job_department/gaia, ) diff --git a/modular_darkpack/modules/jobs/code/giovanni/capo.dm b/modular_darkpack/modules/jobs/code/giovanni/capo.dm index 04c235cf13aa..589e2881f17d 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/capo.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/capo.dm @@ -7,15 +7,14 @@ config_tag = "CAPO" outfit = /datum/outfit/job/vampire/capo job_flags = CITY_JOB_FLAGS - display_order = JOB_DISPLAY_ORDER_GIOVANNI + display_order = 1 exp_required_type_department = EXP_TYPE_GIOVANNI - department_for_prefs = /datum/job_department/giovanni departments_list = list( /datum/job_department/giovanni, ) description = "Pure blood runs through your veins and, with it, old power. Throughout your long life you have learnt to hold onto two things and never let go: money, and family." - minimal_masquerade = 0 + minimum_masquerade = 0 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_GIOVANNI) @@ -29,7 +28,7 @@ shoes = /obj/item/clothing/shoes/vampire l_pocket = /obj/item/smartphone/giovanni_capo r_pocket = /obj/item/vamp/keys/capo - backpack_contents = list(/obj/item/card/credit/giovanniboss=1, /obj/item/ritual_tome/necromancy=1) + backpack_contents = list(/obj/item/card/credit/giovanniboss=1, /obj/item/ritual_tome/necromancy=1, /obj/item/vamp/keys/graveyard = 1) /datum/memory/key/bank_vault_code var/remembered_code diff --git a/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm b/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm index c700f65802f7..cad54bdf5ec3 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm @@ -7,9 +7,8 @@ config_tag = "LA_FAMIGLIA" outfit = /datum/outfit/job/vampire/famiglia job_flags = CITY_JOB_FLAGS - display_order = JOB_DISPLAY_ORDER_GIOVANNI + display_order = 2 exp_required_type_department = EXP_TYPE_GIOVANNI - department_for_prefs = /datum/job_department/giovanni departments_list = list( /datum/job_department/giovanni, ) @@ -17,7 +16,7 @@ allowed_splats = list(SPLAT_GHOUL, SPLAT_NONE, SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_CAITIFF) description = "Your family is a strange one. Maybe you are strange too, because sitting next to your great uncles as an equal is something you are greatly interested in." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/famiglia name = "La Famiglia" diff --git a/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm b/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm index 8a3fd7223806..7c8343e08c7e 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm @@ -7,15 +7,14 @@ config_tag = "LA_SQUADRA" outfit = /datum/outfit/job/vampire/squadra job_flags = CITY_JOB_FLAGS - display_order = JOB_DISPLAY_ORDER_GIOVANNI + display_order = 3 exp_required_type_department = EXP_TYPE_GIOVANNI - department_for_prefs = /datum/job_department/giovanni departments_list = list( /datum/job_department/giovanni, ) description = "Whether born or Embraced into the family, you are one of the Giovanni. Be you a necromancer, financier or lowly fledgling, remember that so long as you stand with your family, they too will stand with you." - minimal_masquerade = 0 + minimum_masquerade = 0 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_GIOVANNI) @@ -29,7 +28,7 @@ shoes = /obj/item/clothing/shoes/vampire l_pocket = /obj/item/smartphone/giovanni_squadra r_pocket = /obj/item/vamp/keys/giovanni - backpack_contents = list(/obj/item/card/credit/rich=1, /obj/item/ritual_tome/necromancy=1) + backpack_contents = list(/obj/item/card/credit/rich=1, /obj/item/ritual_tome/necromancy=1, /obj/item/vamp/keys/graveyard = 1) /datum/job/vampire/squadra/after_spawn(mob/living/spawned, client/player_client) diff --git a/modular_darkpack/modules/jobs/code/hunters/abbe.dm b/modular_darkpack/modules/jobs/code/hunters/abbe.dm index 52ee3a11bd5b..508fbbe275c2 100644 --- a/modular_darkpack/modules/jobs/code/hunters/abbe.dm +++ b/modular_darkpack/modules/jobs/code/hunters/abbe.dm @@ -12,7 +12,6 @@ outfit = /datum/outfit/job/vampire/abbe display_order = JOB_DISPLAY_ORDER_ABBE - department_for_prefs = /datum/job_department/society_of_leopold departments_list = list( /datum/job_department/society_of_leopold, ) diff --git a/modular_darkpack/modules/jobs/code/hunters/condottieri.dm b/modular_darkpack/modules/jobs/code/hunters/condottieri.dm index 5bafb5d99c3c..ce5f1b242761 100644 --- a/modular_darkpack/modules/jobs/code/hunters/condottieri.dm +++ b/modular_darkpack/modules/jobs/code/hunters/condottieri.dm @@ -13,7 +13,6 @@ outfit = /datum/outfit/job/vampire/condottieri display_order = JOB_DISPLAY_ORDER_CONDOTTIERI - department_for_prefs = /datum/job_department/society_of_leopold departments_list = list( /datum/job_department/society_of_leopold, ) diff --git a/modular_darkpack/modules/jobs/code/hunters/inquisitor.dm b/modular_darkpack/modules/jobs/code/hunters/inquisitor.dm index 093d4a29182a..33d1b3796fe2 100644 --- a/modular_darkpack/modules/jobs/code/hunters/inquisitor.dm +++ b/modular_darkpack/modules/jobs/code/hunters/inquisitor.dm @@ -12,7 +12,6 @@ outfit = /datum/outfit/job/vampire/inquisitor display_order = JOB_DISPLAY_ORDER_INQUISITOR - department_for_prefs = /datum/job_department/society_of_leopold departments_list = list( /datum/job_department/society_of_leopold, ) diff --git a/modular_darkpack/modules/jobs/code/hunters/novice.dm b/modular_darkpack/modules/jobs/code/hunters/novice.dm index 624363a2836f..598045ed4589 100644 --- a/modular_darkpack/modules/jobs/code/hunters/novice.dm +++ b/modular_darkpack/modules/jobs/code/hunters/novice.dm @@ -12,7 +12,6 @@ outfit = /datum/outfit/job/vampire/novice display_order = JOB_DISPLAY_ORDER_NOVICE - department_for_prefs = /datum/job_department/society_of_leopold departments_list = list( /datum/job_department/society_of_leopold, ) diff --git a/modular_darkpack/modules/jobs/code/landmarks.dm b/modular_darkpack/modules/jobs/code/landmarks.dm index 7bb104aca0c2..f82e5fb33ec2 100644 --- a/modular_darkpack/modules/jobs/code/landmarks.dm +++ b/modular_darkpack/modules/jobs/code/landmarks.dm @@ -19,13 +19,6 @@ JOB_START_HELPER(anarch/emissary, JOB_EMISSARY) JOB_START_HELPER(anarch/sweeper, JOB_SWEEPER) JOB_START_HELPER(anarch/tapster, JOB_TAPSTER) -/* Axe Gang */ -/obj/effect/landmark/start/darkpack/axe - name = "generic axe gang start" - -JOB_START_HELPER(axe/leader, JOB_AXE_LEADER) -JOB_START_HELPER(axe/gang, JOB_AXE_GANG) - /* Supply */ /obj/effect/landmark/start/darkpack/axe name = "generic warehouse start" @@ -91,7 +84,6 @@ JOB_START_HELPER(citizen/club_worker, JOB_CLUB_WORKER) JOB_START_HELPER(citizen/janitor, JOB_STREET_JANITOR) JOB_START_HELPER(citizen/priest, JOB_PRIEST) JOB_START_HELPER(citizen/taxi, JOB_TAXI_DRIVER) -JOB_START_HELPER(citizen/graveyardkeeper, JOB_GRAVEYARD_KEEPER) /* Sabbat */ /obj/effect/landmark/start/darkpack/sabbat diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/citizen.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/citizen.dm index e0de5018e35b..8e3fee6fc8a3 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/citizen.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/citizen.dm @@ -8,9 +8,11 @@ exp_granted_type = EXP_TYPE_KINDRED config_tag = "CITIZEN" display_order = JOB_DISPLAY_ORDER_CITIZEN - department_for_prefs = /datum/job_department/citizen + departments_list = list( + /datum/job_department/citizen + ) job_flags = CITY_JOB_FLAGS - minimal_masquerade = 0 + minimum_masquerade = 0 alt_titles = list( "Citizen", "Private Investigator", diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm index 60bd7199fb67..ab47ee9cc53c 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm @@ -9,7 +9,6 @@ config_tag = "CLUB_WORKER" display_order = JOB_DISPLAY_ORDER_STRIP exp_required_type_department = EXP_TYPE_CLUB - department_for_prefs = /datum/job_department/strip_club departments_list = list( /datum/job_department/strip_club ) @@ -25,7 +24,7 @@ allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE) description = "Offer strip club services. Some of your clientele may be... Unusual, but you are either addicted to vampire bites, or bribed to listen little and say even less." - minimal_masquerade = 3 + minimum_masquerade = 3 /datum/outfit/job/vampire/club_worker name = "Stripper" diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/graveyard_keeper.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/graveyard_keeper.dm deleted file mode 100644 index f2ea5d880dff..000000000000 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/graveyard_keeper.dm +++ /dev/null @@ -1,39 +0,0 @@ -/datum/job/vampire/graveyard - title = JOB_GRAVEYARD_KEEPER - faction = FACTION_CITY - total_positions = 6 - spawn_positions = 6 - supervisors = "the Camarilla or the Anarchs" - exp_required_type_department = EXP_TYPE_SERVICES - config_tag = "GRAVEYARD_KEEPER" - outfit = /datum/outfit/job/vampire/graveyard - job_flags = CITY_JOB_FLAGS - display_order = JOB_DISPLAY_ORDER_GRAVEYARD - department_for_prefs = /datum/job_department/city_services - departments_list = list( - /datum/job_department/city_services, - ) - description = "A vile curse has gripped the dead of this city. You must keep the graveyard clean and the Masquerade intact." - minimal_masquerade = 0 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) - -/datum/outfit/job/vampire/graveyard - name = "Graveyard Keeper" - jobtype = /datum/job/vampire/graveyard - - id = /obj/item/card/graveyard - shoes = /obj/item/clothing/shoes/vampire/jackboots - gloves = /obj/item/clothing/gloves/color/black - uniform = /obj/item/clothing/under/vampire/graveyard - suit = /obj/item/clothing/suit/vampire/trench - glasses = /obj/item/clothing/glasses/vampire/yellow - gloves = /obj/item/clothing/gloves/vampire/work - l_pocket = /obj/item/smartphone - r_pocket = /obj/item/vamp/keys/graveyard - r_hand = /obj/item/shovel/vamp - belt = /obj/item/scythe/vamp - backpack_contents = list(/obj/item/card/credit=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/janitor.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/janitor.dm index 0898c068df8f..82dcb43dee6e 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/janitor.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/janitor.dm @@ -7,13 +7,12 @@ config_tag = "JANITOR" outfit = /datum/outfit/job/vampire/janitor job_flags = CITY_JOB_FLAGS - department_for_prefs = /datum/job_department/city_services departments_list = list( /datum/job_department/city_services, ) display_order = JOB_DISPLAY_ORDER_STREETJAN description = "Keep the streets clean. You are paid to keep your mouth shut about the things you see." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/janitor name = "Street Janitor" diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm index e5d2967c4f7e..a5eeb52a6c8d 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm @@ -9,7 +9,6 @@ job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_PRIEST exp_required_type_department = EXP_TYPE_CHURCH - department_for_prefs = /datum/job_department/church departments_list = list( /datum/job_department/church, ) diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/taxi.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/taxi.dm index ec6bab7df9f8..4b85f3563910 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/taxi.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/taxi.dm @@ -9,13 +9,12 @@ config_tag = "TAXI_DRIVER" display_order = JOB_DISPLAY_ORDER_TAXI exp_required_type_department = EXP_TYPE_SERVICES - department_for_prefs = /datum/job_department/city_services departments_list = list( /datum/job_department/city_services, ) description = "Drive people in the city." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/taxi name = "Taxi Driver" diff --git a/modular_darkpack/modules/jobs/code/pentex/affairs.dm b/modular_darkpack/modules/jobs/code/pentex/affairs.dm index 95e727c35109..eb7cbfb4dffc 100644 --- a/modular_darkpack/modules/jobs/code/pentex/affairs.dm +++ b/modular_darkpack/modules/jobs/code/pentex/affairs.dm @@ -17,12 +17,11 @@ outfit = /datum/outfit/job/vampire/affairs allowed_splats = list(SPLAT_GAROU) - minimal_masquerade = 5 + minimum_masquerade = 5 // minimal_renown_rank = 3 allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) display_order = JOB_DISPLAY_ORDER_AFFAIRS - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/pentex/branch_lead.dm b/modular_darkpack/modules/jobs/code/pentex/branch_lead.dm index c2f73d53cfd7..7a56cc10c5c8 100644 --- a/modular_darkpack/modules/jobs/code/pentex/branch_lead.dm +++ b/modular_darkpack/modules/jobs/code/pentex/branch_lead.dm @@ -23,12 +23,11 @@ "Endron Operations Director" ) - minimal_masquerade = 5 + minimum_masquerade = 5 // minimal_renown_rank = 4 allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) display_order = JOB_DISPLAY_ORDER_BRANCH_LEAD - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/pentex/employee.dm b/modular_darkpack/modules/jobs/code/pentex/employee.dm index f588b1369558..d5640e0e6a67 100644 --- a/modular_darkpack/modules/jobs/code/pentex/employee.dm +++ b/modular_darkpack/modules/jobs/code/pentex/employee.dm @@ -25,10 +25,9 @@ ) allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) - minimal_masquerade = 3 + minimum_masquerade = 3 display_order = JOB_DISPLAY_ORDER_EMPLOYEE - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/pentex/executive.dm b/modular_darkpack/modules/jobs/code/pentex/executive.dm index 17ea59a3265a..6f4cfc3bdca8 100644 --- a/modular_darkpack/modules/jobs/code/pentex/executive.dm +++ b/modular_darkpack/modules/jobs/code/pentex/executive.dm @@ -29,12 +29,11 @@ ) allowed_splats = list(SPLAT_GAROU, SPLAT_KINDRED) - minimal_masquerade = 4 + minimum_masquerade = 4 // minimal_renown_rank = 3 allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) display_order = JOB_DISPLAY_ORDER_EXECUTIVE - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/pentex/sec.dm b/modular_darkpack/modules/jobs/code/pentex/sec.dm index 86b6cf3a3925..ac8318a934b7 100644 --- a/modular_darkpack/modules/jobs/code/pentex/sec.dm +++ b/modular_darkpack/modules/jobs/code/pentex/sec.dm @@ -17,10 +17,9 @@ outfit = /datum/outfit/job/vampire/pentex_sec allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) - minimal_masquerade = 3 + minimum_masquerade = 3 display_order = JOB_DISPLAY_ORDER_PENTEX_SEC - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/pentex/secchief.dm b/modular_darkpack/modules/jobs/code/pentex/secchief.dm index d5d740e9ee29..fa07dde36ab6 100644 --- a/modular_darkpack/modules/jobs/code/pentex/secchief.dm +++ b/modular_darkpack/modules/jobs/code/pentex/secchief.dm @@ -17,12 +17,11 @@ outfit = /datum/outfit/job/vampire/secchief allowed_splats = list(SPLAT_GAROU, SPLAT_KINDRED) - minimal_masquerade = 4 + minimum_masquerade = 4 // minimal_renown_rank = 3 allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_RONIN) display_order = JOB_DISPLAY_ORDER_SECCHIEF - department_for_prefs = /datum/job_department/pentex departments_list = list( /datum/job_department/pentex, ) diff --git a/modular_darkpack/modules/jobs/code/police/captain.dm b/modular_darkpack/modules/jobs/code/police/captain.dm index 1afe4a06000f..f3a4db76409b 100644 --- a/modular_darkpack/modules/jobs/code/police/captain.dm +++ b/modular_darkpack/modules/jobs/code/police/captain.dm @@ -9,7 +9,6 @@ job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_POLICE_CAPTAIN exp_required_type_department = EXP_TYPE_POLICE - department_for_prefs = /datum/job_department/police departments_list = list( /datum/job_department/police, ) @@ -17,7 +16,7 @@ allowed_splats = list(SPLAT_NONE) description = "Underpaid, overworked, and understrength. Do your best to keep the order in " + CITY_NAME + ". Keep the officers in line." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/police_captain name = "Police Captain" diff --git a/modular_darkpack/modules/jobs/code/police/dispatcher.dm b/modular_darkpack/modules/jobs/code/police/dispatcher.dm index acb7beffbd85..822a5b67cc21 100644 --- a/modular_darkpack/modules/jobs/code/police/dispatcher.dm +++ b/modular_darkpack/modules/jobs/code/police/dispatcher.dm @@ -7,9 +7,8 @@ config_tag = "DISPATCHER" outfit = /datum/outfit/job/vampire/dispatcher job_flags = CITY_JOB_FLAGS - display_order = JOB_DISPLAY_ORDER_POLICE + display_order = JOB_DISPLAY_ORDER_DISPATCHER exp_required_type_department = EXP_TYPE_POLICE - department_for_prefs = /datum/job_department/police departments_list = list( /datum/job_department/police, /datum/job_department/clinic, @@ -19,7 +18,7 @@ splat_slots = list(SPLAT_GHOUL = 1, SPLAT_KINFOLK = 1) description = "Report emergencies to the correct emergency service." - minimal_masquerade = 0 + minimum_masquerade = 0 known_contacts = list("Police Captain") /datum/outfit/job/vampire/dispatcher diff --git a/modular_darkpack/modules/jobs/code/police/fbi.dm b/modular_darkpack/modules/jobs/code/police/fbi.dm index 32e67b90eb1a..75b247a8b663 100644 --- a/modular_darkpack/modules/jobs/code/police/fbi.dm +++ b/modular_darkpack/modules/jobs/code/police/fbi.dm @@ -9,14 +9,13 @@ job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_FBI exp_required_type_department = EXP_TYPE_NATIONAL_SECURITY - department_for_prefs = /datum/job_department/police departments_list = list( /datum/job_department/police, ) allowed_splats = list(SPLAT_NONE) description = "Enforce the Law." - minimal_masquerade = 0 + minimum_masquerade = 0 known_contacts = list("Police Captain") diff --git a/modular_darkpack/modules/jobs/code/police/police.dm b/modular_darkpack/modules/jobs/code/police/police.dm index 0f18041078e8..11e2fb127123 100644 --- a/modular_darkpack/modules/jobs/code/police/police.dm +++ b/modular_darkpack/modules/jobs/code/police/police.dm @@ -9,7 +9,6 @@ job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_POLICE exp_required_type_department = EXP_TYPE_POLICE - department_for_prefs = /datum/job_department/police departments_list = list( /datum/job_department/police, ) @@ -24,7 +23,7 @@ splat_slots = list(SPLAT_GHOUL = 2, SPLAT_KINFOLK = 2) description = "Enforce the Law." - minimal_masquerade = 0 + minimum_masquerade = 0 known_contacts = list("Police Captain") diff --git a/modular_darkpack/modules/jobs/code/police/sergeant.dm b/modular_darkpack/modules/jobs/code/police/sergeant.dm index 4d11de25b9a2..f88bb12b754a 100644 --- a/modular_darkpack/modules/jobs/code/police/sergeant.dm +++ b/modular_darkpack/modules/jobs/code/police/sergeant.dm @@ -9,7 +9,6 @@ job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_POLICE_SERGEANT exp_required_type_department = EXP_TYPE_POLICE - department_for_prefs = /datum/job_department/police departments_list = list( /datum/job_department/police, ) @@ -24,7 +23,7 @@ allowed_splats = list(SPLAT_GHOUL, SPLAT_NONE) description = "Enforce the law. Keep the officers in line. Follow what the Captain says." - minimal_masquerade = 0 + minimum_masquerade = 0 known_contacts = list("Police Captain") diff --git a/modular_darkpack/modules/jobs/code/sabbat/ductus.dm b/modular_darkpack/modules/jobs/code/sabbat/ductus.dm index 510f4f10c5fe..54320a1261a2 100644 --- a/modular_darkpack/modules/jobs/code/sabbat/ductus.dm +++ b/modular_darkpack/modules/jobs/code/sabbat/ductus.dm @@ -9,12 +9,11 @@ allowed_splats = list(SPLAT_KINDRED) job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_SABBAT - department_for_prefs = /datum/job_department/sabbat departments_list = list( /datum/job_department/sabbat, ) description = "You are a Ductus and Pack Leader of your Sabbat pack. You are charged with rebellion against the Elders and the Camarilla, against the Jyhad, against the Masquerade and the Traditions, and the recognition of Caine as the true Dark Father of all Kindred kind. NOTE: BY PLAYING THIS ROLE YOU AGREE TO AND HAVE READ THE SERVER'S RULES ON ESCALATION FOR ANTAGS. KEEP THINGS INTERESTING AND ENGAGING FOR BOTH SIDES. KILLING PLAYERS JUST BECAUSE YOU CAN MAY RESULT IN A ROLEBAN." - minimal_masquerade = 0 + minimum_masquerade = 0 display_order = JOB_DISPLAY_ORDER_SABBATDUCTUS whitelisted = TRUE diff --git a/modular_darkpack/modules/jobs/code/sabbat/pack.dm b/modular_darkpack/modules/jobs/code/sabbat/pack.dm index 86b3fa345637..31a647b54c1b 100644 --- a/modular_darkpack/modules/jobs/code/sabbat/pack.dm +++ b/modular_darkpack/modules/jobs/code/sabbat/pack.dm @@ -9,13 +9,12 @@ job_flags = CITY_JOB_FLAGS allowed_splats = list(SPLAT_KINDRED) exp_required_type_department = EXP_TYPE_SABBAT - department_for_prefs = /datum/job_department/sabbat departments_list = list( /datum/job_department/sabbat, ) description = "You are a member of the Sabbat. You are charged with rebellion against the Elders and the Camarilla, against the Jyhad, against the Masquerade and the Traditions, and the recognition of Caine as the true Dark Father of all Kindred kind. NOTE: BY PLAYING THIS ROLE YOU AGREE TO AND HAVE READ THE SERVER'S RULES ON ESCALATION FOR ANTAGS. KEEP THINGS INTERESTING AND ENGAGING FOR BOTH SIDES. KILLING PLAYERS JUST BECAUSE YOU CAN MAY RESULT IN A ROLEBAN." - minimal_masquerade = 0 + minimum_masquerade = 0 display_order = JOB_DISPLAY_ORDER_SABBATPACK whitelisted = TRUE diff --git a/modular_darkpack/modules/jobs/code/sabbat/priest.dm b/modular_darkpack/modules/jobs/code/sabbat/priest.dm index c6c070bd476e..208b076c0927 100644 --- a/modular_darkpack/modules/jobs/code/sabbat/priest.dm +++ b/modular_darkpack/modules/jobs/code/sabbat/priest.dm @@ -9,13 +9,12 @@ allowed_splats = list(SPLAT_KINDRED) job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_SABBAT - department_for_prefs = /datum/job_department/sabbat departments_list = list( /datum/job_department/sabbat, ) description = "You are the Sabbat Priest. You are charged with the supervision of the ritae of your pack. You also serve as the second-in-command to the Ductus. Consecrate the Vaulderie for new Sabbat, consult your tome for rites to aid your pack, and ensure the Sabbat live on in Caine's favor. NOTE: BY PLAYING THIS ROLE YOU AGREE TO AND HAVE READ THE SERVER'S RULES ON ESCALATION FOR ANTAGS. KEEP THINGS INTERESTING AND ENGAGING FOR BOTH SIDES. KILLING PLAYERS JUST BECAUSE YOU CAN MAY RESULT IN A ROLEBAN." - minimal_masquerade = 0 + minimum_masquerade = 0 display_order = JOB_DISPLAY_ORDER_SABBATPRIEST whitelisted = TRUE diff --git a/modular_darkpack/modules/jobs/code/supply/dealer.dm b/modular_darkpack/modules/jobs/code/supply/dealer.dm index 3b1367da37fa..66bf314be100 100644 --- a/modular_darkpack/modules/jobs/code/supply/dealer.dm +++ b/modular_darkpack/modules/jobs/code/supply/dealer.dm @@ -10,7 +10,6 @@ display_order = JOB_DISPLAY_ORDER_DEALER exp_required_type_department = EXP_TYPE_WAREHOUSE - department_for_prefs = /datum/job_department/supply departments_list = list( /datum/job_department/supply, ) @@ -19,7 +18,7 @@ allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_GAROU, SPLAT_NONE) splat_slots = list(SPLAT_NONE = 1) description = "You provide both legal and illegal supplies to those that get busy during the night. You are your own person yet you know people are out for you. Time to buckle in..." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/dealer name = "Dealer" diff --git a/modular_darkpack/modules/jobs/code/supply/supply_tech.dm b/modular_darkpack/modules/jobs/code/supply/supply_tech.dm index 700ea4d8b77d..9b3785d86209 100644 --- a/modular_darkpack/modules/jobs/code/supply/supply_tech.dm +++ b/modular_darkpack/modules/jobs/code/supply/supply_tech.dm @@ -10,14 +10,13 @@ display_order = JOB_DISPLAY_ORDER_SUPPLY exp_required_type_department = EXP_TYPE_WAREHOUSE - department_for_prefs = /datum/job_department/supply departments_list = list( /datum/job_department/supply, ) description = "You work at the warehouse, moving boxes and selling not-quite legal goods to anyone who has the money." - minimal_masquerade = 0 + minimum_masquerade = 0 /datum/outfit/job/vampire/supply_tech name = "Supply Technician" diff --git a/modular_darkpack/modules/jobs/code/tremere/archivist.dm b/modular_darkpack/modules/jobs/code/tremere/archivist.dm index cbabd92d415c..206e8da85768 100644 --- a/modular_darkpack/modules/jobs/code/tremere/archivist.dm +++ b/modular_darkpack/modules/jobs/code/tremere/archivist.dm @@ -8,14 +8,13 @@ outfit = /datum/outfit/job/vampire/archivist job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_CHANTRY - department_for_prefs = /datum/job_department/chantry departments_list = list( /datum/job_department/chantry, ) display_order = JOB_DISPLAY_ORDER_ARCHIVIST description = "Keep a census of events and provide information to neonates. Listen to the Regent Carefully. Study blood magic and protect the chantry." - minimal_masquerade = 3 + minimum_masquerade = 3 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TREMERE) known_contacts = list("Tremere Regent") diff --git a/modular_darkpack/modules/jobs/code/tremere/gargoyle.dm b/modular_darkpack/modules/jobs/code/tremere/gargoyle.dm index 1c9358248927..76bd71d692cd 100644 --- a/modular_darkpack/modules/jobs/code/tremere/gargoyle.dm +++ b/modular_darkpack/modules/jobs/code/tremere/gargoyle.dm @@ -8,14 +8,13 @@ outfit = /datum/outfit/job/vampire/gargoyle job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_CHANTRY - department_for_prefs = /datum/job_department/chantry departments_list = list( /datum/job_department/chantry, ) display_order = JOB_DISPLAY_ORDER_GARGOYLE description = "You serve the local Chantry as either a guard dog, enforcer, or scout, a shock troop for the Mages of Clan Tremere. You serve the Tremere still, despise most of your kind being freed long ago, whether thats out of duty, mental enslavement, or having nowhere else to go. Among your Masters you are a second class citizen - yet you remain. Guard the Chantry and the Masters as your people always have." - minimal_masquerade = 3 + minimum_masquerade = 3 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_GARGOYLE) known_contacts = list("Tremere Regent") diff --git a/modular_darkpack/modules/jobs/code/tremere/regent.dm b/modular_darkpack/modules/jobs/code/tremere/regent.dm index 711fc9809a4a..199672b1d445 100644 --- a/modular_darkpack/modules/jobs/code/tremere/regent.dm +++ b/modular_darkpack/modules/jobs/code/tremere/regent.dm @@ -8,14 +8,13 @@ outfit = /datum/outfit/job/vampire/regent job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_CHANTRY - department_for_prefs = /datum/job_department/chantry departments_list = list( /datum/job_department/chantry, ) display_order = JOB_DISPLAY_ORDER_REGENT description = "Lead the Chantry. You serve as both the Regent and Tremere Primogen. You report to the Tremere Lord of this region first, Prince second." - minimal_masquerade = 4 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TREMERE) diff --git a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm index 580828b43968..aaefca1e7fd8 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm @@ -9,7 +9,6 @@ outfit = /datum/outfit/job/vampire/bogatyr job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_MANOR - department_for_prefs = /datum/job_department/manor departments_list = list( /datum/job_department/manor, ) @@ -19,7 +18,7 @@ allowed_clans = list(VAMPIRE_CLAN_TZIMISCE) description = "Whether you are of Voivode-in-Waiting's blood or if you've been honored, you are one of the Kin of the Voivode. Protect your Family, as your Family would protect you." - minimal_masquerade = 2 + minimum_masquerade = 2 known_contacts = list("Prince", "Baron", "Sheriff") diff --git a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm index 27402ed33a77..04e23fc24691 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm @@ -8,7 +8,6 @@ outfit = /datum/outfit/job/vampire/voivode job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_MANOR - department_for_prefs = /datum/job_department/manor departments_list = list( /datum/job_department/manor, ) @@ -18,7 +17,7 @@ allowed_clans = list(VAMPIRE_CLAN_TZIMISCE) description = "You are a Childe of the Voivode-in-Waiting, the ancient Tzimisce Elder who has rested beneath the Earth for an age longer than the city that now rests on their bones. Honor them in all your actions, and remember that you walk with their favor." - minimal_masquerade = 2 + minimum_masquerade = 2 known_contacts = list("Prince", "Baron", "Sheriff") diff --git a/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm b/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm index 97c768db2384..800ebfe43bc2 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm @@ -8,7 +8,6 @@ outfit = /datum/outfit/job/vampire/zadruga job_flags = CITY_JOB_FLAGS exp_required_type_department = EXP_TYPE_MANOR - department_for_prefs = /datum/job_department/manor departments_list = list( /datum/job_department/manor, ) @@ -16,7 +15,7 @@ allowed_splats = list(SPLAT_GHOUL) description = "You were born in servitude to the Master of the Manor: your father served the Voivode, as did his father. Now, you carry their blood, and with it their responsibilities." - minimal_masquerade = 2 + minimum_masquerade = 2 known_contacts = list("Prince", "Baron", "Sheriff") diff --git a/modular_darkpack/modules/languages/code/languages/arabic.dm b/modular_darkpack/modules/languages/code/languages/arabic.dm index f01686eab231..961aa0c6c665 100644 --- a/modular_darkpack/modules/languages/code/languages/arabic.dm +++ b/modular_darkpack/modules/languages/code/languages/arabic.dm @@ -1,7 +1,7 @@ /datum/language/arabic name = "Arabic" desc = "A lyrical language known across the Middle East." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "a" space_chance = 30 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/armenian.dm b/modular_darkpack/modules/languages/code/languages/armenian.dm index 8709258cc476..50d1e80a4fc3 100644 --- a/modular_darkpack/modules/languages/code/languages/armenian.dm +++ b/modular_darkpack/modules/languages/code/languages/armenian.dm @@ -1,7 +1,7 @@ /datum/language/armenian name = "Armenian" desc = "Armenian is spoken by those in the Armenian Highlands in Western Asia." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "n" space_chance = 100 sentence_chance = 10 diff --git a/modular_darkpack/modules/languages/code/languages/cantonese.dm b/modular_darkpack/modules/languages/code/languages/cantonese.dm index aaf7e575bd9b..6effa43add8d 100644 --- a/modular_darkpack/modules/languages/code/languages/cantonese.dm +++ b/modular_darkpack/modules/languages/code/languages/cantonese.dm @@ -2,7 +2,7 @@ name = "Cantonese" desc = "A dialect commonly spoken in Hong Kong." key = "c" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 50 syllables = list( "de","yi","sì","bù","le","zài","rén","you", "wo", "ta","zhè", " gè","men","zhong","lái","sàng","guó","wèi","zi", diff --git a/modular_darkpack/modules/languages/code/languages/czech.dm b/modular_darkpack/modules/languages/code/languages/czech.dm index 48f1349fcdd9..38297182b6aa 100644 --- a/modular_darkpack/modules/languages/code/languages/czech.dm +++ b/modular_darkpack/modules/languages/code/languages/czech.dm @@ -2,7 +2,7 @@ name = "Czech" desc = "A West Slavic language spoken by people from Czechia and its diaspora." key = "C" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 45 syllables = list( "ano", "ne", "ja", "ty", "on", "ona", "my", "vy", "oni", diff --git a/modular_darkpack/modules/languages/code/languages/farsi.dm b/modular_darkpack/modules/languages/code/languages/farsi.dm index f45f077f481c..e31465640c8b 100644 --- a/modular_darkpack/modules/languages/code/languages/farsi.dm +++ b/modular_darkpack/modules/languages/code/languages/farsi.dm @@ -1,7 +1,7 @@ /datum/language/farsi name = "Persian" desc = "Persian (or Farsi) is spoken by some residents of San Francisco. It is common in and around Iran and Afghanistan." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "F" space_chance = 100 sentence_chance = 10 diff --git a/modular_darkpack/modules/languages/code/languages/french.dm b/modular_darkpack/modules/languages/code/languages/french.dm index a86c6530b6d0..e9a0a36087ce 100644 --- a/modular_darkpack/modules/languages/code/languages/french.dm +++ b/modular_darkpack/modules/languages/code/languages/french.dm @@ -2,7 +2,7 @@ name = "French" desc = "A romantic and refined language spoken in France and beyond." key = "f" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list( "ou", "on", "an", "in", "un", "ai", "oi", "au", "eu", "ch", diff --git a/modular_darkpack/modules/languages/code/languages/garou_tongue.dm b/modular_darkpack/modules/languages/code/languages/garou_tongue.dm index de269801637b..c1441d775846 100644 --- a/modular_darkpack/modules/languages/code/languages/garou_tongue.dm +++ b/modular_darkpack/modules/languages/code/languages/garou_tongue.dm @@ -2,7 +2,7 @@ name = "Garou Tongue" desc = "A guttural and pitchy language also known as 'High Tongue', the language of the Garou capable of being learned and spoken by Garou. It is hard to speak in human form." key = "w" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list( "to", "lo", "of", "li", "ka", "ha", "he", "ah", "ny", "ro", @@ -18,7 +18,7 @@ name = "Primal Tongue" desc = "A language inherently known to all Garou breeds at birth, able to be spoken only in Lupus, Crinos and Hispo forms." key = "p" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list ( "gra", "grr", "gru", "gha", "sha", "zho", "yip", "whu", "zar", "ruk", diff --git a/modular_darkpack/modules/languages/code/languages/german.dm b/modular_darkpack/modules/languages/code/languages/german.dm index c88492c7ee08..a9161fb9a2ed 100644 --- a/modular_darkpack/modules/languages/code/languages/german.dm +++ b/modular_darkpack/modules/languages/code/languages/german.dm @@ -2,7 +2,7 @@ name = "German" desc = "A precise and powerful language spoken in Germany and beyond." key = "g" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 30 syllables = list( "al", "an", "auf", "aus", "bei", "da", "de", "di", "do", "du", diff --git a/modular_darkpack/modules/languages/code/languages/greek.dm b/modular_darkpack/modules/languages/code/languages/greek.dm index 58abcf897cf2..386c7df48625 100644 --- a/modular_darkpack/modules/languages/code/languages/greek.dm +++ b/modular_darkpack/modules/languages/code/languages/greek.dm @@ -2,7 +2,7 @@ name = "Greek" desc = "The language from the land of marble and philosophy." key = "k" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list( "αι","αν","απ","ας","εί","ει","ης","ια","κα","να","ου","πο","στ","τα","τη","το","ου","αι","τα","κα","να","στ","σε","από","και","δ","γ","φ","ψ","του","προ","μέν", diff --git a/modular_darkpack/modules/languages/code/languages/irish.dm b/modular_darkpack/modules/languages/code/languages/irish.dm index 4e17085468a3..e79dfb6d3111 100644 --- a/modular_darkpack/modules/languages/code/languages/irish.dm +++ b/modular_darkpack/modules/languages/code/languages/irish.dm @@ -1,7 +1,7 @@ /datum/language/irish name = "Irish" desc = "The melodic language spoken by the Irish." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "I" space_chance = 50 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/italian.dm b/modular_darkpack/modules/languages/code/languages/italian.dm index 80525edb7be1..15e2d84ce788 100644 --- a/modular_darkpack/modules/languages/code/languages/italian.dm +++ b/modular_darkpack/modules/languages/code/languages/italian.dm @@ -1,7 +1,7 @@ /datum/language/italian name = "Italian" desc = "A melodic and expressive language spoken across Italy." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "i" space_chance = 40 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/japanese.dm b/modular_darkpack/modules/languages/code/languages/japanese.dm index ce096c34ef9e..f450ed2e7893 100644 --- a/modular_darkpack/modules/languages/code/languages/japanese.dm +++ b/modular_darkpack/modules/languages/code/languages/japanese.dm @@ -2,7 +2,7 @@ name = "Japanese" desc = "A language spoken in the land of the rising sun." key = "j" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 20 syllables = list( "ka", "ki", "ku", "ke", "ko", "sa", "shi", "su", "se", "so", diff --git a/modular_darkpack/modules/languages/code/languages/korean.dm b/modular_darkpack/modules/languages/code/languages/korean.dm index 63e84d7e5f51..20ffdb9eaf97 100644 --- a/modular_darkpack/modules/languages/code/languages/korean.dm +++ b/modular_darkpack/modules/languages/code/languages/korean.dm @@ -1,7 +1,7 @@ /datum/language/korean name = "Korean" desc = "Korean is spoken in Korea, as well as being the eighth most spoken language in San Francisco." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "K" space_chance = 100 sentence_chance = 10 diff --git a/modular_darkpack/modules/languages/code/languages/latin.dm b/modular_darkpack/modules/languages/code/languages/latin.dm index bc791ba4151b..ac122e154162 100644 --- a/modular_darkpack/modules/languages/code/languages/latin.dm +++ b/modular_darkpack/modules/languages/code/languages/latin.dm @@ -1,7 +1,7 @@ /datum/language/latin name = "Latin" desc = "An ancient and complex language once spoken by the rulers of empires." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "l" space_chance = 33 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/mandarin.dm b/modular_darkpack/modules/languages/code/languages/mandarin.dm index 61883e1bf674..6a0dde7df59a 100644 --- a/modular_darkpack/modules/languages/code/languages/mandarin.dm +++ b/modular_darkpack/modules/languages/code/languages/mandarin.dm @@ -2,7 +2,7 @@ name = "Mandarin" desc = "A dialect commonly spoken in China." key = "m" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 70 syllables = list( "de","yī","shì","bù","le","zài","rén","yǒu", "wǒ", "tā","zhè", " gè","men","zhōng","lái","shàng","guó","wèi","zǐ", diff --git a/modular_darkpack/modules/languages/code/languages/polish.dm b/modular_darkpack/modules/languages/code/languages/polish.dm index 299d465c3de0..44812b50bc6d 100644 --- a/modular_darkpack/modules/languages/code/languages/polish.dm +++ b/modular_darkpack/modules/languages/code/languages/polish.dm @@ -2,7 +2,7 @@ name = "Polish" desc = "A West Slavic language spoken by people from Poland and its diaspora." key = "P" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 45 syllables = list( "tak", "nie", "ja", "ty", "on", "ona", "my", "wy", "oni", diff --git a/modular_darkpack/modules/languages/code/languages/russian.dm b/modular_darkpack/modules/languages/code/languages/russian.dm index 62dab312858b..9d3804b6bcc4 100644 --- a/modular_darkpack/modules/languages/code/languages/russian.dm +++ b/modular_darkpack/modules/languages/code/languages/russian.dm @@ -2,7 +2,7 @@ name = "Russian" desc = "The language of Mother Russia." key = "r" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list( "da", "net", "blin", "suka", "ho", "ya", "ty", "on", "ona", "vy", "oni", diff --git a/modular_darkpack/modules/languages/code/languages/scottish.dm b/modular_darkpack/modules/languages/code/languages/scottish.dm index 5ab34649ae25..c538a23c1e7e 100644 --- a/modular_darkpack/modules/languages/code/languages/scottish.dm +++ b/modular_darkpack/modules/languages/code/languages/scottish.dm @@ -1,7 +1,7 @@ /datum/language/scottish name = "Scottish" desc = "The bold language spoken by the Scottish." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "s" space_chance = 40 syllables = list( diff --git a/modular_darkpack/modules/languages/code/languages/spanish.dm b/modular_darkpack/modules/languages/code/languages/spanish.dm index 8282adc79fb8..48a8d991bad4 100644 --- a/modular_darkpack/modules/languages/code/languages/spanish.dm +++ b/modular_darkpack/modules/languages/code/languages/spanish.dm @@ -2,7 +2,7 @@ name = "Español" desc = "A romantic and widely spoken world language." key = "e" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 40 syllables = list( "cha", "che", "chi", "cho", "chu", "lla", "lle", "lli", "llo", "llu", diff --git a/modular_darkpack/modules/languages/code/languages/tagalog.dm b/modular_darkpack/modules/languages/code/languages/tagalog.dm index cbfde2039c6d..8c3ecac50416 100644 --- a/modular_darkpack/modules/languages/code/languages/tagalog.dm +++ b/modular_darkpack/modules/languages/code/languages/tagalog.dm @@ -1,7 +1,7 @@ /datum/language/tagalog name = "Tagalog" desc = "Filipino is the most common form of the Tagalog language in the Philippines, and is fourth most spoken language in San Francisco." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "t" space_chance = 100 sentence_chance = 10 diff --git a/modular_darkpack/modules/languages/code/languages/ukrainian.dm b/modular_darkpack/modules/languages/code/languages/ukrainian.dm index 7b6db3020415..7b028b512ac4 100644 --- a/modular_darkpack/modules/languages/code/languages/ukrainian.dm +++ b/modular_darkpack/modules/languages/code/languages/ukrainian.dm @@ -2,7 +2,7 @@ name = "Ukrainian" desc = "An East Slavic language spoken by people from Ukraine and its diaspora." key = "U" - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH space_chance = 45 syllables = list( "tak", "ni", "ya", "ty", "vin", "vona", "my", "vy", "vony", diff --git a/modular_darkpack/modules/languages/code/languages/welsh.dm b/modular_darkpack/modules/languages/code/languages/welsh.dm index 3289c08a9bc6..7e8a4582ac0c 100644 --- a/modular_darkpack/modules/languages/code/languages/welsh.dm +++ b/modular_darkpack/modules/languages/code/languages/welsh.dm @@ -1,7 +1,7 @@ /datum/language/welsh name = "Welsh" desc = "The flowing language spoken by the Welsh." - flags = TONGUELESS_SPEECH + flags = LANGUAGE_TONGUELESS_SPEECH key = "W" space_chance = 30 syllables = list( diff --git a/modular_darkpack/modules/looc/code/verbs.dm b/modular_darkpack/modules/looc/code/verbs.dm index 995d6dec3572..846ecaf501bf 100644 --- a/modular_darkpack/modules/looc/code/verbs.dm +++ b/modular_darkpack/modules/looc/code/verbs.dm @@ -1,17 +1,9 @@ #define LOOC_RANGE 7 -/client/verb/looc(msg as text) - set name = "LOOC" - set desc = "Local OOC, seen only by those in view." - set category = "OOC" - +GAME_VERB_DESC(/client, looc, "LOOC", "Local OOC, seen only by those in view.", "OOC", msg as text) DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(looc_message), msg)) -/client/verb/looc_wallpierce(msg as text) - set name = "LOOC (Wallpierce)" - set desc = "Local OOC, seen by anyone within 7 tiles of you." - set category = "OOC" - +GAME_VERB_DESC(/client, looc_wallpierce, "LOOC (Wallpierce)", "Local OOC, seen by anyone within 7 tiles of you.", "OOC" , msg as text) DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(looc_message), msg, TRUE)) /client/proc/looc_message(msg, wall_pierce) diff --git a/modular_darkpack/modules/loot/code/random_spawners.dm b/modular_darkpack/modules/loot/code/random_spawners.dm new file mode 100644 index 000000000000..1d88926edfdb --- /dev/null +++ b/modular_darkpack/modules/loot/code/random_spawners.dm @@ -0,0 +1,32 @@ +/obj/effect/spawner/random/weapon + icon_state = "shotgun" + abstract_type = /obj/effect/spawner/random/weapon + + +/obj/effect/spawner/random/weapon/small_melee + loot = list( + /obj/item/melee/vamp/tire = 10, + /obj/item/knife/vamp = 10, + /obj/item/switchblade/vamp = 10, + /obj/item/melee/vamp/brick = 10, + /obj/item/vampire_stake = 10, + ) + +/obj/effect/spawner/random/weapon/weak_large_melee + loot = list( + /obj/item/shovel/vamp = 10, + /obj/item/melee/baseball_bat/vamp = 10, + /obj/item/claymore/machete = 10, + ) + +/obj/effect/spawner/random/weapon/good_large_melee + loot = list( + /obj/item/fireaxe/vamp = 10, + /obj/item/katana/vamp = 10, + /obj/item/chainsaw/vamp = 10, + /obj/item/scythe/vamp = 10, + /obj/item/melee/sabre/vamp = 10, + /obj/item/melee/sabre/rapier = 10, + /obj/item/claymore/longsword = 10, + /obj/item/darkpack/spear = 10, + ) diff --git a/modular_darkpack/modules/matrix/code/job.dm b/modular_darkpack/modules/matrix/code/job.dm index f772740bd1f2..ece34c3d22a4 100644 --- a/modular_darkpack/modules/matrix/code/job.dm +++ b/modular_darkpack/modules/matrix/code/job.dm @@ -1,4 +1,6 @@ /datum/controller/subsystem/job/proc/FreeRole(mob/living/carbon/despawning_mob) + if(!despawning_mob.mind) + return var/datum/job/job_datum = despawning_mob.mind.assigned_role if(!job_datum) return diff --git a/modular_darkpack/modules/mentor/code/dementor.dm b/modular_darkpack/modules/mentor/code/dementor.dm index 075f8d6ad1c5..a9bb4c67a4dd 100644 --- a/modular_darkpack/modules/mentor/code/dementor.dm +++ b/modular_darkpack/modules/mentor/code/dementor.dm @@ -1,6 +1,4 @@ -/client/proc/cmd_mentor_dementor() - set category = "Mentor" - set name = "dementor" +GAME_VERB_PROC(/client, cmd_mentor_dementor, "Dementor", "Mentor") if(!is_mentor()) return remove_mentor_verbs() @@ -9,9 +7,7 @@ log_mentor("MENTOR: [src] dementored.") add_verb(src,/client/proc/cmd_mentor_rementor) -/client/proc/cmd_mentor_rementor() - set category = "Mentor" - set name = "rementor" +GAME_VERB_PROC(/client, cmd_mentor_rementor, "Rementor", "Mentor") if(!is_mentor()) return add_mentor_verbs() diff --git a/modular_darkpack/modules/mentor/code/mentorhelp.dm b/modular_darkpack/modules/mentor/code/mentorhelp.dm index e174205ed0a5..d32840e0eca4 100644 --- a/modular_darkpack/modules/mentor/code/mentorhelp.dm +++ b/modular_darkpack/modules/mentor/code/mentorhelp.dm @@ -1,7 +1,4 @@ -/client/verb/mentorhelp(msg as text) - set category = "Mentor" - set name = "Mentorhelp" - +GAME_VERB(/client, mentorhelp, "Mentorhelp", "Mentor", msg as text) //clean the input msg if(!msg) return diff --git a/modular_darkpack/modules/mentor/code/mentorpm.dm b/modular_darkpack/modules/mentor/code/mentorpm.dm index 75626a0c4cac..a8df8c3e84ea 100644 --- a/modular_darkpack/modules/mentor/code/mentorpm.dm +++ b/modular_darkpack/modules/mentor/code/mentorpm.dm @@ -1,7 +1,6 @@ //shows a list of clients we could send PMs to, then forwards our choice to cmd_Mentor_pm -/client/proc/cmd_mentor_pm_panel() // We're not using this and I'm debating removing the code as it's dead and useless. We don't need mentors PMing people out of the blue. That's not really how we operate. - set category = "Mentor" - set name = "Mentor PM" +// We're not using this and I'm debating removing the code as it's dead and useless. We don't need mentors PMing people out of the blue. That's not really how we operate. +GAME_VERB_PROC(/client, cmd_mentor_pm_panel, "Mentor PM", "Mentor") if(!is_mentor()) to_chat(src, span_danger("Error: Mentor-PM-Panel: Only Mentors and Admins may use this command.")) return diff --git a/modular_darkpack/modules/mentor/code/mentorsay.dm b/modular_darkpack/modules/mentor/code/mentorsay.dm index 77d83d3c9363..f5c839868d50 100644 --- a/modular_darkpack/modules/mentor/code/mentorsay.dm +++ b/modular_darkpack/modules/mentor/code/mentorsay.dm @@ -1,7 +1,4 @@ -/client/proc/cmd_mentor_say(msg as text) - set category = "Mentor" - set name = "Msay" //Gave this shit a shorter name so you only have to time out "msay" rather than "mentor say" to use it --NeoFite - set hidden = 1 +GAME_VERB_PROC(/client, cmd_mentor_say, "Msay", "Mentor", msg as text) if(!is_mentor()) return diff --git a/modular_darkpack/modules/mentor/code/mentorwho.dm b/modular_darkpack/modules/mentor/code/mentorwho.dm index efcaa7f759d8..0177e8113054 100644 --- a/modular_darkpack/modules/mentor/code/mentorwho.dm +++ b/modular_darkpack/modules/mentor/code/mentorwho.dm @@ -1,6 +1,4 @@ -/client/verb/mentorwho() - set category = "Mentor" - set name = "Mentorwho" +GAME_VERB(/client, mentorwho, "Mentorwho", "Mentor") var/msg = "Current Mentors:\n" for(var/X in GLOB.mentors) var/client/C = X diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm new file mode 100644 index 000000000000..612c24686d6a --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/disfigured.dm @@ -0,0 +1,31 @@ +// VTM pg. 481 +/datum/quirk/darkpack/disfigured + name = "Disfigured" + desc = {"A hideous disfigurement makes your appearance disturbing and memorable. + The difficulties of all die rolls relating to social interaction are increased by two. + You may not have an Appearance rating greater than 2."} + icon = FA_ICON_FACE_GRIMACE + value = -2 + gain_text = span_notice("Your face is disfigured!") + lose_text = span_notice("You feel like you look a lot better.") + failure_message = span_notice("You don't look too bad.") + mob_trait = TRAIT_DISFIGURED_APPEARANCE + excluded_clans = list(VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_HARBINGER)// Anyone who already gets masq violating faces or other issues like that. + var/appearance_to_subtract + +/datum/quirk/darkpack/disfigured/add(client/client_source) + . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + appearance_to_subtract = human_holder.st_get_stat(STAT_APPEARANCE)-2 + if(human_holder.st_get_stat(STAT_APPEARANCE) > 2) + human_holder.st_add_stat_mod(STAT_APPEARANCE, -appearance_to_subtract, "Disfigured") + to_chat(human_holder, span_warning("Your appearance stat has been lowered as you cannot have an appearance value greater than two.")) + +/datum/quirk/darkpack/disfigured/remove() + . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + human_holder.st_remove_stat_mod(STAT_APPEARANCE, "Disfigured") diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm new file mode 100644 index 000000000000..fe98b34e2f0a --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/glowing_eyes.dm @@ -0,0 +1,45 @@ +// VTM pg. 482 +/datum/quirk/darkpack/glowing_eyes + name = "Glowing Eyes" + desc = {"You have the stereotypical glowing eyes of vampire legend, giving you a -1 difficulty when intimidating mortals. +However, you MUST constantly disguise your condition, and the glow impairs your vision."} + icon = FA_ICON_EYE + value = -3 + gain_text = span_notice("Your eyes glow with an unnatural light!") + lose_text = span_notice("The light in your eyes fades.") + failure_message = span_notice("The light in your eyes fades.") + mob_trait = TRAIT_GLOWING_EYES + allowed_splats = list(SPLAT_KINDRED) + excluded_clans = list(VAMPIRE_CLAN_KIASYD)// They already have masq violating eyes! + +/*You have the stereotypical glowing eyes of vampire +legend, which gives you a -1 difficulty on Intimidation +rolls when you’re dealing with mortals. However, the +tradeoffs are many; you must constantly disguise your +condition (no, contacts don’t cut it); the glow impairs +your vision and puts you at +1 difficulty on all sight +based rolls (including the use of ranged weapons); and +the radiance emanating from your eye sockets makes +it difficult to hide (+2 difficulty to Stealth rolls) in the +dark.*/ + +/datum/quirk/darkpack/glowing_eyes/add(client/client_source) + . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + ADD_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) + human_holder.st_add_stat_mod(STAT_PERCEPTION, -1, "Glowing Eyes") // I guess this works. what would count as a sight-based roll is beyond me rn + var/obj/item/clothing/glasses/vampire/sun/new_glasses = new(human_holder.loc) // Give them glasses so they aren't immediately breaching on spawn or anything + human_holder.equip_to_appropriate_slot(new_glasses, TRUE) + +/datum/quirk/darkpack/glowing_eyes/remove() + . = ..() + var/mob/living/carbon/human/human_holder = astype(quirk_holder) + if(!human_holder) + return + REMOVE_TRAIT(quirk_holder, TRAIT_LUMINESCENT_EYES, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_MASQUERADE_VIOLATING_EYES, QUIRK_TRAIT) + human_holder.st_remove_stat_mod(STAT_PERCEPTION, "Glowing Eyes") + diff --git a/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm new file mode 100644 index 000000000000..a360c371e3ab --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/negative_quirks/smell_of_the_grave.dm @@ -0,0 +1,12 @@ +// V20 p. 481 +/datum/quirk/darkpack/smell_of_the_grave + name = "Smell Of The Grave" + desc = {"You exude an odor of dampness and newly turned earth, which no amount of scents or perfumes will cover. +Mortals in your immediate presence become uncomfortable, so the difficulties of all Social rolls to affect mortals increase by one."} + value = -1 + mob_trait = TRAIT_GRAVE_SMELL + gain_text = span_notice("You smell awful.") + lose_text = span_notice("You feel like you smell a lot better.") + allowed_splats = list(SPLAT_KINDRED) + icon = FA_ICON_SPRAY_CAN + failure_message = span_notice("You feel like you smell a lot better.") diff --git a/modular_darkpack/modules/merits_flaws/code/positive_quirks/promethean_clay.dm b/modular_darkpack/modules/merits_flaws/code/positive_quirks/promethean_clay.dm new file mode 100644 index 000000000000..55890825e618 --- /dev/null +++ b/modular_darkpack/modules/merits_flaws/code/positive_quirks/promethean_clay.dm @@ -0,0 +1,15 @@ +// V20 Lore of the Clans - pages 238-239 +/datum/quirk/darkpack/promethean_clay + name = "Promethean Clay" + desc = "(Note: currently RP-only merit. Actual functionality is still in development) Your flesh ripples and molds itself to your preternatural will, almost before you consciously invoke the change. The difficulty to use any Vicissitude power on yourself is two less than normal, and you may activate Vicissitude powers reflexively at your full dice pool while taking other actions. Powers that require multiple turns to activate still require the usual duration. The change simply occurs without conscious direction. As a final benefit, you need no physical sculpting to use the first three levels of Vicissitude on yourself, as your flesh undulates and extrudes to its desired shape. Only characters with at least one dot of Vicissitude may purchase this Merit." + value = 5 + mob_trait = TRAIT_PROMETHEAN_CLAY + gain_text = span_notice("You feel a profound oneness with your undead flesh. You are writhing under your own skin, and it shimmers in response, eager to answer your will and mold like clay to your designs.") + lose_text = span_notice("Something feels... off. You are disconnected from your flesh. The indelible unity of your will and your undead form feels strained, and the preternatural responsiveness of your flesh fades.") + allowed_splats = list(SPLAT_KINDRED) + included_clans = list(VAMPIRE_CLAN_TZIMISCE) + icon = FA_ICON_PERSON_BURST + failure_message = "Something is wrong. The preternatural responsiveness of your flesh fades." + roleplay_only = TRUE // REMOVE THIS WHEN PROMETHEAN CLAY MERIT IS IMPLEMENTED IN FULL + +// hey, have you removed roleplay only after fully developing this merit? remove this too. did you remove it yet? diff --git a/modular_darkpack/modules/npc/code/human/socialroles/shop/__shop.dm b/modular_darkpack/modules/npc/code/human/socialroles/shop/__shop.dm index 417b83f06474..65973ed81f2e 100644 --- a/modular_darkpack/modules/npc/code/human/socialroles/shop/__shop.dm +++ b/modular_darkpack/modules/npc/code/human/socialroles/shop/__shop.dm @@ -131,3 +131,13 @@ "Stop doing this!", "Someone, call the ambulance!" ) + var/masquerade_item_phrases = list( + "Eh? You get this from a garage sale?", + "Looks funny. I'll give it to my uncle for his birthday.", + "Take the money and go. I don't do business with Satanists." + ) + var/masquerade_item_failure_phrases = list( + "What the hell? Buddy, you're creeping me out.", + "Where did you get this?!", + "Ok, I'll buy it, but please leave..." + ) diff --git a/modular_darkpack/modules/npc/code/human/socialroles/shop/illegal.dm b/modular_darkpack/modules/npc/code/human/socialroles/shop/illegal.dm index 61b8957d215e..053eb8a10db6 100644 --- a/modular_darkpack/modules/npc/code/human/socialroles/shop/illegal.dm +++ b/modular_darkpack/modules/npc/code/human/socialroles/shop/illegal.dm @@ -52,4 +52,14 @@ "Fuck the police!!", "COPS?!!" ) + masquerade_item_phrases = list( + "Don't worry, I know just the right guy for this piece.", + "I used to steal from art galleries too, you know.", + "I can probably get a few bucks for this. Sure, why not." + ) + masquerade_item_failure_phrases = list( + "Don't worry man, it'll be our little secret!", + "Oh man, I gotta get a picture of me with this thing!", + "Heh, you're one of those guys, huh?" + ) is_criminal = TRUE diff --git a/modular_darkpack/modules/npc/code/nonhuman/beastmaster/necromancy_zombies.dm b/modular_darkpack/modules/npc/code/nonhuman/beastmaster/necromancy_zombies.dm index 636e395339f9..eaf56cebbb0e 100644 --- a/modular_darkpack/modules/npc/code/nonhuman/beastmaster/necromancy_zombies.dm +++ b/modular_darkpack/modules/npc/code/nonhuman/beastmaster/necromancy_zombies.dm @@ -23,9 +23,6 @@ /mob/living/basic/beastmaster/giovanni_zombie/Initialize(mapload) . = ..() AddElement(/datum/element/ai_retaliate) - var/datum/component/obeys_commands/old = GetComponent(/datum/component/obeys_commands) - if(old) - qdel(old) /mob/living/basic/beastmaster/giovanni_zombie/level1 // Low health, low damage distraction unit name = "drone" @@ -66,7 +63,6 @@ response_disarm_simple = "knock aside" response_harm_continuous = "stamps" response_harm_simple = "stamp" - can_be_held = TRUE density = FALSE speed = 0 maxHealth = 20 @@ -81,8 +77,8 @@ /mob/living/basic/beastmaster/giovanni_zombie/level2/Initialize(mapload) . = ..() - pixel_w = rand(-8, 8) - pixel_z = rand(-8, 8) + AddComponent(/datum/component/swarming, 16, 16) //max_x, max_y + AddElement(/datum/element/can_be_held) /mob/living/basic/beastmaster/giovanni_zombie/level3 // Middling dog-level threat name = "compagno" diff --git a/modular_darkpack/modules/npc/code/nonhuman/hostile/graveyard_zombie.dm b/modular_darkpack/modules/npc/code/nonhuman/hostile/graveyard_zombie.dm new file mode 100644 index 000000000000..a9c0e77b3dad --- /dev/null +++ b/modular_darkpack/modules/npc/code/nonhuman/hostile/graveyard_zombie.dm @@ -0,0 +1,146 @@ +/mob/living/basic/zombie/darkpack + name = "Shambling Corpse" + desc = "When there is no more room in Hell, the dead will walk on Earth." + icon = 'modular_darkpack/modules/npc/icons/zombies.dmi' + icon_state = "zombie" + icon_living = "zombie" + icon_dead = "zombie_dead" + mob_biotypes = MOB_ORGANIC|MOB_HUMANOID + maxHealth = 50 + health = 50 + melee_damage_lower = 21 + melee_damage_upper = 21 + default_blood_volume = 100 + blood_volume = 100 + bloodpool = 2 + maxbloodpool = 2 + living_flags = LIVING_CAN_HAVE_BLOOD + obj_damage = 2 + attack_verb_continuous = "bites" + attack_verb_simple = "bite" + attack_sound = 'modular_darkpack/modules/deprecated/sounds/zombuzi.ogg' + status_flags = CANPUSH + basic_mob_flags = NONE + speed = 1 + faction = list("zombie") + ai_controller = /datum/ai_controller/basic_controller/zombie/darkpack + outfit = null + death_message = null + + var/obj/vampgrave/source_grave + +/mob/living/basic/zombie/darkpack/Initialize(mapload) + . = ..() + // the parent is causing them to appear as space station 13 zombies - this removes that. + icon = 'modular_darkpack/modules/npc/icons/zombies.dmi' + icon_state = icon_living + cut_overlays() + update_body() + AddElement(/datum/element/ai_retaliate) + +/mob/living/basic/zombie/darkpack/Destroy() + if(source_grave) + source_grave.spawned_zombies -= src + source_grave = null + return ..() + +/mob/living/basic/zombie/darkpack/skeleton + name = "Skeleton" + health = 30 + maxHealth = 30 + bloodpool = 0 + maxbloodpool = 0 + default_blood_volume = 0 + blood_volume = 0 + icon_living = "skeleton" + icon_state = "skeleton" + icon_dead = "skeleton_dead" + speed = 2 + +/mob/living/basic/zombie/darkpack/fat_zombie + name = "Fat Zombie" + health = 70 + maxHealth = 70 + melee_damage_lower = 31 + melee_damage_upper = 31 + bloodpool = 5 + maxbloodpool = 5 + icon_living = "zombietop" + icon_state = "zombietop" + icon_dead = "zombietop_dead" + speed = 0.5 + +/mob/living/basic/zombie/darkpack/suit_zombie + icon_living = "zombieup" + icon_state = "zombieup" + icon_dead = "zombieup_dead" + + +// need a custom targeting strategy so they don't kill other zombies +/datum/targeting_strategy/basic/zombie_darkpack + +/datum/targeting_strategy/basic/zombie_darkpack/can_attack(mob/living/basic/basic_mob, atom/target, vision_range) + if(istype(target, /mob/living/basic/zombie/darkpack)) + return FALSE + + // don't break down the fence - just try to break the gate + if(istype(target, /obj/structure/vampfence/rich)) + return FALSE + + if(istype(target, /obj/structure/vampgate)) + return TRUE + + // use the parent class for everything else + return ..() + +// planning subtree specifically for finding and targeting vampire gates +/datum/ai_planning_subtree/find_and_attack_vampgate + var/scan_range = 9 + +/datum/ai_planning_subtree/find_and_attack_vampgate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/mob/living/basic/zombie = controller.pawn + + var/atom/current_target = controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET] + + // if we're attacking a gate, use the targeting strategy to find nearby living mobs. + if(istype(current_target, /obj/structure/vampgate)) + var/datum/targeting_strategy/targeter = GET_TARGETING_STRATEGY(controller.blackboard[BB_TARGETING_STRATEGY]) + if(targeter) + for(var/mob/living/potential_target in oview(controller.blackboard[BB_VISION_RANGE], zombie)) + if(targeter.can_attack(zombie, potential_target, controller.blackboard[BB_VISION_RANGE])) + // if we can attack the potential target clear the gate from the list and attack the nearby living thing. + controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET) + return + + // if we already have a living current target don't run this + if(isliving(current_target)) + return + + // if we currently have a mob target from the blackboard then don't run this + if(controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET)) + return + + // is there a nearby vampgate? + for(var/obj/structure/vampgate/gate in oview(scan_range, zombie)) + if(!gate.broken) + // theres one, kill it + controller.set_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET, gate) + controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION) + return + +// AI controller for darkpack zombies +/datum/ai_controller/basic_controller/zombie/darkpack + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/zombie_darkpack, + BB_TARGET_MINIMUM_STAT = DEAD, + BB_VISION_RANGE = 9, + ) + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/target_retaliate, + /datum/ai_planning_subtree/find_and_attack_vampgate, + /datum/ai_planning_subtree/simple_find_target, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + ) + diff --git a/modular_darkpack/modules/graveyard/icons/zombies.dmi b/modular_darkpack/modules/npc/icons/zombies.dmi similarity index 100% rename from modular_darkpack/modules/graveyard/icons/zombies.dmi rename to modular_darkpack/modules/npc/icons/zombies.dmi diff --git a/modular_darkpack/modules/occult_artifacts/code/_artifact.dm b/modular_darkpack/modules/occult_artifacts/code/_artifact.dm index 8c83dbfe63a6..ca34674704af 100644 --- a/modular_darkpack/modules/occult_artifacts/code/_artifact.dm +++ b/modular_darkpack/modules/occult_artifacts/code/_artifact.dm @@ -23,8 +23,8 @@ abstract_type = /obj/item/occult_artifact w_class = WEIGHT_CLASS_SMALL var/mob/living/owner - var/true_name = "artifact" - var/true_desc = "Debug" + var/true_name + var/true_desc var/identified = FALSE var/research_value = 0 var/can_be_identified_without_ritual = TRUE @@ -36,10 +36,16 @@ var/datum/storyteller_roll/identify_occult/identify_roll +/obj/item/occult_artifact/Initialize(mapload) + . = ..() + AddComponent(/datum/component/selling, 200, "artifact", FALSE, 0, 10, TRUE) + /obj/item/occult_artifact/proc/identify(mob/living/artifact_identifier) if(!identified) - name = true_name - desc = true_desc + if(true_name) + name = true_name + if(true_desc) + desc = true_desc identified = TRUE if(src in artifact_identifier?.get_all_contents()) bind(artifact_identifier) @@ -112,23 +118,46 @@ else to_chat(artifact_identifier, span_warning("You stop examining [src].")) + /obj/effect/spawner/random/occult name = "occult spawner" icon = 'modular_darkpack/modules/occult_artifacts/icons/artifacts.dmi' icon_state = "art_rand" + /obj/effect/spawner/random/occult/artifact name = "random occult artifact" - loot_subtype_path = /obj/item/occult_artifact + loot = list( + /obj/effect/spawner/random/occult/artifact/vampire_only = 55, + /obj/effect/spawner/random/occult/artifact/werewolf_only = 45, + ) /obj/effect/spawner/random/occult/artifact/Initialize(mapload) - spawn_loot_chance = CONFIG_GET(number/artifact_random_probability) + if(isnull(spawn_loot_chance)) + spawn_loot_chance = CONFIG_GET(number/artifact_random_probability) . = ..() + /obj/effect/spawner/random/occult/artifact/vampire_only name = "random vampire artifact" + loot = null loot_subtype_path = /obj/item/occult_artifact/vampire + /obj/effect/spawner/random/occult/artifact/werewolf_only name = "random garou fetish" - loot_subtype_path = /obj/item/occult_artifact/werewolf + loot = list( + /obj/item/occult_artifact/werewolf/nyxs_bangle = 45, + /obj/item/occult_artifact/werewolf/dagger_of_retribution = 45, + /obj/effect/spawner/random/occult/artifact/klaive = 10, + ) + + +/obj/effect/spawner/random/occult/artifact/klaive + name = "random klaive" + loot = list( + /obj/item/occult_artifact/werewolf/klaive = 32, + /obj/item/occult_artifact/werewolf/klaive/bane = 32, + /obj/item/occult_artifact/werewolf/klaive/karambit = 32, + /obj/item/occult_artifact/werewolf/klaive/grand = 4, // Idk this thing is mega scary and mabye even doesnt belong here. + ) diff --git a/modular_darkpack/modules/occult_artifacts/code/fetishes/nyxs_bangle.dm b/modular_darkpack/modules/occult_artifacts/code/fetishes/nyxs_bangle.dm index d8930fc395a9..d292145bb20e 100644 --- a/modular_darkpack/modules/occult_artifacts/code/fetishes/nyxs_bangle.dm +++ b/modular_darkpack/modules/occult_artifacts/code/fetishes/nyxs_bangle.dm @@ -23,18 +23,18 @@ /obj/item/occult_artifact/werewolf/nyxs_bangle/process(seconds_per_tick) . = ..() - var/mob/living/carbon/carbon_owner = astype(owner) - if(identified && carbon_owner) + var/mob/living/carbon/human/human_owner = astype(owner) + if(identified && human_owner) var/turf/owner_turf = get_turf(owner) var/light_amount = owner_turf.get_lumcount() if(light_amount <= 0.2) - if(src == carbon_owner.gloves || src == carbon_owner.get_active_held_item() || src == carbon_owner.get_inactive_held_item()) - carbon_owner.alpha = max(carbon_owner.alpha-12.75, 25.5) + if(src == human_owner.gloves || src == human_owner.get_active_held_item() || src == human_owner.get_inactive_held_item()) + human_owner.alpha = max(human_owner.alpha-12.75, 25.5) else - carbon_owner.alpha = min (carbon_owner.alpha+25.5, 255) + human_owner.alpha = min (human_owner.alpha+25.5, 255) else - carbon_owner.alpha = min (carbon_owner.alpha+25.5, 255) + human_owner.alpha = min (human_owner.alpha+25.5, 255) /obj/item/occult_artifact/werewolf/nyxs_bangle/proc/get_held_mob() if(isnull(loc)) diff --git a/modular_darkpack/modules/paths/code/necromancy_obolus.dm b/modular_darkpack/modules/paths/code/necromancy_obolus.dm new file mode 100644 index 000000000000..19592a27ec23 --- /dev/null +++ b/modular_darkpack/modules/paths/code/necromancy_obolus.dm @@ -0,0 +1,9 @@ +/obj/item/coin/iron/obolus + name = "obolus" + desc = "A grayish and pale blue coin which emits a soft dusk-like light. When you touch it, it appears to groan and wail in sorrow quietly..." + pickup_sound = 'modular_darkpack/modules/toys/sounds/femurbreaker.ogg' + +/obj/item/coin/iron/obolus/Initialize(mapload) + . = ..() + pickup_sound = pick(list('modular_darkpack/modules/toys/sounds/femurbreaker.ogg', 'sound/effects/curse/curse1.ogg', 'sound/effects/curse/curse4.ogg', 'sound/effects/curse/curse5.ogg', 'sound/effects/curse/curse6.ogg', 'sound/effects/hallucinations/behind_you1.ogg', 'sound/effects/ghost.ogg')) + AddComponent(/datum/component/selling, 700, "artifact", FALSE, 0, 10, TRUE) diff --git a/modular_darkpack/modules/paths/code/occult_research.dm b/modular_darkpack/modules/paths/code/occult_research.dm index f4604d05abce..9cdbf2b39c5b 100644 --- a/modular_darkpack/modules/paths/code/occult_research.dm +++ b/modular_darkpack/modules/paths/code/occult_research.dm @@ -39,11 +39,7 @@ SUBSYSTEM_DEF(occult_research) COOLDOWN_START(src, research_notification_cooldown, 10 MINUTES) to_chat(user, span_notice("Your occult studies have yielded [research_gain] research points. Total: [user.research_points]")) -/mob/living/carbon/human/proc/check_research_points() - set name = "Check Research Points" - set desc = "Check your current research point balance." - set hidden = TRUE - +GAME_VERB_PROC_DESC(/mob/living/carbon/human, check_research_points, "Check Research Points", "Check your current research point balance.", null) if(!get_discipline(/datum/discipline/thaumaturgy)) to_chat(src, span_alert("You lack occult knowledge.")) return diff --git a/modular_darkpack/modules/paths/code/spellbooks/spellbooks.dm b/modular_darkpack/modules/paths/code/spellbooks/spellbooks.dm index 0efb8f7c9a55..c393bd037722 100644 --- a/modular_darkpack/modules/paths/code/spellbooks/spellbooks.dm +++ b/modular_darkpack/modules/paths/code/spellbooks/spellbooks.dm @@ -26,6 +26,7 @@ true_desc = desc name = "dusty forgotten tome" desc = "This book is covered in dust and the pages appear worn. Its probably not important." + AddComponent(/datum/component/selling, 100, "artifact", FALSE, 0, 10, TRUE) /obj/item/path_spellbook/examine(mob/user) . = ..() @@ -148,6 +149,10 @@ "The text reveals secrets of supernatural power and ritual." ) +/obj/item/occult_book/Initialize(mapload) + . = ..() + AddComponent(/datum/component/selling, 100, "artifact", FALSE, 0, 10, TRUE) + /obj/item/occult_book/attack_self(mob/living/carbon/human/user) if(!can_study(user)) return ..() diff --git a/modular_darkpack/modules/phones/code/_phone.dm b/modular_darkpack/modules/phones/code/_phone.dm index 0831f1aa4a94..46caea9723d5 100644 --- a/modular_darkpack/modules/phones/code/_phone.dm +++ b/modular_darkpack/modules/phones/code/_phone.dm @@ -265,7 +265,11 @@ )) data["phone_history"] = phone_history - data["calling_user"] = get_number_contact_name() + var/calling_user = incoming_phone_number ? incoming_phone_number : dialed_number + if(calling_user) + data["calling_user"] = get_number_contact_name(calling_user) + else + data["calling_user"] = "" data["time"] = server_timestamp("hh:mm", ic_time = TRUE) data["date"] = server_timestamp("Day, Month DD, YYYY", ic_time = TRUE) @@ -547,7 +551,7 @@ if(!contact_number || !message_text) return FALSE - var/contact_name = get_number_contact_name() + var/contact_name = get_number_contact_name(contact_number) var/datum/phone_conversation/conversation = get_conversation(contact_number) if(!conversation) @@ -558,22 +562,20 @@ var/obj/item/smartphone/receiving_phone = SSphones.get_phone_from_number(contact_number) if(receiving_phone) - var/recv_contact_name = receiving_phone.get_number_contact_name() + var/recv_contact_name = receiving_phone.get_number_contact_name(sim_card.phone_number) var/datum/phone_conversation/recv_conversation = receiving_phone.get_conversation(sim_card.phone_number) if(!recv_conversation) recv_conversation = new(recv_contact_name, sim_card.phone_number) receiving_phone.conversations += recv_conversation recv_conversation.add_message(message_text, FALSE) - addtimer(CALLBACK(receiving_phone, PROC_REF(after_text_received)), rand(2 SECONDS, 6 SECONDS)) //simulate random delay before sending an audible/visible alert + addtimer(CALLBACK(receiving_phone, PROC_REF(after_text_received), contact_name, message_text), rand(1 SECONDS, 2 SECONDS)) //simulate random delay before sending an audible/visible alert log_phone("[key_name(usr)] sent a text to [contact_number]: [message_text]", list("sender" = contact_name, "receiver" = recv_contact_name, "message" = message_text)) return TRUE //stuff to do after a text is received -/obj/item/smartphone/proc/after_text_received() - if(ringer) //only play the receive sound if sounds are on - playsound(loc, 'modular_darkpack/modules/phones/sounds/text_receive.ogg', 50, TRUE) - balloon_alert_to_viewers(message = "New Message!", vision_distance = SAMETILE_MESSAGE_RANGE) - return TRUE +/obj/item/smartphone/proc/after_text_received(contact_name, message_text) + // This should support having your notifiactions set to hidden to not show detials without opening the app. + receive_notification("Message+", contact_name, message_text) /obj/item/smartphone/proc/format_conversation(contact_number) var/datum/phone_conversation/conversation = get_conversation(contact_number) diff --git a/modular_darkpack/modules/phones/code/endpost_announce.dm b/modular_darkpack/modules/phones/code/endpost_announce.dm index 4c144e1bc056..f23953e98097 100644 --- a/modular_darkpack/modules/phones/code/endpost_announce.dm +++ b/modular_darkpack/modules/phones/code/endpost_announce.dm @@ -1,5 +1,5 @@ // useful proc to announce events as endposts -/proc/endpost_announce(body, author = "SF Chronicle Nightly") +/proc/endpost_announce(body, author = EVIL_NEWS_COMPANY) UNTYPED_LIST_ADD(SSphones.endpost_posts, list( "body" = body, "date" = server_timestamp("Day, Month DD, "), @@ -8,3 +8,7 @@ //"thumbsup_voters" = list(), //"thumbsdown_voters" = list(), )) + + // I dont love this, idealy this should be sending code directly to a /datum/app/ or something and having that handle this behavoir as like a signal. + for(var/obj/item/smartphone/listening_phone in GLOB.phones_list) + listening_phone.receive_notification("EndPost", author, body) diff --git a/modular_darkpack/modules/phones/code/phone_procs.dm b/modular_darkpack/modules/phones/code/phone_procs.dm index bec1500bbc71..b2744e0af5aa 100644 --- a/modular_darkpack/modules/phones/code/phone_procs.dm +++ b/modular_darkpack/modules/phones/code/phone_procs.dm @@ -18,30 +18,31 @@ contacts |= new_phone_contact // Gets the displayed contact's name if they are in contacts or published. If not, show the number. -/obj/item/smartphone/proc/get_number_contact_name() +/obj/item/smartphone/proc/get_number_contact_name(contact_num) var/output_user - var/calling = incoming_phone_number - if(dialed_number) - calling = dialed_number + if(!contact_num) + CRASH("Trying to get a contact number with a bad input.") + // Default to the contact name calling the phone. for(var/datum/phonecontact/contact in contacts) - if(contact.number == calling) + if(contact.number == contact_num) output_user = contact.name // If we dont have a contact name, refer to the published listings. if(!output_user) for(var/contact in SSphones.published_phone_numbers) - if(calling == SSphones.published_phone_numbers[contact]) + if(contact_num == SSphones.published_phone_numbers[contact]) output_user = contact // Not in our contacts or published listings? Then resolve to showing the phone number. if(!output_user) - output_user = "+" + calling + output_user = "+" + contact_num return output_user // Helper proc to add a history log to the phone's records. /obj/item/smartphone/proc/add_phone_call_history(call_type, call_type_tooltip) var/datum/phone_history/new_contact = new() - new_contact.name = get_number_contact_name() - new_contact.number = dialed_number ? dialed_number : incoming_phone_number + var/caller_num = dialed_number ? dialed_number : incoming_phone_number + new_contact.name = get_number_contact_name(caller_num) + new_contact.number = caller_num new_contact.call_type = call_type new_contact.call_type_tooltip = call_type_tooltip new_contact.time = server_timestamp("hh:mm:ss", ic_time = TRUE) @@ -158,6 +159,18 @@ if(ringer) playsound(src, call_sound, 50, TRUE, 0, 2) +// App really ought to be a datum. Whateverrrrr +/obj/item/smartphone/proc/receive_notification(app, title, body) + if(vibration) + animate(src, pixel_w = 1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL) + for(var/i in 1 to VIBRATION_LOOP_DURATION / (0.2 SECONDS)) //desired total duration divided by the iteration duration to give the necessary iteration count + animate(pixel_w = -2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE) + animate(pixel_w = 2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE) + animate(pixel_w = -1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE) + if(ringer) + playsound(src, 'modular_darkpack/modules/phones/sounds/text_receive.ogg', 50, TRUE, 0, 2) // This could prob use a better notification + balloon_alert_to_viewers("[app]:[title]", vision_distance = SAMETILE_MESSAGE_RANGE) + #undef VIBRATION_LOOP_DURATION ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modular_darkpack/modules/powers/code/discipline/animalism.dm b/modular_darkpack/modules/powers/code/discipline/animalism.dm index a018c19e8287..9cef836b2fed 100644 --- a/modular_darkpack/modules/powers/code/discipline/animalism.dm +++ b/modular_darkpack/modules/powers/code/discipline/animalism.dm @@ -9,24 +9,6 @@ desc = "Animalism power description" effect_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/wolves.ogg' -/datum/discipline_power/animalism/activate() - . = ..() - - if(!ishuman(owner)) - return - - for(var/mob/living/minion in owner.beastmaster_minions) - if(QDELETED(minion) || minion.stat == DEAD) - owner.beastmaster_minions -= minion - - var/max_minions = owner.st_get_stat(STAT_LEADERSHIP) + 1 - if(length(owner.beastmaster_minions) >= max_minions) - var/mob/living/oldest = owner.beastmaster_minions[1] - if(oldest) - owner.remove_beastmaster_minion(oldest) - qdel(oldest) - - //SUMMON RAT /datum/discipline_power/animalism/summon_rat name = "Summon Rat" @@ -143,9 +125,6 @@ /mob/living/basic/mouse/vampire/summoned/Initialize(mapload) AddElement(/datum/element/ai_retaliate) . = ..() - var/datum/component/obeys_commands/old = GetComponent(/datum/component/obeys_commands) - if(old) - qdel(old) /mob/living/basic/pet/cat/darkpack/summoned name = "cat" @@ -156,12 +135,6 @@ obj_damage = 15 bloodpool = 2 -/mob/living/basic/pet/cat/darkpack/summoned/Initialize(mapload) - . = ..() - var/datum/component/obeys_commands/old = GetComponent(/datum/component/obeys_commands) - if(old) - qdel(old) - /mob/living/basic/pet/dog/wolf/summoned name = "wolf" desc = "A wolf bound to its master's will." @@ -180,12 +153,6 @@ random_wolf_color = FALSE bloodpool = 2 -/mob/living/basic/pet/dog/wolf/summoned/Initialize(mapload) - . = ..() - var/datum/component/obeys_commands/old = GetComponent(/datum/component/obeys_commands) - if(old) - qdel(old) - /mob/living/basic/bat/summoned name = "bat" desc = "A bat bound to its master's will." @@ -196,9 +163,3 @@ attack_verb_continuous = "bites" attack_verb_simple = "bite" bloodpool = 2 - -/mob/living/basic/bat/summoned/Initialize(mapload) - . = ..() - var/datum/component/obeys_commands/old = GetComponent(/datum/component/obeys_commands) - if(old) - qdel(old) diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm index 2044165720f8..4f3e85b35eb3 100644 --- a/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm +++ b/modular_darkpack/modules/powers/code/discipline/auspex/auspex.dm @@ -257,9 +257,9 @@ level = 4 check_flags = DISC_CHECK_CONSCIOUS - target_type = TARGET_LIVING + target_type = TARGET_PLAYER vitae_cost = 0 - cooldown_length = 1 TURNS + cooldown_override = TRUE range = 7 var/telepathy_types = list(TELEPATHY_MIND_READING, TELEPATHY_IMPLANT_THOUGHT) var/telepathy_type_selected @@ -267,6 +267,8 @@ var/disguised_voice var/datum/storyteller_roll/telepathy_success/telepathy_roll var/datum/storyteller_roll/disguise_voice_roll/disguise_roll + COOLDOWN_DECLARE(mind_read_cd) + COOLDOWN_DECLARE(implant_tht_cd) /datum/storyteller_roll/telepathy_success bumper_text = "mind reading" @@ -282,36 +284,51 @@ /datum/discipline_power/auspex/telepathy/pre_activation_checks(mob/living/target) . = ..() - if(!telepathy_roll) - telepathy_roll = new() - telepathy_roll.difficulty = target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - successes = telepathy_roll.st_roll(owner, target) - if(successes > 0) // need linebreaks... but \n and
arent working... - var/telepathy_type = tgui_input_list(owner, "What kind of Telepathy would you like to perform? Reading the minds of supernaturals requires expending one temporary willpower point.", "Telepathy Type Selection", telepathy_types, TELEPATHY_IMPLANT_THOUGHT) - switch(telepathy_type) - if(TELEPATHY_MIND_READING) - //var/supernatural_splat = issupernatural(target)??? the current issupernatural just checks for a single splat, which doesnt qualify for the -1 willpower, think its just other 'undead' p137 V20 + var/telepathy_type = tgui_input_list(owner, "What kind of Telepathy would you like to perform? Reading the minds of supernaturals requires expending one temporary willpower point.", "Telepathy Type Selection", telepathy_types, TELEPATHY_IMPLANT_THOUGHT) + if(!telepathy_type) // prevents it from running anyway if you press cancel (a lot of disciplines do this), cancellable without cd. + return FALSE + switch(telepathy_type) + if(TELEPATHY_MIND_READING) + if(!COOLDOWN_FINISHED(src, mind_read_cd)) + to_chat(owner, span_warning("Your mind reading ability is still on cooldown for [DisplayTimeText(COOLDOWN_TIMELEFT(src, mind_read_cd))]!")) + return FALSE + + if(!telepathy_roll) + telepathy_roll = new() + telepathy_roll.difficulty = target.st_get_stat(STAT_TEMPORARY_WILLPOWER) + successes = telepathy_roll.st_roll(owner, target) + + if(successes > 0) if(get_kindred_splat(target) || get_shifter_splat(target)) owner.st_set_stat(STAT_TEMPORARY_WILLPOWER, owner.st_get_stat(STAT_TEMPORARY_WILLPOWER) - 1) - if(TELEPATHY_IMPLANT_THOUGHT) - var/disguise_voice_prompt = tgui_input_list(owner, "Attempt to disguise the origin of the implanted thought? Requires a Manipulation + Subterfuge roll at the difficulty of the target's Perception + Awareness", "Disguise Voice", list("Yes", "No"), "No") - switch(disguise_voice_prompt) - if("Yes") - if(!disguise_roll) - disguise_roll = new() - disguise_roll.difficulty = target.st_get_stat(STAT_PERCEPTION) + target.st_get_stat(STAT_AWARENESS) - switch(disguise_roll.st_roll(owner, target)) - if(ROLL_SUCCESS) - disguised_voice = tgui_input_text(owner, "What will be the 'voice' of this implanted thought?", "Implanted Voice Selection") - if(ROLL_FAILURE, ROLL_BOTCH) - to_chat(owner, span_danger("You fail to disguise your voice - the subject hears your voice in their head!")) - disguised_voice = owner.name - if("No") - disguised_voice = owner.name - telepathy_type_selected = telepathy_type - return TRUE - return FALSE + else + to_chat(owner, span_warning("You failed to read their mind!")) + COOLDOWN_START(src, mind_read_cd, 3 MINUTES) + return FALSE + //var/supernatural_splat = issupernatural(target)??? the current issupernatural just checks for a single splat, which doesnt qualify for the -1 willpower, think its just other 'undead' p137 V20 + + if(TELEPATHY_IMPLANT_THOUGHT) + if(!COOLDOWN_FINISHED(src, implant_tht_cd)) // No cd would be nice, but we also don't want spam. + to_chat(owner, span_warning("Your implant thought ability is still on cooldown for [DisplayTimeText(COOLDOWN_TIMELEFT(src, implant_tht_cd))]!")) + return FALSE + + var/disguise_voice_prompt = tgui_input_list(owner, "Attempt to disguise the origin of the implanted thought? Requires a Manipulation + Subterfuge roll at the difficulty of the target's Perception + Awareness", "Disguise Voice", list("Yes", "No"), "No") + switch(disguise_voice_prompt) + if("Yes") + if(!disguise_roll) + disguise_roll = new() + disguise_roll.difficulty = target.st_get_stat(STAT_PERCEPTION) + target.st_get_stat(STAT_AWARENESS) + switch(disguise_roll.st_roll(owner, target)) + if(ROLL_SUCCESS) + disguised_voice = tgui_input_text(owner, "What will be the 'voice' of this implanted thought?", "Implanted Voice Selection") + if(ROLL_FAILURE, ROLL_BOTCH) + to_chat(owner, span_danger("You fail to disguise your voice - the subject hears your voice in their head!")) + disguised_voice = owner.real_name + if("No") + disguised_voice = owner.real_name + telepathy_type_selected = telepathy_type + return TRUE /datum/discipline_power/auspex/telepathy/activate(mob/living/target) @@ -328,20 +345,22 @@ return log_directed_talk(owner, target, input_message, LOG_SAY, "Telepathy") - to_chat(owner, span_notice("You project your thoughts into [target]'s mind: \"[input_message]\"")) - to_chat(target, span_boldannounce("You hear the voice of [disguised_voice] in your thoughts: \"[input_message]\"")) + to_chat(owner, span_notice("You project your thoughts into [GET_GUESTBOOK_NAME(owner, target)]'s mind: \"[input_message]\"")) + to_chat(target, span_boldannounce("You hear the voice of [target?.mind?.guestbook?.get_known_name(target, disguised_voice) ? target?.mind?.guestbook?.get_known_name(target, disguised_voice) : disguised_voice] in your thoughts: \"[input_message]\"")) + COOLDOWN_START(src, implant_tht_cd, 5 SECONDS) if(TELEPATHY_MIND_READING) - var/flavor_text_telepathy = "Someone nearby reads your mind without your knowing..." + get_flavor_text(successes) + var/flavor_text_telepathy = "Someone nearby reads your mind without your knowing. They may read vivid and clear internal monologuing, or they may only get a brief collection of thoughts, emotions, and symbolism, depending on how many successes they score." + get_flavor_text(successes) var/mind_reading_search = tgui_input_list(owner, "Are you searching their mind for specific information? Deeper secrets and long-past memories require more successes.", "Mind Reading Specifics", list("Yes", "No"), "No") if(mind_reading_search == "Yes") - specific_search = tgui_input_text(owner, "What are you trying to mind read from your victim?", "Mind Reading Search Input", max_length = MAX_MESSAGE_LEN) + specific_search = tgui_input_text(owner, "What are you trying to mind read from your victim?", "Mind Reading Search Input", max_length = (MAX_MESSAGE_LEN * 10)) if(!specific_search) specific_search = "something specific" var/prompt_message = flavor_text_telepathy if(specific_search) prompt_message += "The telepath specifically scans your mind for : [specific_search]" + message_admins("[owner.real_name] (ckey: [owner.key]) uses Auspex 4 'Telepathy' to read the mind of [target.real_name] (ckey: [target.key]) searching for '[specific_search]' with [successes] successes.") else prompt_message += "The telepath searches your recent thoughts and emotions..." @@ -353,7 +372,9 @@ return log_directed_talk(target, owner, input_message, LOG_SAY, "Telepathy (Mind Reading)") - to_chat(owner, span_notice("You read [target]'s thoughts with [successes] successes: [input_message]")) + message_admins("[target.real_name]'s (ckey: [target.key]) mind is read by [owner.real_name] (ckey: [owner.key]) who searched their mind for '[specific_search ? specific_search : "recent thoughts and emotions"]'. The owner intercepted the following thoughts or memories : [input_message]") + to_chat(owner, span_notice("You read [GET_GUESTBOOK_NAME(owner, target)]'s thoughts with [successes] successes: [input_message]")) + COOLDOWN_START(src, mind_read_cd, 3 MINUTES) /datum/discipline_power/auspex/telepathy/proc/get_flavor_text(successes) var/message = "As your mind is read with [successes] successes, " @@ -372,7 +393,7 @@ /datum/discipline_power/auspex/telepathy/proc/sanitize_input_message(input_message) //sanitisation! - input_message = CAN_BYPASS_FILTER(owner) ? strip_html_full(input_message, MAX_MESSAGE_LEN) : input_message + input_message = CAN_BYPASS_FILTER(owner) ? strip_html_full(input_message, (MAX_MESSAGE_LEN * 10)) : input_message var/list/filter_result = CAN_BYPASS_FILTER(owner) ? null : is_ooc_filtered(input_message) if(filter_result) REPORT_CHAT_FILTER_TO_USER(owner, filter_result) diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/avatar/avatar_verbs.dm b/modular_darkpack/modules/powers/code/discipline/auspex/avatar/avatar_verbs.dm index 14e4b303c87e..ca8e16229ba5 100644 --- a/modular_darkpack/modules/powers/code/discipline/auspex/avatar/avatar_verbs.dm +++ b/modular_darkpack/modules/powers/code/discipline/auspex/avatar/avatar_verbs.dm @@ -1,6 +1,4 @@ -/mob/living/basic/avatar/verb/reenter_corpse() - set name = "Re-enter Corpse" - +GAME_VERB(/mob/living/basic/avatar, reenter_corpse, "Re-enter Corpse", null) exit_avatar(force = FALSE) /mob/living/basic/avatar/proc/exit_avatar(force = FALSE) diff --git a/modular_darkpack/modules/powers/code/discipline/auspex/emotion_panel.dm b/modular_darkpack/modules/powers/code/discipline/auspex/emotion_panel.dm index 4d8d02a2418e..f5b77aa8e41f 100644 --- a/modular_darkpack/modules/powers/code/discipline/auspex/emotion_panel.dm +++ b/modular_darkpack/modules/powers/code/discipline/auspex/emotion_panel.dm @@ -1,9 +1,5 @@ ///Shows a tgui window with memories -/mob/verb/emotion_panel() - set name = "Emotion Panel" - set category = "IC" - set desc = "Change your character's emotions." - +GAME_VERB_DESC(/mob, emotion_panel, "Emotion Panel", "Change your character's emotions.", "IC") if(HAS_TRAIT(src, TRAIT_FORCED_EMOTION)) to_chat(src, span_warning("You cannot change emotions right now.")) return FALSE diff --git a/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm b/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm index dfdc68c63d17..7a997eeba507 100644 --- a/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm +++ b/modular_darkpack/modules/powers/code/discipline/bloodheal/bloodheal.dm @@ -87,13 +87,29 @@ var/datum/brain_trauma/healing_trauma = pick(brain.get_traumas_type()) brain.cure_trauma_type(healing_trauma, resilience = TRAUMA_RESILIENCE_WOUND) - //miscellaneous organ damage healing + // Let core species logic handle restoring/healing organs so missing eyes are rebuilt correctly. + owner.regenerate_organs() var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES) + if (!eyes) + var/eyes_type = owner.dna?.species?.get_mutant_organ_type_for_slot(ORGAN_SLOT_EYES) || /obj/item/organ/eyes + eyes = new eyes_type() + eyes.Insert(owner, special = TRUE, movement_flags = DELETE_IF_REPLACED) + owner.cure_blind(NO_EYES) + if(!owner.has_quirk(/datum/quirk/item_quirk/blindness)) + owner.cure_blind(QUIRK_TRAIT) + owner.cure_blind(EYE_DAMAGE) + owner.cure_blind(EYE_SCARRING_TRAIT) + owner.cure_nearsighted(QUIRK_TRAIT) + owner.cure_nearsighted(EYE_DAMAGE) if (eyes) - eyes.apply_organ_damage(-HEAL_BASHING_LETHAL_DAMAGE * vitae_cost) + eyes.fix_scar(LEFT_EYE_SCAR) + eyes.fix_scar(RIGHT_EYE_SCAR) + owner.remove_status_effect(/datum/status_effect/temporary_blindness) + owner.remove_status_effect(/datum/status_effect/eye_blur) - owner.adjust_temp_blindness(-HEAL_AGGRAVATED_DAMAGE * vitae_cost) - owner.adjust_eye_blur(-HEAL_AGGRAVATED_DAMAGE * vitae_cost) + if(get_kindred_splat(owner) && length(owner.get_missing_limbs())) + owner.regenerate_limbs() + violates_masquerade = TRUE //healing too quickly attracts attention if (violates_masquerade) diff --git a/modular_darkpack/modules/powers/code/discipline/daimonion/daimonion.dm b/modular_darkpack/modules/powers/code/discipline/daimonion/daimonion.dm index 7ef08774b5b5..978192525bed 100644 --- a/modular_darkpack/modules/powers/code/discipline/daimonion/daimonion.dm +++ b/modular_darkpack/modules/powers/code/discipline/daimonion/daimonion.dm @@ -60,7 +60,7 @@ var/target_sense_the_sin_weakness = target_clan.sense_the_sin_text baali_get_stolen_disciplines(target, owner) if(target_sense_the_sin_weakness) - to_chat(target, span_notice("[target.name] [target_sense_the_sin_weakness]")) + to_chat(owner, span_notice("[target.name] [target_sense_the_sin_weakness]")) /* DARKPACK TODO - bloodbonds if(isghoul(target)) var/mob/living/carbon/human/ghoul = target diff --git a/modular_darkpack/modules/powers/code/discipline/dementation.dm b/modular_darkpack/modules/powers/code/discipline/dementation.dm index c2cdc8c7042a..51d6aba9757c 100644 --- a/modular_darkpack/modules/powers/code/discipline/dementation.dm +++ b/modular_darkpack/modules/powers/code/discipline/dementation.dm @@ -374,7 +374,7 @@ frenzy or Rötschreck response is automatic. owner.say(attack_text, spans = list("bold", "singing")) var/list/potential_targets = list() for(var/mob/living/carbon/human/hearer in (get_hearers_in_view(8, owner) - owner)) - if(!HAS_TRAIT(hearer, TRAIT_DEAF) || hearer.stat > CONSCIOUS) + if(HAS_TRAIT(hearer, TRAIT_DEAF) || hearer.stat > CONSCIOUS) continue potential_targets += hearer var/targets_affected = 0 diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm index c31b2173285e..381f8159bd79 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/dominate.dm @@ -12,6 +12,10 @@ if(level >= 4) RegisterSignal(owner, COMSIG_MOB_EMOTE, PROC_REF(on_snap)) +/datum/discipline/dominate/post_loss() + . = ..() + UnregisterSignal(owner, COMSIG_MOB_EMOTE) + /datum/discipline/dominate/proc/on_snap(atom/source, datum/emote/emote_args) SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(handle_snap), source, emote_args) @@ -105,7 +109,6 @@ return TRUE var/theirpower = target.st_get_stat(STAT_TEMPORARY_WILLPOWER) - var/mypower = SSroll.storyteller_roll_datum(owner, target, difficulty = theirpower, applic_stats = owner_stat, numerical = TRUE) //tremere have built-in safeguards to easily dominate their stone servitors if(HAS_TRAIT(target, TRAIT_WEAK_TO_DOMINATE)) @@ -114,6 +117,15 @@ if(HAS_TRAIT(target, TRAIT_WEAK_WILLED)) theirpower -= 2 + if((!(owner.obscured_slots & HIDEFACE))&(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE))) // Are we visibly disfigured? + theirpower += 2 + + if(!get_kindred_splat(target)) // Is our target mortal? + if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL)) // Are we stinky? + theirpower += 1 + if((HAS_TRAIT(owner, TRAIT_GLOWING_EYES)) && (!owner.is_eyes_covered()) && (STAT_INTIMIDATION in owner_stat)) // Are we intimidating a mortal with uncovered eyes? + theirpower -= 1 + //wearing dark sunglasses makes it harder for the Dominator to capture the victim's gaze and raises difficulty -- V20 'Dominate' section titled 'Eye Contact' var/total_tint = 0 var/mob/living/carbon/human/human_target = target @@ -130,6 +142,9 @@ if(target.conditioner?.resolve()) theirpower += 3 + // This var needs to go after everything that changes theirpower. + var/mypower = SSroll.storyteller_roll_datum(owner, target, difficulty = theirpower, applic_stats = owner_stat, numerical = TRUE) + //i've botched so now this person is immune to dominate for the rest of the round if(mypower < 0) LAZYADD(parent_disc.botched_targets, WEAKREF(target)) diff --git a/modular_darkpack/modules/powers/code/discipline/melpominee.dm b/modular_darkpack/modules/powers/code/discipline/melpominee.dm index cce057568927..47560f46a109 100644 --- a/modular_darkpack/modules/powers/code/discipline/melpominee.dm +++ b/modular_darkpack/modules/powers/code/discipline/melpominee.dm @@ -126,7 +126,7 @@ if(owner.mind.guestbook.known_names[character.real_name] && character.client) // Everyone we know who has a client targets += character - var/list/mob/living/listener_list + var/list/mob/living/listener_list = list() var/mob/living/listener if(!HAS_TRAIT_FROM(owner, TRAIT_VIRTUOSA, type)) diff --git a/modular_darkpack/modules/powers/code/discipline/mytherceria.dm b/modular_darkpack/modules/powers/code/discipline/mytherceria.dm index f1533f97c251..f97a78d23b39 100644 --- a/modular_darkpack/modules/powers/code/discipline/mytherceria.dm +++ b/modular_darkpack/modules/powers/code/discipline/mytherceria.dm @@ -25,19 +25,11 @@ /datum/discipline_power/mytherceria/fey_sight/activate(mob/living/target) . = ..() - var/list/total_list = list() - for(var/obj/item/item in target.contents) - if(istype(item, /obj/item/storage)) - total_list |= item.contents - total_list |= item to_chat(owner, span_purple("Your fae senses reach out to detect what they're carrying...")) - for(var/obj/item/item in total_list) - if(item.is_magic) - to_chat(owner, "- [span_nicegreen("[item.name]")]") - else if(item.is_iron) - to_chat(owner, "- [span_danger("[item.name]")]") - else - to_chat(owner, "- [item.name]") + for(var/obj/item/item in target.get_all_contents()) + if(isorgan(item) || isbodypart(item)) + continue + to_chat(owner, "- [item.name]") //DARKLING TRICKERY /datum/discipline_power/mytherceria/darkling_trickery @@ -46,18 +38,31 @@ level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND | DISC_CHECK_LYING - target_type = TARGET_MOB + target_type = TARGET_LIVING range = 3 - duration_length = 10 SECONDS - cooldown_length = 10 SECONDS + cooldown_length = 30 SECONDS /datum/discipline_power/mytherceria/darkling_trickery/activate(mob/living/target) . = ..() - target.show_inv(owner) -/datum/discipline_power/mytherceria/darkling_trickery/deactivate(mob/living/target) - . = ..() + var/list/choices = list() + for(var/obj/item/thing in target.get_all_contents()) + if(isorgan(thing) || isbodypart(thing)) + continue + choices[thing.name] = thing + + if(!length(choices)) + to_chat(owner, span_warning("[target] has nothing to steal.")) + return + + var/picked_name = tgui_input_list(owner, "Choose an item to steal", "Darkling Trickery", choices) + var/obj/item/stolen_item = choices[picked_name] + if(QDELETED(stolen_item) || !(stolen_item in target.get_all_contents())) + return + + stolen_item.remove_item_from_storage(get_turf(owner), owner) + owner.put_in_hands(stolen_item) //GOBLINISM /datum/discipline_power/mytherceria/goblinism @@ -80,18 +85,16 @@ var/obj/item/clothing/mask/facehugger/kiasyd/goblin = new (get_turf(owner)) goblin.throw_at(target, 10, 14, owner) -/datum/discipline_power/mytherceria/goblinism/post_gain() - . = ..() - var/datum/action/mytherceria/changeling_rune = new() - changeling_rune.Grant(owner) - /obj/item/clothing/mask/facehugger/kiasyd name = "goblin" desc = "A green changeling creature." worn_icon = 'modular_darkpack/modules/clothes/icons/worn.dmi' icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' icon_state = "goblin" + base_icon_state = "goblin" + worn_icon_state = "goblin" sterile = TRUE + ONFLOOR_ICON_HELPER('modular_darkpack/modules/deprecated/icons/icons.dmi') /obj/item/clothing/mask/facehugger/kiasyd/attack_hand(mob/user) if(iscarbon(user)) @@ -101,35 +104,34 @@ return . = ..() -/obj/item/clothing/mask/facehugger/kiasyd/Die() +/obj/item/clothing/mask/facehugger/kiasyd/die() qdel(src) -/obj/item/clothing/mask/facehugger/kiasyd/Leap(mob/living/M) - if(iscarbon(M)) - var/mob/living/carbon/target = M - if(target.wear_mask && istype(target.wear_mask, /obj/item/clothing/mask/facehugger/kiasyd)) - return FALSE - M.visible_message(span_danger("[src] leaps at [M]'s face!"), \ +/obj/item/clothing/mask/facehugger/kiasyd/leap_to(mob/living/hit_mob) + var/mob/living/carbon/human/target = astype(hit_mob) + if(target) + return FALSE + if(target.wear_mask && istype(target.wear_mask, /obj/item/clothing/mask/facehugger/kiasyd)) + return FALSE + target.visible_message(span_danger("[src] leaps at [target]'s face!"), \ span_userdanger("[src] leaps at your face!")) - if(iscarbon(M)) - var/mob/living/carbon/target = M - - if(target.head) - var/obj/item/clothing/W = target.head - target.dropItemToGround(W, TRUE) - - if(target.wear_mask) - var/obj/item/clothing/W = target.wear_mask - if(target.dropItemToGround(W, TRUE)) - target.visible_message( - span_danger("[src] tears [W] off of [target]'s face!"), \ - span_userdanger("[src] tears [W] off of your face!")) - target.equip_to_slot_if_possible(src, ITEM_SLOT_MASK, 0, 1, 1) - var/datum/cb = CALLBACK(src,/obj/item/clothing/mask/facehugger/kiasyd/proc/eat_head) - for(var/i in 1 to 10) - addtimer(cb, (i - 1) * 1.5 SECONDS) - spawn(16 SECONDS) - qdel(src) + + if(target.head) + var/obj/item/clothing/W = target.head + target.dropItemToGround(W, TRUE) + + if(target.wear_mask) + var/obj/item/clothing/W = target.wear_mask + if(target.dropItemToGround(W, TRUE)) + target.visible_message( + span_danger("[src] tears [W] off of [target]'s face!"), \ + span_userdanger("[src] tears [W] off of your face!")) + target.equip_to_slot_if_possible(src, ITEM_SLOT_MASK, 0, 1, 1) + var/datum/cb = CALLBACK(src,/obj/item/clothing/mask/facehugger/kiasyd/proc/eat_head) + for(var/i in 1 to 10) + addtimer(cb, (i - 1) * 1.5 SECONDS) + spawn(16 SECONDS) + qdel(src) return TRUE /obj/item/clothing/mask/facehugger/kiasyd/proc/eat_head() @@ -138,98 +140,6 @@ to_chat(C, span_warning("[src] is eating your face!")) C.apply_damage(5, BRUTE) -/datum/action/mytherceria - name = "Mytherceria Traps" - desc = "Create a trap." - button_icon_state = "mytherceria" - check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_LYING|AB_CHECK_CONSCIOUS - vampiric = TRUE - -/datum/action/mytherceria/Trigger() - . = ..() - var/mob/living/carbon/human/H = owner - var/try_trap = input(H, "Select a Trap:", "Trap") as null|anything in list("Brutal", "Spin", "Drop") - if(try_trap) - if(H.bloodpool < 1) - to_chat(owner, span_warning("You don't have enough BLOOD to do that!")) - return - H.adjust_blood_pool(-1) - switch(try_trap) - if("Brutal") - var/obj/mytherceria_trap/trap = new (get_turf(owner)) - trap.owner = owner - if("Spin") - var/obj/mytherceria_trap/disorient/trap = new (get_turf(owner)) - trap.owner = owner - if("Drop") - var/obj/mytherceria_trap/drop/trap = new (get_turf(owner)) - trap.owner = owner - to_chat(owner, span_notice("You've created a trap!")) - -/obj/mytherceria_trap - name = "mytherceria trap" - desc = "Creates the Changeling Trap to protect kiasyd or his domain." - anchored = TRUE - density = FALSE - alpha = 64 - icon = 'modular_darkpack/modules/deprecated/icons/icons.dmi' - icon_state = "rune1" - color = "#4182ad" - var/unique = FALSE - var/mob/owner - -/obj/mytherceria_trap/Crossed(atom/movable/AM) - . = ..() - if(isliving(AM) && owner) - if(AM != owner) - playsound(get_turf(src), 'modular_darkpack/modules/deprecated/sounds/kiasyd.ogg', 100, FALSE) - if(!unique) - var/mob/living/L = AM - var/atom/throw_target = get_edge_target_turf(AM, get_dir(src, AM)) - L.apply_damage(30, BRUTE) - AM.throw_at(throw_target, rand(8,10), 14, owner) - qdel(src) - -/obj/mytherceria_trap/disorient - name = "mytherceria trap" - desc = "Creates the Changeling Trap to protect kiasyd or his domain." - anchored = TRUE - density = FALSE - unique = TRUE - icon_state = "rune2" - -/obj/mytherceria_trap/disorient/Crossed(atom/movable/AM) - . = ..() - if(isliving(AM) && owner) - if(AM != owner) - var/mob/living/L = AM - var/list/screens = list(L.hud_used.plane_masters["[FLOOR_PLANE]"], L.hud_used.plane_masters["[GAME_PLANE]"], L.hud_used.plane_masters["[LIGHTING_PLANE]"]) - var/rotation = 50 - for(var/whole_screen in screens) - animate(whole_screen, transform = matrix(rotation, MATRIX_ROTATE), time = 0.5 SECONDS, easing = QUAD_EASING, loop = -1) - animate(transform = matrix(-rotation, MATRIX_ROTATE), time = 0.5 SECONDS, easing = QUAD_EASING) - spawn(15 SECONDS) - for(var/whole_screen in screens) - animate(whole_screen, transform = matrix(), time = 0.5 SECONDS, easing = QUAD_EASING) - qdel(src) - -/obj/mytherceria_trap/drop - name = "mytherceria trap" - desc = "Creates the Changeling Trap to protect kiasyd or his domain." - anchored = TRUE - density = FALSE - unique = TRUE - icon_state = "rune3" - -/obj/mytherceria_trap/drop/Crossed(atom/movable/AM) - . = ..() - if(iscarbon(AM) && owner) - if(AM != owner) - var/mob/living/carbon/L = AM - for(var/obj/item/I in L.get_equipped_items(include_pockets = TRUE)) - L.dropItemToGround(I, TRUE) - qdel(src) - //CHANJELIN WARD /datum/discipline_power/mytherceria/chanjelin_ward name = "Chanjelin Ward" @@ -237,7 +147,7 @@ level = 4 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE - target_type = TARGET_MOB + target_type = TARGET_LIVING range = 5 aggravating = TRUE @@ -248,28 +158,8 @@ /datum/discipline_power/mytherceria/chanjelin_ward/activate(mob/living/target) . = ..() - var/list/screens = list(target.hud_used.plane_masters["[FLOOR_PLANE]"], target.hud_used.plane_masters["[GAME_PLANE]"], target.hud_used.plane_masters["[LIGHTING_PLANE]"]) - var/rotation = 50 - for(var/whole_screen in screens) - animate(whole_screen, transform = matrix(rotation, MATRIX_ROTATE), time = 0.5 SECONDS, easing = QUAD_EASING, loop = -1) - animate(transform = matrix(-rotation, MATRIX_ROTATE), time = 0.5 SECONDS, easing = QUAD_EASING) + target.apply_status_effect(/datum/status_effect/confusion, 10 SECONDS) -/datum/discipline_power/mytherceria/chanjelin_ward/deactivate(mob/living/target) - . = ..() - var/list/screens = list(target.hud_used.plane_masters["[FLOOR_PLANE]"], target.hud_used.plane_masters["[GAME_PLANE]"], target.hud_used.plane_masters["[LIGHTING_PLANE]"]) - for(var/whole_screen in screens) - animate(whole_screen, transform = matrix(), time = 0.5 SECONDS, easing = QUAD_EASING) - -/datum/discipline_power/mytherceria/chanjelin_ward/can_activate(mob/living/target, alert) - . = ..() - if (!.) - return . - - if (!target.client) - to_chat(owner, span_warning("You cannot cast [src] on mindless entities!")) - return FALSE - - return . //RIDDLE PHANTASTIQUE /datum/discipline_power/mytherceria/riddle_phantastique @@ -291,7 +181,7 @@ var/list/riddle_list = list("Create a new riddle...") for(var/datum/riddle/riddle in stored_riddles) riddle_list += riddle.riddle_text - var/try_riddle = input(owner, "Select a Riddle:", "Riddle") as null|anything in riddle_list + var/try_riddle = tgui_input_list(owner, "Select a Riddle:", "Riddle", riddle_list) if(try_riddle) if(try_riddle == "Create a new riddle...") var/datum/riddle/riddle = new () @@ -328,18 +218,19 @@ name = "Riddle" desc = "You have a riddle to solve!" icon_state = "riddle" - + icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' var/datum/riddle/riddle var/bad_answers = 0 /atom/movable/screen/alert/riddle/Click() + . = ..() if(iscarbon(usr) && (usr == owner)) var/mob/living/carbon/M = usr if(riddle) riddle.try_answer(M, src) /datum/riddle/proc/try_answer(mob/living/answerer, atom/movable/screen/alert/riddle/new_alert) - var/try_answer = input(answerer, riddle_text, "Riddle") as null|anything in riddle_options + var/try_answer = tgui_input_list(answerer, riddle_text, "Riddle", shuffle(riddle_options.Copy())) if(try_answer) answer_riddle(answerer, try_answer, new_alert) @@ -349,24 +240,24 @@ /datum/riddle/proc/create_riddle(mob/living/carbon/human/riddler) var/proceed = FALSE - var/text_riddle = input(riddler, "Create a riddle:", "Riddle", "Is it something?") as null|text + var/text_riddle = tgui_input_text(riddler, "Create a riddle:", "Riddle", "Is it something?") if(text_riddle) riddle_text = trim(copytext_char(sanitize(text_riddle), 1, MAX_MESSAGE_LEN)) - var/right_answer = input(riddler, "Create a right answer:", "Riddle", "Something") as null|text + var/right_answer = tgui_input_text(riddler, "Create a right answer:", "Riddle", "Something") if(right_answer) riddle_answer = trim(copytext_char(sanitize(right_answer), 1, MAX_MESSAGE_LEN)) riddle_options += trim(copytext_char(sanitize(right_answer), 1, MAX_MESSAGE_LEN)) proceed = TRUE - var/answer1 = input(riddler, "Create another answer:", "Riddle", "Anything") as null|text + var/answer1 = tgui_input_text(riddler, "Create another answer:", "Riddle", "Anything") if(answer1) riddle_options += trim(copytext_char(sanitize(answer1), 1, MAX_MESSAGE_LEN)) - var/answer2 = input(riddler, "Create another answer:", "Riddle", "Anything") as null|text + var/answer2 = tgui_input_text(riddler, "Create another answer:", "Riddle", "Anything") if(answer2) riddle_options += trim(copytext_char(sanitize(answer2), 1, MAX_MESSAGE_LEN)) - var/answer3 = input(riddler, "Create another answer:", "Riddle", "Anything") as null|text + var/answer3 = tgui_input_text(riddler, "Create another answer:", "Riddle", "Anything") if(answer3) riddle_options += trim(copytext_char(sanitize(answer3), 1, MAX_MESSAGE_LEN)) - var/answer4 = input(riddler, "Create another answer:", "Riddle", "Anything") as null|text + var/answer4 = tgui_input_text(riddler, "Create another answer:", "Riddle", "Anything") if(answer4) riddle_options += trim(copytext_char(sanitize(answer4), 1, MAX_MESSAGE_LEN)) if(proceed) @@ -384,7 +275,7 @@ if(alert.bad_answers >= round(length(riddle_options)/2)) if(iscarbon(answerer)) var/mob/living/carbon/C = answerer - var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue) in C.internal_organs + var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue) in C.organs if(tongue) tongue.Remove(C) to_chat(answerer, diff --git a/modular_darkpack/modules/powers/code/discipline/necromancy.dm b/modular_darkpack/modules/powers/code/discipline/necromancy.dm index 2889dba611e8..89ce91769513 100644 --- a/modular_darkpack/modules/powers/code/discipline/necromancy.dm +++ b/modular_darkpack/modules/powers/code/discipline/necromancy.dm @@ -42,27 +42,30 @@ level = 1 check_flags = DISC_CHECK_CONSCIOUS - vitae_cost = 0 + vitae_cost = 1 activate_sound = 'modular_darkpack/modules/ritual_necromancy/sounds/necromancy1on.ogg' deactivate_sound = 'modular_darkpack/modules/ritual_necromancy/sounds/necromancy1off.ogg' - cooldown_length = 1 SCENES + cooldown_length = 3 SCENES duration_length = 1 SCENES var/datum/storyteller_roll/shroudsight/roll_datum -/datum/discipline_power/necromancy/shroudsight/activate() - . = ..() +/datum/discipline_power/necromancy/shroudsight/pre_activation_checks(mob/living/target) if(!roll_datum) roll_datum = new() var/roll_result = roll_datum.st_roll(owner) + if(roll_result == ROLL_COOLDOWN) + return FALSE + return roll_result == ROLL_SUCCESS - if(roll_result != ROLL_SUCCESS) - return +/datum/discipline_power/necromancy/shroudsight/activate() + . = ..() ADD_TRAIT(owner, TRAIT_GHOST_VISION, NECROMANCY_TRAIT) + ADD_TRAIT(owner, TRAIT_LOCAL_SIXTHSENSE, NECROMANCY_TRAIT) owner.update_sight() to_chat(owner, span_notice("You peek beyond the Shroud.")) @@ -71,6 +74,7 @@ . = ..() REMOVE_TRAIT(owner, TRAIT_GHOST_VISION, NECROMANCY_TRAIT) + REMOVE_TRAIT(owner, TRAIT_LOCAL_SIXTHSENSE, NECROMANCY_TRAIT) owner.update_sight() to_chat(owner, span_warning("Your vision returns to the mortal realm.")) diff --git a/modular_darkpack/modules/powers/code/discipline/obfuscate/obfuscate.dm b/modular_darkpack/modules/powers/code/discipline/obfuscate/obfuscate.dm index 11d9abc4301e..6dc7c090700e 100644 --- a/modular_darkpack/modules/powers/code/discipline/obfuscate/obfuscate.dm +++ b/modular_darkpack/modules/powers/code/discipline/obfuscate/obfuscate.dm @@ -214,6 +214,9 @@ . = ..() RegisterSignal(owner, COMSIG_MOB_EXAMINATE, PROC_REF(store_target_in_list)) +/datum/discipline_power/obfuscate/mask_of_a_thousand_faces/post_loss() + UnregisterSignal(owner, COMSIG_MOB_EXAMINATE) + /datum/discipline_power/obfuscate/mask_of_a_thousand_faces/pre_activation_checks() owner_splat = get_kindred_splat(owner) if(!LAZYLEN(cached_targets)) diff --git a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm index 0b3f1f08c83a..457dcdbb3f3f 100644 --- a/modular_darkpack/modules/powers/code/discipline/presence/presence.dm +++ b/modular_darkpack/modules/powers/code/discipline/presence/presence.dm @@ -30,6 +30,16 @@ //is the difficulty pre-defined? if not, its probably their willpower. var/theirpower = difficulty || target.st_get_stat(STAT_TEMPORARY_WILLPOWER) + // Do we have traits to modify our difficulties? + if((!(owner.obscured_slots & HIDEFACE))&(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE))) // Are we visibly disfigured? + theirpower += 2 // Increase the difficulty by two. + + if(!get_kindred_splat(target)) // Is our target mortal? + if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL)) // Are we stinky? + theirpower += 1 + if((HAS_TRAIT(owner, TRAIT_GLOWING_EYES)) && (!owner.is_eyes_covered()) && (STAT_INTIMIDATION in using_stats)) // Are we intimidating a mortal with uncovered eyes? + theirpower -= 1 + var/successes = SSroll.storyteller_roll_datum(owner, target, difficulty = theirpower, applic_stats = using_stats, numerical = TRUE) //botch diff --git a/modular_darkpack/modules/powers/code/discipline/protean/dirt_pile.dm b/modular_darkpack/modules/powers/code/discipline/protean/dirt_pile.dm index 38f8ecdfe264..63834a16d08b 100644 --- a/modular_darkpack/modules/powers/code/discipline/protean/dirt_pile.dm +++ b/modular_darkpack/modules/powers/code/discipline/protean/dirt_pile.dm @@ -21,7 +21,7 @@ /obj/effect/decal/dirt_pile/Initialize(mapload) . = ..() - update_overlays() + update_appearance(UPDATE_OVERLAYS) /obj/effect/decal/dirt_pile/update_overlays() . = ..() diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index 07ecc504117b..2280d1fb962b 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -63,25 +63,23 @@ var/mob/living/carbon/human/human_target = target var/disabled_any = FALSE - for(var/obj/item/I in human_target.get_head_slots()) - if(istype(I, /obj/item/radio/headset/darkpack)) - var/obj/item/radio/headset/darkpack/radio = I - if(radio.is_on()) - radio.set_on(FALSE) - human_target.visible_message( - span_warning("[human_target]'s [I.name] crackles violently and powers down!"), - span_warning("Your [I.name] crackles violently and powers down!"), - ) - playsound(human_target, 'sound/effects/sparks/sparks4.ogg', 60, TRUE) - disabled_any = TRUE - else - radio.set_on(TRUE) - human_target.visible_message( - span_warning("Electricity surges into [human_target]'s [I.name] - turning it on!"), - span_warning("Electricity surges into your radio - turning it on!"), - ) - playsound(human_target, 'sound/effects/sparks/sparks4.ogg', 60, TRUE) - disabled_any = TRUE + for(var/obj/item/radio/headset/darkpack/radio in human_target.get_contents()) + if(radio.is_on()) + radio.set_on(FALSE) + human_target.visible_message( + span_warning("[human_target]'s [radio.name] crackles violently and powers down!"), + span_warning("Your [radio.name] crackles violently and powers down!"), + ) + playsound(human_target, 'sound/effects/sparks/sparks4.ogg', 60, TRUE) + disabled_any = TRUE + else + radio.set_on(TRUE) + human_target.visible_message( + span_warning("Electricity surges into [human_target]'s [radio.name] - turning it on!"), + span_warning("Electricity surges into your radio - turning it on!"), + ) + playsound(human_target, 'sound/effects/sparks/sparks4.ogg', 60, TRUE) + disabled_any = TRUE if(disabled_any) var/datum/effect_system/basic/spark_spread/spark_system = new(get_turf(human_target), 5, 1) diff --git a/modular_darkpack/modules/powers/code/discipline/valeren.dm b/modular_darkpack/modules/powers/code/discipline/valeren.dm index 239c3a7e2553..97b0535e9d2e 100644 --- a/modular_darkpack/modules/powers/code/discipline/valeren.dm +++ b/modular_darkpack/modules/powers/code/discipline/valeren.dm @@ -363,11 +363,15 @@ #define CAINES_FURY_PROTECTION 15 // borrowed from fortitude +// Halo behavoir is copy pasted from /datum/status_effect/cult_halo /datum/status_effect/armor_of_caines_fury id = "armor_of_caines_fury" status_type = STATUS_EFFECT_REPLACE alert_type = null + tick_interval = STATUS_EFFECT_NO_TICK var/successes = 1 + /// The actual halo applied to the mob + VAR_PRIVATE/mutable_appearance/halo_overlay /datum/status_effect/armor_of_caines_fury/on_creation(mob/living/new_owner, successes_count = 1) successes = successes_count @@ -378,20 +382,21 @@ if (!.) return - if (ishuman(owner)) - var/mob/living/carbon/human/H = owner - RegisterSignal(H, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(reduce_damage)) - H.AddElement(/datum/element/armor_of_caines_fury_halo, initial_delay = 0 SECONDS) - ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) + if(ismob(owner)) + return FALSE + + RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(reduce_damage)) + RegisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(add_halo)) + refresh_halo() /datum/status_effect/armor_of_caines_fury/on_remove() . = ..() - if (ishuman(owner)) - var/mob/living/carbon/human/H = owner - UnregisterSignal(H, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS) - H.RemoveElement(/datum/element/armor_of_caines_fury_halo) - REMOVE_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) + UnregisterSignal(owner, list(COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_ATOM_UPDATE_OVERLAYS)) + owner.update_appearance(UPDATE_OVERLAYS) + + REMOVE_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, TRAIT_STATUS_EFFECT(id)) + halo_overlay = null /datum/status_effect/armor_of_caines_fury/proc/reduce_damage(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER @@ -401,37 +406,27 @@ var/protection = clamp(successes * CAINES_FURY_PROTECTION, 0, 90) // we don't yet have a comparison for what 1 point of armor means in v20 vs ingame, so this is just a percent reduction for now damage_mods += (100 - protection) / 100 -#undef CAINES_FURY_PROTECTION +/datum/status_effect/armor_of_caines_fury/proc/refresh_halo() + ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, TRAIT_STATUS_EFFECT(id)) + owner.update_appearance(UPDATE_OVERLAYS) + new /obj/effect/temp_visual/cult/sparks(get_turf(owner), owner.dir) -// Halo stuff for Armor of Caine's Fury -/datum/element/armor_of_caines_fury_halo +/datum/status_effect/armor_of_caines_fury/proc/add_halo(datum/source, list/overlay_list) + SIGNAL_HANDLER -/datum/element/armor_of_caines_fury_halo/Attach(datum/target, initial_delay = 20 SECONDS) - . = ..() - if (!isliving(target)) - return ELEMENT_INCOMPATIBLE + halo_overlay ||= mutable_appearance('icons/mob/effects/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) + halo_overlay.pixel_z = 0 + halo_overlay.pixel_w = 0 + if (ishuman(owner)) + var/mob/living/carbon/human/human_parent = owner + human_parent.apply_height(halo_overlay, UPPER_BODY) - addtimer(CALLBACK(src, PROC_REF(set_halo), target), initial_delay) + var/obj/item/bodypart/head/human_head = human_parent.get_bodypart(BODY_ZONE_HEAD) + human_head?.worn_head_offset?.apply_offset(halo_overlay) -/datum/element/armor_of_caines_fury_halo/proc/set_halo(mob/living/target) - SIGNAL_HANDLER - var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/mob/effects/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) - if (ishuman(target)) - var/mob/living/carbon/human/human_parent = target - new /obj/effect/temp_visual/cult/sparks(get_turf(human_parent), human_parent.dir) - human_parent.overlays_standing[HALO_LAYER] = new_halo_overlay - human_parent.apply_overlay(HALO_LAYER) - else - target.add_overlay(new_halo_overlay) + overlay_list += halo_overlay -/datum/element/armor_of_caines_fury_halo/Detach(mob/living/target, ...) - if (ishuman(target)) - var/mob/living/carbon/human/human_parent = target - human_parent.remove_overlay(HALO_LAYER) - human_parent.update_body() - else - target.cut_overlay(HALO_LAYER) - return ..() +#undef CAINES_FURY_PROTECTION // this is basically just potence 5 with stat bonuses, used potence as a baseline because of the 'makes for significant damage' wording in v20 above /datum/discipline_power/valeren/vengeance_of_samiel diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm index 3663469de8b9..8e838f973e6a 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/flesh_items.dm @@ -3,7 +3,7 @@ desc = "A talented fleshcrafted creature that can insert an implant or organ into its master without the hassle of extensive surgery. \ Its mouth is eagerly awaiting implants or organs. However, it's quite greedy, so a screwdriver must be used to pry away accidentally added items." icon = 'modular_darkpack/modules/powers/icons/flesh_items.dmi' - custom_materials = list(/datum/material/meat = SHEET_MATERIAL_AMOUNT * 10, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) + custom_materials = list(/datum/material/meat = SHEET_MATERIAL_AMOUNT * 10, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /obj/structure/fleshwall name = "flesh wall" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm index 779654f68f62..498886581540 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/objects/surgery_tools.dm @@ -104,7 +104,7 @@ desc = "A set of sensory tendrils that swiftly assess the health conditions of a patient" icon = 'icons/obj/medical/organs/organs.dmi' icon_state = "hivenode" - advanced = TRUE + scanpower = SCANPOWER_ADVANCED /obj/item/shockpaddles/cyborg/vicissitude name = "electrocyte stack" diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm index aa102bfa3861..47d10e57c37b 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/shapeshifting.dm @@ -87,7 +87,7 @@ target.physique = (chosen_physique == "Masculine") ? MALE : FEMALE target.dna.update_ui_block(/datum/dna_block/identity/gender) target.update_body(is_creating = TRUE) // or else physique won't change properly - target.update_mutations_overlay() //(hulk male/female) + target.update_appearance(UPDATE_OVERLAYS) //(hulk male/female) target.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) @@ -199,7 +199,7 @@ target.skin_tone = new_s_tone target.dna.update_ui_block(/datum/dna_block/identity/skin_tone) target.update_body(is_creating = TRUE) - target.update_mutations_overlay() + target.update_appearance(UPDATE_OVERLAYS) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) playsound(target, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) to_chat(owner, span_notice("You finish altering the race of [target].")) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm index c13d54100152..83d4d00ef6b0 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/sex_change.dm @@ -59,7 +59,7 @@ patient.physique = (chosen_physique == "Masculine") ? MALE : FEMALE patient.dna.update_ui_block(/datum/dna_block/identity/gender) patient.update_body(is_creating = TRUE) // or else physique won't change properly - patient.update_mutations_overlay() + patient.update_appearance(UPDATE_OVERLAYS) patient.update_clothing(ITEM_SLOT_ICLOTHING) // update gender shaped clothing SEND_SIGNAL(surgeon, COMSIG_MASQUERADE_VIOLATION) playsound(patient, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) diff --git a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm index 140814dac4de..f959bc007dbd 100644 --- a/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm +++ b/modular_darkpack/modules/powers/code/discipline/vicissitude/surgeries/skin_colour_change.dm @@ -46,7 +46,7 @@ patient.skin_tone = new_s_tone patient.dna.update_ui_block(/datum/dna_block/identity/skin_tone) patient.update_body(is_creating = TRUE) - patient.update_mutations_overlay() + patient.update_appearance(UPDATE_OVERLAYS) SEND_SIGNAL(surgeon, COMSIG_MASQUERADE_VIOLATION) playsound(patient, 'modular_darkpack/modules/powers/sounds/vicissitude.ogg', 50, TRUE) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 81c3b30cb503..9c09d7cf1645 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -18,15 +18,6 @@ owner.set_body_sprite("gargoyle") owner.update_body_parts() owner.update_body() - // since dot 4 is always active and requires no roll - if(level >= 4) - owner.physiology.brute_mod *= 0.8 - owner.physiology.heat_mod *= 0.5 - //owner.physiology.clone_mod *= 0.9 - //ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_GENERIC) - ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT(type)) - if(!(owner.is_clan(/datum/subsplat/vampire_clan/gargoyle))) - ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) //SKIN OF THE CHAMELEON /datum/discipline_power/visceratika/skin_of_the_chameleon @@ -62,23 +53,40 @@ //SCRY THE HEARTHSTONE /datum/discipline_power/visceratika/scry_the_hearthstone name = "Scry the Hearthstone" - desc = "Sense the exact locations of individuals around you." + desc = "Sense the exact locations of everyone within a structure." willpower_cost = 1 level = 2 check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_SEE toggled = TRUE - var/area/starting_area var/datum/storyteller_roll/scry_the_hearthstone/scry_roll + var/area/monitoring_area + /datum/storyteller_roll/scry_the_hearthstone bumper_text = "scry the hearthstone" applicable_stats = list(STAT_PERCEPTION, STAT_AWARENESS) roll_output_type = ROLL_PRIVATE +/datum/discipline_power/visceratika/scry_the_hearthstone/New(datum/discipline/discipline) + . = ..() + + scry_roll = new() + +/datum/discipline_power/visceratika/scry_the_hearthstone/can_activate(atom/target, alert) + . = ..() + if (!.) + return . + + // Can only be used to detect people 'inside a given structure' + var/area/in_area = get_area(owner) + if (in_area.outdoors) + if (alert) + to_chat(owner, span_warning("You can only use [name] indoors!")) + return FALSE + /datum/discipline_power/visceratika/scry_the_hearthstone/pre_activation_checks() . = ..() - if(!scry_roll) - scry_roll = new() + if(scry_roll.st_roll(owner, owner) == ROLL_SUCCESS) return TRUE else @@ -86,28 +94,77 @@ /datum/discipline_power/visceratika/scry_the_hearthstone/activate() . = ..() - for(var/mob/living/player in GLOB.player_list) - if(get_area(player) == get_area(owner)) - var/their_name = player.name - if(ishuman(player)) - var/mob/living/carbon/human/human_player = player - their_name = human_player.name - to_chat(owner, "- [their_name]") - starting_area = get_area(owner) + + monitoring_area = get_area(owner) + + // In the TTRPG this is resisted when targets are hiding (V20 p. 476), but there is no roll to resist here + var/found_anyone = FALSE + for (var/mob/living/player in (GLOB.player_list - owner)) + if (get_area(player) != monitoring_area) + continue + + to_chat(owner, "- [GET_GUESTBOOK_NAME(owner, player)] is [get_relative_location_description(player)].") + RegisterSignal(player, COMSIG_EXIT_AREA, PROC_REF(on_target_exit_area)) + found_anyone = TRUE + + if (!found_anyone) + to_chat(owner, span_notice("You don't sense anyone interesting in the area.")) + ADD_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT(type)) owner.update_sight() //visceratika 2 gives a gargoyle a heatmap of all living people in a building. if they leave the building, they need to re-cast it. - RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_area_exited)) + RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_caster_exit_area)) + // Also alert the user when someone enters the building + RegisterSignal(monitoring_area, COMSIG_AREA_ENTERED, PROC_REF(on_area_entered)) + +/** + * Returns a text description of the distance and direction from the owner to the target + */ +/datum/discipline_power/visceratika/scry_the_hearthstone/proc/get_relative_location_description(mob/living/target) + var/distance = get_dist(owner, target) + if (distance == 0) + return "close to you" + else + return "[distance] [distance == 1 ? "yard" : "yards"] [dir2text(get_dir(owner, target))]" + +/datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_target_exit_area(mob/living/source, area/old_area) + SIGNAL_HANDLER + + if (!active) + return + + to_chat(owner, span_warning("[GET_GUESTBOOK_NAME(owner, source)] left your monitored area [get_relative_location_description(source)].")) + UnregisterSignal(source, COMSIG_EXIT_AREA) -/datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_exited(atom/movable/source, area/old_area) +/datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_entered(area/source, atom/movable/arrived, area/old_area) + SIGNAL_HANDLER + + if (!isliving(arrived)) + return + var/mob/living/entering_mob = arrived + + // Only players are interesting enough to alert the caster of + if (!GET_CLIENT(entering_mob)) + return + + to_chat(owner, span_warning("[GET_GUESTBOOK_NAME(owner, entering_mob)] entered your monitored area [get_relative_location_description(entering_mob)].")) + RegisterSignal(entering_mob, COMSIG_EXIT_AREA, PROC_REF(on_target_exit_area)) + +/datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_caster_exit_area(mob/living/source, area/old_area) SIGNAL_HANDLER to_chat(owner, span_warning("You lose your connection to the stone as you leave the area.")) - starting_area = null + try_deactivate() + +/datum/discipline_power/visceratika/scry_the_hearthstone/deactivate(atom/target, direct) + . = ..() + REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT(type)) owner.update_sight() UnregisterSignal(owner, COMSIG_EXIT_AREA) - try_deactivate() + + UnregisterSignal(monitoring_area, COMSIG_AREA_ENTERED) + monitoring_area = null //BOND WITH THE MOUNTAIN /datum/discipline_power/visceratika/bond_with_the_mountain @@ -174,14 +231,30 @@ desc = "This power requires no roll and is always active. Your stony skin has hardened to the point where nearly all damage against you is lessened." level = 4 - check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_LYING + check_flags = NONE vitae_cost = 0 -/datum/discipline_power/visceratika/armor_of_terra/activate() +/datum/discipline_power/visceratika/armor_of_terra/post_gain() + owner.physiology.brute_mod *= 0.8 + owner.physiology.heat_mod *= 0.5 + ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT(type)) + if (!owner.is_clan(/datum/subsplat/vampire_clan/gargoyle)) + ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) + +/datum/discipline_power/visceratika/armor_of_terra/post_loss() + owner.physiology.brute_mod *= 1.25 + owner.physiology.heat_mod *= 2 + REMOVE_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT(type)) + REMOVE_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) + +/datum/discipline_power/visceratika/armor_of_terra/can_activate_untargeted(alert) . = ..() - to_chat(owner, span_danger("This is a passive ability. The effects are already active!")) + if (alert) + to_chat(owner, span_danger("[name] is a passive ability. The effects are already active!")) + + return FALSE //FLOW WITHIN THE MOUNTAIN /datum/discipline_power/visceratika/flow_within_the_mountain @@ -197,12 +270,14 @@ duration_length = 1 SCENES // might be too long... cooldown_length = 10 SECONDS -/datum/discipline_power/visceratika/flow_within_the_mountain/try_activate() - // placed in try_activate instead of pre_activation_checks so as to not consume blood while running this check +/datum/discipline_power/visceratika/flow_within_the_mountain/can_activate(atom/target, alert) + . = ..() + if (!.) + return . + if(!HAS_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN)) - to_chat(owner, span_notice("You must cast Bond with the Mountain first before using Flow within the Mountain")) + to_chat(owner, span_notice("You must cast Bond with the Mountain before using Flow within the Mountain")) return FALSE - ..() /datum/discipline_power/visceratika/flow_within_the_mountain/activate() . = ..() diff --git a/modular_darkpack/modules/powers/code/discipline_actions.dm b/modular_darkpack/modules/powers/code/discipline_actions.dm index 4e6d0af95f42..72bf55f2f70a 100644 --- a/modular_darkpack/modules/powers/code/discipline_actions.dm +++ b/modular_darkpack/modules/powers/code/discipline_actions.dm @@ -94,6 +94,14 @@ /datum/action/discipline/IsAvailable(feedback) return discipline.current_power.can_activate_untargeted(feedback) +/datum/action/discipline/proc/trigger_level(mob/user, level, trigger_flags) + // This proc is for specific levels only, unlike switch_level() it should never roll over to 1 or the max level + if (discipline.level < level || level < 0) + return + + switch_level(level - discipline.level_casting, TRUE) + return Trigger(user, trigger_flags) + /datum/action/discipline/Trigger(mob/clicker, trigger_flags) . = ..() if(!.) @@ -180,7 +188,7 @@ return //actually try to use the Discipline on the target - spawn() + ASYNC if (discipline.current_power.try_activate(target)) end_targeting() @@ -199,6 +207,18 @@ targeting = TRUE client.mouse_pointer_icon = 'modular_darkpack/modules/deprecated/icons/effects/mouse_pointers/discipline.dmi' +/datum/action/discipline/proc/select() + background_icon_state = "bg_discipline_selected" + build_all_button_icons() + SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', volume = 50)) + +/datum/action/discipline/proc/unselect(swapping = TRUE) + background_icon_state = "bg_discipline" + build_all_button_icons() + // If you're activating another at the same time, this isn't necessary + if (!swapping) + SEND_SOUND(owner, sound('modular_darkpack/modules/deprecated/sounds/highlight.ogg', volume = 50)) + /atom/movable/screen/movable/action_button/Click(location, control, params) if(istype(linked_action, /datum/action/discipline)) var/list/modifiers = params2list(params) diff --git a/modular_darkpack/modules/powers/code/discipline_configs.dm b/modular_darkpack/modules/powers/code/discipline_configs.dm new file mode 100644 index 000000000000..29dabde64416 --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline_configs.dm @@ -0,0 +1,15 @@ +// I'm not happy about it either, but keybinds by default load before config so I had to put it somewhere + +/datum/config_entry/flag/discipline_keybinds + +/datum/config_entry/flag/discipline_keybinds/ValidateAndSet(str_val) + . = ..() + + init_normal_discipline_keybinds() + +/datum/config_entry/flag/individual_power_keybinds + +/datum/config_entry/flag/individual_power_keybinds/ValidateAndSet(str_val) + . = ..() + + init_individual_power_keybinds() diff --git a/modular_darkpack/modules/powers/code/discipline_keybindings.dm b/modular_darkpack/modules/powers/code/discipline_keybindings.dm new file mode 100644 index 000000000000..be98b1bc586b --- /dev/null +++ b/modular_darkpack/modules/powers/code/discipline_keybindings.dm @@ -0,0 +1,134 @@ +/** + * Keybind for generically selecting which Discipline to select, used in tandem with + * /datum/keybinding/discipline_activate to activate a power of the selected Discipline + * + * Enabled by the DISCIPLINE_KEYBINDS config + */ +/datum/keybinding/discipline_select + category = CATEGORY_DISCIPLINES + keybind_signal = COMSIG_KB_DISCIPLINE_SELECT + /// Number (from left to right on the UI) of the Discipline to select + var/slot + +/datum/keybinding/discipline_select/proc/assign_slot(slot) + hotkey_keys = list() + classic_keys = list() + src.slot = slot + switch (slot) + if (0) + name = "unselect Discipline" + full_name = "Unselect Discipline" + description = "Unselect the Discipline you previously used keybinds to select" + if (1) + // Bloodheal is technically counted as a Discipline and it always takes slot 1 + name = "select Bloodheal" + full_name = "Select Bloodheal" + else + name = "select Discipline [slot - 1]" + full_name = "Select Discipline [slot - 1]" + description = "Select your [slot - 1]\th Discipline in the order you were given them" + +/datum/keybinding/discipline_select/down(client/user, turf/target, mousepos_x, mousepos_y) + . = ..() + if (.) + return + + var/datum/splat/vampire/vampirism = get_splat_with_discipline(user.mob) + + return vampirism?.set_selected_power(slot) + +/** + * Keybind for activating a specified level of the Discipline previously selected + * with /datum/keybinding/discipline_select + * + * Enabled by the DISCIPLINE_KEYBINDS config + */ +/datum/keybinding/discipline_activate + category = CATEGORY_DISCIPLINES + keybind_signal = COMSIG_KB_DISCIPLINE_ACTIVATE + /// Which level of the selected Discipline to activate + var/level + +/datum/keybinding/discipline_activate/proc/assign_level(level) + hotkey_keys = list() + classic_keys = list() + src.level = level + name = "activate Discipline level [level]" + full_name = "Activate Discipline level [level]" + description = "Activate the [level]\th level power of your selected Discipline" + +/datum/keybinding/discipline_activate/down(client/user, turf/target, mousepos_x, mousepos_y) + . = ..() + if (.) + return + + var/datum/splat/vampire/vampirism = get_splat_with_discipline(user.mob) + + return vampirism?.get_selected_power()?.trigger_level(user.mob, level) + +/** + * Keybind for activating a specified Discipline power, with a keybind for every possible power + * + * Enabled by the INDIVIDUAL_POWER_KEYBINDS config, off by default due to keybind spam + */ +/datum/keybinding/discipline_power + category = CATEGORY_DISCIPLINE_POWERS + keybind_signal = COMSIG_KB_DISCIPLINE_POWER_ACTIVATE + /// Which Discipline the power falls under + var/datum/discipline/discipline_type + /// Which level of the Discipline the power is + var/level + +/datum/keybinding/discipline_power/proc/assign_power(datum/discipline/discipline_type, level) + hotkey_keys = list() + classic_keys = list() + src.discipline_type = discipline_type + src.level = level + name = "activate [discipline_type::name] [level]" + full_name = "Activate [discipline_type::name] [level]" + +/datum/keybinding/discipline_power/down(client/user, turf/target, mousepos_x, mousepos_y) + . = ..() + if (.) + return + + var/datum/splat/vampire/vampirism = get_splat_with_discipline(user.mob) + if (!vampirism) + return + + var/datum/action/discipline/discipline_action = vampirism.get_power(discipline_type) + + return discipline_action?.trigger_level(user.mob, level) + +// These are called when the configs for them are set rather than on keybind init because keybind init happens before configs are loaded +/proc/init_normal_discipline_keybinds() + if (!CONFIG_GET(flag/discipline_keybinds)) + return + + // Slot 0 is for unselecting, and Bloodheal counts as an extra Discipline + for (var/slot in 0 to DISCIPLINE_SELECTION_KEYBINDS_AMOUNT + 1) + var/datum/keybinding/discipline_select/selection_kb = new + selection_kb.assign_slot(slot) + add_keybinding(selection_kb) + + for (var/level in 1 to DISCIPLINE_ACTIVATION_KEYBINDS_AMOUNT) + var/datum/keybinding/discipline_activate/activation_kb = new + activation_kb.assign_level(level) + add_keybinding(activation_kb) + +/proc/init_individual_power_keybinds() + if (!CONFIG_GET(flag/individual_power_keybinds)) + return + + for (var/discipline_type in valid_subtypesof(/datum/discipline)) + // Special case since Torpor has only one level + if (discipline_type == /datum/discipline/torpor) + var/datum/keybinding/discipline_power/torpor_kb = new + torpor_kb.assign_power(discipline_type, 1) + add_keybinding(torpor_kb) + continue + + for (var/level in 1 to DISCIPLINE_ACTIVATION_KEYBINDS_AMOUNT) + var/datum/keybinding/discipline_power/power_kb = new + power_kb.assign_power(discipline_type, level) + add_keybinding(power_kb) diff --git a/modular_darkpack/modules/retail/code/_retail.dm b/modular_darkpack/modules/retail/code/_retail.dm index 24010e5d9b7a..45f144715517 100644 --- a/modular_darkpack/modules/retail/code/_retail.dm +++ b/modular_darkpack/modules/retail/code/_retail.dm @@ -27,6 +27,8 @@ build_inventory() /obj/structure/retail/proc/cleanup_owner() + SIGNAL_HANDLER + my_owner = null //whether or not the user can shop at this store. diff --git a/modular_darkpack/modules/retail/code/stores/clothing_store.dm b/modular_darkpack/modules/retail/code/stores/clothing_store.dm index f4bb12163c40..1ec31edbcaea 100644 --- a/modular_darkpack/modules/retail/code/stores/clothing_store.dm +++ b/modular_darkpack/modules/retail/code/stores/clothing_store.dm @@ -35,7 +35,8 @@ new /datum/data/vending_product("punk outfit", /obj/item/clothing/under/vampire/emo, 20), new /datum/data/vending_product("red hipster outfit", /obj/item/clothing/under/vampire/red, 20), new /datum/data/vending_product("messy shirt", /obj/item/clothing/under/vampire/bouncer, 15), - new /datum/data/vending_product("blue overals", /obj/item/clothing/under/vampire/mechanic, 20), + new /datum/data/vending_product("blue overalls", /obj/item/clothing/under/vampire/mechanic, 20), + new /datum/data/vending_product("black overalls", /obj/item/clothing/under/vampire/graveyard, 20), new /datum/data/vending_product("black grunge outfit", /obj/item/clothing/under/vampire/black, 20), new /datum/data/vending_product("gimp outfit", /obj/item/clothing/under/vampire/nosferatu, 15), new /datum/data/vending_product("female gimp outfit", /obj/item/clothing/under/vampire/nosferatu/female, 15), diff --git a/modular_darkpack/modules/retail/code/stores/grocery_store.dm b/modular_darkpack/modules/retail/code/stores/grocery_store.dm index 6fb4dd5ac7a1..2a996b58d85c 100644 --- a/modular_darkpack/modules/retail/code/stores/grocery_store.dm +++ b/modular_darkpack/modules/retail/code/stores/grocery_store.dm @@ -10,12 +10,12 @@ new /datum/data/vending_product("summer thaw", /obj/item/reagent_containers/cup/soda_cans/summer_thaw), new /datum/data/vending_product("milk", /obj/item/reagent_containers/condiment/milk), new /datum/data/vending_product("bread", /obj/item/food/bread/plain, 8), - new /datum/data/vending_product("spaghetti", /obj/item/food/spaghetti, 6), + new /datum/data/vending_product("spaghetti", /obj/item/food/spaghetti/raw, 6), new /datum/data/vending_product("tomato", /obj/item/food/grown/tomato), new /datum/data/vending_product("cabbage", /obj/item/food/grown/cabbage), new /datum/data/vending_product("garlic", /obj/item/food/grown/garlic), new /datum/data/vending_product("onion", /obj/item/food/grown/onion), - new /datum/data/vending_product("parsnip", /obj/item/food/grown/parsnip), + new /datum/data/vending_product("parsnip", /obj/item/food/grown/carrotlike/parsnip), new /datum/data/vending_product("peas", /obj/item/food/grown/peas), new /datum/data/vending_product("corn", /obj/item/food/grown/corn), new /datum/data/vending_product("apple", /obj/item/food/grown/apple), diff --git a/modular_darkpack/modules/retail/code/stores/hardware_store.dm b/modular_darkpack/modules/retail/code/stores/hardware_store.dm index 377f29af4f2a..617d600d7a11 100644 --- a/modular_darkpack/modules/retail/code/stores/hardware_store.dm +++ b/modular_darkpack/modules/retail/code/stores/hardware_store.dm @@ -7,6 +7,8 @@ new /datum/data/vending_product("baseball bat", /obj/item/melee/baseball_bat/vamp, 200), new /datum/data/vending_product("knife", /obj/item/knife/vamp, 100), new /datum/data/vending_product("stake", /obj/item/vampire_stake, 100), + new /datum/data/vending_product("scythe", /obj/item/scythe/vamp, 2000), + new /datum/data/vending_product("shovel", /obj/item/shovel/vamp, 800), new /datum/data/vending_product("box of light bulbs", /obj/item/storage/box/lights/mixed, 80), new /datum/data/vending_product("construction vest", /obj/item/clothing/suit/hazardvest, 80) ) diff --git a/modular_darkpack/modules/ritual_abyss_mysticism/code/abyss_tome.dm b/modular_darkpack/modules/ritual_abyss_mysticism/code/abyss_tome.dm index 25d20d0d3fab..e09c35b0a8be 100644 --- a/modular_darkpack/modules/ritual_abyss_mysticism/code/abyss_tome.dm +++ b/modular_darkpack/modules/ritual_abyss_mysticism/code/abyss_tome.dm @@ -6,6 +6,7 @@ ONFLOOR_ICON_HELPER('modular_darkpack/modules/ritual_abyss_mysticism/icons/abyss_mysticism_onfloor.dmi') rune_type = /obj/ritual_rune/abyss discipline_type = /datum/discipline/obtenebration + custom_materials = list(/datum/material/paper = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) /obj/item/ritual_tome/abyss/attack_self(mob/user) var/mob/living/living_user = astype(user) diff --git a/modular_darkpack/modules/ritual_necromancy/code/necromancy_tome.dm b/modular_darkpack/modules/ritual_necromancy/code/necromancy_tome.dm index 71c36e8d4bcc..68c324a8c315 100644 --- a/modular_darkpack/modules/ritual_necromancy/code/necromancy_tome.dm +++ b/modular_darkpack/modules/ritual_necromancy/code/necromancy_tome.dm @@ -7,9 +7,17 @@ rune_type = /obj/ritual_rune/necromancy var/list/products_list = list( // placeholder, idea is that its similar to thaumaturgy archives + new /datum/data/vending_product("graveyard keys", /obj/item/vamp/keys/graveyard, 1), + new /datum/data/vending_product("obolus", /obj/item/coin/iron/obolus, 2) ) discipline_type = /datum/discipline/necromancy +/obj/item/ritual_tome/necromancy/Initialize(mapload) + . = ..() + for(var/datum/data/vending_product/prize in products_list) + prize.amount = 1 + prize.max_amount = 10 + /obj/item/ritual_tome/necromancy/attack_self(mob/user) var/mob/living/living_user = astype(user) if(!living_user || !living_user.get_discipline(/datum/discipline/necromancy)) @@ -46,6 +54,22 @@ .["user"]["job"] = "Unknown" .["user"]["has_necromancy"] = FALSE + .["product_records"] = list() + for(var/datum/data/vending_product/prize in products_list) + var/stock_count = prize.amount + var/obj/item/product_item = prize.product_path + var/list/product_data = list( + path = replacetext(replacetext("[prize.product_path]", "/obj/item/", ""), "/", "-"), + name = prize.name, + price = prize.price, + ref = REF(prize), + stock = stock_count, + available = (stock_count > 0), + icon = initial(product_item.icon), + icon_state = initial(product_item.icon_state) + ) + .["product_records"] += list(product_data) + /obj/item/ritual_tome/necromancy/ui_act(action, params) if(action != "purchase") return ..() @@ -56,7 +80,18 @@ var/datum/data/vending_product/prize = locate(params["ref"]) in products_list + if(!prize) + return FALSE + + if(prize.amount <= 0) + to_chat(user, span_alert("Error: [prize.name] is out of stock!")) + return FALSE + if(prize.price > user.collected_souls) + to_chat(user, span_alert("Error: Insufficient souls for [prize.name]! You need [prize.price] souls.")) + return FALSE + user.collected_souls -= prize.price + prize.amount -= 1 to_chat(user, span_notice("The necromancy tome resonates with dark energy as it dispenses [prize.name]!")) new prize.product_path(get_turf(user)) return TRUE diff --git a/modular_darkpack/modules/ritual_thaumaturgy/arcane_tome.dm b/modular_darkpack/modules/ritual_thaumaturgy/arcane_tome.dm index 36b88a97ec85..2653aca53053 100644 --- a/modular_darkpack/modules/ritual_thaumaturgy/arcane_tome.dm +++ b/modular_darkpack/modules/ritual_thaumaturgy/arcane_tome.dm @@ -6,6 +6,7 @@ ONFLOOR_ICON_HELPER('modular_darkpack/modules/ritual_thaumaturgy/icons/arcane_tome_onfloor.dmi') rune_type = /obj/ritual_rune/thaumaturgy discipline_type = /datum/discipline/thaumaturgy + custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/paper = SHEET_MATERIAL_AMOUNT * 0.75) /obj/item/ritual_tome/arcane/attack_self(mob/user) var/mob/living/living_user = astype(user) diff --git a/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm b/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm index e83a0f694bcf..a138c3269e6b 100644 --- a/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm +++ b/modular_darkpack/modules/ritual_thaumaturgy/rituals/gargoyle_transformation.dm @@ -163,6 +163,7 @@ if(!G || QDELETED(G)) return if(!G.key || !G.client) + QDEL_NULL(G.ai_controller) G.ai_controller = new /datum/ai_controller/basic_controller/beastmaster_summon(G) if(activator) activator.add_beastmaster_minion(G) diff --git a/modular_darkpack/modules/sabbat/code/vaulderie_goblet.dm b/modular_darkpack/modules/sabbat/code/vaulderie_goblet.dm index 8e1f72a25e6a..9612fc71adff 100644 --- a/modular_darkpack/modules/sabbat/code/vaulderie_goblet.dm +++ b/modular_darkpack/modules/sabbat/code/vaulderie_goblet.dm @@ -3,11 +3,12 @@ desc = "A gleaming goblet used in ancient vampire rites." icon = 'modular_darkpack/modules/sabbat/icons/vaulderie_goblet.dmi' icon_state = "pewter_cup" + base_icon_state = "pewter_cup" w_class = WEIGHT_CLASS_TINY force = 1 throwforce = 1 amount_per_transfer_from_this = 5 - custom_materials = list(/datum/material/iron=100) + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT) possible_transfer_amounts = list(1, 5) volume = 80 spillable = TRUE @@ -23,10 +24,10 @@ /obj/item/reagent_containers/cup/silver_goblet/update_icon_state() . = ..() - if(reagents && (reagents.has_reagent(/datum/reagent/blood) || reagents.has_reagent(/datum/reagent/blood/vitae))) - icon_state = "pewter_cup_filled_blood" + if(reagents && (reagents.has_reagent(/datum/reagent/blood))) + icon_state = "[base_icon_state]_filled_blood" else - icon_state = "pewter_cup" + icon_state = base_icon_state /obj/item/reagent_containers/cup/silver_goblet/attack_self(mob/living/carbon/human/user) if(!istype(user)) @@ -56,7 +57,7 @@ user.adjust_brute_loss(5) reagents.add_reagent(/datum/reagent/blood/vitae, 10) - user.bloodpool -= 2 + user.adjust_blood_pool(-2) if(!(user in blood_donors)) blood_donors += user @@ -128,10 +129,4 @@ name = "Vaulderie Goblet" desc = "An obsidian-black goblet used in ancient vampire rites." icon_state = "vaulderie_goblet" - -/obj/item/reagent_containers/cup/silver_goblet/vaulderie_goblet/update_icon_state() - . = ..() - if(reagents && (reagents.has_reagent(/datum/reagent/blood) || reagents.has_reagent(/datum/reagent/blood/vitae))) - icon_state = "vaulderie_goblet_filled" - else - icon_state = "vaulderie_goblet" + base_icon_state = "vaulderie_goblet" diff --git a/modular_darkpack/modules/splats/code/__splat.dm b/modular_darkpack/modules/splats/code/__splat.dm index 3d2a50dfb225..26d397338aad 100644 --- a/modular_darkpack/modules/splats/code/__splat.dm +++ b/modular_darkpack/modules/splats/code/__splat.dm @@ -47,5 +47,7 @@ /// Powers unique to this splat possessed by the owner var/list/datum/action/powers + /// Which power is currently selected by keybinds + var/datum/action/selected_power /// Mob this splat belongs to var/mob/living/carbon/human/owner diff --git a/modular_darkpack/modules/splats/code/powers/st_power_management.dm b/modular_darkpack/modules/splats/code/powers/st_power_management.dm index 18423915b9ec..168bd05060ff 100644 --- a/modular_darkpack/modules/splats/code/powers/st_power_management.dm +++ b/modular_darkpack/modules/splats/code/powers/st_power_management.dm @@ -18,6 +18,12 @@ /datum/splat/proc/change_power_level(power_type, new_level) CRASH("change_power_level() not implemented for [type]!") +/datum/splat/proc/get_selected_power() + CRASH("get_selected_power() not implemented for [type]!") + +/datum/splat/proc/set_selected_power(datum/action/selected_power) + CRASH("set_selected_power() not implemented for [type]!") + /** * Internal proc to clean up all power instances owned by this splat. Called by * unassign() on losing the splat. diff --git a/modular_darkpack/modules/splats/code/subsplat/_subsplat.dm b/modular_darkpack/modules/splats/code/subsplat/_subsplat.dm index 09c42a3cd9c1..b83087902e52 100644 --- a/modular_darkpack/modules/splats/code/subsplat/_subsplat.dm +++ b/modular_darkpack/modules/splats/code/subsplat/_subsplat.dm @@ -21,8 +21,10 @@ /// ID for trait sources and whatnot var/id - /// Keys for this subsplats's exclusive hideout - var/subsplat_keys + /// Typepath of keys for this subsplats's exclusive hideout + var/obj/item/vamp/keys/subsplat_keys + /// If we check the list of ids of city doors before granting the subsplat key + var/check_doors_for_keys = TRUE /datum/subsplat/proc/on_gain(mob/living/carbon/human/gaining_mob, datum/splat/gaining_splat, joining_round) SHOULD_CALL_PARENT(TRUE) @@ -62,7 +64,7 @@ SHOULD_CALL_PARENT(TRUE) - if(subsplat_keys) + if(subsplat_keys && check_doors_for_keys && key_has_matching_door(subsplat_keys)) joining.put_in_r_hand(new subsplat_keys(joining)) UnregisterSignal(joining, COMSIG_MOB_LOGIN) diff --git a/modular_darkpack/modules/stock_market/code/stockexchange.dm b/modular_darkpack/modules/stock_market/code/stockexchange.dm index defbe463af44..5d7216842f80 100644 --- a/modular_darkpack/modules/stock_market/code/stockexchange.dm +++ b/modular_darkpack/modules/stock_market/code/stockexchange.dm @@ -2,9 +2,9 @@ name = "stock exchange computer" desc = "A console that connects to the galactic stock market. Stocks trading involves substantial risk of loss and is not suitable for every cargo technician." icon = 'icons/obj/machines/computer.dmi' - icon_state = "oldcomp" + icon_state = MAP_SWITCH("oldcomp", "/obj/machinery/computer/pod/old") icon_screen = "stock_computer" - icon_keyboard = "tram_controls" // this is the closest we can get to 'none'. its just nothing. + icon_keyboard = null var/logged_in = "Millenium Stock Department" var/vmode = 1 interaction_flags_atom = INTERACT_ATOM_REQUIRES_DEXTERITY | INTERACT_ATOM_UI_INTERACT | INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_REQUIRES_ANCHORED diff --git a/modular_darkpack/modules/storyteller_dice/code/roll_datum.dm b/modular_darkpack/modules/storyteller_dice/code/roll_datum.dm index 48fdc9ed2267..0e2adca67123 100644 --- a/modular_darkpack/modules/storyteller_dice/code/roll_datum.dm +++ b/modular_darkpack/modules/storyteller_dice/code/roll_datum.dm @@ -127,12 +127,19 @@ else return list(roller, target) if(ROLL_PRIVATE_ADMIN) - return GLOB.admins + roller + return admin_mobs() + roller if(ROLL_ADMIN) - return GLOB.admins + return admin_mobs() if(ROLL_NONE) return // Not even important enough to be admin visible. +/datum/storyteller_roll/proc/admin_mobs() + var/list/admin_mobs = list() + for(var/client/staff in GLOB.admins) + if(staff.mob) + admin_mobs += staff.mob + return admin_mobs + /datum/storyteller_roll/proc/calculate_used_dice(mob/living/roller, bonus = 0) var/dice_amount = 0 for(var/stat_type in using_stats(roller)) diff --git a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm index 257aeb78f137..e2a0cda9ae7c 100644 --- a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm +++ b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm @@ -143,3 +143,9 @@ applicable_stats = list(STAT_INTELLIGENCE, STAT_OCCULT) reroll_cooldown = 1 SCENES difficulty = 8 + +/datum/storyteller_roll/restraint_break + bumper_text = "breaking restraints" + applicable_stats = list(STAT_PERMANENT_WILLPOWER) + reroll_cooldown = 1 TURNS + difficulty = 9 diff --git a/modular_darkpack/modules/storyteller_dice/code/verbs.dm b/modular_darkpack/modules/storyteller_dice/code/verbs.dm index 47c134b01b3f..6be8ed40b946 100644 --- a/modular_darkpack/modules/storyteller_dice/code/verbs.dm +++ b/modular_darkpack/modules/storyteller_dice/code/verbs.dm @@ -2,9 +2,8 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(roll_storyteller_dice, R_FUN, "Roll storyteller dic M.roll_dice_custom() BLACKBOX_LOG_ADMIN_VERB("Storyteller dice") -/mob/living/verb/do_roll_dice_custom() - set name = "Roll custom dice" - set hidden = TRUE +GAME_VERB(/mob/living, do_roll_dice_custom, "Roll custom dice", null) + roll_dice_custom() /mob/living/proc/roll_dice_custom(atom/movable/roll_target) var/list/allowed_stats = list() diff --git a/modular_darkpack/modules/subtle/code/subtle.dm b/modular_darkpack/modules/subtle/code/subtle.dm index aa14b4a7db30..4911574675ad 100644 --- a/modular_darkpack/modules/subtle/code/subtle.dm +++ b/modular_darkpack/modules/subtle/code/subtle.dm @@ -189,10 +189,7 @@ /* * VERB CODE */ - -/mob/living/verb/subtle_verb() - set name = "Subtle" - set category = "IC" +GAME_VERB(/mob/living, subtle_verb, "Subtle", "IC") if(GLOB.say_disabled) // This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) return @@ -201,10 +198,7 @@ /* * VERB CODE 2 */ - -/mob/living/verb/subtler_verb() - set name = "Subtler Anti-Ghost" - set category = "IC" +GAME_VERB(/mob/living, subtler_verb, "Subtler Anti-Ghost", "IC") if(GLOB.say_disabled) // This is here to try to identify lag problems to_chat(usr, span_danger("Speech is currently admin-disabled.")) return diff --git a/modular_darkpack/modules/toys/code/plushes.dm b/modular_darkpack/modules/toys/code/plushes.dm index 04c9a010d1f6..03e5963d587a 100644 --- a/modular_darkpack/modules/toys/code/plushes.dm +++ b/modular_darkpack/modules/toys/code/plushes.dm @@ -14,12 +14,69 @@ /obj/item/toy/plush/argemia/proc/microwave_explode(obj/machinery/microwave/microwave_source) explosion(microwave_source.loc, 0, 1, 2) +// Not made by us, but a readditon because TG removed it in https://github.com/tgstation/tgstation/pull/92311 /obj/item/toy/plush/goatplushie name = "strange goat plushie" icon = 'modular_darkpack/modules/toys/icons/toys.dmi' icon_state = "goat" desc = "Despite its cuddly appearance and plush nature, it will beat you up all the same. Goats never change." - squeak_override = list('sound/items/weapons/punch1.ogg'=1) + squeak_override = list('sound/items/weapons/punch1.ogg' = 1) + /// Whether or not this goat is currently taking in a monsterous doink + var/going_hard = FALSE + /// Whether or not this goat has been flattened like a funny pancake + var/splat = FALSE + +/obj/item/toy/plush/goatplushie/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_TURF_INDUSTRIAL_LIFT_ENTER = PROC_REF(splat), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/item/toy/plush/goatplushie/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + var/obj/item/cigarette/rollie/fat_dart = tool + if(!istype(fat_dart)) + return ..() + if(splat) + to_chat(user, span_notice("[src] doesn't seem to be able to go hard right now.")) + return ITEM_INTERACT_BLOCKING + if(going_hard) + to_chat(user, span_notice("[src] is already going too hard!")) + return ITEM_INTERACT_BLOCKING + if(!fat_dart.lit) + to_chat(user, span_notice("You'll have to light that first!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("You put [fat_dart] into [src]'s mouth.")) + qdel(fat_dart) + going_hard = TRUE + update_icon(UPDATE_OVERLAYS) + return ITEM_INTERACT_SUCCESS + +/obj/item/toy/plush/goatplushie/proc/splat(datum/source) + SIGNAL_HANDLER + if(splat) + return + if(going_hard) + going_hard = FALSE + update_icon(UPDATE_OVERLAYS) + icon_state = "goat_splat" + playsound(src, SFX_DESECRATION, 50, TRUE) + visible_message(span_danger("[src] gets absolutely flattened!")) + splat = TRUE + +/obj/item/toy/plush/goatplushie/examine(mob/user) + . = ..() + if(splat) + . += span_notice("[src] might need medical attention.") + if(going_hard) + . += span_notice("[src] is going so hard, feel free to take a picture.") + +/obj/item/toy/plush/goatplushie/update_overlays() + . = ..() + if(going_hard) + . += "goat_dart" + /obj/item/toy/plush/tzi name = "wretched creature" diff --git a/modular_darkpack/modules/toys/icons/toys.dmi b/modular_darkpack/modules/toys/icons/toys.dmi index 3dbd59530b2d..4828bc869355 100644 Binary files a/modular_darkpack/modules/toys/icons/toys.dmi and b/modular_darkpack/modules/toys/icons/toys.dmi differ diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/__vampire_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/__vampire_splat.dm index bfc241a30e4f..74b1c4f1ea3c 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/__vampire_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/__vampire_splat.dm @@ -2,6 +2,15 @@ abstract_type = /datum/splat/vampire power_type = /datum/discipline + COOLDOWN_DECLARE(passive_bp_drain_cooldown) + + +/datum/splat/vampire/splat_life(seconds_per_tick) + if(CONFIG_GET(flag/passive_bp_drain)) + if(COOLDOWN_FINISHED(src, passive_bp_drain_cooldown)) + owner.adjust_blood_pool(-1) + COOLDOWN_START(src, passive_bp_drain_cooldown, CONFIG_GET(number/passive_bp_drain_timer)) + return /datum/splat/vampire/proc/get_discipline_power(datum/discipline_power/discipline_power_type) RETURN_TYPE(/datum/discipline_power) @@ -67,3 +76,24 @@ found_action.discipline.set_level(new_level) return TRUE + +/datum/splat/vampire/get_selected_power() + RETURN_TYPE(/datum/action/discipline) + + return selected_power + +/datum/splat/vampire/set_selected_power(slot) + if (!slot) + // Just try to unselect + if (!get_selected_power()) + return FALSE + get_selected_power().unselect(FALSE) + return TRUE + + if (length(powers) < slot) + return FALSE + get_selected_power()?.unselect() + selected_power = powers[slot] + get_selected_power()?.select() + + return TRUE diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm index ba4e162f4244..8413d855710e 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm @@ -17,6 +17,7 @@ TRAIT_UNAGING, TRAIT_DRINKS_BLOOD, TRAIT_PALE_AURA, + TRAIT_SCARRING_RESISTANT, ) splat_actions = list( /datum/action/cooldown/mob_cooldown/give_vitae, @@ -112,6 +113,7 @@ COMSIG_MOB_VAMPIRE_SUCKED, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_HUMAN_ON_HANDLE_BLOOD, + COMSIG_PATH_HIT, COMSIG_LIVING_DEATH )) @@ -219,6 +221,8 @@ return HANDLE_BLOOD_NO_NUTRITION_DRAIN|HANDLE_BLOOD_NO_OXYLOSS /datum/splat/vampire/kindred/proc/on_kindred_death(mob/living/carbon/human/kindred, gibbed) + SIGNAL_HANDLER + if(gibbed) return diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/__vampire_clan.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/__vampire_clan.dm index 9ee8086ec70d..0076d7d7bdf1 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/__vampire_clan.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/__vampire_clan.dm @@ -27,9 +27,7 @@ var/female_clothes /// List of unnatural features that members of this Clan can choose - var/list/accessories - /// Associative list of layers for unnatural features that members of this Clan can choose - var/list/accessories_layers + var/list/clan_marks /// Clan accessory that's selected by default var/default_accessory @@ -89,13 +87,7 @@ if (alt_sprite) losing_mob.set_body_sprite(ignore_clan = TRUE) - // DARKPACK TODO - reimplement clan accessories - /* - // Remove Clan accessories - if (losing_mob.client?.prefs?.clan_accessory) - var/equipped_accessory = accessories_layers[losing_mob.client.prefs.clan_accessory] - losing_mob.remove_overlay(equipped_accessory) - */ + clear_old_overlays(losing_mob) losing_mob.remove_faction(id) @@ -162,3 +154,13 @@ /mob/living/proc/is_clan(clan_type) return istype(get_clan(), clan_type) + +/datum/subsplat/vampire_clan/proc/clear_old_overlays(mob/living/carbon/human/losing_mob) + var/needs_update = FALSE + for(var/obj/item/bodypart/part as anything in losing_mob.get_bodyparts()) + for(var/clan_mark in clan_marks) + part.remove_bodypart_overlay(clan_mark, update = FALSE) + needs_update = TRUE + + if(needs_update && !(losing_mob.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) + losing_mob.update_body_parts() diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_globals.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_globals.dm index 9526255d3735..35d586ca83cc 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_globals.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_globals.dm @@ -6,3 +6,8 @@ GLOBAL_LIST_INIT_TYPED(vampire_clans, /datum/subsplat/vampire_clan, init_subtype /// All frenzied players GLOBAL_LIST_EMPTY(frenzy_list) + + +GLOBAL_ALIST_INIT(beast_marks_to_names, beast_marks_to_names()) +GLOBAL_ALIST_INIT(beast_marks_to_names_reverse, beast_marks_to_names(TRUE)) +GLOBAL_ALIST_INIT(beast_mark_names_by_clan, beast_mark_names_by_clan()) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark.dm new file mode 100644 index 000000000000..e6477b5e29f4 --- /dev/null +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark.dm @@ -0,0 +1,100 @@ +/proc/beast_marks_to_names(reverse) + var/alist/mark_list = alist() + for(var/datum/bodypart_overlay/simple/clan_mark/mark as anything in valid_subtypesof(/datum/bodypart_overlay/simple/clan_mark)) + var/using_string = replacetext(replacetext(replacetext("[mark]", "/datum/bodypart_overlay/simple/clan_mark/", ""), "_", " "), "/", " ") + + if(reverse) + mark_list[mark] = using_string + else + mark_list[using_string] = mark + + return mark_list + +/proc/beast_mark_names_by_clan() + var/alist/marklist = alist() + for(var/clan_type in GLOB.vampire_clans) + var/datum/subsplat/vampire_clan/clan = GLOB.vampire_clans[clan_type] + if(!clan.clan_marks) + continue + var/list/new_list = list() + for(var/mark in clan.clan_marks) + new_list += GLOB.beast_marks_to_names_reverse[mark] + new_list += "none" + + marklist[clan.type] = new_list + + return marklist + + +/datum/bodypart_overlay/simple/clan_mark + abstract_type = /datum/bodypart_overlay/simple/clan_mark + icon = 'modular_darkpack/modules/vampire_the_masquerade/icons/features.dmi' + var/using_limb = BODY_ZONE_CHEST + +/datum/bodypart_overlay/simple/clan_mark/beast_legs + icon_state = "beast_legs" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + +/datum/bodypart_overlay/simple/clan_mark/beast_tail + icon_state = "beast_tail" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + +/datum/bodypart_overlay/simple/clan_mark/beast_tail_and_legs + icon_state = "beast_tail_and_legs" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + + +/datum/bodypart_overlay/simple/clan_mark/nosferatu_ears + icon_state = "nosferatu_ears" + layers = list(EXTERNAL_FRONT = BODY_FRONT_LAYER) + + +/datum/bodypart_overlay/simple/clan_mark/fae_ears + icon_state = "fae_ears" + layers = list(EXTERNAL_FRONT = BODY_FRONT_LAYER) + + +/datum/bodypart_overlay/simple/clan_mark/spines + icon_state = "spines" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + +/datum/bodypart_overlay/simple/clan_mark/spines_slim + icon_state = "spines_slim" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + +/datum/bodypart_overlay/simple/clan_mark/animal_skull + icon_state = "animal_skull" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + using_limb = BODY_ZONE_HEAD + +/datum/bodypart_overlay/simple/clan_mark/gargoyle + abstract_type = /datum/bodypart_overlay/simple/clan_mark/gargoyle + layers = list(EXTERNAL_FRONT = BODY_FRONT_LAYER) + using_limb = BODY_ZONE_HEAD + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/full + icon_state = "gargoyle_full" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/left + icon_state = "gargoyle_left" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/right + icon_state = "gargoyle_right" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/broken + icon_state = "gargoyle_broken" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/round + icon_state = "gargoyle_round" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/oni + icon_state = "gargoyle_oni" + +/datum/bodypart_overlay/simple/clan_mark/gargoyle/devil + icon_state = "gargoyle_devil" + +// Seperate pref but some concept. +/datum/bodypart_overlay/simple/clan_mark/gargoyle/tail + icon_state = "gargoyle_legs_n_tails" + layers = list(EXTERNAL_ADJACENT = BODY_ADJ_LAYER) + using_limb = BODY_ZONE_CHEST diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark_pref.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark_pref.dm index 6a09d621693b..1eee679e6304 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark_pref.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clan_mark_pref.dm @@ -13,7 +13,7 @@ var/datum/subsplat/vampire_clan/clan = get_vampire_clan(clan_type) if(!clan) return FALSE - if(clan.accessories) + if(clan.clan_marks) return TRUE return FALSE @@ -22,23 +22,33 @@ return list("none") var/clan_type = preferences.read_preference(/datum/preference/choiced/subsplat/vampire_clan) var/datum/subsplat/vampire_clan/clan = get_vampire_clan(clan_type) - if(!clan || !clan.accessories) + if(!clan || !clan.clan_marks) return list("none") - return clan.accessories + + return GLOB.beast_mark_names_by_clan[clan.type] /datum/preference/external_choiced/clan_mark/create_informed_default_value(datum/preferences/preferences) + var/clan_type = preferences.read_preference(/datum/preference/choiced/subsplat/vampire_clan) + var/datum/subsplat/vampire_clan/clan = get_vampire_clan(clan_type) + if(clan?.default_accessory) + return GLOB.beast_marks_to_names_reverse[clan.default_accessory] return pick(get_choices(preferences)) /datum/preference/external_choiced/clan_mark/apply_to_human(mob/living/carbon/human/target, value) - if(!value) + if(!value || (value == "none")) return var/datum/subsplat/vampire_clan/clan = target.get_clan() - if(!length(clan?.accessories)) + if(!length(clan?.clan_marks)) + return + + clan.clear_old_overlays(target) + + var/datum/bodypart_overlay/simple/clan_mark/mark_type = GLOB.beast_marks_to_names[value] + if(!ispath(mark_type, /datum/bodypart_overlay/simple/clan_mark)) return - target.remove_overlay(clan.accessories_layers[value]) - var/mutable_appearance/acc_overlay = mutable_appearance('modular_darkpack/modules/vampire_the_masquerade/icons/features.dmi', value, -clan.accessories_layers[value]) - target.overlays_standing[clan.accessories_layers[value]] = acc_overlay - target.apply_overlay(clan.accessories_layers[value]) + + var/obj/item/bodypart/limb = target.get_bodypart(mark_type::using_limb) + limb.add_bodypart_overlay(new mark_type()) //gargoyle legs and tail /datum/preference/toggle/gargoyle_legs_and_tail @@ -59,10 +69,15 @@ return FALSE /datum/preference/toggle/gargoyle_legs_and_tail/apply_to_human(mob/living/carbon/human/target, value) - var/datum/subsplat/vampire_clan/clan = target.get_clan() - if(!istype(clan, /datum/subsplat/vampire_clan/gargoyle)) + if(!value) return - if(value) - var/mutable_appearance/acc_overlay = mutable_appearance('modular_darkpack/modules/vampire_the_masquerade/icons/features.dmi', "gargoyle_legs_n_tails", -BODY_ADJ_LAYER) - target.overlays_standing[BODY_ADJ_LAYER] = acc_overlay - target.apply_overlay(BODY_ADJ_LAYER) + + var/datum/bodypart_overlay/simple/clan_mark/tail_type = /datum/subsplat/vampire_clan/gargoyle::gargy_tail_type + var/obj/item/bodypart/leggies = target.get_bodypart(tail_type::using_limb) + leggies.remove_bodypart_overlay(tail_type) + + var/datum/subsplat/vampire_clan/gargoyle/clan = target.get_clan() + if(!istype(clan)) + return + + leggies.add_bodypart_overlay(new tail_type()) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gangrel.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gangrel.dm index 002520c4e02b..4c468ba085a6 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gangrel.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gangrel.dm @@ -12,8 +12,11 @@ ) male_clothes = /obj/item/clothing/under/vampire/gangrel female_clothes = /obj/item/clothing/under/vampire/gangrel/female - accessories = list("beast_legs", "beast_tail", "beast_tail_and_legs", "none") - accessories_layers = list("beast_legs" = BODY_ADJ_LAYER, "beast_tail" = BODY_ADJ_LAYER, "beast_tail_and_legs" = BODY_ADJ_LAYER, "none" = BODY_ADJ_LAYER) + clan_marks = list( + /datum/bodypart_overlay/simple/clan_mark/beast_legs, + /datum/bodypart_overlay/simple/clan_mark/beast_tail, + /datum/bodypart_overlay/simple/clan_mark/beast_tail_and_legs, + ) /datum/subsplat/vampire_clan/gangrel/city name = "City Gangrel" diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm index fc65e2aa98d0..788d248182a2 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/gargoyle.dm @@ -19,28 +19,20 @@ male_clothes = /obj/item/clothing/under/vampire/malkavian female_clothes = /obj/item/clothing/under/vampire/malkavian default_accessory = "gargoyle_full" - accessories = list( - "gargoyle_full", - "gargoyle_left", - "gargoyle_right", - "gargoyle_broken", - "gargoyle_round", - "gargoyle_oni", - "gargoyle_devil", - "none" - ) - accessories_layers = list( - "gargoyle_full" = BODY_FRONT_LAYER, - "gargoyle_left" = BODY_FRONT_LAYER, - "gargoyle_right" = BODY_FRONT_LAYER, - "gargoyle_broken" = BODY_FRONT_LAYER, - "gargoyle_round" = BODY_FRONT_LAYER, - "gargoyle_oni" = BODY_FRONT_LAYER, - "gargoyle_devil" = BODY_FRONT_LAYER, - "none" = BODY_FRONT_LAYER + clan_marks = list( + /datum/bodypart_overlay/simple/clan_mark/gargoyle/full, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/left, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/right, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/broken, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/round, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/oni, + /datum/bodypart_overlay/simple/clan_mark/gargoyle/devil, ) whitelisted = TRUE + // Type to use for the extra clan mark they get. + var/datum/bodypart_overlay/simple/clan_mark/gargy_tail_type = /datum/bodypart_overlay/simple/clan_mark/gargoyle/tail + /datum/subsplat/vampire_clan/gargoyle/on_gain(mob/living/carbon/human/gaining_mob, datum/splat/gaining_splat, joining_round) . = ..() gaining_mob.physiology.brute_mod = 0.8 @@ -56,3 +48,6 @@ if(wings) wings.Remove(losing_mob) qdel(wings) + + var/obj/item/bodypart/part = losing_mob.get_bodypart(BODY_ZONE_CHEST) + part.remove_bodypart_overlay(gargy_tail_type) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/kiasyd/kiasyd.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/kiasyd/kiasyd.dm index 13a431f2b5a4..a480f1d5f3e0 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/kiasyd/kiasyd.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/kiasyd/kiasyd.dm @@ -8,7 +8,7 @@ clan_disciplines = list( /datum/discipline/dominate, /datum/discipline/obtenebration, - ///datum/discipline/mytherceria + /datum/discipline/mytherceria ) clan_traits = list( TRAIT_MASQUERADE_VIOLATING_EYES @@ -18,8 +18,7 @@ male_clothes = /obj/item/clothing/under/vampire/archivist female_clothes = /obj/item/clothing/under/vampire/archivist whitelisted = TRUE - accessories = list("fae_ears", "none") - accessories_layers = list("fae_ears" = BODY_FRONT_LAYER, "none" = BODY_FRONT_LAYER) + clan_marks = list(/datum/bodypart_overlay/simple/clan_mark/fae_ears) /datum/subsplat/vampire_clan/kiasyd/on_gain(mob/living/carbon/human/gaining_mob, datum/splat/gaining_splat, joining_round) . = ..() diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/nosferatu.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/nosferatu.dm index d62b22aa1789..a6e399da1df3 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/nosferatu.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/nosferatu.dm @@ -17,8 +17,7 @@ ) male_clothes = /obj/item/clothing/under/vampire/nosferatu female_clothes = /obj/item/clothing/under/vampire/nosferatu/female - accessories = list("nosferatu_ears", "none") - accessories_layers = list("nosferatu_ears" = BODY_FRONT_LAYER, "none" = BODY_FRONT_LAYER) - default_accessory = "nosferatu_ears" + clan_marks = list(/datum/bodypart_overlay/simple/clan_mark/nosferatu_ears) + default_accessory = /datum/bodypart_overlay/simple/clan_mark/nosferatu_ears subsplat_keys = /obj/item/vamp/keys/nosferatu diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/tzimisce.dm b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/tzimisce.dm index e191a1b8da93..353244044ecd 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/tzimisce.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/vampire_clan/clans/tzimisce/tzimisce.dm @@ -13,8 +13,11 @@ male_clothes = /obj/item/clothing/under/vampire/sport female_clothes = /obj/item/clothing/under/vampire/red enlightenment = TRUE - accessories = list("spines", "spines_slim", "animal_skull", "none") - accessories_layers = list("spines" = BODY_ADJ_LAYER, "spines_slim" = BODY_ADJ_LAYER, "animal_skull" = BODY_ADJ_LAYER, "none" = BODY_ADJ_LAYER) + clan_marks = list( + /datum/bodypart_overlay/simple/clan_mark/spines, + /datum/bodypart_overlay/simple/clan_mark/spines_slim, + /datum/bodypart_overlay/simple/clan_mark/animal_skull, + ) /datum/subsplat/vampire_clan/tzimisce/psychomania_effect(mob/living/target, mob/living/owner) target.playsound_local(target, "modular_darkpack/modules/powers/sounds/daimonion_laughs/demonlaugh3.ogg", 50, FALSE) diff --git a/modular_darkpack/modules/vaults/code/drill.dm b/modular_darkpack/modules/vaults/code/drill.dm index ba51215302e2..693fea41ca27 100644 --- a/modular_darkpack/modules/vaults/code/drill.dm +++ b/modular_darkpack/modules/vaults/code/drill.dm @@ -146,15 +146,15 @@ /obj/structure/drill/update_overlays() . = ..() - cut_overlays() if(active) var/mutable_appearance/sparks = mutable_appearance('modular_darkpack/modules/deprecated/icons/particle_effects.dmi', "welding_sparks", ABOVE_ALL_MOB_LAYER, src, ABOVE_LIGHTING_PLANE) - add_overlay(sparks) + . += sparks /obj/structure/drill/proc/process_drill() while(active && ready && gas > 0) playsound(src, drill_sound, 100, TRUE, ignore_walls = TRUE) - update_overlays() + update_icon(UPDATE_OVERLAYS) + update_appearance(UPDATE_OVERLAYS) if(!attached_door || !istype(attached_door, /obj/structure/vaultdoor)) active = FALSE @@ -167,7 +167,7 @@ if(vault_door.door_health <= 0) vault_door.break_open() active = FALSE - update_overlays() + update_appearance(UPDATE_OVERLAYS) sleep(3 SECONDS) @@ -186,7 +186,7 @@ else if(do_after(user, 2 SECONDS, target = src)) active = FALSE - update_overlays() + update_appearance(UPDATE_OVERLAYS) visible_message(span_warning("[src] shuts off!")) /obj/structure/drill/proc/handle_layer() diff --git a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm index dedecb303cea..5fa14c49f052 100644 --- a/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm +++ b/modular_darkpack/modules/vip_areas/code/vip_barriers/__vip_barrier.dm @@ -126,6 +126,15 @@ if(used_badge) involved_social_roll -= 1 + if((!(user.obscured_slots & HIDEFACE))&(HAS_TRAIT(user, TRAIT_DISFIGURED_APPEARANCE))) // Are we visibly disfigured? + involved_social_roll += 2 + + if(!get_kindred_splat(bouncer))// our bouncer is probably mortal, but let's check anyways. + if(HAS_TRAIT(user, TRAIT_GRAVE_SMELL)) + involved_social_roll += 1 + if((HAS_TRAIT(user, TRAIT_GLOWING_EYES)) && (!user.is_eyes_covered()) && (used_stat == STAT_INTIMIDATION)) + involved_social_roll -= 1 + if(!bypass_roll) bypass_roll = new() bypass_roll.bumper_text = "persuade guard" diff --git a/modular_darkpack/modules/weapons/code/ammo_casings.dm b/modular_darkpack/modules/weapons/code/ammo_casings.dm index d27d7bc4cd8d..acb1d72c7f50 100644 --- a/modular_darkpack/modules/weapons/code/ammo_casings.dm +++ b/modular_darkpack/modules/weapons/code/ammo_casings.dm @@ -159,7 +159,7 @@ name = "bolt" desc = "Welcome to the Middle Ages!" projectile_type = /obj/projectile/bullet/crossbow_bolt - caliber = CALIBER_FOAM + caliber = CALIBER_CROSSBOWBOLT icon_state = "arrow" icon = 'modular_darkpack/modules/weapons/icons/ammo.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/ammo_onfloor.dmi') diff --git a/modular_darkpack/modules/weapons/code/guns.dm b/modular_darkpack/modules/weapons/code/guns.dm index 1fc1a8a74529..18c06756858c 100644 --- a/modular_darkpack/modules/weapons/code/guns.dm +++ b/modular_darkpack/modules/weapons/code/guns.dm @@ -490,6 +490,7 @@ mag_display = TRUE fire_sound = 'modular_darkpack/modules/deprecated/sounds/ak.ogg' masquerade_violating = TRUE + can_be_sawn_off = TRUE serial_type = "KA" var/rof = 0.2 SECONDS //300 RPM @@ -497,6 +498,15 @@ . = ..() AddComponent(/datum/component/automatic_fire, rof) +/obj/item/gun/ballistic/automatic/darkpack/ak74/sawn + name = "sawn-off Kalashnikov's Automatic Rifle 74" + desc = "Pretty old, but also easy fireable and cleanable by vodka. This one has had its stock removed and the barrel chopped; it's a miracle it still cycles! Uses 5.45 rounds." + icon_state = "ak74_sawn" + inhand_icon_state = "ak74_sawn" + w_class = WEIGHT_CLASS_NORMAL + weapon_weight = WEAPON_MEDIUM + recoil = 8 //Increased recoil due to sawing off the stock on a full-auto. Bootleg draco. + /obj/item/ammo_box/magazine/darkpackaug name = "AUG magazine (5.56mm)" icon = 'modular_darkpack/modules/weapons/icons/ammo.dmi' @@ -592,6 +602,7 @@ internal_magazine = TRUE fire_sound = 'modular_darkpack/modules/weapons/sounds/lever.ogg' vary_fire_sound = FALSE + can_be_sawn_off = TRUE rack_sound = 'modular_darkpack/modules/weapons/sounds/bolt/lever_out.ogg' bolt_drop_sound = 'modular_darkpack/modules/weapons/sounds/bolt/lever_in.ogg' tac_reloads = FALSE @@ -603,6 +614,18 @@ masquerade_violating = FALSE serial_type = "WN" +/obj/item/ammo_box/magazine/internal/darkpack/lever/sawnoff + name = "mares leg lever action internal magazine" + max_ammo = 8 //7+1 + +/obj/item/gun/ballistic/rifle/darkpack/lever/sawnoff + name = "mares leg lever action carbine" + desc = "A .44 caliber lever action rifle, perfect for casual hunters, reenactors, and urban cowboys. This one has had its barrel and stock sawn down." + icon_state = "lever_sawn" + inhand_icon_state = "lever_sawn" + w_class = WEIGHT_CLASS_NORMAL + accepted_magazine_type = /obj/item/ammo_box/magazine/internal/darkpack/lever/sawnoff + /obj/item/ammo_box/magazine/internal/vampire/sniper name = "sniper rifle internal magazine" desc = "Oh god, this shouldn't be here" @@ -712,13 +735,27 @@ recoil = 6 fire_delay = 6 accepted_magazine_type = /obj/item/ammo_box/magazine/internal/vampshotgun - can_be_sawn_off = FALSE + can_be_sawn_off = TRUE fire_sound = 'modular_darkpack/modules/deprecated/sounds/pomp.ogg' inhand_x_dimension = 32 inhand_y_dimension = 32 custom_price = 1000 serial_type = "L" +/obj/item/ammo_box/magazine/internal/vampshotgun/sawnoff + name = "sawn-off shotgun internal magazine" + max_ammo = 4 + +/obj/item/gun/ballistic/shotgun/vampire/sawnoff + name = "sawn-off shotgun" + desc = "A traditional shotgun that's been shortened.. probably illegally. Sports a three-round tube magazine." + icon_state = "pomp_sawn" + inhand_icon_state = "pomp_sawn" + recoil = 10 + w_class = WEIGHT_CLASS_NORMAL + weapon_weight = WEAPON_MEDIUM + accepted_magazine_type = /obj/item/ammo_box/magazine/internal/vampshotgun/sawnoff + /obj/item/ammo_box/magazine/internal/darkpack_dbarrel name = "double barrel internal magazine" ammo_type = /obj/item/ammo_casing/vampire/c12g @@ -765,6 +802,7 @@ //Unique sawn-off checks /obj/item/gun/ballistic/shotgun/vampire/doublebarrel/sawoff(mob/user, obj/item/saw, handle_modifications = TRUE) . = ..() + w_class = WEIGHT_CLASS_NORMAL //Lets you stow it in a bag weapon_weight = WEAPON_MEDIUM //Lets you one-hand it on sawing. /obj/item/ammo_box/magazine/darkpackautoshot @@ -860,3 +898,15 @@ /obj/item/gun/ballistic/automatic/darkpack/musket/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) ..() new /obj/effect/particle_effect/fluid/smoke(get_ranged_target_turf(user, user.dir, 1)) + +/obj/item/gun/ballistic/automatic/darkpack/musket/sawn + name = "butchered antique musket" + desc = "A antique musket, likely from the mid 19th century that- wh.. why the fuck would you do this to a musket!?" + icon_state = "musket_sawn" + inhand_icon_state = "musket_sawn" + w_class = WEIGHT_CLASS_NORMAL + weapon_weight = WEAPON_LIGHT //TALLY HOOOO!!! + recoil = 12 + spread = 25 //+25 from sawing off anyway, good fucking luck + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT diff --git a/modular_darkpack/modules/weapons/code/melee.dm b/modular_darkpack/modules/weapons/code/melee.dm index c9cadcba8308..7f6abeca548f 100644 --- a/modular_darkpack/modules/weapons/code/melee.dm +++ b/modular_darkpack/modules/weapons/code/melee.dm @@ -3,7 +3,6 @@ righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') - var/quieted = FALSE custom_price = 1000 @@ -21,8 +20,12 @@ worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT // Should really be suit storage - force_unwielded = 10 - force_wielded = 40 + + // WTA pg. 302 + force_unwielded = 2 TTRPG_DAMAGE // Made up lol. + force_wielded = 3 LETHAL_TTRPG_DAMAGE + attack_difficulty = 7 + pixel_w = -8 custom_price = 1800 @@ -34,6 +37,10 @@ righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') + + // WTA pg. 302 + force = 2 LETHAL_TTRPG_DAMAGE + pixel_w = -8 custom_price = 1300 slot_flags = ITEM_SLOT_BELT @@ -92,8 +99,12 @@ worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "sabre" + + // WTA pg. 302 + force = 2 LETHAL_TTRPG_DAMAGE + + armour_penetration = 50 //Normally 75 pen, that pens army armor. Instead, 50. Pens bullet proof. var/value = 1000 // DARKPACK TODO: Move this up at some point. I hate the selling component with all my heart. - armour_penetration = 50 //Normally 75 pen, that pens army armor. Instead, 50. Pens bullet proof. /obj/item/melee/sabre/vamp/Initialize(mapload) . = ..() @@ -108,6 +119,8 @@ worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "rapier" + // WTA pg. 302 + force = 2 LETHAL_TTRPG_DAMAGE armour_penetration = 50 /obj/item/melee/sabre/rapier/Initialize(mapload) @@ -129,6 +142,9 @@ ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "longsword" inhand_icon_state = "longsword" + // WTA pg. 302 + force = 2 LETHAL_TTRPG_DAMAGE + /obj/item/claymore/longsword/Initialize(mapload) . = ..() @@ -147,8 +163,9 @@ pixel_w = -8 masquerade_violating = FALSE custom_price = 500 - force = 35 //Short equivelant of longsword. Less damage and block - block_chance = 30 + force = 1 LETHAL_TTRPG_DAMAGE + attack_difficulty = 5 // Slightly worse handling then a knife. + block_chance = 0 /obj/item/claymore/machete/Initialize(mapload) . = ..() @@ -167,7 +184,7 @@ attack_verb_simple = list("slash", "cut") hitsound = 'sound/items/weapons/rapierhit.ogg' wound_bonus = 5 - //is_iron = FALSE DARKPACK TODO - Kiasyd + /obj/item/claymore/longsword/keeper/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers) . = ..() @@ -177,9 +194,11 @@ name = "baseball bat" desc = "There ain't a skull in the league that can withstand a swatter." w_class = WEIGHT_CLASS_BULKY //TG parent bat is huge - force = 30 - exposed_wound_bonus = 10 - wound_bonus = -5 + + // WTA pg. 302 + force = 2 TTRPG_DAMAGE + attack_difficulty = 5 + icon = 'modular_darkpack/modules/weapons/icons/weapons.dmi' lefthand_file = 'modular_darkpack/modules/deprecated/icons/lefthand.dmi' righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' @@ -187,6 +206,7 @@ ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "baseball" inhand_icon_state = "baseball" + worn_icon_state = "baseball" slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT // Should really be suit storage custom_price = 50 @@ -198,7 +218,8 @@ name = "ripped arm" desc = "Wow, that was someone's arm." icon_state = "hand" - block_chance = 25 + force = 1 TTRPG_DAMAGE + attack_difficulty = 5 masquerade_violating = TRUE //is_wood = FALSE @@ -208,9 +229,7 @@ icon = 'modular_darkpack/modules/weapons/icons/weapons.dmi' icon_state = "pipe" ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') - force = 20 - wound_bonus = 10 - throwforce = 10 + force = 2 LETHAL_TTRPG_DAMAGE attack_verb_continuous = list("beats", "smacks") attack_verb_simple = list("beat", "smack") w_class = WEIGHT_CLASS_NORMAL @@ -226,6 +245,10 @@ righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') + // WTA pg. 302 + force = 1 LETHAL_TTRPG_DAMAGE + attack_difficulty = 4 + custom_price = 85 /obj/item/knife/vamp/lasombra_tentacle @@ -254,14 +277,10 @@ icon = 'modular_darkpack/modules/weapons/icons/weapons.dmi' icon_state = "handsickle" ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') - force = 30 - wound_bonus = -5 - throwforce = 15 + force = 2 LETHAL_TTRPG_DAMAGE attack_verb_continuous = list("slashes", "cuts", "reaps") attack_verb_simple = list("slash", "cut", "reap") hitsound = 'sound/items/weapons/slash.ogg' - armour_penetration = 40 - block_chance = 0 sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_NORMAL slot_flags = ITEM_SLOT_BELT @@ -269,7 +288,7 @@ obj_flags = CONDUCTS_ELECTRICITY /obj/item/melee/touch_attack/werewolf - name = "\improper falling touch" + name = "falling touch" desc = "This is kind of like when you rub your feet on a shag rug so you can zap your friends, only a lot less safe." icon = 'modular_darkpack/modules/weapons/icons/weapons.dmi' //catchphrase = null @@ -295,8 +314,13 @@ righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') - force_on = 60 - force = 30 + + // WTA pg. 302 + // force_on = 7 LETHAL_TTRPG_DAMAGE // Holy fuck thats what its listed as but it also hurts you on a botch.. + force_on = 6 LETHAL_TTRPG_DAMAGE + force = 2 TTRPG_DAMAGE + attack_difficulty = 8 + custom_price = 2000 /obj/item/shovel/vamp @@ -309,7 +333,8 @@ ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "shovel" custom_price = 150 - force = 30 //It's sharp.. somehow. + force = 1 TTRPG_DAMAGE + attack_difficulty = 5 /obj/item/shovel/vamp/attack(mob/living/target, mob/living/user) . = ..() @@ -335,8 +360,9 @@ inhand_icon_state = "kosa" w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - force = 30 - armour_penetration = 30 + // Made up + force = 2 LETHAL_TTRPG_DAMAGE + /obj/item/instrument/eguitar/vamp name = "electric guitar" @@ -349,6 +375,9 @@ slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT icon_state = "rock0" inhand_icon_state = "rock0" + // Made up + force = 2 TTRPG_DAMAGE + attack_difficulty = 7 /obj/item/melee/baton/vamp name = "police baton" @@ -367,6 +396,10 @@ worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') + // WTA pg. 302 + force = 1 LETHAL_TTRPG_DAMAGE + attack_difficulty = 4 + /obj/item/melee/vamp/brick name = "Brick" desc = "Killer of gods and men alike, builder of worlds vast." @@ -376,14 +409,15 @@ righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') w_class = WEIGHT_CLASS_NORMAL - armour_penetration = 0 - throwforce = 15 + + // Made up + force = 2 TTRPG_DAMAGE + throwforce = 2 TTRPG_DAMAGE + attack_verb_continuous = list("bludgeons", "bashes", "beats") attack_verb_simple = list("bludgeon", "bash", "beat", "smacks") hitsound = 'sound/items/weapons/genhit3.ogg' - force = 10 slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_SUITSTORE - w_class = WEIGHT_CLASS_NORMAL //grid_width = 2 GRID_BOXES //grid_height = 1 GRID_BOXES var/broken = FALSE @@ -392,13 +426,10 @@ if(prob(75)) broken = FALSE if(broken) - force = 6 w_class = WEIGHT_CLASS_SMALL - throwforce = 10 - armour_penetration = 0 + force = 1 TTRPG_DAMAGE + throwforce = 1 TTRPG_DAMAGE icon_state = "red_brick2" - attack_verb_continuous = list("bludgeons", "bashes", "beats") - attack_verb_simple = list("bludgeon", "bash", "beat", "smacks", "whacks") hitsound = 'sound/items/weapons/genhit1.ogg' //grid_width = 1 GRID_BOXES //grid_height = 1 GRID_BOXES @@ -413,19 +444,19 @@ righthand_file = 'modular_darkpack/modules/weapons/icons/melee_righthand.dmi' worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') - force = 45 - throwforce = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - block_chance = 20 - armour_penetration = 60 + + // WTA pg. 302 + force = 3 LETHAL_TTRPG_DAMAGE + attack_difficulty = 7 + /// Grrr this should be twohanded. + sharpness = SHARP_POINTY attack_verb_continuous = list("stabs", "pokes") attack_verb_simple = list("stab", "poke") hitsound = 'sound/items/weapons/rapierhit.ogg' - wound_bonus = 5 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK resistance_flags = FIRE_PROOF - masquerade_violating = FALSE custom_price = 1200 /obj/item/darkpack/spear/Initialize(mapload) diff --git a/modular_darkpack/modules/weapons/code/projectiles.dm b/modular_darkpack/modules/weapons/code/projectiles.dm index 37c523064266..00a251bee286 100644 --- a/modular_darkpack/modules/weapons/code/projectiles.dm +++ b/modular_darkpack/modules/weapons/code/projectiles.dm @@ -190,7 +190,20 @@ name = "bolt" damage = 45 armour_penetration = 75 + exposed_wound_bonus = 30 + wound_bonus = 30 //We're gonna make this hurt as much as possible. sharpness = SHARP_POINTY + embed_type = /datum/embedding/crossbolt //YEEEEOUCH!!!! + +/datum/embedding/crossbolt + embed_chance = 90 + fall_chance = 2 + jostle_chance = 2 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.5 + pain_mult = 3 + jostle_pain_mult = 3 + rip_time = 3 SECONDS // 7.62x51mm NATO /obj/projectile/bullet/darkpack/vamp762x51mm diff --git a/modular_darkpack/modules/weapons/code/stake.dm b/modular_darkpack/modules/weapons/code/stake.dm index 67be505a42b2..242a5ef61085 100644 --- a/modular_darkpack/modules/weapons/code/stake.dm +++ b/modular_darkpack/modules/weapons/code/stake.dm @@ -5,13 +5,14 @@ worn_icon = 'modular_darkpack/modules/weapons/icons/worn_melee.dmi' ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi') icon_state = "stake" - force = 10 - throwforce = 10 + + // VTM pg. 280 + force = 1 TTRPG_DAMAGE + + sharpness = SHARP_POINTY attack_verb_continuous = list("pierces", "cuts") attack_verb_simple = list("pierce", "cut") hitsound = 'sound/items/weapons/bladeslice.ogg' - armour_penetration = 50 - sharpness = SHARP_POINTY w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 2) custom_price = 100 diff --git a/modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi b/modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi index 11371b84af81..9c510c38e770 100644 Binary files a/modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi and b/modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi differ diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/corax.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/corax.dm index 95e566152caf..c3b282a6ed09 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/corax.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/changing_breeds/corax.dm @@ -28,7 +28,8 @@ return TRUE var/datum/splat/werewolf/wolp_splat = get_werewolf_splat(owner) - var/range = round(((wolp_splat?.renown[RENOWN_WISDOM] ? wolp_splat.renown[RENOWN_WISDOM] : 1) YARDS) * 20) + // Should be 20 yards (tiles) per Wisdom according to W20 Changing Breeds p. 99, scaled down to 5 instead because that would be absurd + var/range = (wolp_splat?.renown[RENOWN_WISDOM] ? wolp_splat.renown[RENOWN_WISDOM] : 1) * 5 var/list/old_answers_resolved = list() for(var/datum/weakref/guy_ref, old_choice in old_answers) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm index 7d66cf50a4db..9bfffc9d7f0f 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/garou_languages.dm @@ -22,7 +22,7 @@ name = "Garou Tongue" desc = "A guttural and pitchy language also known as 'High Tongue', the language of the Garou capable of being learned and spoken by Garou. It is hard to speak in human form." key = "w" - flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + flags = LANGUAGE_TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD space_chance = 40 syllables = list( "to", "lo", "of", "li", "ka", "ha", "he", "ah", "ny", "ro", @@ -39,7 +39,7 @@ name = "Primal Tongue" desc = "A language inherently known to all Garou breeds at birth, able to be spoken only in Lupus, Crinos and Hispo forms." key = "p" - flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + flags = LANGUAGE_TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD space_chance = 40 syllables = list ( "gra", "grr", "gru", "gha", "sha", "zho", "yip", "whu", "zar", "ruk", diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/black_spiral_dancers.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/black_spiral_dancers.dm index 3d95b08b5a61..a52c9d14b0b5 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/black_spiral_dancers.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/black_spiral_dancers.dm @@ -13,19 +13,21 @@ rage_cost = 1 /datum/action/cooldown/power/gift/bane_protector/Activate(atom/target) - . = ..() - var/mob/living/carbon/human/human_owner = astype(owner) var/mob/living/basic/basic_target = astype(target) + if(!(human_owner?.can_tame_beastmaster_minion(basic_target, TRUE))) + return FALSE + + . = ..() var/datum/storyteller_roll/gift/bane_protector/roll_datum = new() if(roll_datum.st_roll(owner, target) != ROLL_SUCCESS) return TRUE if(istype(basic_target, /mob/living/basic/bane)) - qdel(basic_target.GetComponent(/datum/component/obeys_commands)) - human_owner?.add_beastmaster_minion(target) + QDEL_NULL(basic_target.ai_controller) basic_target.ai_controller = new /datum/ai_controller/basic_controller/beastmaster_summon(basic_target) + human_owner?.add_beastmaster_minion(target) return TRUE // Just summon a random shitter. diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/shadowlords.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/shadowlords.dm index 16a605fd0e7d..9f1432e761a5 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/shadowlords.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/tribes/shadowlords.dm @@ -78,6 +78,8 @@ return var/mob/living/target = target_ref?.resolve() + if(QDELETED(target)) + return highlight = image(loc = target) highlight.appearance = target.appearance diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm index 60bda0fbfdf9..bb36476f87c3 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_organs.dm @@ -12,6 +12,17 @@ /obj/item/bodypart/chest/fera // limb_id = SPECIES_FERA +/obj/item/bodypart/chest/fera/bestial + +/obj/item/bodypart/chest/fera/bestial/update_mob_heights(mob/living/carbon/human/holder) + if(HAS_TRAIT(holder, TRAIT_DWARF)) + return HUMAN_HEIGHT_MEDIUM + + if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) + return HUMAN_HEIGHT_TALLEST + + return HUMAN_HEIGHT_TALL + /obj/item/bodypart/arm/left/fera // limb_id = SPECIES_FERA unarmed_sharpness = SHARP_EDGED diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm index d128d48c300f..aadc5c6793a5 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm @@ -38,7 +38,7 @@ /// Speed mod applied and removed upon gaining this species var/speed_mod /// Causes delirium, which if the user is affected by, does not cause breaches - var/causes_delirium + var/form_causes_delirium = FALSE /// IF this form can be witnessed, causes masqurade breaches var/veil_breaching_form = FALSE @@ -157,6 +157,14 @@ shift_difficulty = 7 fallback_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/glabro.dmi' veil_breaching_form = TRUE + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right, + BODY_ZONE_HEAD = /obj/item/bodypart/head, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/fera/bestial, + ) /datum/species/human/shifter/bestial/should_add_buff(mob/living/carbon/human/human, datum/st_stat/buff_type, amount) . = ..() @@ -171,30 +179,28 @@ /datum/species/human/shifter/bestial/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) . = ..() - human_who_gained_species.update_mob_height() + RegisterSignal(human_who_gained_species, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(add_fluff)) + human_who_gained_species.update_appearance(UPDATE_OVERLAYS) human_who_gained_species.update_transform(1.25) - if(!HAS_TRAIT(human_who_gained_species, TRAIT_FAIR_GLABRO)) - human_who_gained_species.remove_overlay(BODY_ADJ_LAYER) - var/fur_color = get_fur_color(human_who_gained_species) - var/mob_icon = get_mob_icon(human_who_gained_species) - human_who_gained_species.overlays_standing[BODY_ADJ_LAYER] = list(image(mob_icon, fur_color)) - human_who_gained_species.apply_overlay(BODY_ADJ_LAYER) - /datum/species/human/shifter/bestial/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load) . = ..() - human.update_mob_height() + UnregisterSignal(human, COMSIG_ATOM_UPDATE_OVERLAYS) + human.update_appearance(UPDATE_OVERLAYS) human.update_transform() - human.remove_overlay(BODY_ADJ_LAYER) -/datum/species/human/shifter/bestial/update_species_heights(mob/living/carbon/human/holder) - if(HAS_TRAIT(holder, TRAIT_DWARF)) - return HUMAN_HEIGHT_MEDIUM +/datum/species/human/shifter/bestial/proc/add_fluff(datum/source, list/overlay_list) + SIGNAL_HANDLER - if(HAS_TRAIT(holder, TRAIT_TOO_TALL)) - return HUMAN_HEIGHT_TALLEST + var/mob/living/carbon/human/guy = astype(source) + if(!guy) + return - return HUMAN_HEIGHT_TALL + if(!HAS_TRAIT(guy, TRAIT_FAIR_GLABRO)) + var/fur_color = get_fur_color(guy) + var/mob_icon = get_mob_icon(guy) + var/image/fluff = image(mob_icon, fur_color, layer = -BODY_ADJ_LAYER) + overlay_list += fluff /datum/species/human/shifter/war @@ -205,8 +211,9 @@ TRAIT_NO_BLOOD_OVERLAY, TRAIT_NO_LYING_ANGLE, TRAIT_TRANSFORM_UPDATES_ICON, + TRAIT_HARDENED_SOLES, ) - causes_delirium = TRUE + form_causes_delirium = TRUE veil_breaching_form = TRUE mutanttongue = /obj/item/organ/tongue/fera @@ -242,6 +249,7 @@ TRAIT_FERAL_BITER, TRAIT_SMALL_HANDS, TRAIT_NO_CUFF, + TRAIT_HARDENED_SOLES, ) veil_breaching_form = TRUE diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm index 44afa820bdac..1f744e6cb2a1 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm @@ -73,16 +73,19 @@ return abs(first_index - second_index) /datum/splat/werewolf/shifter/proc/revert_to_breed_form() - if(HAS_TRAIT(owner, TRAIT_METAMORPH)) - var/datum/storyteller_roll/metamorph/roll_datum = new() - if(roll_datum.st_roll(owner, bonus = PRIMAL_URGE_PLACEHOLDER) == ROLL_SUCCESS) - // First valid use of timeout discovered (we dont want to be able to hold it out) - var/choice = tgui_input_list(owner, "Revert to your choosen form", "Metamorph", transformation_list, get_breed_form_species(), 1 TURNS) - if(choice in transformation_list) - transform_fera(choice, force = TRUE) - return - - transform_fera(get_breed_form_species(), force = TRUE) + SIGNAL_HANDLER + + ASYNC // We dont return anything important to death and we want to be able to sleep for metamorph + if(HAS_TRAIT(owner, TRAIT_METAMORPH)) + var/datum/storyteller_roll/metamorph/roll_datum = new() + if(roll_datum.st_roll(owner, bonus = PRIMAL_URGE_PLACEHOLDER) == ROLL_SUCCESS) + // First valid use of timeout discovered (we dont want to be able to hold it out) + var/choice = tgui_input_list(owner, "Revert to your choosen form", "Metamorph", transformation_list, get_breed_form_species(), 1 TURNS) + if(choice in transformation_list) + transform_fera(choice, force = TRUE) + return + + transform_fera(get_breed_form_species(), force = TRUE) /datum/splat/werewolf/shifter/proc/transform_finish(form_to_transform, time_taken = DOGGY_ANIMATION_TIME) animate(owner, transform = null, color = "#FFFFFF", time = time_taken * 0.1) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 3983a23cef03..25879e16cd88 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -122,6 +122,7 @@ /// Type path of the animal we look like in our feral form var/mob/living/basic/mimmicing_animal COOLDOWN_DECLARE(passive_healing_cd) + COOLDOWN_DECLARE(passive_regrowth_cd) COOLDOWN_DECLARE(gnosis_regain_cd) /// Emote uses for activations of gifts and other things @@ -131,6 +132,7 @@ . = ..() owner.set_species(/datum/species/human/shifter/homid) add_power(/datum/action/cooldown/power/gift/howling) + COOLDOWN_START(src, passive_regrowth_cd, 8 MINUTES) RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(revert_to_breed_form)) @@ -144,19 +146,34 @@ /datum/splat/werewolf/shifter/splat_life(seconds_per_tick) regain_gnosis_process(seconds_per_tick) + // Crinos heal in all forms. Lupus and homid born dont heal FAST FAST in their breed form. + // their fast healing is represented in day/days in breed-form so we just dont. + var/can_passively_heal = !(is_breed_form() && (get_breed_form_species() != /datum/species/human/shifter/war)) if(COOLDOWN_FINISHED(src, passive_healing_cd)) - // Crinos heal in all forms. Lupus and homid born dont heal FAST FAST in their breed form - // their fast healing is represented in day/days in breed-form so we just dont. - if(is_breed_form() && (get_breed_form_species() != /datum/species/human/shifter/war)) - return - // 2 to represent leathal*** - owner.heal_storyteller_health(2, heal_scars = TRUE, heal_blood = TRUE) + if(can_passively_heal) + // 2 to represent lethal. Fera passive regen closes burn, but not aggravated damage. + owner.heal_storyteller_health(2, heal_aggravated = FALSE, heal_scars = TRUE, heal_blood = TRUE, heal_burn = TRUE) + // Keep organ healing ticking so internal damage recovers even between major regrowth pulses. + owner.adjust_organ_loss(ORGAN_SLOT_BRAIN, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_HEART, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_LUNGS, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_STOMACH, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_LIVER, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_EYES, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) + owner.adjust_organ_loss(ORGAN_SLOT_EARS, -0.5 * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC) COOLDOWN_START(src, passive_healing_cd, 1 TURNS) + + if(COOLDOWN_FINISHED(src, passive_regrowth_cd)) + owner.regenerate_organs() + if(length(owner.get_missing_limbs())) + owner.regenerate_limbs() + COOLDOWN_START(src, passive_regrowth_cd, 8 MINUTES) + var/datum/species/human/shifter/shifter_species = owner.dna.species if(istype(shifter_species)) - if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.causes_delirium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL))) + if(shifter_species.is_veil_breaching_form(owner) && !causes_delirium()) SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) - if(shifter_species.causes_delirium) + if(causes_delirium()) for(var/mob/living/carbon/human/guy in oviewers(owner, DEFAULT_SIGHT_DISTANCE)) if(!guy.affected_by_delirium()) continue @@ -166,7 +183,7 @@ var/datum/species/human/shifter/shifter_species = owner.dna.species if(istype(shifter_species)) return FALSE - if(shifter_species.causes_delirium && !HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)) + if(shifter_species.form_causes_delirium && !HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)) return TRUE // Being used to represent meditating in your caern diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/weapons/klaives.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/weapons/klaives.dm new file mode 100644 index 000000000000..a063e45dfdfc --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/weapons/klaives.dm @@ -0,0 +1,90 @@ +/obj/item/occult_artifact/werewolf/klaive + name = "klaive" + desc = "A ritual weapon crafted by the Garou out of silver. This blade has a blue tint, due to the way it was crafted." + icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapons.dmi' + lefthand_file = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/lefthand.dmi' + righthand_file = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/righthand.dmi' + ONFLOOR_ICON_HELPER('modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapon_onfloors.dmi') + icon_state = "klaive" + force = 2 LETHAL_TTRPG_DAMAGE + // icon_angle = -45 + hitsound = 'sound/items/weapons/bladeslice.ogg' + obj_flags = CONDUCTS_ELECTRICITY + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_NORMAL + attack_verb_continuous = list("attacks", "slashes", "slices", "tears", "lacerates", "rips", "dices", "cuts") + attack_verb_simple = list("attack", "slash", "slice", "tear", "lacerate", "rip", "dice", "cut") + sharpness = SHARP_EDGED + armor_type = /datum/armor/item_claymore + resistance_flags = FIRE_PROOF + custom_materials = list(/datum/material/silver = (2 * SHEET_MATERIAL_AMOUNT)) + spirit_type = SPIRIT_VENGEANCE + var/stirred_spirit = FALSE + var/silver_damage = 2 + var/awakened_force = 3 LETHAL_TTRPG_DAMAGE + var/awakened_bonus_silver_damage = 1 + +/obj/item/occult_artifact/werewolf/klaive/Initialize(mapload) + . = ..() + spirit_name = generate_spirit_name(spirit_type) + +/obj/item/occult_artifact/werewolf/klaive/identify() + . = ..() + say("I am [spirit_name]... Wield me against your foes...") + +/obj/item/occult_artifact/werewolf/klaive/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers) + . = ..() + fera_silver_damage(target, silver_damage, 1) // Copyed the other silver weapon. Not super accurate. + +/obj/item/occult_artifact/werewolf/klaive/attack_self(mob/user, modifiers) + if(!identified) + return ..() + + var/datum/splat/werewolf/werewolf_splat = get_werewolf_splat(user) + if(owner) + if(stirred_spirit) + to_chat(user, span_warning("[src]'s spirit is already awake!")) + return + if(werewolf_splat) + awaken(user, werewolf_splat) + else + to_chat(user, span_notice("[src] is just a dead piece of silver.")) + +/obj/item/occult_artifact/werewolf/klaive/proc/awaken(mob/living/carbon/human/user, datum/splat/werewolf/werewolf_splat) + if(werewolf_splat.adjust_gnosis(-1)) + to_chat(user, span_notice("You beckon [src]'s spirit, you can feel it answer your call.")) + stirred_spirit = TRUE + force = awakened_force + silver_damage += awakened_bonus_silver_damage + addtimer(CALLBACK(src, PROC_REF(slumber), user), 1 TURNS) + else + to_chat(user, span_notice("You beckon [src]'s spirit, but all that answers is silence and indifference.")) + +/obj/item/occult_artifact/werewolf/klaive/proc/slumber(mob/user) + stirred_spirit = FALSE + force = initial(force) + silver_damage = initial(silver_damage) + to_chat(user, span_notice("[src]'s spirit slumbers once more.")) + + +/obj/item/occult_artifact/werewolf/klaive/karambit + name = "curved klaive" + desc = "A ritual weapon crafted by the Garou out of silver. This one has a handle made of bone, and is curved." + icon_state = "klaive_karambit" + +/obj/item/occult_artifact/werewolf/klaive/bane + name = "bane klaive" + desc = "A ritual weapon crafted by the Garou out of silver. This one seems rusty, yet still quite sharp" + icon_state = "klaive_bane" + +/obj/item/occult_artifact/werewolf/klaive/grand + name = "grand klaive" + desc = "A ritual weapon crafted by the Garou out of silver. This one is HUGE!." + icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/48x32weapons.dmi' + icon_state = "klaive_grand" + force = 5 LETHAL_TTRPG_DAMAGE + attack_difficulty = 7 + w_class = WEIGHT_CLASS_HUGE + custom_materials = list(/datum/material/silver = (4 * SHEET_MATERIAL_AMOUNT)) + silver_damage = 3 + awakened_force = 6 LETHAL_TTRPG_DAMAGE diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/48x32weapons.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/48x32weapons.dmi new file mode 100644 index 000000000000..4dc7373087e7 Binary files /dev/null and b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/48x32weapons.dmi differ diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/lefthand.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/lefthand.dmi new file mode 100644 index 000000000000..d2705b8f2364 Binary files /dev/null and b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/lefthand.dmi differ diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/righthand.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/righthand.dmi new file mode 100644 index 000000000000..675f60bbeb9a Binary files /dev/null and b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/righthand.dmi differ diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapon_onfloors.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapon_onfloors.dmi new file mode 100644 index 000000000000..71141c23fb39 Binary files /dev/null and b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapon_onfloors.dmi differ diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapons.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapons.dmi new file mode 100644 index 000000000000..0097c3dfafad Binary files /dev/null and b/modular_darkpack/modules/werewolf_the_apocalypse/icons/weapons/weapons.dmi differ diff --git a/modular_darkpack/modules/z_travel/code/helpers.dm b/modular_darkpack/modules/z_travel/code/helpers.dm new file mode 100644 index 000000000000..33163676331d --- /dev/null +++ b/modular_darkpack/modules/z_travel/code/helpers.dm @@ -0,0 +1,16 @@ +// Copypasta of get_z_move_affected +/// Returns a list of movables that should also be affected when src moves through teleporters, and src. +/atom/movable/proc/get_teleport_move_affected() + . = list(src) + if(buckled_mobs) + . |= buckled_mobs + for(var/mob/living/buckled as anything in buckled_mobs) + if(buckled.pulling) + . |= buckled.pulling + if(pulling) + . |= pulling + if (pulling.buckled_mobs) + . |= pulling.buckled_mobs + + if (pulling.pulling) + . |= pulling.pulling.get_teleport_move_affected() diff --git a/modular_darkpack/modules/z_travel/code/transfer_point.dm b/modular_darkpack/modules/z_travel/code/transfer_point.dm index 892d57c0ed59..ef7746cd1a87 100644 --- a/modular_darkpack/modules/z_travel/code/transfer_point.dm +++ b/modular_darkpack/modules/z_travel/code/transfer_point.dm @@ -72,10 +72,12 @@ GLOBAL_LIST_EMPTY(unallocted_transfer_points) var/moved_dir = get_dir(arrived, src) var/turf/exit_turf exit_turf = get_open_turf_in_dir(exit, moved_dir) - if(exit_turf) - return arrived.forceMove(exit_turf) + if(!exit_turf) + exit_turf = get_turf(exit) - return arrived.forceMove(get_turf(exit)) + var/atom/movable/moving_stuff = arrived.get_teleport_move_affected() + for(var/atom/movable/moving in moving_stuff) + moving.forceMove(exit_turf) // Use inside the umbra. visible /obj/transfer_point_vamp/umbral diff --git a/modular_vcg/master_files/code/modules/client/verbs/who.dm b/modular_vcg/master_files/code/modules/client/verbs/who.dm index c43765158612..64b09252483e 100644 --- a/modular_vcg/master_files/code/modules/client/verbs/who.dm +++ b/modular_vcg/master_files/code/modules/client/verbs/who.dm @@ -3,10 +3,8 @@ var/awho_count_since = 0 COOLDOWN_DECLARE(adminwho_alert_cooldown) -/client/adminwho() - set category = "Admin" - set name = "Adminwho" +/* CRIMSON EDIT REMOVAL - here lies adminwho. it's been moved to /tg/ code in a modular edit because we can't use the verb macro and override at the same time. . = ..() if(COOLDOWN_FINISHED(src, adminwho_alert_cooldown) && !is_admin(src)) @@ -19,3 +17,4 @@ COOLDOWN_START(src, adminwho_alert_cooldown, 1 MINUTES) awho_count_since++ +*/ diff --git a/modular_vcg/master_files/code/modules/discord/toggle_notify.dm b/modular_vcg/master_files/code/modules/discord/toggle_notify.dm index 8ea4e982ffa8..95c0be145088 100644 --- a/modular_vcg/master_files/code/modules/discord/toggle_notify.dm +++ b/modular_vcg/master_files/code/modules/discord/toggle_notify.dm @@ -14,10 +14,7 @@ return response["result"] // Verb to toggle restart notifications -/client/verb/notify_restart() - set category = "OOC" - set name = "Notify Restart" - set desc = "Notifies you on Discord when the server restarts." +GAME_VERB_DESC(/client, notify_restart, "Notify Restart", "Notifies you on Discord when the server restarts.", "OOC") // Safety checks if(!CONFIG_GET(flag/sql_enabled)) diff --git a/modular_vcg/master_files/code/modules/mentor/mentorsay.dm b/modular_vcg/master_files/code/modules/mentor/mentorsay.dm index 321880560caa..aac15df5bb8e 100644 --- a/modular_vcg/master_files/code/modules/mentor/mentorsay.dm +++ b/modular_vcg/master_files/code/modules/mentor/mentorsay.dm @@ -1,8 +1,5 @@ /* -/client/proc/cmd_mentor_say(message as text) - set category = "Mentor" - set name = "Msay" //Gave this shit a shorter name so you only have to time out "msay" rather than "mentor say" to use it --NeoFite - set hidden = 1 +GAME_VERB_PROC(/client, cmd_mentor_say, "Msay", "Mentor", msg as text) if(!is_mentor()) return diff --git a/modular_vcg/modules/plexora/code/verification.dm b/modular_vcg/modules/plexora/code/verification.dm index a774736b6541..90b5203acc3f 100644 --- a/modular_vcg/modules/plexora/code/verification.dm +++ b/modular_vcg/modules/plexora/code/verification.dm @@ -55,10 +55,7 @@ /* Discord Verification Window */ -/client/verb/verify_in_discord() - set category = "OOC" - set name = "Verify Discord Account" - set desc = "Verify your discord account with your BYOND account" +GAME_VERB_DESC(/client, verify_in_discord, "Verify Discord Account", "Verify your discord account with your BYOND account", "OOC") if(!CONFIG_GET(flag/sql_enabled)) to_chat(src, span_warning("This feature requires the SQL backend to be running.")) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000000..51f0906c4811 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,200 @@ +{ + "name": "TG-STATION", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@biomejs/biome": "^2.4.16", + "prettier": "^3.8.3" + } + }, + "node_modules/@biomejs/biome": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.16.tgz", + "integrity": "sha512-x9ajFh1zChVybCiM3TN6OD4phAqLgtPZjFrZF+aTMYCPjwBO+k529TX7PPsAqtGNLeV4UgzwQnowEgS7bGmzcA==", + "dev": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "2.4.16", + "@biomejs/cli-darwin-x64": "2.4.16", + "@biomejs/cli-linux-arm64": "2.4.16", + "@biomejs/cli-linux-arm64-musl": "2.4.16", + "@biomejs/cli-linux-x64": "2.4.16", + "@biomejs/cli-linux-x64-musl": "2.4.16", + "@biomejs/cli-win32-arm64": "2.4.16", + "@biomejs/cli-win32-x64": "2.4.16" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.16.tgz", + "integrity": "sha512-wxPvu4XOA85YJk9ixSWUmq/QBHbid85BISbOAqqBM/5xQpPk9ayjk5375tOlSC0BeCwNSbPFafQBm+vBumXq0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.16.tgz", + "integrity": "sha512-xFCqGPwYusQJp4N4NJLi1XJiZqjwFdjhT+KqtNy+Ug3qgfczqnTa6MSDvxJF6TkuDLoYJItMapz6tAf7kCekFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.16.tgz", + "integrity": "sha512-2kFb4//jxfZaP6D+Rj5VkHkxgyD9EoRAVBEQb8PKRv+s4NO2zYNJKXFaJmK1CmhufJOWEfpHKaRbOja7qjmdhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.16.tgz", + "integrity": "sha512-oYxnW0ARfJkr72ezzF2OR8N/rtkgLUQeYtF8cFhVswbknHxtTcmzSsanVJP8yQKnGpGpc2ck6c5zLvHahL6Cbg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.16.tgz", + "integrity": "sha512-NbcBbi/nJqn5baae6wqRXdS7Gadf2uRpehSh6vMSYpG8OhkXl/Xg8aorWrJ+9VWqAT5ml90alLvorkpMW0nBwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.16.tgz", + "integrity": "sha512-iHDS+MCM65DPqWGu+ECC3uoALyj2H7F4nVUPxIPjz/PIl94EUu+EDfGZDzFP+NY1EOPVt9NQvwFqq7HdMmowdg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.16.tgz", + "integrity": "sha512-0rgImMsNb5v/chhkIFe3wu7PEFClS6RBAYUijGL9UsYN3PanSaoK24HSSuSJb1pYbYYVjzAyZTl3gtjJ84BM8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "2.4.16", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/prettier": { + "version": "3.8.3", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + } + } +} diff --git a/package.json b/package.json index 68493d466f4a..9f494dce393d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@biomejs/biome": "^2.3.10", - "prettier": "^3.7.4" + "@biomejs/biome": "^2.4.16", + "prettier": "^3.8.3" }, "scripts": { "tgui:fix": "biome check --write --unsafe tgui", diff --git a/sound/attributions.txt b/sound/attributions.txt index 3e315731646e..4591ca71eef2 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -250,3 +250,6 @@ sound/items/weapons/earthcracker_bang.mp3 by Jean Filho -- https://freesound.org sound/machines/data_transmission.ogg -- Elements from Tim Verberne -- https://freesound.org/people/Tim_Verberne/sounds/558942/ -- License: Creative Commons 0 and samples from Ping.ogg from throughout the codebase. + +sound/items/jet_active, ./jet_ignite, and ./jet_off by kyles -- https://freesound.org/people/kyles/sounds/453408/ -- license: Creative Commons 0. + Slight noise cleanup on all three files, mild pitch tweak on jet_active, but otherwise just cut apart and converted to OGG. diff --git a/sound/effects/magic/RATTLEMEBONES2.ogg b/sound/effects/magic/RATTLEMEBONES2.ogg deleted file mode 100644 index ed7109eff283..000000000000 Binary files a/sound/effects/magic/RATTLEMEBONES2.ogg and /dev/null differ diff --git a/sound/items/jet_active.ogg b/sound/items/jet_active.ogg new file mode 100644 index 000000000000..e01c438a6672 Binary files /dev/null and b/sound/items/jet_active.ogg differ diff --git a/sound/items/jet_ignite.ogg b/sound/items/jet_ignite.ogg new file mode 100644 index 000000000000..eb0925de8c04 Binary files /dev/null and b/sound/items/jet_ignite.ogg differ diff --git a/sound/items/jet_off.ogg b/sound/items/jet_off.ogg new file mode 100644 index 000000000000..7992457de8ab Binary files /dev/null and b/sound/items/jet_off.ogg differ diff --git a/sound/items/vacuum/credits.txt b/sound/items/vacuum/credits.txt new file mode 100644 index 000000000000..d068f55cdab0 --- /dev/null +++ b/sound/items/vacuum/credits.txt @@ -0,0 +1,5 @@ +Sounds in this folder are CC-BY-NC + +These sounds are sourced from soundsnap under their free tier. + +https://soundsnap.zendesk.com/hc/en-us/articles/115003916431-Legal diff --git a/sound/items/vacuum/vacuum_clack.ogg b/sound/items/vacuum/vacuum_clack.ogg new file mode 100644 index 000000000000..de53eaebc917 Binary files /dev/null and b/sound/items/vacuum/vacuum_clack.ogg differ diff --git a/sound/items/vacuum/vacuum_hose.ogg b/sound/items/vacuum/vacuum_hose.ogg new file mode 100644 index 000000000000..fdb8b7415008 Binary files /dev/null and b/sound/items/vacuum/vacuum_hose.ogg differ diff --git a/sound/items/vacuum/vacuum_ploop.ogg b/sound/items/vacuum/vacuum_ploop.ogg new file mode 100644 index 000000000000..39aed4c121f7 Binary files /dev/null and b/sound/items/vacuum/vacuum_ploop.ogg differ diff --git a/sound/items/vacuum/vacuum_steam.ogg b/sound/items/vacuum/vacuum_steam.ogg new file mode 100644 index 000000000000..b56f42d95b12 Binary files /dev/null and b/sound/items/vacuum/vacuum_steam.ogg differ diff --git a/sound/items/vacuum/vacuum_use.ogg b/sound/items/vacuum/vacuum_use.ogg new file mode 100644 index 000000000000..17b0cb067247 Binary files /dev/null and b/sound/items/vacuum/vacuum_use.ogg differ diff --git a/sound/machines/tram/arrivals_line_processed.ogg b/sound/machines/tram/arrivals_line_processed.ogg new file mode 100644 index 000000000000..12ce6830007b Binary files /dev/null and b/sound/machines/tram/arrivals_line_processed.ogg differ diff --git a/sound/machines/tram/attributions.txt b/sound/machines/tram/attributions.txt new file mode 100644 index 000000000000..6e10cb8202f0 --- /dev/null +++ b/sound/machines/tram/attributions.txt @@ -0,0 +1 @@ +x_line_processed.ogg's by CabinetOnFire fully in-house at his DJ table. diff --git a/sound/machines/tram/door_chime.ogg b/sound/machines/tram/door_chime.ogg new file mode 100644 index 000000000000..26c58bca35a0 Binary files /dev/null and b/sound/machines/tram/door_chime.ogg differ diff --git a/sound/machines/tram/escape_line_processed.ogg b/sound/machines/tram/escape_line_processed.ogg new file mode 100644 index 000000000000..2f0b4fdb8626 Binary files /dev/null and b/sound/machines/tram/escape_line_processed.ogg differ diff --git a/sound/machines/tram/info_chime.ogg b/sound/machines/tram/info_chime.ogg new file mode 100644 index 000000000000..e1a1e0eb83b5 Binary files /dev/null and b/sound/machines/tram/info_chime.ogg differ diff --git a/sound/machines/tram/medical_line_processed.ogg b/sound/machines/tram/medical_line_processed.ogg new file mode 100644 index 000000000000..8e415d5cb05c Binary files /dev/null and b/sound/machines/tram/medical_line_processed.ogg differ diff --git a/sound/machines/tram/other_line_processed.ogg b/sound/machines/tram/other_line_processed.ogg new file mode 100644 index 000000000000..f888d4945f14 Binary files /dev/null and b/sound/machines/tram/other_line_processed.ogg differ diff --git a/sound/machines/tram/tram_loop.ogg b/sound/machines/tram/tram_loop.ogg new file mode 100644 index 000000000000..21db8b7a4b4e Binary files /dev/null and b/sound/machines/tram/tram_loop.ogg differ diff --git a/sound/machines/tram/tram_start.ogg b/sound/machines/tram/tram_start.ogg new file mode 100644 index 000000000000..9734524b17de Binary files /dev/null and b/sound/machines/tram/tram_start.ogg differ diff --git a/strings/locations.json b/strings/locations.json deleted file mode 100644 index 1ae1e628ab51..000000000000 --- a/strings/locations.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "locations": [ - "Aft Maintenance", - "Aft Primary Hallway", - "AI Chamber", - "AI Satellite Antechamber", - "AI Satellite Exterior", - "AI Upload Chamber", - "Armory", - "Atmospherics Engine", - "Atmospherics", - "Atrium", - "Auxiliary Base Construction", - "Auxiliary Restrooms", - "Auxiliary Tool Storage", - "Bar", - "Bridge", - "Brig Control", - "Brig", - "Captain's Office", - "Captain's Quarters", - "Cargo Bay", - "Cargo Office", - "Chapel Office", - "Chapel", - "Chemistry", - "Command Hallway", - "Construction Area", - "Corporate Showroom", - "Council Chamber", - "Courtroom", - "Custodial Closet", - "Customs", - "Cytology Lab", - "Delivery Office", - "Departure Lounge", - "Detective's Office", - "Dormitories", - "Engineering Foyer", - "Engineering Storage", - "Engineering", - "EVA Storage", - "Experimentation Lab", - "Firing Range", - "Gateway", - "Genetics Lab", - "Gravity Generator Room", - "Hydroponics", - "Incinerator", - "Kitchen", - "Law Office", - "Library", - "Locker Room", - "Mech Bay", - "Medbay Central", - "Medbay Maintenance", - "Medbay Storage", - "Mining Office", - "Morgue Maintenance", - "Morgue", - "Primary Tool Storage", - "Prison Wing", - "Prisoner Education Chamber", - "Recreation Area", - "Recreational Holodeck", - "Research and Development", - "Research Division", - "Research Testing Range", - "Restrooms", - "Robotics Lab", - "Science Maintenance", - "Security Checkpoint", - "Security Office", - "Service Hallway", - "Space", - "Supermatter Engine", - "Surgery", - "Technical Storage", - "Teleporter Room", - "Testing Lab", - "Theatre", - "Toxins Mixing Chamber", - "Toxins Mixing Lab", - "Toxins Storage", - "Toxins Test Area", - "Transfer Centre", - "Transit Tube", - "Vacant Commissary", - "Vacant Office", - "Vault", - "Virology", - "Warehouse", - "Waste Disposal", - "Xenobiology Lab" - ] -} diff --git a/strings/modular_maps/emergency_scrapheap.toml b/strings/modular_maps/emergency_scrapheap.toml index 6372704b7040..e6c56d82ffce 100644 --- a/strings/modular_maps/emergency_scrapheap.toml +++ b/strings/modular_maps/emergency_scrapheap.toml @@ -1,4 +1,4 @@ -directory = "_maps/shuttles/emergency_scrapheap/" +directory = "_maps/shuttles/emergency/emergency_scrapheap/" [rooms.shuttle] modules = ["classic1.dmm", "classic2.dmm"] diff --git a/strings/names/_attribution.txt b/strings/names/_attribution.txt new file mode 100644 index 000000000000..c050bb8caf0d --- /dev/null +++ b/strings/names/_attribution.txt @@ -0,0 +1,3 @@ +mirror_maid.txt Contains public sector information licensed under the Open Government Licence v3.0. +Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/ +Original: https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/livebirths/datasets/babynamesenglandandwalestop100babynameshistoricaldata diff --git a/strings/names/death_commando.txt b/strings/names/death_commando.txt index 0c5786764eee..4fe840fb4b6b 100644 --- a/strings/names/death_commando.txt +++ b/strings/names/death_commando.txt @@ -43,7 +43,7 @@ Killiam Shakespeare Killing McKillingalot Lance Killiam Leonardo Da Viking -Lump Beefrock +Lump Beefbroth Lunge Crushheel Max Pain Maximilian Murderface diff --git a/strings/names/mirror_maid.txt b/strings/names/mirror_maid.txt new file mode 100644 index 000000000000..a445030d4ace --- /dev/null +++ b/strings/names/mirror_maid.txt @@ -0,0 +1,100 @@ +Margaret +Mary +Joan +Joyce +Dorothy +Kathleen +Doris +Irene +Elizabeth +Eileen +Betty +Jean +Marjorie +Gladys +Doreen +Vera +Elsie +Barbara +Winifred +Edna +Audrey +Edith +Florence +Phyllis +Lilian +Hilda +Olive +Annie +Violet +Alice +Patricia +Ivy +Muriel +Iris +Evelyn +Peggy +Catherine +Ethel +Beryl +Gwendoline +Ellen +Sylvia +Sheila +Rose +Constance +Frances +Lily +Freda +Marion +Nancy +Grace +Beatrice +Sarah +Agnes +Ruth +May +Nora +Brenda +Jessie +Pamela +Anne +Helen +Marie +Mabel +Eva +Maria +Ruby +Nellie +Hazel +Emily +Josephine +Daphne +Jane +Ada +Pauline +Ann +Enid +Gertrude +Rita +June +Stella +Norah +Mavis +Thelma +Mildred +Bridget +Monica +Daisy +Eleanor +Lillian +Alma +Lucy +Dora +Christine +Maureen +Janet +Rosemary +Hannah +Sybil +Amy \ No newline at end of file diff --git a/strings/sillytips.txt b/strings/sillytips.txt index fdf740f07a61..71616ba148c4 100644 --- a/strings/sillytips.txt +++ b/strings/sillytips.txt @@ -40,3 +40,4 @@ When a round ends nearly everything about it is lost forever, leave your salt be You can light a match with the heel of your boot. ...What's that? Friction matches went out of style in the 19th century? That's nonsense! You can win a pulse rifle from the arcade machine. Honest. Your sprite represents your hitbox, so that afro makes you easier to kill. The sacrifices we make for style. +Santa Claus will listen to your prayers if you call him. diff --git a/strings/tips.txt b/strings/tips.txt index 45942b207768..84e366ffb5bf 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -1,4 +1,4 @@ -@You can italicize, embolden or underline portions of your messages by enclosing them with |, + or _ respectively. You can also avoid this by adding backslashes (they won't show in the message) before these characters. +@You can italicize, embolden, shrink, or underline portions of your messages by enclosing them with |, +, ^, or _ respectively. You can also avoid this by adding backslashes (they won't show in the message) before these characters. ♪ Hey, have you ever tried appending the % character before your messages when speaking in-game? ♫ A Scientist will pay top dollar for your frogs! A thrown glass of water can make a slippery tile, allowing you to slow down your pursuers in a pinch. @@ -325,6 +325,7 @@ You can use :I / .I to speak through any intercom within arm's reach. This allow You can use :L / .L or :R / .R to speak through an item being held in your left or right hand respectively. This allows you to talk into a station-bounced radio without manually turning on its microphone, or even to pretend to be a toy! You can use a machine in the vault to deposit cash or rob Cargo's department funds. You can use a multitool in your hand to track the area's local APC. +You can use a multitool on an ethereal to check their charge! You can use a screwdriver to remove an encryption key from a radio headset. The key can then be installed into your own headset, an intercom, or even a station-bounced radio, allowing you to eavesdrop on secure communications. You can use an upgraded microwave to charge your PDA! You don't need to destroy a Spacecoin machine to make your funds stop draining. Swiping your ID on it will stop the withdrawal. diff --git a/tgstation.dme b/tgstation.dme index faba54c4595b..943ba4da1470 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -163,6 +163,7 @@ #include "code\__DEFINES\melee.dm" #include "code\__DEFINES\memory_defines.dm" #include "code\__DEFINES\mergers.dm" +#include "code\__DEFINES\minimap.dm" #include "code\__DEFINES\mining.dm" #include "code\__DEFINES\mob_spawn.dm" #include "code\__DEFINES\mobfactions.dm" @@ -274,6 +275,7 @@ #include "code\__DEFINES\unit_tests.dm" #include "code\__DEFINES\uplink.dm" #include "code\__DEFINES\vehicles.dm" +#include "code\__DEFINES\verb.dm" #include "code\__DEFINES\verb_manager.dm" #include "code\__DEFINES\visual_helpers.dm" #include "code\__DEFINES\vv.dm" @@ -337,6 +339,7 @@ #include "code\__DEFINES\dcs\signals\signals_cytology.dm" #include "code\__DEFINES\dcs\signals\signals_datum.dm" #include "code\__DEFINES\dcs\signals\signals_event.dm" +#include "code\__DEFINES\dcs\signals\signals_fax.dm" #include "code\__DEFINES\dcs\signals\signals_fish.dm" #include "code\__DEFINES\dcs\signals\signals_food.dm" #include "code\__DEFINES\dcs\signals\signals_gib.dm" @@ -476,6 +479,7 @@ #include "code\__DEFINES\~darkpack\vampire_clan.dm" #include "code\__DEFINES\~darkpack\walls.dm" #include "code\__DEFINES\~darkpack\xp_and_freebie.dm" +#include "code\__DEFINES\~darkpack\dcs\beastmaster_signals.dm" #include "code\__DEFINES\~darkpack\dcs\bouncer_signals.dm" #include "code\__DEFINES\~darkpack\dcs\fire_signals.dm" #include "code\__DEFINES\~darkpack\dcs\gun_signals.dm" @@ -514,6 +518,7 @@ #include "code\__HELPERS\atoms.dm" #include "code\__HELPERS\auxtools.dm" #include "code\__HELPERS\bitflag_lists.dm" +#include "code\__HELPERS\botany.dm" #include "code\__HELPERS\chat.dm" #include "code\__HELPERS\chat_filter.dm" #include "code\__HELPERS\clients.dm" @@ -805,6 +810,7 @@ #include "code\controllers\subsystem\lighting.dm" #include "code\controllers\subsystem\lua.dm" #include "code\controllers\subsystem\machines.dm" +#include "code\controllers\subsystem\map_preview.dm" #include "code\controllers\subsystem\map_vote.dm" #include "code\controllers\subsystem\mapping.dm" #include "code\controllers\subsystem\market.dm" @@ -856,6 +862,7 @@ #include "code\controllers\subsystem\unplanned_ai_idle_controllers.dm" #include "code\controllers\subsystem\unplanned_controllers.dm" #include "code\controllers\subsystem\verb_manager.dm" +#include "code\controllers\subsystem\verbs.dm" #include "code\controllers\subsystem\vis_overlays.dm" #include "code\controllers\subsystem\vote.dm" #include "code\controllers\subsystem\wardrobe.dm" @@ -970,17 +977,18 @@ #include "code\datums\signals.dm" #include "code\datums\sound_token.dm" #include "code\datums\spawners_menu.dm" -#include "code\datums\sprite_accessories.dm" #include "code\datums\station_alert.dm" #include "code\datums\station_integrity.dm" #include "code\datums\stock_market_events.dm" #include "code\datums\tgs_event_handler.dm" #include "code\datums\verb_callbacks.dm" +#include "code\datums\verb_metadata.dm" #include "code\datums\view.dm" #include "code\datums\visual_data.dm" #include "code\datums\voice_of_god_command.dm" #include "code\datums\weakrefs.dm" #include "code\datums\world_topic.dm" +#include "code\datums\3d_sounds\_3d_sound.dm" #include "code\datums\achievements\_achievement_data.dm" #include "code\datums\achievements\_awards.dm" #include "code\datums\achievements\admin_panel.dm" @@ -1003,6 +1011,7 @@ #include "code\datums\actions\items\boot_dash.dm" #include "code\datums\actions\items\change_name.dm" #include "code\datums\actions\items\cult_dagger.dm" +#include "code\datums\actions\items\flight.dm" #include "code\datums\actions\items\hands_free.dm" #include "code\datums\actions\items\organ_action.dm" #include "code\datums\actions\items\reload_rebar.dm" @@ -1267,7 +1276,7 @@ #include "code\datums\components\defaceable.dm" #include "code\datums\components\dejavu.dm" #include "code\datums\components\deployable.dm" -#include "code\datums\components\digitigrade_linb.dm" +#include "code\datums\components\digitigrade_limb.dm" #include "code\datums\components\direct_explosive_trap.dm" #include "code\datums\components\earprotection.dm" #include "code\datums\components\echolocation.dm" @@ -1337,6 +1346,7 @@ #include "code\datums\components\limb_applicable.dm" #include "code\datums\components\ling_decoy_brain.dm" #include "code\datums\components\listen_and_repeat.dm" +#include "code\datums\components\listen_prayers.dm" #include "code\datums\components\lock_on_cursor.dm" #include "code\datums\components\lockable_storage.dm" #include "code\datums\components\magnet.dm" @@ -1356,6 +1366,7 @@ #include "code\datums\components\mutant_hands.dm" #include "code\datums\components\nuclear_bomb_operator.dm" #include "code\datums\components\object_possession.dm" +#include "code\datums\components\offered_when_pulled.dm" #include "code\datums\components\omen.dm" #include "code\datums\components\onwear_mood.dm" #include "code\datums\components\orbiter.dm" @@ -1473,17 +1484,18 @@ #include "code\datums\components\usb_port.dm" #include "code\datums\components\vacuum.dm" #include "code\datums\components\vision_hurting.dm" +#include "code\datums\components\walking_aid.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\weatherannouncer.dm" #include "code\datums\components\wet_floor.dm" #include "code\datums\components\wormborn.dm" #include "code\datums\components\container_item\container_item.dm" #include "code\datums\components\container_item\tank_holder.dm" +#include "code\datums\components\crafting\_crafting.dm" #include "code\datums\components\crafting\_recipes.dm" #include "code\datums\components\crafting\atmospheric.dm" #include "code\datums\components\crafting\chemistry.dm" #include "code\datums\components\crafting\containers.dm" -#include "code\datums\components\crafting\crafting.dm" #include "code\datums\components\crafting\doors.dm" #include "code\datums\components\crafting\entertainment.dm" #include "code\datums\components\crafting\equipment.dm" @@ -1643,6 +1655,7 @@ #include "code\datums\elements\bump_click.dm" #include "code\datums\elements\burn_when_item_ignition.dm" #include "code\datums\elements\can_barricade.dm" +#include "code\datums\elements\can_be_held.dm" #include "code\datums\elements\can_shatter.dm" #include "code\datums\elements\caseless.dm" #include "code\datums\elements\chain_lightning_attack.dm" @@ -1661,7 +1674,6 @@ #include "code\datums\elements\cuffable_item.dm" #include "code\datums\elements\cuffsnapping.dm" #include "code\datums\elements\cult_eyes.dm" -#include "code\datums\elements\cult_halo.dm" #include "code\datums\elements\curse_announcement.dm" #include "code\datums\elements\cursed.dm" #include "code\datums\elements\damage_threshold.dm" @@ -1754,6 +1766,7 @@ #include "code\datums\elements\plant_backfire.dm" #include "code\datums\elements\point_of_interest.dm" #include "code\datums\elements\poster_tearer.dm" +#include "code\datums\elements\pressure_sensitive.dm" #include "code\datums\elements\prevent_attacking_of_types.dm" #include "code\datums\elements\projectile_drop.dm" #include "code\datums\elements\projectile_shield.dm" @@ -1889,6 +1902,7 @@ #include "code\datums\looping_sounds\machinery_sounds.dm" #include "code\datums\looping_sounds\music.dm" #include "code\datums\looping_sounds\projectiles.dm" +#include "code\datums\looping_sounds\tram.dm" #include "code\datums\looping_sounds\vents.dm" #include "code\datums\looping_sounds\weather.dm" #include "code\datums\mapgen\CaveGenerator.dm" @@ -1910,14 +1924,14 @@ #include "code\datums\martial\sleeping_carp.dm" #include "code\datums\martial\spiders_bite.dm" #include "code\datums\martial\wrestling.dm" -#include "code\datums\material\material_container.dm" -#include "code\datums\material\remote_materials.dm" #include "code\datums\materials\_material.dm" #include "code\datums\materials\alloys.dm" #include "code\datums\materials\basemats.dm" #include "code\datums\materials\hauntium.dm" #include "code\datums\materials\meat.dm" #include "code\datums\materials\pizza.dm" +#include "code\datums\materials\material_container\material_container.dm" +#include "code\datums\materials\material_container\remote_materials.dm" #include "code\datums\materials\material_slots\_slot.dm" #include "code\datums\materials\material_slots\generic.dm" #include "code\datums\materials\properties\_properties.dm" @@ -2113,6 +2127,7 @@ #include "code\datums\shuttles\ferry.dm" #include "code\datums\shuttles\hunter.dm" #include "code\datums\shuttles\infiltrator.dm" +#include "code\datums\shuttles\labour.dm" #include "code\datums\shuttles\mining.dm" #include "code\datums\shuttles\pirate.dm" #include "code\datums\shuttles\ruin.dm" @@ -2124,6 +2139,20 @@ #include "code\datums\skills\fishing.dm" #include "code\datums\skills\gaming.dm" #include "code\datums\skills\mining.dm" +#include "code\datums\sprite_accessories\_sprite_accessory.dm" +#include "code\datums\sprite_accessories\clothing.dm" +#include "code\datums\sprite_accessories\ears.dm" +#include "code\datums\sprite_accessories\facial_hair.dm" +#include "code\datums\sprite_accessories\frills.dm" +#include "code\datums\sprite_accessories\hair.dm" +#include "code\datums\sprite_accessories\horns.dm" +#include "code\datums\sprite_accessories\markings.dm" +#include "code\datums\sprite_accessories\moth_antennae.dm" +#include "code\datums\sprite_accessories\pod_hair.dm" +#include "code\datums\sprite_accessories\snouts.dm" +#include "code\datums\sprite_accessories\spines.dm" +#include "code\datums\sprite_accessories\tails.dm" +#include "code\datums\sprite_accessories\wings.dm" #include "code\datums\station_traits\_station_trait.dm" #include "code\datums\station_traits\admin_panel.dm" #include "code\datums\station_traits\job_traits.dm" @@ -2145,6 +2174,7 @@ #include "code\datums\status_effects\song_effects.dm" #include "code\datums\status_effects\stacking_effect.dm" #include "code\datums\status_effects\wound_effects.dm" +#include "code\datums\status_effects\buffs\cult_halo.dm" #include "code\datums\status_effects\buffs\stop_drop_roll.dm" #include "code\datums\status_effects\buffs\stun_absorption.dm" #include "code\datums\status_effects\buffs\xray.dm" @@ -2549,6 +2579,7 @@ #include "code\game\objects\effects\lighting.dm" #include "code\game\objects\effects\material_insert.dm" #include "code\game\objects\effects\mines.dm" +#include "code\game\objects\effects\mining_mob_respawner.dm" #include "code\game\objects\effects\misc.dm" #include "code\game\objects\effects\overlays.dm" #include "code\game\objects\effects\particle_holder.dm" @@ -2621,9 +2652,11 @@ #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\costume.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\holiday.dm" #include "code\game\objects\effects\spawners\message_in_a_bottle.dm" #include "code\game\objects\effects\spawners\structure.dm" #include "code\game\objects\effects\spawners\xeno_egg_delivery.dm" +#include "code\game\objects\effects\spawners\random\_random.dm" #include "code\game\objects\effects\spawners\random\ai_module.dm" #include "code\game\objects\effects\spawners\random\animalhide.dm" #include "code\game\objects\effects\spawners\random\armory.dm" @@ -2642,7 +2675,6 @@ #include "code\game\objects\effects\spawners\random\medical.dm" #include "code\game\objects\effects\spawners\random\mining_loot.dm" #include "code\game\objects\effects\spawners\random\mod.dm" -#include "code\game\objects\effects\spawners\random\random.dm" #include "code\game\objects\effects\spawners\random\russian_rifle_spawner.dm" #include "code\game\objects\effects\spawners\random\structure.dm" #include "code\game\objects\effects\spawners\random\techstorage.dm" @@ -2800,37 +2832,6 @@ #include "code\game\objects\items\devices\scanners\sequence_scanner.dm" #include "code\game\objects\items\devices\scanners\slime_scanner.dm" #include "code\game\objects\items\devices\scanners\t_scanner.dm" -#include "code\game\objects\items\food\_food.dm" -#include "code\game\objects\items\food\bait.dm" -#include "code\game\objects\items\food\bread.dm" -#include "code\game\objects\items\food\burgers.dm" -#include "code\game\objects\items\food\cake.dm" -#include "code\game\objects\items\food\cheese.dm" -#include "code\game\objects\items\food\donkpocket.dm" -#include "code\game\objects\items\food\donuts.dm" -#include "code\game\objects\items\food\dough.dm" -#include "code\game\objects\items\food\egg.dm" -#include "code\game\objects\items\food\frozen.dm" -#include "code\game\objects\items\food\lizard.dm" -#include "code\game\objects\items\food\martian.dm" -#include "code\game\objects\items\food\meatdish.dm" -#include "code\game\objects\items\food\meatslab.dm" -#include "code\game\objects\items\food\mexican.dm" -#include "code\game\objects\items\food\misc.dm" -#include "code\game\objects\items\food\monkeycube.dm" -#include "code\game\objects\items\food\moth.dm" -#include "code\game\objects\items\food\packaged.dm" -#include "code\game\objects\items\food\pancakes.dm" -#include "code\game\objects\items\food\pastries.dm" -#include "code\game\objects\items\food\pie.dm" -#include "code\game\objects\items\food\pizza.dm" -#include "code\game\objects\items\food\salad.dm" -#include "code\game\objects\items\food\sandwichtoast.dm" -#include "code\game\objects\items\food\snacks.dm" -#include "code\game\objects\items\food\soup.dm" -#include "code\game\objects\items\food\spaghetti.dm" -#include "code\game\objects\items\food\sweets.dm" -#include "code\game\objects\items\food\vegetables.dm" #include "code\game\objects\items\granters\_granters.dm" #include "code\game\objects\items\granters\chuuni_granter.dm" #include "code\game\objects\items\granters\oragami.dm" @@ -2892,6 +2893,7 @@ #include "code\game\objects\items\implants\implant_spell.dm" #include "code\game\objects\items\implants\implant_stealth.dm" #include "code\game\objects\items\implants\implant_storage.dm" +#include "code\game\objects\items\implants\implant_tacmap.dm" #include "code\game\objects\items\implants\implantcase.dm" #include "code\game\objects\items\implants\implantchair.dm" #include "code\game\objects\items\implants\implanter.dm" @@ -2907,6 +2909,7 @@ #include "code\game\objects\items\kirby_plants\synthetic_plants.dm" #include "code\game\objects\items\rcd\RCD.dm" #include "code\game\objects\items\rcd\RCL.dm" +#include "code\game\objects\items\rcd\RDD.dm" #include "code\game\objects\items\rcd\RHD.dm" #include "code\game\objects\items\rcd\RLD.dm" #include "code\game\objects\items\rcd\RPD.dm" @@ -2921,6 +2924,7 @@ #include "code\game\objects\items\robot\items\generic.dm" #include "code\game\objects\items\robot\items\hud.dm" #include "code\game\objects\items\robot\items\hypo.dm" +#include "code\game\objects\items\robot\items\janitor.dm" #include "code\game\objects\items\robot\items\storage.dm" #include "code\game\objects\items\robot\items\tools.dm" #include "code\game\objects\items\stacks\ammonia_crystals.dm" @@ -3046,6 +3050,7 @@ #include "code\game\objects\structures\chess.dm" #include "code\game\objects\structures\containers.dm" #include "code\game\objects\structures\curtains.dm" +#include "code\game\objects\structures\decorations.dm" #include "code\game\objects\structures\deployable_turret.dm" #include "code\game\objects\structures\destructible_structures.dm" #include "code\game\objects\structures\detectiveboard.dm" @@ -3108,6 +3113,7 @@ #include "code\game\objects\structures\toiletbong.dm" #include "code\game\objects\structures\training_machine.dm" #include "code\game\objects\structures\traps.dm" +#include "code\game\objects\structures\tripwire.dm" #include "code\game\objects\structures\votingbox.dm" #include "code\game\objects\structures\windoor_assembly.dm" #include "code\game\objects\structures\window.dm" @@ -3820,10 +3826,10 @@ #include "code\modules\asset_cache\assets\portraits.dm" #include "code\modules\asset_cache\assets\radar.dm" #include "code\modules\asset_cache\assets\rcd.dm" +#include "code\modules\asset_cache\assets\rdd.dm" #include "code\modules\asset_cache\assets\research_designs.dm" #include "code\modules\asset_cache\assets\rtd.dm" #include "code\modules\asset_cache\assets\safe.dm" -#include "code\modules\asset_cache\assets\seeds.dm" #include "code\modules\asset_cache\assets\sheetmaterials.dm" #include "code\modules\asset_cache\assets\slot_machines.dm" #include "code\modules\asset_cache\assets\supplypods.dm" @@ -4194,6 +4200,7 @@ #include "code\modules\client\preferences\paint_color.dm" #include "code\modules\client\preferences\parallax.dm" #include "code\modules\client\preferences\paraplegic.dm" +#include "code\modules\client\preferences\particle_weather.dm" #include "code\modules\client\preferences\pda.dm" #include "code\modules\client\preferences\persistent_scars.dm" #include "code\modules\client\preferences\phobia.dm" @@ -4621,6 +4628,37 @@ #include "code\modules\food_and_drinks\pizzabox.dm" #include "code\modules\food_and_drinks\equipment\kitchen_utensils.dm" #include "code\modules\food_and_drinks\equipment\plate.dm" +#include "code\modules\food_and_drinks\food\_food.dm" +#include "code\modules\food_and_drinks\food\bait.dm" +#include "code\modules\food_and_drinks\food\bread.dm" +#include "code\modules\food_and_drinks\food\burgers.dm" +#include "code\modules\food_and_drinks\food\cake.dm" +#include "code\modules\food_and_drinks\food\cheese.dm" +#include "code\modules\food_and_drinks\food\donkpocket.dm" +#include "code\modules\food_and_drinks\food\donuts.dm" +#include "code\modules\food_and_drinks\food\dough.dm" +#include "code\modules\food_and_drinks\food\egg.dm" +#include "code\modules\food_and_drinks\food\frozen.dm" +#include "code\modules\food_and_drinks\food\lizard.dm" +#include "code\modules\food_and_drinks\food\martian.dm" +#include "code\modules\food_and_drinks\food\meatdish.dm" +#include "code\modules\food_and_drinks\food\meatslab.dm" +#include "code\modules\food_and_drinks\food\mexican.dm" +#include "code\modules\food_and_drinks\food\misc.dm" +#include "code\modules\food_and_drinks\food\monkeycube.dm" +#include "code\modules\food_and_drinks\food\moth.dm" +#include "code\modules\food_and_drinks\food\packaged.dm" +#include "code\modules\food_and_drinks\food\pancakes.dm" +#include "code\modules\food_and_drinks\food\pastries.dm" +#include "code\modules\food_and_drinks\food\pie.dm" +#include "code\modules\food_and_drinks\food\pizza.dm" +#include "code\modules\food_and_drinks\food\salad.dm" +#include "code\modules\food_and_drinks\food\sandwichtoast.dm" +#include "code\modules\food_and_drinks\food\snacks.dm" +#include "code\modules\food_and_drinks\food\soup.dm" +#include "code\modules\food_and_drinks\food\spaghetti.dm" +#include "code\modules\food_and_drinks\food\sweets.dm" +#include "code\modules\food_and_drinks\food\vegetables.dm" #include "code\modules\food_and_drinks\machinery\coffeemaker.dm" #include "code\modules\food_and_drinks\machinery\deep_fryer.dm" #include "code\modules\food_and_drinks\machinery\food_cart.dm" @@ -5137,6 +5175,18 @@ #include "code\modules\meteors\meteor_spawning.dm" #include "code\modules\meteors\meteor_types.dm" #include "code\modules\meteors\meteor_waves.dm" +#include "code\modules\minimap\_minimap.dm" +#include "code\modules\minimap\minimap.dm" +#include "code\modules\minimap\minimap_action.dm" +#include "code\modules\minimap\minimap_table.dm" +#include "code\modules\minimap\hud\minimal_z_level.dm" +#include "code\modules\minimap\hud\minimap_dimmer.dm" +#include "code\modules\minimap\hud\minimap_display.dm" +#include "code\modules\minimap\hud\minimap_drawing.dm" +#include "code\modules\minimap\hud\minimap_element.dm" +#include "code\modules\minimap\hud\minimap_label.dm" +#include "code\modules\minimap\hud\minimap_toolbar.dm" +#include "code\modules\minimap\hud\minimap_tracking_blip.dm" #include "code\modules\mining\aux_base.dm" #include "code\modules\mining\fulton.dm" #include "code\modules\mining\machine_processing.dm" @@ -5302,6 +5352,14 @@ #include "code\modules\mob\living\basic\bots\hygienebot\hygienebot_ai.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot_ai.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_ai.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_control.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_delivery.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_hud.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_movement.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_paranormal.dm" +#include "code\modules\mob\living\basic\bots\mulebot\mulebot_tool_interactions.dm" #include "code\modules\mob\living\basic\bots\repairbot\repairbot.dm" #include "code\modules\mob\living\basic\bots\repairbot\repairbot_abilities.dm" #include "code\modules\mob\living\basic\bots\repairbot\repairbot_ai.dm" @@ -5788,10 +5846,8 @@ #include "code\modules\mob\living\simple_animal\animal_defense.dm" #include "code\modules\mob\living\simple_animal\damage_procs.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\bot_announcement.dm" #include "code\modules\mob\living\simple_animal\bot\construction.dm" -#include "code\modules\mob\living\simple_animal\bot\mulebot.dm" #include "code\modules\mob\living\simple_animal\hostile\hostile.dm" #include "code\modules\mob\living\simple_animal\hostile\ooze.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\_megafauna.dm" @@ -5881,6 +5937,7 @@ #include "code\modules\modular_computers\file_system\programs\atmosscan.dm" #include "code\modules\modular_computers\file_system\programs\betting.dm" #include "code\modules\modular_computers\file_system\programs\borg_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\botanical_encyclopedia.dm" #include "code\modules\modular_computers\file_system\programs\bounty_board.dm" #include "code\modules\modular_computers\file_system\programs\budgetordering.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" @@ -5890,6 +5947,7 @@ #include "code\modules\modular_computers\file_system\programs\crewmanifest.dm" #include "code\modules\modular_computers\file_system\programs\dept_order.dm" #include "code\modules\modular_computers\file_system\programs\emojipedia.dm" +#include "code\modules\modular_computers\file_system\programs\faxnotif.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\frontier.dm" #include "code\modules\modular_computers\file_system\programs\jobmanagement.dm" @@ -6366,7 +6424,6 @@ #include "code\modules\research\designs\telecomms_designs.dm" #include "code\modules\research\designs\tool_designs.dm" #include "code\modules\research\designs\weapon_designs.dm" -#include "code\modules\research\designs\wiremod_designs.dm" #include "code\modules\research\designs\autolathe\engineering_designs.dm" #include "code\modules\research\designs\autolathe\materials.dm" #include "code\modules\research\designs\autolathe\medsci_designs.dm" @@ -6374,6 +6431,18 @@ #include "code\modules\research\designs\autolathe\multi-department_designs.dm" #include "code\modules\research\designs\autolathe\security_designs.dm" #include "code\modules\research\designs\autolathe\service_designs.dm" +#include "code\modules\research\designs\wiremod\_core_designs.dm" +#include "code\modules\research\designs\wiremod\action_designs.dm" +#include "code\modules\research\designs\wiremod\bci_designs.dm" +#include "code\modules\research\designs\wiremod\comm_designs.dm" +#include "code\modules\research\designs\wiremod\entity_designs.dm" +#include "code\modules\research\designs\wiremod\id_designs.dm" +#include "code\modules\research\designs\wiremod\list_designs.dm" +#include "code\modules\research\designs\wiremod\math_designs.dm" +#include "code\modules\research\designs\wiremod\sensor_designs.dm" +#include "code\modules\research\designs\wiremod\shell_designs.dm" +#include "code\modules\research\designs\wiremod\string_designs.dm" +#include "code\modules\research\designs\wiremod\utility_designs.dm" #include "code\modules\research\experimentor\_defines.dm" #include "code\modules\research\experimentor\experimentor.dm" #include "code\modules\research\experimentor\experiments.dm" @@ -6389,6 +6458,7 @@ #include "code\modules\research\gizmo\gizmodes\giz_filler.dm" #include "code\modules\research\gizmo\gizmodes\gizactives.dm" #include "code\modules\research\gizmo\gizmodes\gizbad.dm" +#include "code\modules\research\gizmo\gizmodes\gizcode.dm" #include "code\modules\research\gizmo\gizmodes\gizcopier.dm" #include "code\modules\research\gizmo\gizmodes\gizlectric.dm" #include "code\modules\research\gizmo\gizmodes\gizmisc.dm" @@ -6605,13 +6675,14 @@ #include "code\modules\surgery\surgery_tools.dm" #include "code\modules\surgery\surgery_tray.dm" #include "code\modules\surgery\bodyparts\_bodyparts.dm" +#include "code\modules\surgery\bodyparts\alien_parts.dm" #include "code\modules\surgery\bodyparts\bodypart_effects.dm" +#include "code\modules\surgery\bodyparts\default_parts.dm" #include "code\modules\surgery\bodyparts\dismemberment.dm" #include "code\modules\surgery\bodyparts\ghetto_parts.dm" #include "code\modules\surgery\bodyparts\head.dm" #include "code\modules\surgery\bodyparts\head_hair_and_lips.dm" #include "code\modules\surgery\bodyparts\helpers.dm" -#include "code\modules\surgery\bodyparts\parts.dm" #include "code\modules\surgery\bodyparts\robot_bodyparts.dm" #include "code\modules\surgery\bodyparts\stumps.dm" #include "code\modules\surgery\bodyparts\worn_feature_offset.dm" @@ -6621,6 +6692,7 @@ #include "code\modules\surgery\bodyparts\species_parts\ghost_bodyparts.dm" #include "code\modules\surgery\bodyparts\species_parts\lizard_bodyparts.dm" #include "code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm" +#include "code\modules\surgery\bodyparts\species_parts\monkey_parts.dm" #include "code\modules\surgery\bodyparts\species_parts\moth_bodyparts.dm" #include "code\modules\surgery\bodyparts\species_parts\plasmaman_bodyparts.dm" #include "code\modules\surgery\operations\_basic_surgery_state.dm" @@ -6798,7 +6870,6 @@ #include "code\modules\vehicles\cars\car.dm" #include "code\modules\vehicles\cars\clowncar.dm" #include "code\modules\vehicles\cars\speedwagon.dm" -#include "code\modules\vehicles\cars\vim.dm" #include "code\modules\vehicles\cars\golfcart\golfcart.dm" #include "code\modules\vehicles\cars\golfcart\golfcart_rear.dm" #include "code\modules\vehicles\mecha\_mecha.dm" @@ -6835,6 +6906,7 @@ #include "code\modules\vehicles\mecha\equipment\weapons\mecha_ammo.dm" #include "code\modules\vehicles\mecha\equipment\weapons\weapons.dm" #include "code\modules\vehicles\mecha\medical\odysseus.dm" +#include "code\modules\vehicles\mecha\miniature\vim.dm" #include "code\modules\vehicles\mecha\working\clarke.dm" #include "code\modules\vehicles\mecha\working\ripley.dm" #include "code\modules\vending\assist.dm" @@ -7074,6 +7146,7 @@ #include "modular_darkpack\master_files\code\game\area\areas.dm" #include "modular_darkpack\master_files\code\game\objects\items.dm" #include "modular_darkpack\master_files\code\game\objects\objs.dm" +#include "modular_darkpack\master_files\code\game\objects\items\handcuffs.dm" #include "modular_darkpack\master_files\code\game\objects\items\trash.dm" #include "modular_darkpack\master_files\code\game\objects\items\weaponry.dm" #include "modular_darkpack\master_files\code\game\objects\items\devices\radio\radio.dm" @@ -7163,12 +7236,14 @@ #include "modular_darkpack\modules\areas\code\interiors\endron_facility.dm" #include "modular_darkpack\modules\areas\code\interiors\forest.dm" #include "modular_darkpack\modules\areas\code\interiors\garou.dm" +#include "modular_darkpack\modules\areas\code\interiors\graveyard_interior.dm" #include "modular_darkpack\modules\areas\code\interiors\library.dm" #include "modular_darkpack\modules\areas\code\interiors\millennium_tower.dm" #include "modular_darkpack\modules\areas\code\interiors\sewers.dm" #include "modular_darkpack\modules\areas\code\outsides\__outside.dm" #include "modular_darkpack\modules\areas\code\outsides\city_outsides.dm" #include "modular_darkpack\modules\areas\code\outsides\forest.dm" +#include "modular_darkpack\modules\areas\code\outsides\graveyard_exterior.dm" #include "modular_darkpack\modules\ashtray\code\ashtray.dm" #include "modular_darkpack\modules\battering_ram\code\battering_ram.dm" #include "modular_darkpack\modules\beastmaster\code\beastmaster_actions.dm" @@ -7322,6 +7397,7 @@ #include "modular_darkpack\modules\events\code\_darkpack_event.dm" #include "modular_darkpack\modules\events\code\blackout_event.dm" #include "modular_darkpack\modules\events\code\economy_crash_event.dm" +#include "modular_darkpack\modules\events\code\graveyard_event.dm" #include "modular_darkpack\modules\events\code\sarcophagus_event.dm" #include "modular_darkpack\modules\events\code\szlachta_attack_event.dm" #include "modular_darkpack\modules\events\code\landmarks\event_landmarks.dm" @@ -7360,8 +7436,8 @@ #include "modular_darkpack\modules\government\code\carry_permit.dm" #include "modular_darkpack\modules\government\code\drivers_license.dm" #include "modular_darkpack\modules\government\code\passport.dm" -#include "modular_darkpack\modules\graveyard\code\graveyard.dm" -#include "modular_darkpack\modules\graveyard\code\graveyard_area.dm" +#include "modular_darkpack\modules\graveyard\code\vampgate.dm" +#include "modular_darkpack\modules\graveyard\code\vampgrave.dm" #include "modular_darkpack\modules\greebles\code\fake_platforms.dm" #include "modular_darkpack\modules\guestbook\code\adjective_preference.dm" #include "modular_darkpack\modules\guestbook\code\guestbook.dm" @@ -7408,7 +7484,6 @@ #include "modular_darkpack\modules\jobs\code\hunters\novice.dm" #include "modular_darkpack\modules\jobs\code\miscelllaneous\citizen.dm" #include "modular_darkpack\modules\jobs\code\miscelllaneous\club_worker.dm" -#include "modular_darkpack\modules\jobs\code\miscelllaneous\graveyard_keeper.dm" #include "modular_darkpack\modules\jobs\code\miscelllaneous\janitor.dm" #include "modular_darkpack\modules\jobs\code\miscelllaneous\priest.dm" #include "modular_darkpack\modules\jobs\code\miscelllaneous\taxi.dm" @@ -7475,6 +7550,7 @@ #include "modular_darkpack\modules\looc\code\keybinds.dm" #include "modular_darkpack\modules\looc\code\looc_preference.dm" #include "modular_darkpack\modules\looc\code\verbs.dm" +#include "modular_darkpack\modules\loot\code\random_spawners.dm" #include "modular_darkpack\modules\mannequin\code\mannequin_subtypes.dm" #include "modular_darkpack\modules\mapping_helpers\code\viewport_helper.dm" #include "modular_darkpack\modules\masquerade\code\blood_hunt_skull.dm" @@ -7512,7 +7588,9 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\betrayers_mark.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\cast_no_reflection.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\derangement.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\disfigured.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\dulled_bite.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\glowing_eyes.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\grip_of_the_damned.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\hemophiliac.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\horrific_appearance_quirk.dm" @@ -7527,6 +7605,7 @@ #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\pierced_veil.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\prey_exclusion.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\short.dm" +#include "modular_darkpack\modules\merits_flaws\code\negative_quirks\smell_of_the_grave.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\speech_impediment.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\territorial.dm" #include "modular_darkpack\modules\merits_flaws\code\negative_quirks\thaumaturgically_inept.dm" @@ -7548,6 +7627,7 @@ #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\hidden_diablerie.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\metamorph.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\pale_aura.dm" +#include "modular_darkpack\modules\merits_flaws\code\positive_quirks\promethean_clay.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\stillness_of_death.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\time_sense.dm" #include "modular_darkpack\modules\merits_flaws\code\positive_quirks\touch_of_the_wyld.dm" @@ -7619,6 +7699,7 @@ #include "modular_darkpack\modules\npc\code\nonhuman\hostile\abyss_tentacle.dm" #include "modular_darkpack\modules\npc\code\nonhuman\hostile\baali_guard.dm" #include "modular_darkpack\modules\npc\code\nonhuman\hostile\bear.dm" +#include "modular_darkpack\modules\npc\code\nonhuman\hostile\graveyard_zombie.dm" #include "modular_darkpack\modules\npc\code\nonhuman\hostile\szlachta.dm" #include "modular_darkpack\modules\npc\code\nonhuman\hostile\werewolf.dm" #include "modular_darkpack\modules\occult_artifacts\code\_artifact.dm" @@ -7642,6 +7723,7 @@ #include "modular_darkpack\modules\onfloor_icons\code\dynamic_item_icon.dm" #include "modular_darkpack\modules\onfloor_icons\code\gags_configs.dm" #include "modular_darkpack\modules\paths\code\conjured_items.dm" +#include "modular_darkpack\modules\paths\code\necromancy_obolus.dm" #include "modular_darkpack\modules\paths\code\occult_research.dm" #include "modular_darkpack\modules\paths\code\path.dm" #include "modular_darkpack\modules\paths\code\thaumaturgy_archives.dm" @@ -7668,13 +7750,16 @@ #include "modular_darkpack\modules\postal\code\postal.dm" #include "modular_darkpack\modules\powers\code\admin_discipline_editor.dm" #include "modular_darkpack\modules\powers\code\discipline_actions.dm" +#include "modular_darkpack\modules\powers\code\discipline_configs.dm" #include "modular_darkpack\modules\powers\code\discipline_gain.dm" +#include "modular_darkpack\modules\powers\code\discipline_keybindings.dm" #include "modular_darkpack\modules\powers\code\discipline_pref_middleware.dm" #include "modular_darkpack\modules\powers\code\discipline\__discipline.dm" #include "modular_darkpack\modules\powers\code\discipline\__discipline_power.dm" #include "modular_darkpack\modules\powers\code\discipline\animalism.dm" #include "modular_darkpack\modules\powers\code\discipline\dementation.dm" #include "modular_darkpack\modules\powers\code\discipline\melpominee.dm" +#include "modular_darkpack\modules\powers\code\discipline\mytherceria.dm" #include "modular_darkpack\modules\powers\code\discipline\necromancy.dm" #include "modular_darkpack\modules\powers\code\discipline\serpentis.dm" #include "modular_darkpack\modules\powers\code\discipline\torpor.dm" @@ -7903,6 +7988,7 @@ #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\__vampire_clan.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clan_globals.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clan_helpers.dm" +#include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clan_mark.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clan_mark_pref.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clan_pref.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\vampire_clan\clans\banu_haqim.dm" @@ -8041,8 +8127,10 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" #include "modular_darkpack\modules\westfield_mall\code\mall_areas.dm" #include "modular_darkpack\modules\westfield_mall\code\modular_rooms.dm" +#include "modular_darkpack\modules\z_travel\code\helpers.dm" #include "modular_darkpack\modules\z_travel\code\manhole.dm" #include "modular_darkpack\modules\z_travel\code\transfer_point.dm" #include "modular_vcg\code\__HELPERS\files.dm" diff --git a/tgui/README.md b/tgui/README.md index 6e4fc2272955..2637e384aeb3 100644 --- a/tgui/README.md +++ b/tgui/README.md @@ -46,11 +46,7 @@ free to skip this step. However, if you want finer control over the installation or build process, you will need these: -- [Node v22.11+](https://nodejs.org/en/download/) - - **LTS** release is recommended instead of latest - - **DO NOT install Chocolatey if Node installer asks you to!** -- [Yarn v4.8.1+](https://yarnpkg.com/getting-started/install) - - Yarn is normally installed with corepack. +- [Bun v1.2.16+](https://bun.com/docs/installation) ## Usage @@ -168,7 +164,7 @@ Inspection". You can then f12 to open the standard chrome dev tools. ## Project Structure -- `/packages` - Each folder here represents a self-contained Node module. +- `/packages` - Each folder here represents a self-contained Bun module. - `/packages/common` - Helper functions that are used throughout all packages. - `/packages/tgui/index.ts` - Application entry point. - `/packages/tgui/interfaces` - Actual in-game interfaces. diff --git a/tgui/bun.lock b/tgui/bun.lock index 4e2a142f45b1..62c3de9babef 100644 --- a/tgui/bun.lock +++ b/tgui/bun.lock @@ -54,7 +54,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "react-json-tree": "^0.20.0", - "tgui-core": "^5.10.0", + "tgui-core": "^6.1.1", "tgui-dev-server": "workspace:*", }, }, @@ -78,7 +78,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^5.10.0", + "tgui-core": "^6.1.0", "tgui-dev-server": "workspace:*", "zod": "^4.2.1", }, @@ -91,7 +91,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^5.10.0", + "tgui-core": "^6.1.1", }, }, "packages/tgui-setup": { @@ -104,39 +104,37 @@ }, }, "packages": { - "@babel/code-frame": ["@babel/code-frame@7.28.6", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q=="], + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@babel/runtime": ["@babel/runtime@7.28.6", "", {}, "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA=="], + "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], - "@bufbuild/protobuf": ["@bufbuild/protobuf@2.10.2", "", {}, "sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A=="], + "@bufbuild/protobuf": ["@bufbuild/protobuf@2.12.1", "", {}, "sha512-BvAMfS6LrgZiryOAZ4pBYucu4wG/Ei/9o9DZ9akbREnMLbPJiom2i8b9C8IsKErQoiKqVhrerzt3kOT/RrzLHg=="], "@discoveryjs/json-ext": ["@discoveryjs/json-ext@0.5.7", "", {}, "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="], - "@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], + "@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], - "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], + "@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], + "@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="], - "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], + "@floating-ui/dom": ["@floating-ui/dom@1.7.6", "", { "dependencies": { "@floating-ui/core": "^1.7.5", "@floating-ui/utils": "^0.2.11" } }, "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ=="], - "@floating-ui/react": ["@floating-ui/react@0.27.16", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.6", "@floating-ui/utils": "^0.2.10", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g=="], + "@floating-ui/react": ["@floating-ui/react@0.27.19", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog=="], - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.8", "", { "dependencies": { "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A=="], - "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + "@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="], - "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.0.11", "", { "dependencies": { "@types/node": "^20.0.0", "happy-dom": "^20.0.11" } }, "sha512-GqNqiShBT/lzkHTMC/slKBrvN0DsD4Di8ssBk4aDaVgEn+2WMzE6DXxq701ndSXj7/0cJ8mNT71pM7Bnrr6JRw=="], + "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.10.6", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^20.10.6" } }, "sha512-Nu/IjRkkNxmeG2ywWsyJSO4d1BrWTqVzxCPL+gXj0b97klhmjd6wLzt6Bx/laNpkZ3WLW7zNCqmtMIbIlahqug=="], - "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], + "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="], - "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], - - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], @@ -150,10 +148,26 @@ "@jsonjoy.com/base64": ["@jsonjoy.com/base64@1.1.2", "", { "peerDependencies": { "tslib": "2" } }, "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA=="], - "@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@1.2.1", "", { "peerDependencies": { "tslib": "2" } }, "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA=="], + "@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@17.67.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw=="], "@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@1.0.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g=="], + "@jsonjoy.com/fs-core": ["@jsonjoy.com/fs-core@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-node-builtins": "4.58.0", "@jsonjoy.com/fs-node-utils": "4.58.0", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-K82t5e9w3NYQeIcw129f0SCH/Rn8m8GKPJBYge4W/sA4hhE5h7I8YQhs2HRpUQyUpi+qk7I9tbp1/b87eCM/PA=="], + + "@jsonjoy.com/fs-fsa": ["@jsonjoy.com/fs-fsa@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.58.0", "@jsonjoy.com/fs-node-builtins": "4.58.0", "@jsonjoy.com/fs-node-utils": "4.58.0", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-1/FdsxQao9pBo2OJLEfKrujHdVyGxXvDTT7EtNh9fvp3MK42nB+xHh1EJr2L1c0a05eCMyFCYZPID3KjX9EAng=="], + + "@jsonjoy.com/fs-node": ["@jsonjoy.com/fs-node@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.58.0", "@jsonjoy.com/fs-node-builtins": "4.58.0", "@jsonjoy.com/fs-node-utils": "4.58.0", "@jsonjoy.com/fs-print": "4.58.0", "@jsonjoy.com/fs-snapshot": "4.58.0", "glob-to-regex.js": "^1.0.0", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-bOqoLND5b5xyM+1zro63kClBnB05HTIX0RzOSHy4kAjfnec+CTdV742H/nsDmbkDaaDLHMmYqxAw09NQ8yVIrQ=="], + + "@jsonjoy.com/fs-node-builtins": ["@jsonjoy.com/fs-node-builtins@4.58.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-M1sAhjR1de4CL7ivQAFYqJRDVE3krwVOmfcAgG5YQJiDWxYfcGDMLUNcx0p/+Rcs31/Inh1m9aUDk/0jfR1T5w=="], + + "@jsonjoy.com/fs-node-to-fsa": ["@jsonjoy.com/fs-node-to-fsa@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-fsa": "4.58.0", "@jsonjoy.com/fs-node-builtins": "4.58.0", "@jsonjoy.com/fs-node-utils": "4.58.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-erivc39YHoqWY0U8q5IlEcn238AUkIBByMvM0w7OO/FU9hEH3P7oNkPpYWIMpEMncbePk672GiC8ZSwYc2m7fg=="], + + "@jsonjoy.com/fs-node-utils": ["@jsonjoy.com/fs-node-utils@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-node-builtins": "4.58.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-IrsAFMFBFQXjpS/u3jOY4DMIbRDg94KxzadddDlJv9xodxZ6/Y3ji91uMwrRqklyu+KoquO/Vxihf3/QrQiuOA=="], + + "@jsonjoy.com/fs-print": ["@jsonjoy.com/fs-print@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-node-utils": "4.58.0", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-jbAYbeuzPXIzvWOuuFMoQgrWaQU5hBqevloebLaiAimoBYLjrjiLPdOaaLHepWcZzOq/7Us8x2F22YlsTPbwmw=="], + + "@jsonjoy.com/fs-snapshot": ["@jsonjoy.com/fs-snapshot@4.58.0", "", { "dependencies": { "@jsonjoy.com/buffers": "^17.65.0", "@jsonjoy.com/fs-node-utils": "4.58.0", "@jsonjoy.com/json-pack": "^17.65.0", "@jsonjoy.com/util": "^17.65.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-DkozLuMgzfpWZO8o8tSlFJIpUQauG7/sgjH0JrqsbLkmjdoInn/o1W7P9FZQSZlR9lOjDgSXs2MfE/sAUi2JRQ=="], + "@jsonjoy.com/json-pack": ["@jsonjoy.com/json-pack@1.21.0", "", { "dependencies": { "@jsonjoy.com/base64": "^1.1.2", "@jsonjoy.com/buffers": "^1.2.0", "@jsonjoy.com/codegen": "^1.0.0", "@jsonjoy.com/json-pointer": "^1.0.2", "@jsonjoy.com/util": "^1.9.0", "hyperdyperid": "^1.2.0", "thingies": "^2.5.0", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg=="], "@jsonjoy.com/json-pointer": ["@jsonjoy.com/json-pointer@1.0.2", "", { "dependencies": { "@jsonjoy.com/codegen": "^1.0.0", "@jsonjoy.com/util": "^1.9.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg=="], @@ -162,85 +176,85 @@ "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], - "@module-federation/error-codes": ["@module-federation/error-codes@0.21.6", "", {}, "sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ=="], + "@module-federation/error-codes": ["@module-federation/error-codes@0.22.0", "", {}, "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug=="], - "@module-federation/runtime": ["@module-federation/runtime@0.21.6", "", { "dependencies": { "@module-federation/error-codes": "0.21.6", "@module-federation/runtime-core": "0.21.6", "@module-federation/sdk": "0.21.6" } }, "sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ=="], + "@module-federation/runtime": ["@module-federation/runtime@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/runtime-core": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA=="], - "@module-federation/runtime-core": ["@module-federation/runtime-core@0.21.6", "", { "dependencies": { "@module-federation/error-codes": "0.21.6", "@module-federation/sdk": "0.21.6" } }, "sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw=="], + "@module-federation/runtime-core": ["@module-federation/runtime-core@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA=="], - "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.21.6", "", { "dependencies": { "@module-federation/runtime": "0.21.6", "@module-federation/webpack-bundler-runtime": "0.21.6" } }, "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q=="], + "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/webpack-bundler-runtime": "0.22.0" } }, "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA=="], - "@module-federation/sdk": ["@module-federation/sdk@0.21.6", "", {}, "sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw=="], + "@module-federation/sdk": ["@module-federation/sdk@0.22.0", "", {}, "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g=="], - "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.21.6", "", { "dependencies": { "@module-federation/runtime": "0.21.6", "@module-federation/sdk": "0.21.6" } }, "sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ=="], + "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA=="], "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], "@nozbe/microfuzz": ["@nozbe/microfuzz@1.0.0", "", {}, "sha512-XKIg/guk+s1tkPTkHch9hfGOWgsKojT7BqSQddXTppOfVr3SWQhhTCqbgQaPTbppf9gc2kFeG0gpBZZ612UXHA=="], - "@npmcli/agent": ["@npmcli/agent@2.2.2", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.3" } }, "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og=="], + "@npmcli/agent": ["@npmcli/agent@3.0.0", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.3" } }, "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q=="], - "@npmcli/fs": ["@npmcli/fs@3.1.1", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg=="], + "@npmcli/fs": ["@npmcli/fs@4.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q=="], - "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], + "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], - "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.1", "", { "os": "android", "cpu": "arm64" }, "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA=="], + "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], - "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw=="], + "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="], - "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg=="], + "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="], - "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ=="], + "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="], - "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA=="], + "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="], - "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.1", "", { "os": "linux", "cpu": "arm" }, "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q=="], + "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="], - "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w=="], + "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="], - "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg=="], + "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="], - "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A=="], + "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="], - "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg=="], + "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="], - "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw=="], + "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="], - "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ=="], + "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="], - "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], + "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="], "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], - "@rspack/binding": ["@rspack/binding@1.6.8", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.6.8", "@rspack/binding-darwin-x64": "1.6.8", "@rspack/binding-linux-arm64-gnu": "1.6.8", "@rspack/binding-linux-arm64-musl": "1.6.8", "@rspack/binding-linux-x64-gnu": "1.6.8", "@rspack/binding-linux-x64-musl": "1.6.8", "@rspack/binding-wasm32-wasi": "1.6.8", "@rspack/binding-win32-arm64-msvc": "1.6.8", "@rspack/binding-win32-ia32-msvc": "1.6.8", "@rspack/binding-win32-x64-msvc": "1.6.8" } }, "sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ=="], + "@rspack/binding": ["@rspack/binding@1.7.12", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.7.12", "@rspack/binding-darwin-x64": "1.7.12", "@rspack/binding-linux-arm64-gnu": "1.7.12", "@rspack/binding-linux-arm64-musl": "1.7.12", "@rspack/binding-linux-x64-gnu": "1.7.12", "@rspack/binding-linux-x64-musl": "1.7.12", "@rspack/binding-wasm32-wasi": "1.7.12", "@rspack/binding-win32-arm64-msvc": "1.7.12", "@rspack/binding-win32-ia32-msvc": "1.7.12", "@rspack/binding-win32-x64-msvc": "1.7.12" } }, "sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA=="], - "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.6.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A=="], + "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.7.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A=="], - "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.6.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg=="], + "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.7.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg=="], - "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.6.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ=="], + "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.7.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw=="], - "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.6.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw=="], + "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.7.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA=="], - "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.6.8", "", { "os": "linux", "cpu": "x64" }, "sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg=="], + "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.7.12", "", { "os": "linux", "cpu": "x64" }, "sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew=="], - "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.6.8", "", { "os": "linux", "cpu": "x64" }, "sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA=="], + "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.7.12", "", { "os": "linux", "cpu": "x64" }, "sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw=="], - "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@1.6.8", "", { "dependencies": { "@napi-rs/wasm-runtime": "1.0.7" }, "cpu": "none" }, "sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw=="], + "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@1.7.12", "", { "dependencies": { "@napi-rs/wasm-runtime": "1.0.7" }, "cpu": "none" }, "sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg=="], - "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.6.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ=="], + "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.7.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g=="], - "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.6.8", "", { "os": "win32", "cpu": "ia32" }, "sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg=="], + "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.7.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ=="], - "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.6.8", "", { "os": "win32", "cpu": "x64" }, "sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g=="], + "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.7.12", "", { "os": "win32", "cpu": "x64" }, "sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA=="], - "@rspack/cli": ["@rspack/cli@1.6.8", "", { "dependencies": { "@discoveryjs/json-ext": "^0.5.7", "@rspack/dev-server": "~1.1.4", "exit-hook": "^4.0.0", "webpack-bundle-analyzer": "4.10.2" }, "peerDependencies": { "@rspack/core": "^1.0.0-alpha || ^1.x" }, "bin": { "rspack": "bin/rspack.js" } }, "sha512-pFMYsov8Av7bNWEU9l0HCTk2A5vOPaaZBkZSkCs68U07tkMOQ58IvUiC5Uy1B780bqE2jBt/b6yA41uNmXScZg=="], + "@rspack/cli": ["@rspack/cli@1.7.12", "", { "dependencies": { "@discoveryjs/json-ext": "^0.5.7", "@rspack/dev-server": "~1.1.5", "exit-hook": "^4.0.0", "webpack-bundle-analyzer": "4.10.2" }, "peerDependencies": { "@rspack/core": "^1.0.0-alpha || ^1.x" }, "bin": { "rspack": "bin/rspack.js" } }, "sha512-aiVj5hm12/rhkH/KTvs9BugpRuLEutIw5o3KmQDvSMd6EqEIASuCCUI3/97uaNP58hqZSl7mAotsLcwn/OCbJQ=="], - "@rspack/core": ["@rspack/core@1.6.8", "", { "dependencies": { "@module-federation/runtime-tools": "0.21.6", "@rspack/binding": "1.6.8", "@rspack/lite-tapable": "1.1.0" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA=="], + "@rspack/core": ["@rspack/core@1.7.12", "", { "dependencies": { "@module-federation/runtime-tools": "0.22.0", "@rspack/binding": "1.7.12", "@rspack/lite-tapable": "1.1.0" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ=="], - "@rspack/dev-server": ["@rspack/dev-server@1.1.4", "", { "dependencies": { "chokidar": "^3.6.0", "http-proxy-middleware": "^2.0.9", "p-retry": "^6.2.0", "webpack-dev-server": "5.2.2", "ws": "^8.18.0" }, "peerDependencies": { "@rspack/core": "*" } }, "sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ=="], + "@rspack/dev-server": ["@rspack/dev-server@1.1.5", "", { "dependencies": { "chokidar": "^3.6.0", "http-proxy-middleware": "^2.0.9", "p-retry": "^6.2.0", "webpack-dev-server": "5.2.2", "ws": "^8.18.0" }, "peerDependencies": { "@rspack/core": "*" } }, "sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A=="], "@rspack/lite-tapable": ["@rspack/lite-tapable@1.1.0", "", {}, "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw=="], @@ -248,9 +262,7 @@ "@testing-library/react": ["@testing-library/react@16.3.2", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g=="], - "@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="], - - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], @@ -258,7 +270,7 @@ "@types/bonjour": ["@types/bonjour@3.5.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ=="], - "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="], + "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], @@ -266,7 +278,7 @@ "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], - "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.7", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg=="], + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.8", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA=="], "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], @@ -274,19 +286,19 @@ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - "@types/lodash": ["@types/lodash@4.17.21", "", {}, "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="], + "@types/lodash": ["@types/lodash@4.17.24", "", {}, "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ=="], "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], - "@types/node": ["@types/node@20.19.27", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="], + "@types/node": ["@types/node@26.1.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw=="], "@types/node-forge": ["@types/node-forge@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw=="], - "@types/qs": ["@types/qs@6.14.0", "", {}, "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="], + "@types/qs": ["@types/qs@6.15.1", "", {}, "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw=="], "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], - "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], + "@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], @@ -312,25 +324,23 @@ "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "@xmldom/xmldom": ["@xmldom/xmldom@0.7.13", "", {}, "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g=="], + "@xmldom/xmldom": ["@xmldom/xmldom@0.9.10", "", {}, "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw=="], "a-sync-waterfall": ["a-sync-waterfall@1.0.1", "", {}, "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA=="], - "abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], + "abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="], "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], - "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + "acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], + "acorn-walk": ["acorn-walk@8.3.5", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw=="], - "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], - "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], - - "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], @@ -358,7 +368,7 @@ "auto-config-loader": ["auto-config-loader@2.0.2", "", { "dependencies": { "ini": "^5.0.0", "jiti": "^2.4.1", "jsonc-eslint-parser": "^2.3.0", "lodash.merge": "^4.6.2", "sucrase": "^3.35.0", "toml-eslint-parser": "^0.10.0", "yaml-eslint-parser": "^1.2.2" } }, "sha512-0V8gZAGGqiFDP15d6d4/Emi6Gpozbr1S9lSfxJ+lNV8nF+7grhcgbHIgn3O/DQKybS+cDqVMC3rxH8k+o0ISpA=="], - "axios": ["axios@1.13.2", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA=="], + "axios": ["axios@1.18.1", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], @@ -368,29 +378,29 @@ "bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="], - "body-parser": ["body-parser@1.20.4", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA=="], + "body-parser": ["body-parser@1.20.5", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA=="], - "bonjour-service": ["bonjour-service@1.3.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA=="], + "bonjour-service": ["bonjour-service@1.4.2", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ=="], "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "buffer-builder": ["buffer-builder@0.2.0", "", {}, "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg=="], - "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "buffer-image-size": ["buffer-image-size@0.6.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ=="], + "bufferstreams": ["bufferstreams@4.0.0", "", { "dependencies": { "readable-stream": "^3.4.0", "yerror": "^8.0.0" } }, "sha512-azX778/2VQ9K2uiYprSUKLgK2K6lR1KtJycJDsMg7u0+Cc994A9HyGaUKb01e/T+M8jse057429iKXurCaT35g=="], - "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="], + "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], - "cacache": ["cacache@18.0.4", "", { "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" } }, "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ=="], + "cacache": ["cacache@19.0.1", "", { "dependencies": { "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^12.0.0", "tar": "^7.4.3", "unique-filename": "^4.0.0" } }, "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], @@ -402,14 +412,12 @@ "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], - "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], "clean-css": ["clean-css@5.3.3", "", { "dependencies": { "source-map": "~0.6.0" } }, "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg=="], "clean-css-cli": ["clean-css-cli@5.6.3", "", { "dependencies": { "chokidar": "^3.5.2", "clean-css": "^5.3.3", "commander": "7.x", "glob": "^7.1.6" }, "bin": { "cleancss": "bin/cleancss" } }, "sha512-MUAta8pEqA/d2DKQwtZU5nm0Og8TCyAglOx3GlWwjhGdKBwY4kVF6E5M6LU/jmmuswv+HbYqG/dKKkq5p1dD0A=="], - "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], - "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], @@ -454,7 +462,7 @@ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "css-loader": ["css-loader@7.1.2", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.27.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA=="], + "css-loader": ["css-loader@7.1.4", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.40", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.6.3" }, "peerDependencies": { "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "webpack": "^5.27.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw=="], "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], @@ -478,7 +486,7 @@ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "default-browser": ["default-browser@5.4.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg=="], + "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], @@ -492,7 +500,7 @@ "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], - "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node": ["detect-node@2.1.0", "", {}, "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="], @@ -506,7 +514,7 @@ "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], - "dompurify": ["dompurify@3.3.1", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q=="], + "dompurify": ["dompurify@3.4.11", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw=="], "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], @@ -526,7 +534,7 @@ "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], @@ -536,11 +544,11 @@ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-toolkit": ["es-toolkit@1.43.0", "", {}, "sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA=="], + "es-toolkit": ["es-toolkit@1.49.0", "", {}, "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -560,11 +568,11 @@ "exponential-backoff": ["exponential-backoff@3.1.3", "", {}, "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA=="], - "express": ["express@4.22.1", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g=="], + "express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + "fast-uri": ["fast-uri@3.1.3", "", {}, "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg=="], "faye-websocket": ["faye-websocket@0.11.4", "", { "dependencies": { "websocket-driver": ">=0.5.1" } }, "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g=="], @@ -578,11 +586,11 @@ "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], - "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], + "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], @@ -592,7 +600,7 @@ "fs-extra": ["fs-extra@11.2.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw=="], - "fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], + "fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], @@ -620,7 +628,7 @@ "handle-thing": ["handle-thing@2.0.1", "", {}, "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="], - "happy-dom": ["happy-dom@20.0.11", "", { "dependencies": { "@types/node": "^20.0.0", "@types/whatwg-mimetype": "^3.0.2", "whatwg-mimetype": "^3.0.0" } }, "sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g=="], + "happy-dom": ["happy-dom@20.10.6", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-6QD0ilzDDt93tX44y8tbmZdAcdTRYDhUP+Asgi6pC8Pp5IA3cvaZGyoVN/EGtlq9ziT65iPuBBn3ASLr6hCgVw=="], "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], @@ -628,7 +636,7 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], "highlight.js": ["highlight.js@11.11.1", "", {}, "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w=="], @@ -650,9 +658,9 @@ "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], - "http-proxy-middleware": ["http-proxy-middleware@2.0.9", "", { "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "peerDependencies": { "@types/express": "^4.17.13" }, "optionalPeers": ["@types/express"] }, "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q=="], + "http-proxy-middleware": ["http-proxy-middleware@2.0.10", "", { "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "peerDependencies": { "@types/express": "^4.17.13" }, "optionalPeers": ["@types/express"] }, "sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ=="], - "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], "hyperdyperid": ["hyperdyperid@1.2.0", "", {}, "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A=="], @@ -662,21 +670,19 @@ "image2uri": ["image2uri@2.1.2", "", { "dependencies": { "node-fetch": "^3.3.1" } }, "sha512-3b2zRma8I3zulb4OCkZruRw1VsnysT9phBzOJj+x3lPkwybJtNa5Sz6Dw8jSQI6OL7Ns4H5h8Y26EJbwq4GhQQ=="], - "immutable": ["immutable@5.1.4", "", {}, "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA=="], + "immutable": ["immutable@5.1.9", "", {}, "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], - "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "ini": ["ini@5.0.0", "", {}, "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw=="], - "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], + "ip-address": ["ip-address@10.2.0", "", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="], - "ipaddr.js": ["ipaddr.js@2.3.0", "", {}, "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg=="], + "ipaddr.js": ["ipaddr.js@2.4.0", "", {}, "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ=="], "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], @@ -692,57 +698,55 @@ "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], - "is-lambda": ["is-lambda@1.0.1", "", {}, "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="], - - "is-network-error": ["is-network-error@1.3.0", "", {}, "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw=="], + "is-network-error": ["is-network-error@1.3.2", "", {}, "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA=="], "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], "is-plain-obj": ["is-plain-obj@3.0.0", "", {}, "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="], - "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - "isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + "isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], - "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], + "jackspeak": ["jackspeak@4.2.3", "", { "dependencies": { "@isaacs/cliui": "^9.0.0" } }, "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg=="], - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], - "jotai": ["jotai@2.16.0", "", { "peerDependencies": { "@babel/core": ">=7.0.0", "@babel/template": ">=7.0.0", "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@babel/core", "@babel/template", "@types/react", "react"] }, "sha512-NmkwPBet0SHQ28GBfEb10sqnbVOYyn6DL4iazZgGRDUKxSWL0iqcm+IK4TqTSFC2ixGk+XX2e46Wbv364a3cKg=="], + "jotai": ["jotai@2.20.1", "", { "peerDependencies": { "@babel/core": ">=7.0.0", "@babel/template": ">=7.0.0", "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@babel/core", "@babel/template", "@types/react", "react"] }, "sha512-dnuKfU/GLi8B28RRMjQ3AfoN7kfzP8o41+AX2FmITZqEMY8PHnjABq+VkEooomLwYaGjda+pgy0yFSjaHX/ZPg=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "jsonc-eslint-parser": ["jsonc-eslint-parser@2.4.2", "", { "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", "espree": "^9.0.0", "semver": "^7.3.5" } }, "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA=="], - "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], - "launch-editor": ["launch-editor@2.12.0", "", { "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" } }, "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg=="], + "launch-editor": ["launch-editor@2.14.1", "", { "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.4" } }, "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], - "lodash-es": ["lodash-es@4.17.22", "", {}, "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q=="], + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + "lru-cache": ["lru-cache@11.5.1", "", {}, "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A=="], "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], - "make-fetch-happen": ["make-fetch-happen@13.0.1", "", { "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" } }, "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA=="], + "make-fetch-happen": ["make-fetch-happen@14.0.3", "", { "dependencies": { "@npmcli/agent": "^3.0.0", "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^5.0.0", "promise-retry": "^2.0.1", "ssri": "^12.0.0" } }, "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ=="], "marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="], - "marked-base-url": ["marked-base-url@1.1.8", "", { "peerDependencies": { "marked": ">= 4 < 18" } }, "sha512-RA80m/VTq82jAnpusyK7B4M45TZ3LMB1ymrdAJI3oaSG4+8MzBc8FFlVKIAhkBrfRM7CxeTHTGUVVK59/eiQyA=="], + "marked-base-url": ["marked-base-url@1.1.9", "", { "peerDependencies": { "marked": ">= 4 < 19" } }, "sha512-TqSI1Wni8aaIMwEe6YFv6uMBnNR1KICzLCEho29fmBrnb0RDvn+/nAU8BiWjpky/C/9zNG+L6TuOrfJBaajs3A=="], - "marked-smartypants": ["marked-smartypants@1.1.11", "", { "dependencies": { "smartypants": "^0.2.2" }, "peerDependencies": { "marked": ">=4 <18" } }, "sha512-Jt0eq/6rf9oXDfEKPzQ0z7UzVWcEAK3L6QBBQzbwV8bT304OvPVLTqpH3yvkSung9foOM4s120TMHEHP76Metg=="], + "marked-smartypants": ["marked-smartypants@1.1.12", "", { "dependencies": { "smartypants": "^0.2.2" }, "peerDependencies": { "marked": ">=4 <19" } }, "sha512-Z0QL2GpihbSeG5aaCrQxMEoqvngMftF/gq1SrdlCnbecUSrX3HYgPtCZzCW+OyNe2ideQqaFdxfGryqQX1MBDA=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], @@ -750,7 +754,7 @@ "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], - "memfs": ["memfs@4.51.1", "", { "dependencies": { "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", "thingies": "^2.5.0", "tree-dump": "^1.0.3", "tslib": "^2.0.0" } }, "sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ=="], + "memfs": ["memfs@4.58.0", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.58.0", "@jsonjoy.com/fs-fsa": "4.58.0", "@jsonjoy.com/fs-node": "4.58.0", "@jsonjoy.com/fs-node-builtins": "4.58.0", "@jsonjoy.com/fs-node-to-fsa": "4.58.0", "@jsonjoy.com/fs-node-utils": "4.58.0", "@jsonjoy.com/fs-print": "4.58.0", "@jsonjoy.com/fs-snapshot": "4.58.0", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", "thingies": "^2.5.0", "tree-dump": "^1.0.3", "tslib": "^2.0.0" } }, "sha512-0n6CDBqIT/eGrbWdDVNkLjasjupnEpOFjFOtXrS5p6EYYXGXBn5ZIMLetBlVdQYpP0hGK2MEOgYAC0/+NOr91w=="], "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], @@ -768,23 +772,21 @@ "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], "minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="], - "minipass-fetch": ["minipass-fetch@3.0.5", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg=="], + "minipass-fetch": ["minipass-fetch@4.0.1", "", { "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^3.0.1" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ=="], - "minipass-flush": ["minipass-flush@1.0.5", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="], + "minipass-flush": ["minipass-flush@1.0.7", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA=="], "minipass-pipeline": ["minipass-pipeline@1.2.4", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="], "minipass-sized": ["minipass-sized@1.0.3", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="], - "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], - - "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], + "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], @@ -794,9 +796,9 @@ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - "nan": ["nan@2.24.0", "", {}, "sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg=="], + "nan": ["nan@2.28.0", "", {}, "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "nanoid": ["nanoid@3.3.15", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA=="], "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], @@ -808,11 +810,11 @@ "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], - "node-forge": ["node-forge@1.3.3", "", {}, "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg=="], + "node-forge": ["node-forge@1.4.0", "", {}, "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ=="], - "node-gyp": ["node-gyp@10.3.1", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", "proc-log": "^4.1.0", "semver": "^7.3.5", "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ=="], + "node-gyp": ["node-gyp@11.5.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^14.0.3", "nopt": "^8.0.0", "proc-log": "^5.0.0", "semver": "^7.3.5", "tar": "^7.4.3", "tinyglobby": "^0.2.12", "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ=="], - "nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="], + "nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="], "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], @@ -836,7 +838,7 @@ "opener": ["opener@1.5.2", "", { "bin": { "opener": "bin/opener-bin.js" } }, "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="], - "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], + "p-map": ["p-map@7.0.5", "", {}, "sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA=="], "p-retry": ["p-retry@6.2.1", "", { "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", "retry": "^0.13.1" } }, "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ=="], @@ -856,17 +858,17 @@ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="], - "path-to-regexp": ["path-to-regexp@0.1.12", "", {}, "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="], + "path-to-regexp": ["path-to-regexp@0.1.13", "", {}, "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "postcss": ["postcss@8.5.16", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg=="], "postcss-modules-extract-imports": ["postcss-modules-extract-imports@3.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q=="], @@ -876,13 +878,13 @@ "postcss-modules-values": ["postcss-modules-values@4.0.0", "", { "dependencies": { "icss-utils": "^5.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="], - "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], + "postcss-selector-parser": ["postcss-selector-parser@7.1.4", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], - "proc-log": ["proc-log@4.2.0", "", {}, "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA=="], + "proc-log": ["proc-log@5.0.0", "", {}, "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ=="], "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], @@ -890,19 +892,19 @@ "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], - "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], - "qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], + "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="], "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], + "react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], "react-base16-styling": ["react-base16-styling@0.10.0", "", { "dependencies": { "@types/lodash": "^4.17.0", "color": "^4.2.3", "csstype": "^3.1.3", "lodash-es": "^4.17.21" } }, "sha512-H1k2eFB6M45OaiRru3PBXkuCcn2qNmx+gzLb4a9IPMR7tMH8oBRXU5jGbPDYG1Hz+82d88ED0vjR8BmqU3pQdg=="], - "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], + "react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], "react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], @@ -928,49 +930,49 @@ "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - "sass": ["sass@1.97.1", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A=="], + "sass": ["sass@1.100.0", "", { "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ=="], - "sass-embedded": ["sass-embedded@1.97.1", "", { "dependencies": { "@bufbuild/protobuf": "^2.5.0", "buffer-builder": "^0.2.0", "colorjs.io": "^0.5.0", "immutable": "^5.0.2", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" }, "optionalDependencies": { "sass-embedded-all-unknown": "1.97.1", "sass-embedded-android-arm": "1.97.1", "sass-embedded-android-arm64": "1.97.1", "sass-embedded-android-riscv64": "1.97.1", "sass-embedded-android-x64": "1.97.1", "sass-embedded-darwin-arm64": "1.97.1", "sass-embedded-darwin-x64": "1.97.1", "sass-embedded-linux-arm": "1.97.1", "sass-embedded-linux-arm64": "1.97.1", "sass-embedded-linux-musl-arm": "1.97.1", "sass-embedded-linux-musl-arm64": "1.97.1", "sass-embedded-linux-musl-riscv64": "1.97.1", "sass-embedded-linux-musl-x64": "1.97.1", "sass-embedded-linux-riscv64": "1.97.1", "sass-embedded-linux-x64": "1.97.1", "sass-embedded-unknown-all": "1.97.1", "sass-embedded-win32-arm64": "1.97.1", "sass-embedded-win32-x64": "1.97.1" }, "bin": { "sass": "dist/bin/sass.js" } }, "sha512-wH3CbOThHYGX0bUyqFf7laLKyhVWIFc2lHynitkqMIUCtX2ixH9mQh0bN7+hkUu5BFt/SXvEMjFbkEbBMpQiSQ=="], + "sass-embedded": ["sass-embedded@1.100.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.5.0", "colorjs.io": "^0.5.0", "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" }, "optionalDependencies": { "sass-embedded-all-unknown": "1.100.0", "sass-embedded-android-arm": "1.100.0", "sass-embedded-android-arm64": "1.100.0", "sass-embedded-android-riscv64": "1.100.0", "sass-embedded-android-x64": "1.100.0", "sass-embedded-darwin-arm64": "1.100.0", "sass-embedded-darwin-x64": "1.100.0", "sass-embedded-linux-arm": "1.100.0", "sass-embedded-linux-arm64": "1.100.0", "sass-embedded-linux-musl-arm": "1.100.0", "sass-embedded-linux-musl-arm64": "1.100.0", "sass-embedded-linux-musl-riscv64": "1.100.0", "sass-embedded-linux-musl-x64": "1.100.0", "sass-embedded-linux-riscv64": "1.100.0", "sass-embedded-linux-x64": "1.100.0", "sass-embedded-unknown-all": "1.100.0", "sass-embedded-win32-arm64": "1.100.0", "sass-embedded-win32-x64": "1.100.0" }, "bin": { "sass": "dist/bin/sass.js" } }, "sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw=="], - "sass-embedded-all-unknown": ["sass-embedded-all-unknown@1.97.1", "", { "dependencies": { "sass": "1.97.1" }, "cpu": [ "!arm", "!x64", "!arm64", ] }, "sha512-0au5gUNibfob7W/g+ycBx74O22CL8vwHiZdEDY6J0uzMkHPiSJk//h0iRf5AUnMArFHJjFd3urIiQIaoRKYa1Q=="], + "sass-embedded-all-unknown": ["sass-embedded-all-unknown@1.100.0", "", { "dependencies": { "sass": "1.100.0" }, "cpu": [ "!arm", "!x64", "!arm64", ] }, "sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q=="], - "sass-embedded-android-arm": ["sass-embedded-android-arm@1.97.1", "", { "os": "android", "cpu": "arm" }, "sha512-B5dlv4utJ+yC8ZpBeWTHwSZPVKRlqA8pcaD0FAzeNm/DelIFgQUQtt0UwgYoAI6wDIiie5uSVpMK9l2DaCbiBQ=="], + "sass-embedded-android-arm": ["sass-embedded-android-arm@1.100.0", "", { "os": "android", "cpu": "arm" }, "sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw=="], - "sass-embedded-android-arm64": ["sass-embedded-android-arm64@1.97.1", "", { "os": "android", "cpu": "arm64" }, "sha512-h62DmOiS2Jn87s8+8GhJcMerJnTKa1IsIa9iIKjLiqbAvBDKCGUs027RugZkM+Zx7I+vhPq86PUXBYZ9EkRxdw=="], + "sass-embedded-android-arm64": ["sass-embedded-android-arm64@1.100.0", "", { "os": "android", "cpu": "arm64" }, "sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA=="], - "sass-embedded-android-riscv64": ["sass-embedded-android-riscv64@1.97.1", "", { "os": "android", "cpu": "none" }, "sha512-tGup88vgaXPnUHEgDMujrt5rfYadvkiVjRb/45FJTx2hQFoGVbmUXz5XqUFjIIbEjQ3kAJqp86A2jy11s43UiQ=="], + "sass-embedded-android-riscv64": ["sass-embedded-android-riscv64@1.100.0", "", { "os": "android", "cpu": "none" }, "sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg=="], - "sass-embedded-android-x64": ["sass-embedded-android-x64@1.97.1", "", { "os": "android", "cpu": "x64" }, "sha512-CAzKjjzu90LZduye2O9+UGX1oScMyF5/RVOa5CxACKALeIS+3XL3LVdV47kwKPoBv5B1aFUvGLscY0CR7jBAbg=="], + "sass-embedded-android-x64": ["sass-embedded-android-x64@1.100.0", "", { "os": "android", "cpu": "x64" }, "sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA=="], - "sass-embedded-darwin-arm64": ["sass-embedded-darwin-arm64@1.97.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tyDzspzh5PbqdAFGtVKUXuf0up6Lff3c1U8J7+4Y7jW6AWRBnq95vTzIIxfnNifGCTI2fW5e7GAZpYygKpNwcw=="], + "sass-embedded-darwin-arm64": ["sass-embedded-darwin-arm64@1.100.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA=="], - "sass-embedded-darwin-x64": ["sass-embedded-darwin-x64@1.97.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-FMrRuSPI2ICt2M2SYaLbiG4yxn86D6ae+XtrRdrrBMhWprAcB7Iyu67bgRzZkipMZNIKKeTR7EUvJHgZzi5ixQ=="], + "sass-embedded-darwin-x64": ["sass-embedded-darwin-x64@1.100.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg=="], - "sass-embedded-linux-arm": ["sass-embedded-linux-arm@1.97.1", "", { "os": "linux", "cpu": "arm" }, "sha512-48VxaTUApLyx1NXFdZhKqI/7FYLmz8Ju3Ki2V/p+mhn5raHgAiYeFgn8O1WGxTOh+hBb9y3FdSR5a8MNTbmKMQ=="], + "sass-embedded-linux-arm": ["sass-embedded-linux-arm@1.100.0", "", { "os": "linux", "cpu": "arm" }, "sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw=="], - "sass-embedded-linux-arm64": ["sass-embedded-linux-arm64@1.97.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-im80gfDWRivw9Su3r3YaZmJaCATcJgu3CsCSLodPk1b1R2+X/E12zEQayvrl05EGT9PDwTtuiqKgS4ND4xjwVg=="], + "sass-embedded-linux-arm64": ["sass-embedded-linux-arm64@1.100.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ=="], - "sass-embedded-linux-musl-arm": ["sass-embedded-linux-musl-arm@1.97.1", "", { "os": "linux", "cpu": "arm" }, "sha512-FUFs466t3PVViVOKY/60JgLLtl61Pf7OW+g5BeEfuqVcSvYUECVHeiYHtX1fT78PEVa0h9tHpM6XpWti+7WYFA=="], + "sass-embedded-linux-musl-arm": ["sass-embedded-linux-musl-arm@1.100.0", "", { "os": "linux", "cpu": "arm" }, "sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw=="], - "sass-embedded-linux-musl-arm64": ["sass-embedded-linux-musl-arm64@1.97.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-kD35WSD9o0279Ptwid3Jnbovo1FYnuG2mayYk9z4ZI4mweXEK6vTu+tlvCE/MdF/zFKSj11qaxaH+uzXe2cO5A=="], + "sass-embedded-linux-musl-arm64": ["sass-embedded-linux-musl-arm64@1.100.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg=="], - "sass-embedded-linux-musl-riscv64": ["sass-embedded-linux-musl-riscv64@1.97.1", "", { "os": "linux", "cpu": "none" }, "sha512-ZgpYps5YHuhA2+KiLkPukRbS5298QObgUhPll/gm5i0LOZleKCwrFELpVPcbhsSBuxqji2uaag5OL+n3JRBVVg=="], + "sass-embedded-linux-musl-riscv64": ["sass-embedded-linux-musl-riscv64@1.100.0", "", { "os": "linux", "cpu": "none" }, "sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ=="], - "sass-embedded-linux-musl-x64": ["sass-embedded-linux-musl-x64@1.97.1", "", { "os": "linux", "cpu": "x64" }, "sha512-wcAigOyyvZ6o1zVypWV7QLZqpOEVnlBqJr9MbpnRIm74qFTSbAEmShoh8yMXBymzuVSmEbThxAwW01/TLf62tA=="], + "sass-embedded-linux-musl-x64": ["sass-embedded-linux-musl-x64@1.100.0", "", { "os": "linux", "cpu": "x64" }, "sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA=="], - "sass-embedded-linux-riscv64": ["sass-embedded-linux-riscv64@1.97.1", "", { "os": "linux", "cpu": "none" }, "sha512-9j1qE1ZrLMuGb+LUmBzw93Z4TNfqlRkkxjPVZy6u5vIggeSfvGbte7eRoYBNWX6SFew/yBCL90KXIirWFSGrlQ=="], + "sass-embedded-linux-riscv64": ["sass-embedded-linux-riscv64@1.100.0", "", { "os": "linux", "cpu": "none" }, "sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ=="], - "sass-embedded-linux-x64": ["sass-embedded-linux-x64@1.97.1", "", { "os": "linux", "cpu": "x64" }, "sha512-7nrLFYMH/UgvEgXR5JxQJ6y9N4IJmnFnYoDxN0nw0jUp+CQWQL4EJ4RqAKTGelneueRbccvt2sEyPK+X0KJ9Jg=="], + "sass-embedded-linux-x64": ["sass-embedded-linux-x64@1.100.0", "", { "os": "linux", "cpu": "x64" }, "sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA=="], - "sass-embedded-unknown-all": ["sass-embedded-unknown-all@1.97.1", "", { "dependencies": { "sass": "1.97.1" }, "os": [ "!linux", "!win32", "!darwin", "!android", ] }, "sha512-oPSeKc7vS2dx3ZJHiUhHKcyqNq0GWzAiR8zMVpPd/kVMl5ZfVyw+5HTCxxWDBGkX02lNpou27JkeBPCaneYGAQ=="], + "sass-embedded-unknown-all": ["sass-embedded-unknown-all@1.100.0", "", { "dependencies": { "sass": "1.100.0" }, "os": [ "!linux", "!win32", "!darwin", "!android", ] }, "sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A=="], - "sass-embedded-win32-arm64": ["sass-embedded-win32-arm64@1.97.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-L5j7J6CbZgHGwcfVedMVpM3z5MYeighcyZE8GF2DVmjWzZI3JtPKNY11wNTD/P9o1Uql10YPOKhGH0iWIXOT7Q=="], + "sass-embedded-win32-arm64": ["sass-embedded-win32-arm64@1.100.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg=="], - "sass-embedded-win32-x64": ["sass-embedded-win32-x64@1.97.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rfaZAKXU8cW3E7gvdafyD6YtgbEcsDeT99OEiHXRT0UGFuXT8qCOjpAwIKaOA3XXr2d8S42xx6cXcaZ1a+1fgw=="], + "sass-embedded-win32-x64": ["sass-embedded-win32-x64@1.100.0", "", { "os": "win32", "cpu": "x64" }, "sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw=="], - "sass-loader": ["sass-loader@16.0.6", "", { "dependencies": { "neo-async": "^2.6.2" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "node-sass", "sass", "sass-embedded", "webpack"] }, "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA=="], + "sass-loader": ["sass-loader@16.0.8", "", { "dependencies": { "neo-async": "^2.6.2" }, "peerDependencies": { "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "node-sass", "sass", "sass-embedded", "webpack"] }, "sha512-hcov4ZwZJIGbEuyNr9EmiTmZueyrxSToE6GOzoZnq5JM7ecRO7ttyvilPn+VmRsqiP16+VYZzVnGZj/hzZgKBA=="], - "sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="], + "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -980,11 +982,11 @@ "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], - "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], - "serve-index": ["serve-index@1.9.1", "", { "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" } }, "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw=="], + "serve-index": ["serve-index@1.9.2", "", { "dependencies": { "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", "http-errors": "~1.8.0", "mime-types": "~2.1.35", "parseurl": "~1.3.3" } }, "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ=="], "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], @@ -994,11 +996,11 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + "shell-quote": ["shell-quote@1.9.0", "", {}, "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], @@ -1016,7 +1018,7 @@ "sockjs": ["sockjs@0.3.24", "", { "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" } }, "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ=="], - "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], + "socks": ["socks@2.8.9", "", { "dependencies": { "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" } }, "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw=="], "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], @@ -1030,7 +1032,7 @@ "spdy-transport": ["spdy-transport@3.0.0", "", { "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" } }, "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="], - "ssri": ["ssri@10.0.6", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ=="], + "ssri": ["ssri@12.0.0", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ=="], "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], @@ -1052,31 +1054,31 @@ "svg-pathdata": ["svg-pathdata@7.2.0", "", {}, "sha512-qd+AxqMpfRrRQaWb2SrNFvn69cvl6piqY8TxhYl2Li1g4/LO5F9NJb5wI4vNwRryqgSgD43gYKLm/w3ag1bKvQ=="], - "svg2ttf": ["svg2ttf@6.0.3", "", { "dependencies": { "@xmldom/xmldom": "^0.7.2", "argparse": "^2.0.1", "cubic2quad": "^1.2.1", "lodash": "^4.17.10", "microbuffer": "^1.0.0", "svgpath": "^2.1.5" }, "bin": { "svg2ttf": "svg2ttf.js" } }, "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ=="], + "svg2ttf": ["svg2ttf@6.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.9.10", "argparse": "^2.0.1", "cubic2quad": "^1.2.1", "lodash": "^4.17.10", "microbuffer": "^1.0.0", "svgpath": "^2.1.5" }, "bin": { "svg2ttf": "svg2ttf.js" } }, "sha512-EjxgcmhKcBpx/3fR1hPwVtJAbUc/ZsDpwOTF74SI3PbzCg4pDHnxVmoSuqgEqxVJGqqkSCI6+82cucpn2D5aOw=="], "svgicons2svgfont": ["svgicons2svgfont@15.0.1", "", { "dependencies": { "@types/sax": "^1.2.7", "commander": "^12.1.0", "debug": "^4.3.6", "glob": "^11.0.0", "sax": "^1.4.1", "svg-pathdata": "^7.0.0", "transformation-matrix": "^3.0.0", "yerror": "^8.0.0" }, "bin": { "svgicons2svgfont": "bin/svgicons2svgfont.js" } }, "sha512-rE3BoIipD6DxBejPswalKRZZYA+7sy4miHqiHgXB0zI1xJD3gSCVrXh2R6Sdh9E4XDTxYp7gDxGW2W8DIBif/g=="], - "svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], + "svgo": ["svgo@3.3.3", "", { "dependencies": { "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0", "sax": "^1.5.0" }, "bin": "./bin/svgo" }, "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng=="], "svgpath": ["svgpath@2.6.0", "", {}, "sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg=="], - "svgtofont": ["svgtofont@6.5.0", "", { "dependencies": { "auto-config-loader": "^2.0.0", "cheerio": "~1.0.0", "colors-cli": "~1.0.28", "fs-extra": "~11.2.0", "image2uri": "^2.1.2", "nunjucks": "^3.2.4", "svg2ttf": "~6.0.3", "svgicons2svgfont": "~15.0.0", "svgo": "~3.3.0", "ttf2eot": "~3.1.0", "ttf2woff": "~3.0.0", "ttf2woff2": "~6.0.0", "yargs": "^17.7.2" }, "peerDependencies": { "@types/svg2ttf": "~5.0.1" }, "optionalPeers": ["@types/svg2ttf"], "bin": { "svgtofont": "lib/cli.js" } }, "sha512-YLtTgSGBERdG0MhXAAIKvG/qjexpqoAw0GUAF1CLreDMI5zkPcRUPji1eNfk4ht5Ffgtm5QIDL7r6z2f+A5GFw=="], + "svgtofont": ["svgtofont@6.5.3", "", { "dependencies": { "auto-config-loader": "^2.0.0", "cheerio": "~1.0.0", "colors-cli": "~1.0.28", "fs-extra": "~11.2.0", "image2uri": "^2.1.2", "nunjucks": "^3.2.4", "svg2ttf": "~6.1.0", "svgicons2svgfont": "~15.0.0", "svgo": "~3.3.0", "ttf2eot": "~3.1.0", "ttf2woff": "~3.0.0", "ttf2woff2": "~8.0.0", "yargs": "^17.7.2" }, "peerDependencies": { "@types/svg2ttf": "~5.0.1" }, "optionalPeers": ["@types/svg2ttf"], "bin": { "svgtofont": "lib/cli.js" } }, "sha512-koKMwoA+olMx7qY2LzdVF1+5/y0c1Tu1iZinTCClF4c5UVrSpExayMoyHqLB/58aTe5EUuE6htg5S2Y/MN4Azw=="], "sync-child-process": ["sync-child-process@1.0.2", "", { "dependencies": { "sync-message-port": "^1.0.0" } }, "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA=="], - "sync-message-port": ["sync-message-port@1.1.3", "", {}, "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg=="], + "sync-message-port": ["sync-message-port@1.2.0", "", {}, "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg=="], - "tabbable": ["tabbable@6.3.0", "", {}, "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ=="], + "tabbable": ["tabbable@6.5.0", "", {}, "sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA=="], - "tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="], + "tar": ["tar@7.5.19", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw=="], - "terser": ["terser@5.44.1", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw=="], + "terser": ["terser@5.48.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q=="], "tgfont": ["tgfont@workspace:packages/tgfont"], "tgui": ["tgui@workspace:packages/tgui"], - "tgui-core": ["tgui-core@5.10.0", "", { "dependencies": { "@floating-ui/react": "^0.27.16", "@nozbe/microfuzz": "^1.0.0" }, "peerDependencies": { "react": "^19.1.0", "react-dom": "^19.1.0" } }, "sha512-sbw2zSdJM55M333CHP2HALoEh3LBF07HNPDEXIwPDTGu0TKEaBMvkRnQlLN81A5s9cLjS4DCIvYTTE1qUQENeQ=="], + "tgui-core": ["tgui-core@6.1.1", "", { "dependencies": { "@floating-ui/react": "^0.27.16", "@nozbe/microfuzz": "^1.0.0" }, "peerDependencies": { "react": "^19.1.0", "react-dom": "^19.1.0" } }, "sha512-RiINJPsKLvaC4qkKtPdwoe9t08bTuUW8bpHDEIv3P6eZYJZfNSJwPy/hvdiVSeBA1V4ZtDTd+XADWsUzUVlMZA=="], "tgui-dev-server": ["tgui-dev-server@workspace:packages/tgui-dev-server"], @@ -1090,11 +1092,11 @@ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], - "thingies": ["thingies@2.5.0", "", { "peerDependencies": { "tslib": "^2" } }, "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw=="], + "thingies": ["thingies@2.6.0", "", { "peerDependencies": { "tslib": "^2" } }, "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg=="], "thunky": ["thunky@1.1.0", "", {}, "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="], - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], @@ -1116,7 +1118,7 @@ "ttf2woff": ["ttf2woff@3.0.0", "", { "dependencies": { "argparse": "^2.0.1", "pako": "^1.0.0" }, "bin": { "ttf2woff": "ttf2woff.js" } }, "sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg=="], - "ttf2woff2": ["ttf2woff2@6.0.1", "", { "dependencies": { "bindings": "^1.5.0", "bufferstreams": "^4.0.0", "debug": "^4.3.5", "nan": "^2.20.0", "node-gyp": "^10.2.0", "yerror": "^8.0.0" }, "bin": { "ttf2woff2": "bin/ttf2woff2.js" } }, "sha512-QVkHvd4VsJ9cZNnzrfJL4Fhl5tyGkO5ih9PRY3DQ2BicKjyA+92I+00H2p06mBw1d0eCtzSQh5bp7NTUA57trg=="], + "ttf2woff2": ["ttf2woff2@8.0.1", "", { "dependencies": { "bindings": "^1.5.0", "bufferstreams": "^4.0.0", "debug": "^4.4.1", "nan": "^2.22.2", "node-gyp": "^11.2.0", "yerror": "^8.0.0" }, "bin": { "ttf2woff2": "bin/ttf2woff2.js" } }, "sha512-nWSZLaXOgYtvgY6G0SFI8dVHsGWIchlnNMNRglT3Amp2WGy0GSPd9kLAkFd+HvEOzZ/aY6EUrpOF66QaPbipgg=="], "type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], @@ -1124,13 +1126,13 @@ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "undici": ["undici@6.22.0", "", {}, "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw=="], + "undici": ["undici@6.27.0", "", {}, "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg=="], - "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], - "unique-filename": ["unique-filename@3.0.0", "", { "dependencies": { "unique-slug": "^4.0.0" } }, "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="], + "unique-filename": ["unique-filename@4.0.0", "", { "dependencies": { "unique-slug": "^5.0.0" } }, "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ=="], - "unique-slug": ["unique-slug@4.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="], + "unique-slug": ["unique-slug@5.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg=="], "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], @@ -1156,7 +1158,7 @@ "webpack-dev-server": ["webpack-dev-server@5.2.2", "", { "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", "@types/express": "^4.17.21", "@types/express-serve-static-core": "^4.17.21", "@types/serve-index": "^1.9.4", "@types/serve-static": "^1.15.5", "@types/sockjs": "^0.3.36", "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.2.1", "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "express": "^4.21.2", "graceful-fs": "^4.2.6", "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", "launch-editor": "^2.6.1", "open": "^10.0.3", "p-retry": "^6.2.0", "schema-utils": "^4.2.0", "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^7.4.2", "ws": "^8.18.0" }, "peerDependencies": { "webpack": "^5.0.0" }, "optionalPeers": ["webpack"], "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" } }, "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg=="], - "websocket-driver": ["websocket-driver@0.7.4", "", { "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg=="], + "websocket-driver": ["websocket-driver@0.7.5", "", { "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA=="], "websocket-extensions": ["websocket-extensions@0.1.4", "", {}, "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="], @@ -1164,7 +1166,7 @@ "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], - "which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], + "which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -1172,70 +1174,50 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], "yaml-eslint-parser": ["yaml-eslint-parser@1.3.2", "", { "dependencies": { "eslint-visitor-keys": "^3.0.0", "yaml": "^2.0.0" } }, "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg=="], - "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + "yargs": ["yargs@17.7.3", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g=="], "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "yerror": ["yerror@8.0.0", "", {}, "sha512-FemWD5/UqNm8ffj8oZIbjWXIF2KE0mZssggYpdaQkWDDgXBQ/35PNIxEuz6/YLn9o0kOxDBNJe8x8k9ljD7k/g=="], - "zod": ["zod@4.2.1", "", {}, "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw=="], - - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - - "@npmcli/agent/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - - "@types/body-parser/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@types/bonjour/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack": ["@jsonjoy.com/json-pack@17.67.0", "", { "dependencies": { "@jsonjoy.com/base64": "17.67.0", "@jsonjoy.com/buffers": "17.67.0", "@jsonjoy.com/codegen": "17.67.0", "@jsonjoy.com/json-pointer": "17.67.0", "@jsonjoy.com/util": "17.67.0", "hyperdyperid": "^1.2.0", "thingies": "^2.5.0", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w=="], - "@types/connect/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/util": ["@jsonjoy.com/util@17.67.0", "", { "dependencies": { "@jsonjoy.com/buffers": "17.67.0", "@jsonjoy.com/codegen": "17.67.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew=="], - "@types/connect-history-api-fallback/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@jsonjoy.com/json-pack/@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@1.2.1", "", { "peerDependencies": { "tslib": "2" } }, "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA=="], - "@types/express-serve-static-core/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@jsonjoy.com/util/@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@1.2.1", "", { "peerDependencies": { "tslib": "2" } }, "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA=="], - "@types/http-proxy/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@npmcli/agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - "@types/node-forge/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@npmcli/agent/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - "@types/sax/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], - - "@types/send/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@npmcli/agent/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "@types/serve-static/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + "@parcel/watcher/picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], "@types/serve-static/@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="], - "@types/sockjs/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], - - "@types/ws/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], - "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "body-parser/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - "bun-types/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], - - "cacache/fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], - "cacache/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], "cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], @@ -1252,24 +1234,26 @@ "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - "hpack.js/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "htmlparser2/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "http-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "make-fetch-happen/negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - - "node-gyp/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], - "nunjucks/commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], @@ -1280,15 +1264,15 @@ "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - "react-base16-styling/csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], - - "sass/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "sass/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "serve-index/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "serve-index/http-errors": ["http-errors@1.6.3", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": ">= 1.4.0 < 2" } }, "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A=="], + "serve-index/http-errors": ["http-errors@1.8.1", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.1" } }, "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g=="], + + "socks-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -1298,13 +1282,11 @@ "svgicons2svgfont/glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], - "tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], - "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "tinyglobby/picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], - "webpack-bundle-analyzer/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], + "webpack-bundle-analyzer/ws": ["ws@7.5.11", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA=="], "webpack-dev-middleware/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], @@ -1312,43 +1294,19 @@ "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - - "@types/body-parser/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/bonjour/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/connect-history-api-fallback/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/connect/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/base64": ["@jsonjoy.com/base64@17.67.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw=="], - "@types/express-serve-static-core/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@17.67.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q=="], - "@types/http-proxy/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/json-pointer": ["@jsonjoy.com/json-pointer@17.67.0", "", { "dependencies": { "@jsonjoy.com/util": "17.67.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA=="], - "@types/node-forge/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/sax/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/send/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/serve-static/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/sockjs/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "@types/ws/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/util/@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@17.67.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q=="], "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "bun-types/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - "cacache/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "cacache/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "cacache/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], "cacache/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], @@ -1366,13 +1324,13 @@ "hpack.js/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "node-gyp/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + "minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "node-gyp/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "minipass-pipeline/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "node-gyp/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + "minipass-sized/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "sass/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "sass/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], @@ -1380,20 +1338,30 @@ "serve-index/http-errors/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="], - "serve-index/http-errors/inherits": ["inherits@2.0.3", "", {}, "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="], - - "serve-index/http-errors/setprototypeof": ["setprototypeof@1.1.0", "", {}, "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="], - "serve-index/http-errors/statuses": ["statuses@1.5.0", "", {}, "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="], - "svgicons2svgfont/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "svgicons2svgfont/glob/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], "webpack-dev-middleware/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "cacache/glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "cacache/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "cacache/glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + + "svgicons2svgfont/glob/minimatch/brace-expansion": ["brace-expansion@5.0.7", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA=="], + + "cacache/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "cacache/glob/jackspeak/@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + + "cacache/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "svgicons2svgfont/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + + "cacache/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "node-gyp/glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "cacache/glob/jackspeak/@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "node-gyp/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "cacache/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], } } diff --git a/tgui/packages/tgfont/package.json b/tgui/packages/tgfont/package.json index e98f7aa5b437..4799311a4d91 100644 --- a/tgui/packages/tgfont/package.json +++ b/tgui/packages/tgfont/package.json @@ -4,7 +4,7 @@ "type": "module", "version": "2.0.0", "scripts": { - "tgfont:build": "svgo icons && node svgtofont.mjs" + "tgfont:build": "svgo icons && bun svgtofont.ts" }, "dependencies": { "svgo": "^3.3.2", diff --git a/tgui/packages/tgfont/static/tgfont.css b/tgui/packages/tgfont/static/tgfont.css deleted file mode 100644 index 6bdf310a5025..000000000000 --- a/tgui/packages/tgfont/static/tgfont.css +++ /dev/null @@ -1,67 +0,0 @@ -@font-face { - font-family: "tgfont"; - src: url("tgfont.woff2?t=1747971548188") format("woff2"); -} - -[class^="tg-"], -[class*=" tg-"] { - /* biome-ignore lint/complexity/noImportantStyles: Just leave it */ - font-family: "tgfont" !important; - font-size: inherit; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -:root { - /* biome-ignore-start lint/suspicious/noUselessEscapeInString: The escapes are needed */ - --tg-air-tank-slash: "\ea01"; - --tg-air-tank: "\ea02"; - --tg-bad-touch: "\ea03"; - --tg-image-minus: "\ea04"; - --tg-image-plus: "\ea05"; - --tg-nanotrasen-logo: "\ea06"; - --tg-non-binary: "\ea07"; - --tg-prosthetic-full: "\ea08"; - --tg-prosthetic-leg: "\ea09"; - --tg-sound-minus: "\ea0a"; - --tg-sound-plus: "\ea0b"; - --tg-syndicate-logo: "\ea0c"; - /* biome-ignore-end lint/suspicious/noUselessEscapeInString: The escapes are needed */ -} -.tg-air-tank-slash::before { - content: var(--tg-air-tank-slash); -} -.tg-air-tank::before { - content: var(--tg-air-tank); -} -.tg-bad-touch::before { - content: var(--tg-bad-touch); -} -.tg-image-minus::before { - content: var(--tg-image-minus); -} -.tg-image-plus::before { - content: var(--tg-image-plus); -} -.tg-nanotrasen-logo::before { - content: var(--tg-nanotrasen-logo); -} -.tg-non-binary::before { - content: var(--tg-non-binary); -} -.tg-prosthetic-full::before { - content: var(--tg-prosthetic-full); -} -.tg-prosthetic-leg::before { - content: var(--tg-prosthetic-leg); -} -.tg-sound-minus::before { - content: var(--tg-sound-minus); -} -.tg-sound-plus::before { - content: var(--tg-sound-plus); -} -.tg-syndicate-logo::before { - content: var(--tg-syndicate-logo); -} diff --git a/tgui/packages/tgfont/static/tgfont.woff2 b/tgui/packages/tgfont/static/tgfont.woff2 deleted file mode 100644 index 2586080a0d9b..000000000000 Binary files a/tgui/packages/tgfont/static/tgfont.woff2 and /dev/null differ diff --git a/tgui/packages/tgfont/svgtofont.mjs b/tgui/packages/tgfont/svgtofont.ts similarity index 75% rename from tgui/packages/tgfont/svgtofont.mjs rename to tgui/packages/tgfont/svgtofont.ts index 6f5c5a3fb24b..add9e69e3422 100644 --- a/tgui/packages/tgfont/svgtofont.mjs +++ b/tgui/packages/tgfont/svgtofont.ts @@ -1,7 +1,6 @@ -import svgtofont from 'svgtofont'; +import svgtofont, { type SvgToFontOptions } from 'svgtofont'; -/** @type {import('svgtofont').SvgToFontOptions} */ -const config = { +const config: SvgToFontOptions = { classNamePrefix: 'tg', css: { include: /\.css$/, diff --git a/tgui/packages/tgui-panel/index.tsx b/tgui/packages/tgui-panel/index.tsx index 8ccc51fd16e1..c4d23c2d5eb2 100644 --- a/tgui/packages/tgui-panel/index.tsx +++ b/tgui/packages/tgui-panel/index.tsx @@ -14,6 +14,7 @@ import { setupHotReloading } from 'tgui-dev-server/link/client'; import { App } from './app'; import { bus } from './events/listeners'; import { setupPanelFocusHacks } from './panelFocus'; +import { wsSend } from './websocket/helpers'; const root = createRoot(document.getElementById('react-root')!); @@ -38,7 +39,10 @@ function setupApp() { render(); // Dispatch incoming messages as store actions - Byond.subscribe((type, payload) => bus.dispatch({ type, payload })); + Byond.subscribe((type, payload) => { + bus.dispatch({ type, payload }); + wsSend({ type, payload }); + }); // Unhide the panel Byond.winset('output_selector.legacy_output_selector', { diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index abc47fdd73b9..bda3dd156c69 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -9,7 +9,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^5.10.0", + "tgui-core": "^6.1.0", "tgui-dev-server": "workspace:*", "zod": "^4.2.1" }, diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.tsx b/tgui/packages/tgui-panel/settings/SettingsPanel.tsx index 1efcfe8facfa..7e8b62ab596a 100644 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.tsx +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.tsx @@ -9,6 +9,7 @@ import { ChatPageSettings } from '../chat/ChatPageSettings'; import { SETTINGS_TABS } from './constants'; import { SettingsGeneral } from './SettingsGeneral'; import { SettingsStatPanel } from './SettingsStatPanel'; +import { SettingsWebsocket } from './SettingsWebsocket'; import { TextHighlightSettings } from './TextHighlight'; import { useSettings } from './use-settings'; @@ -48,6 +49,7 @@ export function SettingsPanel(props) { {activeTab === 'chatPage' && } {activeTab === 'textHighlight' && } {activeTab === 'statPanel' && } + {activeTab === 'websocket' && } ); diff --git a/tgui/packages/tgui-panel/settings/SettingsWebsocket.tsx b/tgui/packages/tgui-panel/settings/SettingsWebsocket.tsx new file mode 100644 index 000000000000..4905b4b3f1d7 --- /dev/null +++ b/tgui/packages/tgui-panel/settings/SettingsWebsocket.tsx @@ -0,0 +1,94 @@ +import { + Button, + Input, + LabeledList, + Section, + Stack, +} from 'tgui-core/components'; +import { chatRenderer } from 'tgui-panel/chat/renderer'; +import { + wsDisconnect, + wsReconnect, + wsUpdate, +} from 'tgui-panel/websocket/helpers'; +import { useSettings } from './use-settings'; + +export function SettingsWebsocket(props) { + const { settings, updateSettings } = useSettings(); + const { statLinked, statFontSize, statTabsStyle } = settings; + + return ( +
+ + + + + { + const websocketEnabled = !settings.websocketEnabled; + updateSettings({ websocketEnabled }); + wsUpdate(websocketEnabled); + }} + > + Enabled + + + + + + + +
+ ); +} diff --git a/tgui/packages/tgui-panel/settings/atoms.ts b/tgui/packages/tgui-panel/settings/atoms.ts index 275d5b8f2fb3..dbf2bb652f08 100644 --- a/tgui/packages/tgui-panel/settings/atoms.ts +++ b/tgui/packages/tgui-panel/settings/atoms.ts @@ -17,6 +17,8 @@ export const defaultSettings: SettingsState = { visible: false, activeTab: SETTINGS_TABS[0].id, }, + websocketEnabled: false, + websocketServer: '', }; export const defaultHighlightSetting: HighlightSetting = { diff --git a/tgui/packages/tgui-panel/settings/constants.ts b/tgui/packages/tgui-panel/settings/constants.ts index 2e5056f785e7..3b7f4592b044 100644 --- a/tgui/packages/tgui-panel/settings/constants.ts +++ b/tgui/packages/tgui-panel/settings/constants.ts @@ -43,6 +43,10 @@ export const SETTINGS_TABS = [ id: 'statPanel', name: 'Stat Panel', }, + { + id: 'websocket', + name: 'Websocket', + }, ] as const; export const FONTS_DISABLED = 'Default'; diff --git a/tgui/packages/tgui-panel/settings/migration.ts b/tgui/packages/tgui-panel/settings/migration.ts index d90f89fcd44d..01318e0cb241 100644 --- a/tgui/packages/tgui-panel/settings/migration.ts +++ b/tgui/packages/tgui-panel/settings/migration.ts @@ -1,6 +1,7 @@ import { storage } from 'common/storage'; import { smoothMerge } from 'common/type-safety'; import { omit, pick } from 'es-toolkit'; +import { wsUpdate } from 'tgui-panel/websocket/helpers'; import { setMusicVolume } from '../audio/handlers'; import { chatRenderer } from '../chat/renderer'; import { store } from '../events/store'; @@ -111,6 +112,11 @@ export function startSettingsMigration(next: MergedSettings): void { store.set(settingsAtom, draftSettings); console.log('Migrated panel settings:', draftSettings); + if (draftSettings.websocketEnabled !== defaultSettings.websocketEnabled) { + // Ensure websocket state is correct after migration + wsUpdate(draftSettings.websocketEnabled); + } + const migratedHighlights = migrateHighlights(highlightPart); // Just exit if no valid version was found diff --git a/tgui/packages/tgui-panel/settings/types.ts b/tgui/packages/tgui-panel/settings/types.ts index f7284e41e241..d77dc93fa5ea 100644 --- a/tgui/packages/tgui-panel/settings/types.ts +++ b/tgui/packages/tgui-panel/settings/types.ts @@ -18,6 +18,8 @@ export const settingsSchema = z.object({ theme: z.string(), version: z.number(), view: viewSchema, + websocketEnabled: z.boolean(), + websocketServer: z.string(), }); export type HighlightSetting = { diff --git a/tgui/packages/tgui-panel/websocket/helpers.ts b/tgui/packages/tgui-panel/websocket/helpers.ts new file mode 100644 index 000000000000..cc1db416dff7 --- /dev/null +++ b/tgui/packages/tgui-panel/websocket/helpers.ts @@ -0,0 +1,190 @@ +import { createLogger } from 'tgui/logging'; +import { chatRenderer } from 'tgui-panel/chat/renderer'; +import { store } from 'tgui-panel/events/store'; +import { settingsAtom } from 'tgui-panel/settings/atoms'; + +const MAX_RETRIES = 10; +const RETRY_INTERVAL = 500; // ms + +// Websocket close codes +const WEBSOCKET_DISABLED = 4555; +const WEBSOCKET_REATTEMPT = 4556; +const SAFE_CLOSE_CODE = 1000; + +const logger = createLogger('websocket'); + +let websocket: WebSocket | null = null; +let reconnectTimer: number | null = null; +let retryCount = 0; +let manuallyClosed = false; + +function sendWSNotice(message, small = false) { + chatRenderer.processBatch([ + { + html: small + ? `${message}` + : `
${message}
`, + }, + ]); +} + +function clearReconnectTimer() { + if (reconnectTimer !== null) { + clearInterval(reconnectTimer); + reconnectTimer = null; + } +} + +function safeClose(code = SAFE_CLOSE_CODE, reason?: string) { + if (!websocket) return; + if ( + websocket.readyState === WebSocket.CLOSED || + websocket.readyState === WebSocket.CLOSING + ) { + return; + } + + websocket.close(code, reason); +} + +function startReconnectLoop() { + if (reconnectTimer !== null) return; + + reconnectTimer = window.setInterval(() => { + const { websocketEnabled } = store.get(settingsAtom); + + if (!websocketEnabled) { + clearReconnectTimer(); + return; + } + + if (retryCount >= MAX_RETRIES) { + clearReconnectTimer(); + sendWSNotice( + `Websocket failed to reconnect after ${MAX_RETRIES} attempts.`, + true, + ); + return; + } + + if ( + !websocket || + websocket.readyState === WebSocket.CLOSED || + websocket.readyState === WebSocket.CLOSING + ) { + retryCount++; + setupWebsocket(); + } + }, RETRY_INTERVAL); +} + +function setupWebsocket(force = false) { + const { websocketEnabled, websocketServer } = store.get(settingsAtom); + + if (!websocketEnabled) { + clearReconnectTimer(); + safeClose(WEBSOCKET_DISABLED); + websocket = null; + return; + } + + if (!force && websocket && websocket.readyState === WebSocket.OPEN) { + return; + } + + if (force) { + clearReconnectTimer(); + + if (websocket) { + manuallyClosed = true; + try { + websocket.close(WEBSOCKET_REATTEMPT, 'forced reconnect'); + } catch { + /* ignore */ + } + websocket = null; + } + } + + try { + manuallyClosed = false; + websocket = new WebSocket(`ws://${websocketServer}`); + } catch (e: any) { + if (e.name === 'SyntaxError') { + sendWSNotice( + `Error creating websocket: Invalid address! Make sure you're following the placeholder. Example: localhost:1234`, + true, + ); + return; + } + sendWSNotice(`Error creating websocket: ${e.name} - ${e.message}`); + startReconnectLoop(); + return; + } + + websocket.addEventListener('open', () => { + clearReconnectTimer(); + sendWSNotice('Websocket connected!', true); + Byond.sendMessage('requestMetadata'); // let's be nice and request metadata + retryCount = 0; + }); + + websocket.addEventListener('message', (event) => { + if (event.data === 'requestMetadata') { + Byond.sendMessage('requestMetadata'); + } + }); + + websocket.addEventListener('close', (ev) => { + websocket = null; + + if (manuallyClosed || ev.code === WEBSOCKET_DISABLED) return; + + sendWSNotice( + `Websocket disconnected! Code: ${ev.code} Reason: ${ev.reason || 'None provided'}`, + true, + ); + + startReconnectLoop(); + }); + + websocket.addEventListener('error', (ev) => { + logger.error('got websocket error', ev); + safeClose(WEBSOCKET_REATTEMPT, 'got error from server'); + }); +} + +// Initial connect +setupWebsocket(); + +export function wsUpdate(enabled: boolean): void { + if (enabled) { + setupWebsocket(); + return; + } + + manuallyClosed = true; + clearReconnectTimer(); + safeClose(WEBSOCKET_DISABLED); + websocket = null; +} + +export function wsReconnect(): void { + setupWebsocket(true); + sendWSNotice('Attempting to connect to websocket...', true); +} + +export function wsDisconnect(): void { + manuallyClosed = true; + clearReconnectTimer(); + safeClose(WEBSOCKET_DISABLED); + websocket = null; + retryCount = 0; + sendWSNotice('Websocket forcefully disconnected. (Retry count reset)', true); +} + +export function wsSend(msg: Record): void { + if (websocket?.readyState === WebSocket.OPEN) { + websocket.send(JSON.stringify(msg)); + } +} diff --git a/tgui/packages/tgui-say/package.json b/tgui/packages/tgui-say/package.json index b11aa26b1c8b..d957aad7beb8 100644 --- a/tgui/packages/tgui-say/package.json +++ b/tgui/packages/tgui-say/package.json @@ -6,7 +6,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^5.10.0" + "tgui-core": "^6.1.1" }, "private": true } diff --git a/tgui/packages/tgui/drag.ts b/tgui/packages/tgui/drag.ts index aeb991bac360..68ed9df38d76 100644 --- a/tgui/packages/tgui/drag.ts +++ b/tgui/packages/tgui/drag.ts @@ -5,8 +5,8 @@ */ import { storage } from 'common/storage'; -import { vecAdd, vecMultiply, vecScale, vecSubtract } from 'tgui-core/vector'; import type { BooleanLike } from 'tgui-core/react'; +import { vecAdd, vecMultiply, vecScale, vecSubtract } from 'tgui-core/vector'; import { createLogger } from './logging'; type Point = [number, number]; diff --git a/tgui/packages/tgui/interfaces/AntagInfoBloodWorm.tsx b/tgui/packages/tgui/interfaces/AntagInfoBloodWorm.tsx index 349f209d3a2d..ac668399a19e 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoBloodWorm.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoBloodWorm.tsx @@ -40,9 +40,8 @@ export const AntagInfoBloodWorm = (props) => {
- - You are immune to low temperature, low pressure and don't need to breathe. - Your hosts don't have to breathe either, but their bodies remain vulnerable to space. + + You don't need to breathe. This extends to your hosts as well. You can grow by using Leech Blood or Invade Corpse to consume blood, @@ -89,6 +88,10 @@ export const AntagInfoBloodWorm = (props) => {
+ + Your species is highly pressure and cold resistant, but extremely low pressures and temperatures can still harm you. + This doesn't apply to you while in a host and you can equip your host with a space suit to protect it too. + Your species is averse to heat and will rapidly burn up in hot environments. Your body is also flammable, so stay away from fires. This weakness applies even while in a host, but can be covered by equipping your host with fire-resistant gear. @@ -132,7 +135,7 @@ export const AntagInfoBloodWorm = (props) => { You can use this as insurance to get a last ditch escape attempt. - Medbay's blood freezers are all-you-can-eat buffets for you! They are only half synthetic and their high volumes grant you a lot of growth. + Medbay's blood freezers can be a decent source of synthetic blood if you can't find any monkeys. Be careful of nearby crew, as the sounds of breaking freezers can travel through walls. diff --git a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx index 0d589f041c6b..4cb55e74320c 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx @@ -1,10 +1,9 @@ -import { useState } from 'react'; -import { BlockQuote, Button, Section, Stack, Tabs } from 'tgui-core/components'; +import { BlockQuote, Button, Section, Stack } from 'tgui-core/components'; import type { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; import { Window } from '../layouts'; -import { MalfAiModules } from './common/MalfAiModules'; + import { type Objective, ObjectivePrintout, @@ -178,63 +177,29 @@ function CodewordsSection(props) { ); } -enum Screen { - Intro, - Modules, -} export function AntagInfoMalf(props) { - const [antagInfoTab, setAntagInfoTab] = useState(Screen.Intro); - return ( - - - setAntagInfoTab(Screen.Intro)} - > - Information - - setAntagInfoTab(Screen.Modules)} - > - Malfunction Modules - - - - {antagInfoTab === Screen.Intro ? ( - <> - - - - - - - - - + + + + - - + + - - ) : ( - -
- -
-
- )} +
+
+ + +
diff --git a/tgui/packages/tgui/interfaces/AntagInfoRevolution.tsx b/tgui/packages/tgui/interfaces/AntagInfoRevolution.tsx new file mode 100644 index 000000000000..ccd0addf0902 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AntagInfoRevolution.tsx @@ -0,0 +1,128 @@ +import { Section, Stack } from 'tgui-core/components'; +import type { BooleanLike } from 'tgui-core/react'; +import { useBackend } from '../backend'; +import { Window } from '../layouts'; +import type { Objective } from './common/Objectives'; + +type Head = { + name: string; + role: string; +}; + +type Info = { + antag_name: string; + objectives: Objective[]; + leader: BooleanLike; + code_phrases?: string[]; + code_responses?: string[]; + heads: Head[]; + lone_wolf: BooleanLike; +}; + +// Takes [a, b, c] and returns "a, b, and c" +function formatCodes(text: string[]) { + if (text.length === 0) return ''; + if (text.length === 1) return text[0]; + if (text.length === 2) return `${text[0]} and ${text[1]}`; + return `${text.slice(0, -1).join(', ')}, and ${text[text.length - 1]}`; +} + +export const AntagInfoRevolution = () => { + const { data } = useBackend(); + const { leader, code_phrases, code_responses, heads, lone_wolf } = data; + return ( + + +
+ + + Viva la Revolution! + + + {leader ? ( + + {lone_wolf ? ( + + - You are a lone leader of the revolution. It is + recommended to act swiftly and decisively - when the + revolution is sufficiently large, more leaders will be + promoted. + + ) : ( + + - There are multiple leaders of the revolution. It is + recommended to work together and establish a plan BEFORE + you start converting the crew - being outed early can + prove extremely detrimental. + + )} + + - Convert the crew to your cause with a flash - any flash + will work. + + + - Mindshields will prevent conversion. You can identify them + via the flashing blue border around their job icon. + + + - The revolution is lost if you and your fellow leaders are + all killed or exiled. Do not let that happen! + + + ) : ( + + + - Help your cause. Do not harm your fellow freedom fighters. + + + - You can identify your comrades by the red "R" icons, and + your leaders by the blue "R" icons. + + + - The revolution is lost if all of your leaders are killed + or exiled. Do not let that happen! + + + )} + + {heads.length > 0 && ( + <> + + + + + You must kill or exile the heads of staff: + + {heads.map((head, i) => ( + + - {head.name}, the {head.role} + + ))} + + + + )} + {code_phrases?.length && code_responses?.length && ( + <> + + + + + To identify your fellow leaders, use the following code: + + + Phrases: {formatCodes(code_phrases)} + + + Responses: {formatCodes(code_responses)} + + + + + )} + +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Autolathe.tsx b/tgui/packages/tgui/interfaces/Autolathe.tsx index a9e2f1720e58..d62f83198bb0 100644 --- a/tgui/packages/tgui/interfaces/Autolathe.tsx +++ b/tgui/packages/tgui/interfaces/Autolathe.tsx @@ -16,8 +16,7 @@ import { useBackend } from '../backend'; import { Window } from '../layouts'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; -import type { Design, MaterialMap } from './Fabrication/Types'; -import type { Material } from './Fabrication/Types'; +import type { Design, Material, MaterialMap } from './Fabrication/Types'; type AutolatheDesign = Design & { customMaterials: BooleanLike; @@ -33,7 +32,7 @@ type AutolatheData = { }; export const Autolathe = (props) => { - const { data } = useBackend(); + const { act, data } = useBackend(); const { materialtotal, materialsmax, @@ -84,20 +83,51 @@ export const Autolathe = (props) => { key={material.name} label={capitalize(material.name)} > - -
- {material.amount / SHEET_MATERIAL_AMOUNT + - ' sheets'} -
-
+ + + +
+ {material.amount / SHEET_MATERIAL_AMOUNT + + ' sheets'} +
+
+
+ Eject: + {[ + 1, + 5, + Math.floor( + material.amount / SHEET_MATERIAL_AMOUNT, + ), + ] + .sort() + .map((amt) => ( + + + + ))} +
))}
diff --git a/tgui/packages/tgui/interfaces/BigManipulator/index.tsx b/tgui/packages/tgui/interfaces/BigManipulator/index.tsx index 144e9d3e94c9..e56d1dd431f8 100644 --- a/tgui/packages/tgui/interfaces/BigManipulator/index.tsx +++ b/tgui/packages/tgui/interfaces/BigManipulator/index.tsx @@ -173,7 +173,7 @@ function TaskEditModal(props: TaskEditModalProps) { const isCargo = !!task.turf; const isPickup = task.task_type.includes('pickup'); - const isDropoff = task.task_type.includes('dropoff'); + const isDropoff = task.task_type === 'drop' || task.task_type === 'throw' || task.task_type === 'use'; const isInteract = task.task_type.includes('interact'); const currentButton = task.turf @@ -236,12 +236,16 @@ function TaskEditModal(props: TaskEditModalProps) { - adjust('cycle_filtering_mode')} - tooltip="Cycle object category" - /> + {(task.task_type === 'pickup' || + task.task_type === 'drop' || + task.task_type === 'throw') && ( + adjust('cycle_filtering_mode')} + tooltip="Cycle object category" + /> + )} - adjust('cycle_interaction_mode')} - tooltip="Drop / Throw / Use" - /> - adjust('cycle_overflow_status')} - tooltip="Cycle overflow behaviour" - /> - {task.interaction_mode?.toUpperCase() === 'THROW' && ( + {task.task_type === 'drop' && ( + adjust('cycle_overflow_status')} + tooltip="Cycle overflow behaviour" + /> + )} + {task.task_type === 'throw' && ( )} - {(isDropoff || isInteract) && task.interaction_mode?.toUpperCase() !== 'THROW' && ( + {(task.task_type === 'use' || isInteract) && ( <> adjust('toggle_worker_combat')} tooltip="Use combat mode during interaction" /> + adjust('toggle_skip_anchored')} + tooltip="Skip anchored objects when looking for interaction targets" + /> (); const { isPrinting, + customTransferAmount, printingProgress, printingTotal, selectedPillDuration, @@ -127,6 +129,22 @@ const ChemMasterContent = (props: { {` / ${beaker.maxVolume} units`} + + + act('setCustomTransfer', { + target: value, + }) + } + /> + @@ -324,7 +342,7 @@ type ReagentProps = { const ReagentEntry = (props: ReagentProps) => { const { data, act } = useBackend(); const { chemical, transferTo, analyze } = props; - const { isPrinting } = data; + const { isPrinting, customTransferAmount } = data; return ( @@ -369,6 +387,18 @@ const ReagentEntry = (props: ReagentProps) => { > 10 + + ); + }); + return {pairs}; +}; + export const DnaConsoleSequencer = (props) => { const { data, act } = useBackend(); const mutations = data.storage?.occupant ?? []; - const { isJokerReady, isMonkey, jokerSeconds, subjectStatus } = data; + const { + isJokerReady, + isMonkey, + jokerSeconds, + subjectStatus, + heldScannerBuffer, + } = data; const { sequencerMutation, jokerActive } = data.view; const mutation = mutations.find( (mutation) => mutation.Alias === sequencerMutation, ); + const scannerSequence = + heldScannerBuffer && mutation && heldScannerBuffer[mutation.Alias]; return ( <> @@ -189,6 +230,7 @@ export const DnaConsoleSequencer = (props) => { key={mutation.Alias} url={resolveAsset(mutation.Image)} selected={mutation.Alias === sequencerMutation} + inScanner={!!heldScannerBuffer?.[mutation.Alias]} onClick={() => { act('set_view', { sequencerMutation: mutation.Alias, @@ -222,44 +264,51 @@ export const DnaConsoleSequencer = (props) => { Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING. )) || ( -
- Joker on cooldown ({jokerSeconds}s) - - )) || - (jokerActive && ( - <> - - Click on a gene to reveal it. + <> +
+ Joker on cooldown ({jokerSeconds}s) + )) || + (jokerActive && ( + <> + + Click on a gene to reveal it. + +
+ ) + } + > + +
+ {!!scannerSequence && ( +
+ +
+ )} + )} ); diff --git a/tgui/packages/tgui/interfaces/EmotePanel.tsx b/tgui/packages/tgui/interfaces/EmotePanel.tsx index 674f0ec48238..227c96e64f2f 100644 --- a/tgui/packages/tgui/interfaces/EmotePanel.tsx +++ b/tgui/packages/tgui/interfaces/EmotePanel.tsx @@ -1,5 +1,5 @@ -import { useState } from 'react'; -import { Box, Button, Flex, Icon, Section } from 'tgui-core/components'; +import { useMemo, useState } from 'react'; +import { Box, Button, Flex, Icon, Section, Stack } from 'tgui-core/components'; import type { BooleanLike } from 'tgui-core/react'; import { capitalizeFirst } from 'tgui-core/string'; @@ -43,6 +43,34 @@ export const EmotePanelContent = (props) => { const [showIcons, toggleShowIcons] = useState(false); + const filteredEmotes = useMemo( + () => + emotes + .filter( + (emote) => + emote.key && + (searchText.length > 0 + ? emote.key.toLowerCase().includes(searchText.toLowerCase()) || + emote.name.toLowerCase().includes(searchText.toLowerCase()) + : true) && + (filterVisible ? emote.visible : true) && + (filterAudible ? emote.audible : true) && + (filterSound ? emote.sound : true) && + (filterHands ? emote.hands : true) && + (filterUseParams ? emote.use_params : true), + ) + .sort((a, b) => (a.name > b.name ? 1 : -1)), + [ + emotes, + searchText, + filterVisible, + filterAudible, + filterSound, + filterHands, + filterUseParams, + ], + ); + return (
{ > - {emotes - .filter( - (emote) => - emote.key && - (searchText.length > 0 - ? emote.key - .toLowerCase() - .includes(searchText.toLowerCase()) || - emote.name - .toLowerCase() - .includes(searchText.toLowerCase()) - : true) && - (filterVisible ? emote.visible : true) && - (filterAudible ? emote.audible : true) && - (filterSound ? emote.sound : true) && - (filterHands ? emote.hands : true) && - (filterUseParams ? emote.use_params : true), - ) - .sort((a, b) => (a.name > b.name ? 1 : -1)) - .map((emote) => ( - - ))} + {filteredEmotes.map((emote) => ( + + act('play_emote', { + emote_key: emote.key, + use_params: useParams, + }) + } + onPreview={() => + act('preview_sound', { + emote_key: emote.key, + }) + } + /> + ))}
@@ -204,6 +190,76 @@ export const EmotePanelContent = (props) => { ); }; +type EmoteButtonProps = { + emote: Emote; + showIcons: boolean; + showNames: boolean; + onPlay: () => void; + onPreview: () => void; +}; + +const EmoteButton = (props: EmoteButtonProps) => { + const { emote, showIcons, showNames, onPlay, onPreview } = props; + + return ( + + + + + {emote.sound ? ( + +
diff --git a/tgui/packages/tgui/interfaces/NtosFaxBond.tsx b/tgui/packages/tgui/interfaces/NtosFaxBond.tsx new file mode 100644 index 000000000000..447400e656d6 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosFaxBond.tsx @@ -0,0 +1,85 @@ +import { Button, NoticeBox, Section, Stack, Table } from 'tgui-core/components'; +import type { BooleanLike } from 'tgui-core/react'; +import { useBackend } from '../backend'; +import { NtosWindow } from '../layouts'; + +type FaxInfoList = { + id: string; + name: string; + location: string; + muted: BooleanLike; +}; + +type Data = { + faxes_info: FaxInfoList[]; +}; + +export const NtosFaxBond = (props) => { + return ( + + + + + + ); +}; + +export const NtosFaxBondContent = (props) => { + const { act, data } = useBackend(); + const { faxes_info = [] } = data; + return ( + <> + + Scan any fax to be notified when it receives a message. + + {!!faxes_info.length && ( +
+
+ + ID + Name + Location + + + {faxes_info.map((fax) => ( + + + {fax.id} + + + {fax.name} + + + {fax.location} + + + +
+
+ )} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/NtosNotepad.tsx b/tgui/packages/tgui/interfaces/NtosNotepad.tsx index 969ea8131d5a..adcd1b0daf8c 100644 --- a/tgui/packages/tgui/interfaces/NtosNotepad.tsx +++ b/tgui/packages/tgui/interfaces/NtosNotepad.tsx @@ -4,8 +4,19 @@ * @license MIT */ -import { useRef, useState } from 'react'; -import { Box, Dialog, Divider, MenuBar, Section } from 'tgui-core/components'; +import { useEffect, useRef, useState } from 'react'; +import { + Box, + Button, + Dialog, + Divider, + Dropdown, + Flex, + Input, + MenuBar, + Section, + Stack, +} from 'tgui-core/components'; import { useBackend } from '../backend'; import { NtosWindow } from '../layouts'; @@ -16,6 +27,18 @@ const logger = createLogger('NtosNotepad'); const DEFAULT_DOCUMENT_NAME = 'Untitled'; +enum Extensions { + TXT = 'TXT', +} + +type NoteFileEntry = { + uid: number; + name: string; + filetype: string; + onDisk: boolean; + displayName: string; +}; + type PartiallyUnderlinedProps = { str: string; indexStart: number; @@ -40,16 +63,20 @@ enum Dialogs { UNSAVED_CHANGES = 1, OPEN = 2, ABOUT = 3, + SELECT_FILE = 4, + SAVE = 5, } type MenuBarProps = { onSave: () => void; + onSaveAs: () => void; onExit: () => void; onNewNote: () => void; onCutSelected: () => void; onCopySelected: () => void; onPasteSelected: () => void; onDeleteSelected: () => void; + onOpenSelected: () => void; showStatusBar: boolean; setShowStatusBar: (boolean) => void; wordWrap: boolean; @@ -60,12 +87,14 @@ type MenuBarProps = { const NtosNotepadMenuBar = (props: MenuBarProps) => { const { onSave, + onSaveAs, onExit, onNewNote, onCutSelected, onCopySelected, onPasteSelected, onDeleteSelected, + onOpenSelected, setShowStatusBar, showStatusBar, wordWrap, @@ -81,12 +110,18 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { case 'save': onSave(); break; + case 'save_as': + onSaveAs(); + break; case 'exit': onExit(); break; case 'new': onNewNote(); break; + case 'open': + onOpenSelected(); + break; case 'cut': onCutSelected(); break; @@ -135,7 +170,11 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { {...itemProps} > + + @@ -325,13 +364,19 @@ const AboutDialog = (props: AboutDialogProps) => { type NoteData = { note: string; + documentName: string; + files: NoteFileEntry[]; }; type RetryActionType = (retrying?: boolean) => void; export const NtosNotepad = (props) => { const { act, data } = useBackend(); - const { note } = data; - const [documentName, setDocumentName] = useState(DEFAULT_DOCUMENT_NAME); + const { + note, + documentName: backendDocumentName = DEFAULT_DOCUMENT_NAME, + files = [], + } = data; + const [documentName, setDocumentName] = useState(backendDocumentName); const [originalText, setOriginalText] = useState(note); const [text, setText] = useState(note); const [statuses, setStatuses] = useState({ @@ -342,23 +387,34 @@ export const NtosNotepad = (props) => { const [retryAction, setRetryAction] = useState(null); const [showStatusBar, setShowStatusBar] = useState(true); const [wordWrap, setWordWrap] = useState(true); + const [selectedFileUid, setSelectedFileUid] = useState(null); + const [saveName, setSaveName] = useState(DEFAULT_DOCUMENT_NAME); + + const [saveExtension, setSaveExtension] = useState(Extensions.TXT); + + useEffect(() => { + setText(note); + setOriginalText(note); + setDocumentName(backendDocumentName); + setStatuses(getStatusCounts(note, note.length)); + }, [note, backendDocumentName]); const handleCloseDialog = () => setActiveDialog(Dialogs.NONE); - const handleSave = (newDocumentName: string = documentName) => { - logger.log(`Saving the document as ${newDocumentName}`); - act('UpdateNote', { newnote: text }); - setOriginalText(text); - setDocumentName(newDocumentName); - logger.log('Attempting to retry previous action'); + const handleSave = () => { + logger.log(`Saving the document as ${documentName}`); + act('save', { note: text }); setActiveDialog(Dialogs.NONE); - - // Retry the previous action now that we've saved. The previous action could be to - // close the application, a new document being created or - // an existing document being opened if (retryAction) { - retryAction(true); + setRetryAction(null); } - setRetryAction(null); + }; + const handleSaveAs = () => setActiveDialog(Dialogs.SAVE); + const handleOpenNote = (retrying = false) => { + if (ensureUnsavedChangesAreHandled(handleOpenNote, retrying)) { + return; + } + setSelectedFileUid(null); + setActiveDialog(Dialogs.SELECT_FILE); }; const ensureUnsavedChangesAreHandled = ( action: () => void, @@ -391,6 +447,7 @@ export const NtosNotepad = (props) => { setDocumentName(DEFAULT_DOCUMENT_NAME); }; + const selectedFile = files.find((file) => file.uid === selectedFileUid); // MS Notepad displays an asterisk when there's unsaved changes const unsavedAsterisk = text !== originalText ? '*' : ''; return ( @@ -403,8 +460,10 @@ export const NtosNotepad = (props) => { document.execCommand('cut')} onCopySelected={() => document.execCommand('copy')} onPasteSelected={() => document.execCommand('paste')} @@ -426,13 +485,108 @@ export const NtosNotepad = (props) => { {showStatusBar && } + {activeDialog === Dialogs.SELECT_FILE && ( + +
+ + +
+ {files.length ? ( + file.displayName)} + onSelected={(filename) => { + setSelectedFileUid( + files.find((file) => file.displayName === filename) + ?.uid || files[0].uid, + ); + }} + /> + ) : ( + No text files available. + )} +
+
+
+
+
+ + Cancel +
+
+ )} + {activeDialog === Dialogs.SAVE && ( + +
+ + + setSaveName(value)} + /> + + + { + setSaveExtension(extension); + }} + /> + + +
+
+ { + act('SaveAs', { + name: saveName, + extension: saveExtension, + note: text, + }); + handleCloseDialog(); + }} + > + {'Save'} + + Cancel +
+
+ )} {activeDialog === Dialogs.UNSAVED_CHANGES && (
Do you want to save changes to {documentName}?
- Save + { + setRetryAction(null); + act('Save', { note: text }); + setActiveDialog(Dialogs.NONE); + }} + > + Save + Don't Save diff --git a/tgui/packages/tgui/interfaces/PlantAnalyzer/Graft.tsx b/tgui/packages/tgui/interfaces/PlantAnalyzer/Graft.tsx index 87b14fe667b4..29d92a315f23 100644 --- a/tgui/packages/tgui/interfaces/PlantAnalyzer/Graft.tsx +++ b/tgui/packages/tgui/interfaces/PlantAnalyzer/Graft.tsx @@ -8,7 +8,7 @@ import { import { capitalizeFirst } from 'tgui-core/string'; import { useBackend } from '../../backend'; -import { TraitTooltip } from '../SeedExtractor'; +import { TraitTooltip } from '../SeedTable'; import { Fallback } from './Fallback'; import type { PlantAnalyzerData } from './types'; diff --git a/tgui/packages/tgui/interfaces/PortablePump.jsx b/tgui/packages/tgui/interfaces/PortablePump.tsx similarity index 81% rename from tgui/packages/tgui/interfaces/PortablePump.jsx rename to tgui/packages/tgui/interfaces/PortablePump.tsx index 413cf3484840..ef9d1f455ca6 100644 --- a/tgui/packages/tgui/interfaces/PortablePump.jsx +++ b/tgui/packages/tgui/interfaces/PortablePump.tsx @@ -7,10 +7,21 @@ import { import { useBackend } from '../backend'; import { Window } from '../layouts'; -import { PortableBasicInfo } from './common/PortableAtmos'; +import { + PortableBasicInfo, + type PortableBasicInfoData, +} from './common/PortableAtmos'; + +type PortablePumpData = { + direction: boolean; + targetPressure: number; + defaultPressure: number; + minPressure: number; + maxPressure: number; +} & PortableBasicInfoData; export const PortablePump = (props) => { - const { act, data } = useBackend(); + const { act, data } = useBackend(); const { direction, connected, @@ -30,14 +41,13 @@ export const PortablePump = (props) => { title="Pumping" buttons={ } > diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/JobsPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/JobsPage.tsx index dae4f19b92ec..b36ce4a2c164 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/JobsPage.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/JobsPage.tsx @@ -1,7 +1,14 @@ import { sortBy } from 'es-toolkit'; -import type { PropsWithChildren, ReactNode } from 'react'; +import { type PropsWithChildren, type ReactNode, useState } from 'react'; import { useBackend } from 'tgui/backend'; -import { Box, Button, Dropdown, Stack, Tooltip } from 'tgui-core/components'; +import { + Box, + Button, + Dropdown, + Floating, + Stack, + Tooltip, +} from 'tgui-core/components'; import { classes } from 'tgui-core/react'; import { @@ -34,7 +41,7 @@ function PriorityButton(props: PriorityButtonProps) { const className = `PreferencesMenu__Jobs__departments__priority`; return ( - + + + ); + })} + + + + + } + > + + + ); +} + export function JobsPage() { + const [dragging, setDragging] = useState(-1); + const [hoveringOver, setHoveringOver] = useState(''); + return ( <> - + + + + + + + + - + {/* // DARKPACK EDIT CHANGE */} { // DARKPACK EDIT ADD START @@ -376,33 +555,99 @@ export function JobsPage() { - - - - + + + + + - + - - - - - - + + + + + + - - - - - - - + + + + + + { diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/tts_voice.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/tts_voice.tsx index d8e8ab003267..9ec2bfaf3e86 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/tts_voice.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/tts_voice.tsx @@ -40,6 +40,16 @@ function FeatureTTSDropdownInput( height="100%" /> + + } > @@ -42,13 +57,12 @@ export const PortableBasicInfo = (props) => { {!!hasHypernobCrystal && ( )} @@ -57,12 +71,9 @@ export const PortableBasicInfo = (props) => { title="Holding Tank" minHeight="82px" buttons={ - } > {holding ? ( diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json index c695263eeef1..56a30f8a1845 100644 --- a/tgui/packages/tgui/package.json +++ b/tgui/packages/tgui/package.json @@ -16,7 +16,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "react-json-tree": "^0.20.0", - "tgui-core": "^5.10.0", + "tgui-core": "^6.1.1", "tgui-dev-server": "workspace:*" }, "private": true diff --git a/tgui/packages/tgui/styles/colors.scss b/tgui/packages/tgui/styles/colors.scss index 3d326a3cb040..eac2658127ba 100644 --- a/tgui/packages/tgui/styles/colors.scss +++ b/tgui/packages/tgui/styles/colors.scss @@ -56,3 +56,7 @@ $color-map-keys: map.keys($_gen_map) !default; @function fg($color) { @return hsl(from $color h s calc(l + var(--adjust-color))); } + +@function hover($color) { + @return hsl(from $color h s calc(l + var(--adjust-hover))); +} diff --git a/tgui/packages/tgui/styles/interfaces/CrewManifest.scss b/tgui/packages/tgui/styles/interfaces/CrewManifest.scss index 85895c60af14..e2fb39357928 100644 --- a/tgui/packages/tgui/styles/interfaces/CrewManifest.scss +++ b/tgui/packages/tgui/styles/interfaces/CrewManifest.scss @@ -1,28 +1,14 @@ -$department_map: ( - 'Cargo': var(--color-brown), - 'Command': var(--color-yellow), - 'Security': var(--color-red), - 'Engineering': var(--color-orange), - 'Medical': var(--color-teal), - 'Misc': var(--color-white), - 'Science': var(--color-purple), - 'Service': var(--color-green), - 'Silicon': var(--color-pink), -); - .CrewManifest { - @each $department-name, $color-value in $department_map { - &--#{$department-name} { + &--Section { .Section { &__title { - border-color: $color-value; + border-color: var(--department-color); } &__titleText { - color: $color-value; + color: var(--department-color); } } } - } &__Cell { padding: var(--space-s) 0; diff --git a/tgui/packages/tgui/styles/interfaces/Emojipedia.scss b/tgui/packages/tgui/styles/interfaces/Emojipedia.scss index d6ec654cc804..1599b18a8aa3 100644 --- a/tgui/packages/tgui/styles/interfaces/Emojipedia.scss +++ b/tgui/packages/tgui/styles/interfaces/Emojipedia.scss @@ -1,8 +1,4 @@ .emojipedia16x16 { transform-origin: center; margin: var(--space-m); - - &:hover { - transform: scale(1.5); - } } diff --git a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss index dc52ec8de8cf..602a3abf66e2 100644 --- a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss +++ b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss @@ -3,37 +3,6 @@ @use '../colors.scss'; @use '../base.scss'; -$department_map: ( - 'Assistant': var(--color-gray), - 'Captain': colors.fg(var(--color-blue)), - 'Cargo': var(--color-brown), - 'Command': var(--color-yellow), - 'Security': var(--color-red), - 'Engineering': hsl(from var(--color-orange) h s calc(l + 7.5)), - 'Medical': var(--color-teal), - 'Science': colors.fg(var(--color-purple)), - 'Service': var(--color-green), - 'Silicon': var(--color-pink), - // DARKPACK EDIT ADD START - 'Prince': var(--color-orange), - 'Camarilla': var(--color-gold), - 'Anarch': var(--color-bad), - 'Church': var(--color-gray), - 'Chantry': var(--color-purple), - 'Clinic': var(--color-teal), - 'Warehouse': var(--color-brown), - 'Strip_Club': var(--color-violet), - 'Police': var(--color-blue), - 'Giovanni': var(--color-green), - 'Manor': var(--color-violet), - 'Sabbat': var(--color-grey), - 'Citizen': var(--color-light-grey), - 'City_Services': var(--color-white), - 'Garou_Nation': var(--color-olive), - 'Pentex': var(--color-green), - 'Society_of_Leopold': var(--color-yellow), // DARKPACK EDIT ADD END -); - .ChoicedSelection { padding: var(--space-m); background-color: var(--color-base); @@ -143,46 +112,59 @@ $department_map: ( flex: 1; } - &__departments { - @each $department-name, $color-value in $department_map { - &--#{$department-name} { - &.head { - background: $color-value; + &__characterMenu { + box-shadow: var(--dropdown-menu-blur); + background-color: var(--dropdown-menu-background); + border: var(--dropdown-menu-border); + border-radius: var(--dropdown-menu-border-radius); + transition: opacity 0.35s ease-out; - .job-name { - font-weight: bold; - } - } + &--hidden { + opacity: 0; + pointer-events: none; + } + } - background: colors.fg($color-value); - border: var(--border-thickness-small) outset colors.fg($color-value); - color: black; + &__departments { + &.head { + background: colors.bg(var(--department-color)); - > * { - height: calc(100% + 0.2em); - padding-bottom: 0.2em; + .job-name { + font-weight: bold; + &.hovered { + background: colors.hover(colors.bg(var(--department-color))); } + } + } - .options { - margin-right: var(--space-xxs); - background: hsla(0, 0%, 0%, 0.2); - height: 100%; - } + background: colors.fg(var(--department-color)); + border: var(--border-thickness-small) outset + colors.fg(var(--department-color)); + color: black; + + .options { + padding-right: var(--space-xxs); + padding-bottom: 0.2em; + background: hsla(0, 0%, 0%, 0.2); + } + .job-name { + &.hovered { + background: colors.hover(colors.fg(var(--department-color))); } + } - &--Captain { - border: var(--border-thickness-medium) - outset - hsla(60, 100%, 39.2%, 1); + &--Captain { + border: var(--border-thickness-medium) outset hsla(60, 100%, 39.2%, 1); - &:first-child { - border-top: var(--border-thickness-medium) - outset - hsla(60, 100%, 39.2%, 1); - } + &:first-child { + border-top: var(--border-thickness-medium) outset + hsla(60, 100%, 39.2%, 1); + } - .job-name { - font-size: 17px; + .job-name { + font-size: 17px; + &.hovered { + background: colors.hover(colors.fg(var(--department-color))); } } } @@ -207,7 +189,7 @@ $department_map: ( &__PriorityHeader { font-weight: bold; - transform: translateX(-4px) translateY(-8px) rotate(315deg); + transform: translateX(-8px) translateY(-8px) rotate(315deg); white-space: nowrap; width: 19px; } diff --git a/tools/UpdatePaths/96141_forbidden_areas.txt b/tools/UpdatePaths/Scripts/96141_forbidden_areas.txt similarity index 100% rename from tools/UpdatePaths/96141_forbidden_areas.txt rename to tools/UpdatePaths/Scripts/96141_forbidden_areas.txt diff --git a/tools/UpdatePaths/Scripts/96299_gold_crate_repath.txt b/tools/UpdatePaths/Scripts/96299_gold_crate_repath.txt new file mode 100644 index 000000000000..0d290cfaa606 --- /dev/null +++ b/tools/UpdatePaths/Scripts/96299_gold_crate_repath.txt @@ -0,0 +1,3 @@ +# Replaces old gold crate path with a stocked subtype so we can use empty gold crates where appropriate. + +/obj/structure/closet/crate/goldcrate : /obj/structure/closet/crate/goldcrate/stocked{@OLD} diff --git a/tools/UpdatePaths/Scripts/96370_indestructible_rock_walls.txt b/tools/UpdatePaths/Scripts/96370_indestructible_rock_walls.txt new file mode 100644 index 000000000000..204f2045b56a --- /dev/null +++ b/tools/UpdatePaths/Scripts/96370_indestructible_rock_walls.txt @@ -0,0 +1,2 @@ +/turf/closed/indestructible/rock/snow/ice : /turf/closed/indestructible/ice{@OLD} +/turf/closed/indestructible/rock/snow/ice/ore : /turf/closed/indestructible/rock/snow/ore{@OLD} diff --git a/tools/UpdatePaths/Scripts/96500_mulebots.txt b/tools/UpdatePaths/Scripts/96500_mulebots.txt new file mode 100644 index 000000000000..1393f74f32a0 --- /dev/null +++ b/tools/UpdatePaths/Scripts/96500_mulebots.txt @@ -0,0 +1,2 @@ +/mob/living/simple_animal/bot/mulebot : /mob/living/basic/bot/mulebot{@OLD} +/mob/living/simple_animal/bot/mulebot/paranormal : /mob/living/basic/bot/mulebot/paranormal{@OLD} \ No newline at end of file diff --git a/tools/UpdatePaths/Scripts/96509_keg_spawner.txt b/tools/UpdatePaths/Scripts/96509_keg_spawner.txt new file mode 100644 index 000000000000..f7b980c7809c --- /dev/null +++ b/tools/UpdatePaths/Scripts/96509_keg_spawner.txt @@ -0,0 +1 @@ +/obj/structure/reagent_dispensers/beerkeg : /obj/effect/spawner/random/food_or_drink/keg{@OLD} diff --git a/tools/UpdatePaths/Scripts/96571_VIMs_to_mechs.txt b/tools/UpdatePaths/Scripts/96571_VIMs_to_mechs.txt new file mode 100644 index 000000000000..e39ca47ca2c3 --- /dev/null +++ b/tools/UpdatePaths/Scripts/96571_VIMs_to_mechs.txt @@ -0,0 +1 @@ +/obj/vehicle/sealed/car/vim : /obj/vehicle/sealed/mecha/vim{@OLD} diff --git a/tools/UpdatePaths/Scripts/96795_update_plant_refinement.txt b/tools/UpdatePaths/Scripts/96795_update_plant_refinement.txt new file mode 100644 index 000000000000..02dba5037bb0 --- /dev/null +++ b/tools/UpdatePaths/Scripts/96795_update_plant_refinement.txt @@ -0,0 +1,7 @@ +/obj/item/food/grown/watermelon : /obj/item/food/grown/melonlike/watermelon{@OLD} +/obj/item/food/grown/holymelon : /obj/item/food/grown/melonlike/holymelon{@OLD} +/obj/item/food/grown/barrelmelon : /obj/item/food/grown/melonlike/barrelmelon{@OLD} + +/obj/item/food/grown/carrot : /obj/item/food/grown/carrotlike/carrot{@OLD} +/obj/item/food/grown/parsnip : /obj/item/food/grown/carrotlike/parsnip{@OLD} +/obj/item/food/grown/cahnroot : /obj/item/food/grown/carrotlike/cahnroot{@OLD} diff --git a/tools/UpdatePaths/Scripts/DarkPack/194_area_sanity_again.txt b/tools/UpdatePaths/Scripts/DarkPack/194_area_sanity_again.txt index e675faef50c3..660ddd4803c1 100644 --- a/tools/UpdatePaths/Scripts/DarkPack/194_area_sanity_again.txt +++ b/tools/UpdatePaths/Scripts/DarkPack/194_area_sanity_again.txt @@ -7,3 +7,5 @@ /area/vtm/supply : /area/vtm/interior/supply /area/vtm/hotel : /area/vtm/interior/hotel /area/vtm/church : /area/vtm/interior/church + +/area/vtm/graveyard/interior : /area/vtm/interior/graveyard diff --git a/tools/autowiki/autowiki.js b/tools/autowiki/autowiki.js index 0d2a4c1c4595..83db11e18b32 100644 --- a/tools/autowiki/autowiki.js +++ b/tools/autowiki/autowiki.js @@ -1,49 +1,49 @@ -const fs = require("fs").promises; -const MWBot = require("mwbot"); +import { promises as fs } from 'node:fs'; +import MWBot from 'mwbot'; const { USERNAME, PASSWORD } = process.env; if (!USERNAME) { - console.error("USERNAME was not set."); + console.error('USERNAME was not set.'); process.exit(1); } if (!PASSWORD) { - console.error("PASSWORD was not set."); + console.error('PASSWORD was not set.'); process.exit(1); } const PAGE_EDIT_FILENAME = process.argv[2]; if (!PAGE_EDIT_FILENAME) { - console.error("No filename specified to edit pages"); + console.error('No filename specified to edit pages'); process.exit(1); } const FILE_EDIT_FILENAME = process.argv[3]; if (!FILE_EDIT_FILENAME) { - console.error("No filename specified to edit files"); + console.error('No filename specified to edit files'); process.exit(1); } async function main() { console.log(`Reading from ${PAGE_EDIT_FILENAME}`); - const editFile = await ( - await fs.readFile(PAGE_EDIT_FILENAME, "utf8") - ).split("\n"); + const editFile = await (await fs.readFile(PAGE_EDIT_FILENAME, 'utf8')).split( + '\n', + ); console.log(`Logging in as ${USERNAME}`); const bot = new MWBot(); await bot.loginGetEditToken({ - apiUrl: "https://wiki.tgstation13.org/api.php", + apiUrl: 'https://wiki.tgstation13.org/api.php', username: USERNAME, password: PASSWORD, }); - console.log("Logged in"); + console.log('Logged in'); // This is not Promise.all as to not flood with a bunch of traffic at once for (const editLine of editFile) { @@ -53,7 +53,7 @@ async function main() { let { title, text } = JSON.parse(editLine); text = - "This page is automated by Autowiki. Do NOT edit it manually." + + 'This page is automated by Autowiki. Do NOT edit it manually.' + text; console.log(`Editing ${title}...`); @@ -73,7 +73,7 @@ async function main() { `Autowiki upload @ ${new Date().toISOString()}`, ) .catch((error) => { - if (error.code === "fileexists-no-change") { + if (error.code === 'fileexists-no-change') { console.log(`${assetName} is an exact duplicate`); } else { return Promise.reject(error); diff --git a/tools/build/build.ts b/tools/build/build.ts index c122ba5359ed..55f0c6bb2e05 100644 --- a/tools/build/build.ts +++ b/tools/build/build.ts @@ -10,7 +10,7 @@ import fs from 'node:fs'; import Bun from 'bun'; import Juke from './juke/index.js'; -import { bun, bunRoot } from './lib/bun'; +import { bun } from './lib/bun'; import { DreamDaemon, DreamMaker, NamedVersionFile } from './lib/byond'; import { downloadFile } from './lib/download'; import { formatDeps } from './lib/helpers'; @@ -94,7 +94,7 @@ export const CutterTarget = new Juke.Target({ const temp_path = `${cutter_path}_temp`; // yes this means its file extension is .exe_temp I don't really care await downloadFile(download_from, temp_path); fs.copyFileSync(temp_path, cutter_path); - fs.rmSync(temp_path) + fs.rmSync(temp_path); if (process.platform !== 'win32') { await Juke.exec('chmod', ['+x', cutter_path]); } @@ -292,7 +292,7 @@ export const BunTarget = new Juke.Target({ parameters: [CiParameter], inputs: ['tgui/**/package.json'], executes: () => { - return bun('install', '--frozen-lockfile', '--ignore-scripts'); + return bun('./tgui', 'install', '--frozen-lockfile', '--ignore-scripts'); }, }); @@ -303,7 +303,7 @@ export const BiomeInstallTarget = new Juke.Target({ return Juke.glob('node_modules/@biomejs/**').length === 0; }, executes: () => { - return bunRoot('install'); + return bun('.', 'install'); }, }); @@ -317,18 +317,7 @@ export const TgFontTarget = new Juke.Target({ 'tgui/packages/tgfont/dist/tgfont.css', 'tgui/packages/tgfont/dist/tgfont.woff2', ], - executes: async () => { - await bun('tgfont:build'); - fs.mkdirSync('tgui/packages/tgfont/static', { recursive: true }); - fs.copyFileSync( - 'tgui/packages/tgfont/dist/tgfont.css', - 'tgui/packages/tgfont/static/tgfont.css', - ); - fs.copyFileSync( - 'tgui/packages/tgfont/dist/tgfont.woff2', - 'tgui/packages/tgfont/static/tgfont.woff2', - ); - }, + executes: () => bun('./tgui/packages/tgfont', 'tgfont:build'), }); export const TguiTarget = new Juke.Target({ @@ -346,23 +335,23 @@ export const TguiTarget = new Juke.Target({ 'tgui/public/tgui-say.bundle.css', 'tgui/public/tgui-say.bundle.js', ], - executes: () => bun('tgui:build'), + executes: () => bun('./tgui', 'tgui:build'), }); export const TguiTscTarget = new Juke.Target({ dependsOn: [BunTarget], - executes: () => bun('tgui:tsc'), + executes: () => bun('./tgui', 'tgui:tsc'), }); export const TguiTestTarget = new Juke.Target({ parameters: [CiParameter], dependsOn: [BunTarget], - executes: () => bun('tgui:test'), + executes: () => bun('./tgui', 'tgui:test'), }); export const BiomeCheckTarget = new Juke.Target({ dependsOn: [BunTarget, BiomeInstallTarget], - executes: () => bunRoot('tgui:lint'), + executes: () => bun('.', 'tgui:lint'), }); export const TguiLintTarget = new Juke.Target({ @@ -371,12 +360,12 @@ export const TguiLintTarget = new Juke.Target({ export const TguiDevTarget = new Juke.Target({ dependsOn: [BunTarget], - executes: ({ args }) => bun('tgui:dev', ...args), + executes: ({ args }) => bun('./tgui', 'tgui:dev', ...args), }); export const TguiAnalyzeTarget = new Juke.Target({ dependsOn: [BunTarget], - executes: () => bun('tgui:analyze'), + executes: () => bun('./tgui', 'tgui:analyze'), }); export const TestTarget = new Juke.Target({ @@ -388,7 +377,7 @@ export const LintTarget = new Juke.Target({ }); export const BuildTarget = new Juke.Target({ - dependsOn: [TguiTarget, DmTarget], + dependsOn: [TguiTarget, TgFontTarget, DmTarget], }); export const ServerTarget = new Juke.Target({ @@ -410,6 +399,7 @@ export const AllTarget = new Juke.Target({ export const TguiCleanTarget = new Juke.Target({ executes: async () => { + Juke.rm('node_modules', { recursive: true }); Juke.rm('tgui/public/.tmp', { recursive: true }); Juke.rm('tgui/public/*.map'); Juke.rm('tgui/public/*.{chunk,bundle,hot-update}.*'); @@ -439,7 +429,7 @@ export const CleanAllTarget = new Juke.Target({ }); export const TgsTarget = new Juke.Target({ - dependsOn: [TguiTarget], + dependsOn: [TguiTarget, TgFontTarget], executes: async () => { Juke.logger.info('Prepending TGS define'); prependDefines('TGS'); diff --git a/tools/build/lib/bun.ts b/tools/build/lib/bun.ts index 951af3f50fd0..43297171323d 100644 --- a/tools/build/lib/bun.ts +++ b/tools/build/lib/bun.ts @@ -3,26 +3,14 @@ import Juke from '../juke/index.js'; let hasInstallFolder = false; -export function bun(...args: any[]): Promise { +export function bun(dir: string, ...args: any[]): Promise { if (!hasInstallFolder) { - mkdirSync('./tgui/node_modules/', { recursive: true }); + mkdirSync(`${dir}/node_modules/`, { recursive: true }); hasInstallFolder = true; } return Juke.exec('bun', [...args.filter((arg) => typeof arg === 'string')], { - cwd: './tgui', - shell: true, - }); -} - -export function bunRoot(...args: any[]): Promise { - if (!hasInstallFolder) { - mkdirSync('./node_modules/', { recursive: true }); - hasInstallFolder = true; - } - - return Juke.exec('bun', [...args.filter((arg) => typeof arg === 'string')], { - cwd: './', + cwd: dir, shell: true, }); } diff --git a/tools/ci/check_grep.sh b/tools/ci/check_grep.sh index da88e80a98c9..8d73a0df22cc 100755 --- a/tools/ci/check_grep.sh +++ b/tools/ci/check_grep.sh @@ -158,6 +158,13 @@ if $grep '^/[\w/]\S+\(.*(var/|, ?var/.*).*\)' "${code_files[@]}"; then st=1 fi; +part "manual verb definition" +if $grep '\tset\s*(name|desc|category|hidden|popup_menu|instant)\s*=\s*(.*)\s' "${code_files[@]}" -g '!code/__DEFINES/**' -g '!code/__HELPERS/**' -g '!tools/**'; then + echo + echo -e "${RED}ERROR: Found a manual verb attribute set. Use GAME_VERB() or ADMIN_VERB() instead.${NC}" + st=1 +fi; + part "improperly pathed static lists" if $grep -i 'var/list/static/.*' "${code_files[@]}"; then echo @@ -184,6 +191,13 @@ if $grep -i '(add_traits|remove_traits)\(.+,\s*src\)' "${code_files[@]}"; then st=1 fi; +part "incorrect shuffle() usage" +if $grep '^\t+shuffle\(.*\)$' "${code_files[@]}"; then + echo + echo -e "${RED}ERROR: shuffle() return was not assigned, use shuffle_inplace() instead if you wish to mutate the passed list!${NC}" + st=1 +fi; + part "ensure proper lowertext usage" # lowertext() is a BYOND-level proc, so it can be used in any sort of code... including the TGS DMAPI which we don't manage in this repository. # basically, we filter out any results with "tgs" in it to account for this edgecase without having to enforce this rule in that separate codebase. @@ -242,6 +256,13 @@ if $grep 'var\/(turf|mob|obj|atom\/movable).+ as anything in o?(view|range|heare st=1 fi; +part "update_overlays() called without using return value" +if $grep '^\t+update_overlays\(\)$' "${code_files[@]}"; then + echo + echo -e "${RED}ERROR: update_overlays() is being called without using the return value. Use update_appearance(UPDATE_OVERLAYS) instead if you dont understand what this means.${NC}" + st=1 +fi; + part "common spelling mistakes" if $grep -i 'centcomm' "${code_files[@]}"; then echo diff --git a/tools/ci/run_server.sh b/tools/ci/run_server.sh index 178bd2c5b5d2..0240a6deb267 100644 --- a/tools/ci/run_server.sh +++ b/tools/ci/run_server.sh @@ -2,6 +2,7 @@ set -euo pipefail MAP=$1 +MAP_CONFIG=${2:-""} echo Testing $MAP @@ -11,6 +12,9 @@ mkdir -p ci_test/data #test config cp tools/ci/ci_config.txt ci_test/config/config.txt +if [ -n "$MAP_CONFIG" ]; then + echo "$MAP_CONFIG" > ci_test/config/maps.txt +fi #set the map cp _maps/$MAP.json ci_test/data/next_map.json @@ -20,8 +24,11 @@ DreamDaemon tgstation.dmb -close -trusted -verbose -params "log-directory=ci" cd .. -mkdir -p data/screenshots_new -cp -r ci_test/data/screenshots_new data/screenshots_new +mkdir -p data +if [ -d "ci_test/data/screenshots_new" ]; then + mkdir -p data/screenshots_new + cp -r ci_test/data/screenshots_new data/screenshots_new +fi cp ci_test/data/unit_tests.json data/unit_tests.json cat ci_test/data/logs/ci/clean_run.lk diff --git a/tools/maplint/lints/area_noop.yml b/tools/maplint/lints/area_noop.yml index c751e85381ba..fedfffd50408 100644 --- a/tools/maplint/lints/area_noop.yml +++ b/tools/maplint/lints/area_noop.yml @@ -9,7 +9,7 @@ skip_files: - _maps/map_files/tramstation/maintenance_modules - _maps/modular_generic - - _maps/shuttles/emergency_scrapheap + - _maps/shuttles/emergency/emergency_scrapheap - _maps/templates - _maps/minigame/deathmatch/OSHA_Violator.dmm - _maps/minigame/deathmatch/maint_mania.dmm diff --git a/tools/pull_request_hooks/autoChangelog.js b/tools/pull_request_hooks/autoChangelog.js index 2e9f656fe7e7..5da32cbd8c95 100644 --- a/tools/pull_request_hooks/autoChangelog.js +++ b/tools/pull_request_hooks/autoChangelog.js @@ -1,7 +1,7 @@ -import { parseChangelog } from "./changelogParser.js"; +import { parseChangelog } from './changelogParser.js'; const safeYml = (string) => - string.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n"); + string.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n'); export function changelogToYml(changelog, login) { const author = changelog.author || login; @@ -17,13 +17,13 @@ export function changelogToYml(changelog, login) { ); } - return ymlLines.join("\n"); + return ymlLines.join('\n'); } export async function processAutoChangelog({ github, context }) { const changelog = parseChangelog(context.payload.pull_request.body); if (!changelog || changelog.changes.length === 0) { - console.log("no changelog found"); + console.log('no changelog found'); return; } @@ -37,6 +37,6 @@ export async function processAutoChangelog({ github, context }) { repo: context.repo.repo, path: `html/changelogs/AutoChangeLog-pr-${context.payload.pull_request.number}.yml`, message: `Automatic changelog for PR #${context.payload.pull_request.number} [ci skip]`, - content: Buffer.from(yml).toString("base64"), + content: Buffer.from(yml).toString('base64'), }); } diff --git a/tools/pull_request_hooks/autoChangelog.test.js b/tools/pull_request_hooks/autoChangelog.test.js index 821c29c6a421..2d9973d8e4c2 100644 --- a/tools/pull_request_hooks/autoChangelog.test.js +++ b/tools/pull_request_hooks/autoChangelog.test.js @@ -1,6 +1,6 @@ -import assert from "node:assert/strict"; -import { changelogToYml } from "./autoChangelog.js"; -import { parseChangelog } from "./changelogParser.js"; +import assert from 'node:assert/strict'; +import { changelogToYml } from './autoChangelog.js'; +import { parseChangelog } from './changelogParser.js'; assert.equal( changelogToYml( diff --git a/tools/pull_request_hooks/autoLabel.js b/tools/pull_request_hooks/autoLabel.js index b995bdc19d57..ac45c3abb9a1 100644 --- a/tools/pull_request_hooks/autoLabel.js +++ b/tools/pull_request_hooks/autoLabel.js @@ -1,4 +1,4 @@ -import * as autoLabelConfig from "./autoLabelConfig.js"; +import * as autoLabelConfig from './autoLabelConfig.js'; /** * Precompute a lowercase keyword → changelog label map @@ -6,7 +6,7 @@ import * as autoLabelConfig from "./autoLabelConfig.js"; const keywordToClLabel = (() => { const map = {}; for (const [label, { keywords }] of Object.entries( - autoLabelConfig.changelog_labels + autoLabelConfig.changelog_labels, )) { for (const keyword of keywords) { map[keyword.toLowerCase()] = label; @@ -21,7 +21,7 @@ const keywordToClLabel = (() => { const titleKeywordSets = (() => { const map = {}; for (const [label, { keywords }] of Object.entries( - autoLabelConfig.title_labels + autoLabelConfig.title_labels, )) { map[label] = new Set(keywords.map((k) => k.toLowerCase())); } @@ -33,10 +33,15 @@ const titleKeywordSets = (() => { */ const fileLabelFilepathSets = (() => { const map = {}; - for (const [label, { filepaths = [], file_extensions = [], add_only }] of Object.entries( - autoLabelConfig.file_labels - )) { - map[label] = { filepaths: new Set(filepaths), file_extensions: new Set(file_extensions), add_only }; + for (const [ + label, + { filepaths = [], file_extensions = [], add_only }, + ] of Object.entries(autoLabelConfig.file_labels)) { + map[label] = { + filepaths: new Set(filepaths), + file_extensions: new Set(file_extensions), + add_only, + }; } return map; })(); @@ -48,29 +53,30 @@ function check_body_for_labels(body) { const labels_to_add = []; // detect "fixes #1234" or "resolves #1234" in body - const fix_regex = /\b(?:fix(?:es|ed)?|resolve[sd]?)\s*(?:#\d+|https:\/\/github\.com\/\S+\/issues\/\d+)/gim; + const fix_regex = + /\b(?:fix(?:es|ed)?|resolve[sd]?)\s*(?:#\d+|https:\/\/github\.com\/\S+\/issues\/\d+)/gim; if (fix_regex.test(body)) { - labels_to_add.push("Fix"); + labels_to_add.push('Fix'); } - const lines = body.split("\n"); + const lines = body.split('\n'); let inChangelog = false; for (const line of lines) { - if (line.startsWith(":cl:")) { + if (line.startsWith(':cl:')) { inChangelog = true; continue; } - if (line.startsWith("/:cl:")) break; + if (line.startsWith('/:cl:')) break; if (!inChangelog) continue; // see if the first segment of the line is one of the keywords - const keyword = line.split(":")[0]?.toLowerCase(); + const keyword = line.split(':')[0]?.toLowerCase(); const found_label = keywordToClLabel[keyword]; if (!found_label) continue; // don't add a billion tags if they forgot to clear all the default ones - const line_text = line.split(":")[1]?.trim(); + const line_text = line.split(':')[1]?.trim(); const { default_text, alt_default_text } = autoLabelConfig.changelog_labels[found_label]; @@ -109,27 +115,25 @@ async function check_diff_files_for_labels(github, context) { try { // Use github.paginate to fetch all files (up to ~3000 max) - const allFiles = await github.paginate( - github.rest.pulls.listFiles, - { - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - per_page: 100, // max per request - } - ); + const allFiles = await github.paginate(github.rest.pulls.listFiles, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.payload.pull_request.number, + per_page: 100, // max per request + }); if (!allFiles?.length) { - console.error("No files returned in pagination."); + console.error('No files returned in pagination.'); return { labels_to_add, labels_to_remove }; } // Set of changed filenames for quick lookup const changedFiles = new Set(allFiles.map((f) => f.filename)); - for (const [label, { filepaths = new Set(), file_extensions = new Set(), add_only }] of Object.entries( - fileLabelFilepathSets - )) { + for (const [ + label, + { filepaths = new Set(), file_extensions = new Set(), add_only }, + ] of Object.entries(fileLabelFilepathSets)) { let found = false; // Filepath-based matching @@ -163,7 +167,7 @@ async function check_diff_files_for_labels(github, context) { } } } catch (error) { - console.error("Error fetching paginated files:", error); + console.error('Error fetching paginated files:', error); } return { labels_to_add, labels_to_remove }; @@ -174,29 +178,31 @@ async function check_diff_files_for_labels(github, context) { */ export async function get_updated_label_set({ github, context }) { const { pull_request } = context.payload; - const { - body = "", - diff_url, - labels = [], - mergeable, - title = "", - } = pull_request; + const { body = '', diff_url, mergeable, title = '' } = pull_request; - const updated_labels = new Set(labels.map((l) => l.name)); + const updated_labels = new Set(); // Always check file diffs if (diff_url) { const { labels_to_add, labels_to_remove } = await check_diff_files_for_labels(github, context); - labels_to_add.forEach((label) => updated_labels.add(label)); - labels_to_remove.forEach((label) => updated_labels.delete(label)); + labels_to_add.forEach((label) => { + updated_labels.add(label); + }); + labels_to_remove.forEach((label) => { + updated_labels.delete(label); + }); } // Always check body/title (otherwise we can lose the changelog labels) if (title) - check_title_for_labels(title).forEach((label) => updated_labels.add(label)); + check_title_for_labels(title).forEach((label) => { + updated_labels.add(label); + }); if (body) - check_body_for_labels(body).forEach((label) => updated_labels.add(label)); + check_body_for_labels(body).forEach((label) => { + updated_labels.add(label); + }); // Keep track of labels that were manually added/removed by maintainers in the events. // And make sure they -stay- added/removed. @@ -208,26 +214,29 @@ export async function get_updated_label_set({ github, context }) { repo: context.repo.repo, issue_number: context.payload.pull_request.number, per_page: 100, - } + }, ); for (const eventData of events) { // Skip all bot actions - if (eventData.actor?.login === "github-actions[bot]") { + if (eventData.actor?.login === 'github-actions[bot]') { continue; } - if (eventData.event === "labeled") { + if (eventData.event === 'labeled') { updated_labels.add(eventData.label.name); - } else if (eventData.event === "unlabeled") { + } else if (eventData.event === 'unlabeled') { updated_labels.delete(eventData.label.name); } } } catch (error) { - console.error("Error fetching paginated events:", error); + console.error('Error fetching paginated events:', error); + for (const label of pull_request.labels) { + updated_labels.add(label.name); + } } // Always remove Test Merge Candidate - updated_labels.delete("Test Merge Candidate"); + updated_labels.delete('Test Merge Candidate'); // Handle merge conflict label let merge_conflict = mergeable === false; @@ -243,7 +252,7 @@ export async function get_updated_label_set({ github, context }) { // failed to find? still processing? try again in a few seconds if (response.data.mergeable === null) { - console.log("Awaiting GitHub response for merge status..."); + console.log('Awaiting GitHub response for merge status...'); await new Promise((r) => setTimeout(r, 10000)); response = await github.rest.pulls.get({ owner: context.repo.owner, @@ -251,7 +260,7 @@ export async function get_updated_label_set({ github, context }) { pull_number: pull_request.number, }); if (response.data.mergeable === null) { - throw new Error("Merge status not available"); + throw new Error('Merge status not available'); } } @@ -262,9 +271,9 @@ export async function get_updated_label_set({ github, context }) { } if (merge_conflict) { - updated_labels.add("Merge Conflict"); + updated_labels.add('Merge Conflict'); } else { - updated_labels.delete("Merge Conflict"); + updated_labels.delete('Merge Conflict'); } // return the labels to the action, which will apply it diff --git a/tools/pull_request_hooks/autoLabel.test.js b/tools/pull_request_hooks/autoLabel.test.js index 09a3946f52f3..3d85af595ba6 100644 --- a/tools/pull_request_hooks/autoLabel.test.js +++ b/tools/pull_request_hooks/autoLabel.test.js @@ -1,11 +1,11 @@ -import { strict as assert } from "node:assert"; -import { get_updated_label_set } from "./autoLabel.js"; +import { strict as assert } from 'node:assert'; +import { get_updated_label_set } from './autoLabel.js'; const empty_pr = { - action: "opened", + action: 'opened', pull_request: { - body: "This PR will have no labels", - title: "Pr with no labels", + body: 'This PR will have no labels', + title: 'Pr with no labels', mergeable: true, }, }; @@ -13,7 +13,7 @@ const empty_label_set = await get_updated_label_set({ github: null, context: { payload: empty_pr }, }); -assert.equal(empty_label_set.length, 0, "No labels should be added"); +assert.equal(empty_label_set.length, 0, 'No labels should be added'); const cl = ` My Awesome PR @@ -24,10 +24,10 @@ refactor: refactored some code :/cl: `; const cl_pr = { - action: "opened", + action: 'opened', pull_request: { body: cl, - title: "Awesome PR", + title: 'Awesome PR', mergeable: false, }, }; @@ -36,19 +36,19 @@ const cl_label_set = await get_updated_label_set({ context: { payload: cl_pr }, }); assert.ok( - cl_label_set.includes("Merge Conflict"), - "Merge Conflict label should be added", + cl_label_set.includes('Merge Conflict'), + 'Merge Conflict label should be added', ); -assert.ok(cl_label_set.includes("Feature"), "Feature label should be added"); +assert.ok(cl_label_set.includes('Feature'), 'Feature label should be added'); assert.ok( - !cl_label_set.includes("Refactor"), - "Refactor label should not be added", + !cl_label_set.includes('Refactor'), + 'Refactor label should not be added', ); const title_pr = { - action: "opened", + action: 'opened', pull_request: { - title: "Logging is important", + title: 'Logging is important', mergeable: true, }, }; @@ -56,4 +56,4 @@ const title_label_set = await get_updated_label_set({ github: null, context: { payload: title_pr }, }); -assert.ok(title_label_set.includes("Logging"), "Logging label should be added"); +assert.ok(title_label_set.includes('Logging'), 'Logging label should be added'); diff --git a/tools/pull_request_hooks/autoLabelConfig.js b/tools/pull_request_hooks/autoLabelConfig.js index 6d848fa715c8..0c1e6a7a44c5 100644 --- a/tools/pull_request_hooks/autoLabelConfig.js +++ b/tools/pull_request_hooks/autoLabelConfig.js @@ -7,34 +7,34 @@ // the label will not be removed export const file_labels = { GitHub: { - filepaths: [".github/"], + filepaths: ['.github/'], }, SQL: { - filepaths: ["SQL/"], + filepaths: ['SQL/'], }, - "Map Edit": { - filepaths: ["_maps/"], - file_extensions: [".dmm"], + 'Map Edit': { + filepaths: ['_maps/'], + file_extensions: ['.dmm'], }, Tools: { - filepaths: ["tools/"], + filepaths: ['tools/'], }, - "Config Update": { - filepaths: ["config/", "code/controllers/configuration/entries/"], + 'Config Update': { + filepaths: ['config/', 'code/controllers/configuration/entries/'], add_only: true, }, Sprites: { - filepaths: ["icons/"], - file_extensions: [".dmi"], + filepaths: ['icons/'], + file_extensions: ['.dmi'], add_only: true, }, Sound: { - filepaths: ["sound/"], - file_extensions: [".ogg"], + filepaths: ['sound/'], + file_extensions: ['.ogg'], add_only: true, }, UI: { - filepaths: ["tgui/"], + filepaths: ['tgui/'], add_only: true, }, }; @@ -44,28 +44,28 @@ export const file_labels = { // Add a label based on keywords in the title export const title_labels = { Logging: { - keywords: ["log", "logging"], + keywords: ['log', 'logging'], }, Removal: { - keywords: ["remove", "delete"], + keywords: ['remove', 'delete'], }, Refactor: { - keywords: ["refactor"], + keywords: ['refactor'], }, - "Unit Tests": { - keywords: ["unit test"], + 'Unit Tests': { + keywords: ['unit test'], }, - "April Fools": { - keywords: ["[april fools]"], + 'April Fools': { + keywords: ['[april fools]'], }, - "Do Not Merge": { - keywords: ["[dnm]", "[do not merge]"], + 'Do Not Merge': { + keywords: ['[dnm]', '[do not merge]'], }, - "GBP: No Update": { - keywords: ["[no gbp]"], + 'GBP: No Update': { + keywords: ['[no gbp]'], }, - "Test Merge Only": { - keywords: ["[tm only]", "[test merge only]"], + 'Test Merge Only': { + keywords: ['[tm only]', '[test merge only]'], }, }; @@ -75,52 +75,52 @@ export const title_labels = { // TODO use the existing changelog parser export const changelog_labels = { Fix: { - default_text: "fixed a few things", - keywords: ["fix", "fixes", "bugfix"], + default_text: 'fixed a few things', + keywords: ['fix', 'fixes', 'bugfix'], }, - "Quality of Life": { - default_text: "made something easier to use", - keywords: ["qol"], + 'Quality of Life': { + default_text: 'made something easier to use', + keywords: ['qol'], }, Sound: { - default_text: "added/modified/removed audio or sound effects", - keywords: ["sound"], + default_text: 'added/modified/removed audio or sound effects', + keywords: ['sound'], }, Feature: { - default_text: "Added new mechanics or gameplay changes", - alt_default_text: "Added more things", - keywords: ["add", "adds", "rscadd"], + default_text: 'Added new mechanics or gameplay changes', + alt_default_text: 'Added more things', + keywords: ['add', 'adds', 'rscadd'], }, Removal: { - default_text: "Removed old things", - keywords: ["del", "dels", "rscdel"], + default_text: 'Removed old things', + keywords: ['del', 'dels', 'rscdel'], }, Sprites: { - default_text: "added/modified/removed some icons or images", - keywords: ["image"], + default_text: 'added/modified/removed some icons or images', + keywords: ['image'], }, - "Grammar and Formatting": { - default_text: "fixed a few typos", - keywords: ["typo", "spellcheck"], + 'Grammar and Formatting': { + default_text: 'fixed a few typos', + keywords: ['typo', 'spellcheck'], }, Balance: { - default_text: "rebalanced something", - keywords: ["balance"], + default_text: 'rebalanced something', + keywords: ['balance'], }, - "Code Improvement": { - default_text: "changed some code", - keywords: ["code_imp", "code"], + 'Code Improvement': { + default_text: 'changed some code', + keywords: ['code_imp', 'code'], }, Refactor: { - default_text: "refactored some code", - keywords: ["refactor"], + default_text: 'refactored some code', + keywords: ['refactor'], }, - "Config Update": { - default_text: "changed some config setting", - keywords: ["config"], + 'Config Update': { + default_text: 'changed some config setting', + keywords: ['config'], }, Administration: { - default_text: "messed with admin stuff", - keywords: ["admin"], + default_text: 'messed with admin stuff', + keywords: ['admin'], }, }; diff --git a/tools/pull_request_hooks/changelogConfig.js b/tools/pull_request_hooks/changelogConfig.js index f0f87e90e433..b215abfd2324 100644 --- a/tools/pull_request_hooks/changelogConfig.js +++ b/tools/pull_request_hooks/changelogConfig.js @@ -9,112 +9,112 @@ */ export const CHANGELOG_ENTRIES = [ [ - ["rscadd", "add", "adds"], + ['rscadd', 'add', 'adds'], { placeholders: [ - "Added new mechanics or gameplay changes", - "Added more things", + 'Added new mechanics or gameplay changes', + 'Added more things', ], }, ], [ - ["bugfix", "fix", "fixes"], + ['bugfix', 'fix', 'fixes'], { - placeholders: ["fixed a few things"], + placeholders: ['fixed a few things'], }, ], [ - ["rscdel", "del", "dels"], + ['rscdel', 'del', 'dels'], { - placeholders: ["Removed old things"], + placeholders: ['Removed old things'], }, ], [ - ["qol"], + ['qol'], { - placeholders: ["made something easier to use"], + placeholders: ['made something easier to use'], }, ], [ - ["sound"], + ['sound'], { - placeholders: ["added/modified/removed audio or sound effects"], + placeholders: ['added/modified/removed audio or sound effects'], }, ], [ - ["image"], + ['image'], { - placeholders: ["added/modified/removed some icons or images"], + placeholders: ['added/modified/removed some icons or images'], }, ], [ - ["map"], + ['map'], { - placeholders: ["added/modified/removed map content"], + placeholders: ['added/modified/removed map content'], }, ], [ - ["spellcheck", "typo"], + ['spellcheck', 'typo'], { - placeholders: ["fixed a few typos"], + placeholders: ['fixed a few typos'], }, ], [ - ["balance"], + ['balance'], { - placeholders: ["rebalanced something"], + placeholders: ['rebalanced something'], }, ], [ - ["code_imp", "code"], + ['code_imp', 'code'], { - placeholders: ["changed some code"], + placeholders: ['changed some code'], }, ], [ - ["refactor"], + ['refactor'], { - placeholders: ["refactored some code"], + placeholders: ['refactored some code'], }, ], [ - ["config"], + ['config'], { - placeholders: ["changed some config setting"], + placeholders: ['changed some config setting'], }, ], [ - ["admin"], + ['admin'], { - placeholders: ["messed with admin stuff"], + placeholders: ['messed with admin stuff'], }, ], [ - ["server"], + ['server'], { - placeholders: ["something server ops should know"], + placeholders: ['something server ops should know'], }, ], ]; // Valid changelog openers -export const CHANGELOG_OPEN_TAGS = [":cl:", "??"]; +export const CHANGELOG_OPEN_TAGS = [':cl:', '??']; // Valid changelog closers -export const CHANGELOG_CLOSE_TAGS = ["/:cl:", "/ :cl:", ":/cl:", "/??", "/ ??"]; +export const CHANGELOG_CLOSE_TAGS = ['/:cl:', '/ :cl:', ':/cl:', '/??', '/ ??']; // Placeholder value for an author -export const CHANGELOG_AUTHOR_PLACEHOLDER_NAME = "optional name here"; +export const CHANGELOG_AUTHOR_PLACEHOLDER_NAME = 'optional name here'; diff --git a/tools/pull_request_hooks/changelogParser.js b/tools/pull_request_hooks/changelogParser.js index d17472140e98..64bab70900e5 100644 --- a/tools/pull_request_hooks/changelogParser.js +++ b/tools/pull_request_hooks/changelogParser.js @@ -1,4 +1,4 @@ -import * as changelogConfig from "./changelogConfig.js"; +import * as changelogConfig from './changelogConfig.js'; const REGEX_CHANGELOG_LINE = /^(\w+): (.+)$/; @@ -66,7 +66,7 @@ export function parseChangelog(text) { if (text == null) { return undefined; } - const lines = text.split("\n").map((line) => line.trim()); + const lines = text.split('\n').map((line) => line.trim()); for (let index = 0; index < lines.length; index++) { const line = lines[index]; diff --git a/tools/pull_request_hooks/changelogParser.test.js b/tools/pull_request_hooks/changelogParser.test.js index fdb460ed34a8..1a975930034e 100644 --- a/tools/pull_request_hooks/changelogParser.test.js +++ b/tools/pull_request_hooks/changelogParser.test.js @@ -1,5 +1,5 @@ -import { strict as assert } from "node:assert"; -import { parseChangelog } from "./changelogParser.js"; +import { strict as assert } from 'node:assert'; +import { parseChangelog } from './changelogParser.js'; // Basic test const basicChangelog = parseChangelog(` @@ -9,10 +9,10 @@ const basicChangelog = parseChangelog(` /:cl: `); -assert.equal(basicChangelog.author, "DenverCoder9"); +assert.equal(basicChangelog.author, 'DenverCoder9'); assert.equal(basicChangelog.changes.length, 1); -assert.equal(basicChangelog.changes[0].type.changelogKey, "rscadd"); -assert.equal(basicChangelog.changes[0].description, "Adds new stuff"); +assert.equal(basicChangelog.changes[0].type.changelogKey, 'rscadd'); +assert.equal(basicChangelog.changes[0].description, 'Adds new stuff'); // Case-insensitivity test const mixedCaseChangelog = parseChangelog(` @@ -22,10 +22,10 @@ const mixedCaseChangelog = parseChangelog(` /:cl: `); -assert.equal(mixedCaseChangelog.author, "DenverCoder9"); +assert.equal(mixedCaseChangelog.author, 'DenverCoder9'); assert.equal(mixedCaseChangelog.changes.length, 1); -assert.equal(mixedCaseChangelog.changes[0].type.changelogKey, "rscadd"); -assert.equal(mixedCaseChangelog.changes[0].description, "Adds new stuff"); +assert.equal(mixedCaseChangelog.changes[0].type.changelogKey, 'rscadd'); +assert.equal(mixedCaseChangelog.changes[0].description, 'Adds new stuff'); // Multi-line test const multiLineChangelog = parseChangelog(` @@ -38,10 +38,10 @@ const multiLineChangelog = parseChangelog(` assert.equal(multiLineChangelog.author, undefined); assert.equal(multiLineChangelog.changes.length, 1); -assert.equal(multiLineChangelog.changes[0].type.changelogKey, "rscadd"); +assert.equal(multiLineChangelog.changes[0].type.changelogKey, 'rscadd'); assert.equal( multiLineChangelog.changes[0].description, - "Adds new stuff\nto the game", + 'Adds new stuff\nto the game', ); // Placeholders @@ -70,8 +70,8 @@ const noCloseChangelog = parseChangelog(` `); assert.equal(noCloseChangelog.changes.length, 1); -assert.equal(noCloseChangelog.changes[0].type.changelogKey, "rscadd"); -assert.equal(noCloseChangelog.changes[0].description, "Adds new stuff"); +assert.equal(noCloseChangelog.changes[0].type.changelogKey, 'rscadd'); +assert.equal(noCloseChangelog.changes[0].description, 'Adds new stuff'); // :cl: with arbitrary text diff --git a/tools/pull_request_hooks/removeGuideComments.js b/tools/pull_request_hooks/removeGuideComments.js index 66846ad3c85d..5482d2484583 100644 --- a/tools/pull_request_hooks/removeGuideComments.js +++ b/tools/pull_request_hooks/removeGuideComments.js @@ -1,4 +1,4 @@ -import fs from "fs"; +import fs from 'node:fs'; const REGEX_COMMENT = //g; @@ -6,13 +6,13 @@ const REGEX_COMMENT = //g; const comments = []; for (const match of fs - .readFileSync(".github/PULL_REQUEST_TEMPLATE.md", { encoding: "utf8" }) + .readFileSync('.github/PULL_REQUEST_TEMPLATE.md', { encoding: 'utf8' }) .matchAll(REGEX_COMMENT)) { comments.push(match[0]); } function escapeRegex(string) { - return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + return string.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); } export async function removeGuideComments({ github, context }) { @@ -25,7 +25,7 @@ export async function removeGuideComments({ github, context }) { ).data.body; if (!originalBody) { - console.log("PR body is empty, skipping..."); + console.log('PR body is empty, skipping...'); return; } @@ -33,8 +33,8 @@ export async function removeGuideComments({ github, context }) { for (const comment of comments) { newBody = newBody.replace( - new RegExp(`^\\s*${escapeRegex(comment)}\\s*`, "gm"), - "\n", + new RegExp(`^\\s*${escapeRegex(comment)}\\s*`, 'gm'), + '\n', ); } diff --git a/tools/pull_request_hooks/rerunFlakyTests.js b/tools/pull_request_hooks/rerunFlakyTests.js index 8170a0541bb0..98e20443dc88 100644 --- a/tools/pull_request_hooks/rerunFlakyTests.js +++ b/tools/pull_request_hooks/rerunFlakyTests.js @@ -1,9 +1,9 @@ -const LABEL = "🤖 Flaky Test Report"; -const TITLE_BOT_HEADER = "title: "; +const LABEL = '🤖 Flaky Test Report'; +const TITLE_BOT_HEADER = 'title: '; // Only check jobs that start with these. // Helps make sure we don't restart something like screenshot tests or linters, which are not known to be flaky. -const CONSIDERED_JOBS = ["Integration Tests"]; +const CONSIDERED_JOBS = ['Integration Tests']; async function getFailedJobsForRun(github, context, workflowRunId, runAttempt) { const jobs = await github.paginate( @@ -19,7 +19,7 @@ async function getFailedJobsForRun(github, context, workflowRunId, runAttempt) { }, ); - return jobs.filter((job) => job.conclusion === "failure"); + return jobs.filter((job) => job.conclusion === 'failure'); } export async function rerunFlakyTests({ github, context }) { @@ -35,7 +35,7 @@ export async function rerunFlakyTests({ github, context }) { return CONSIDERED_JOBS.some((title) => job.name.startsWith(title)); }); if (filteredFailingJobs.length === 0) { - console.log("Failing jobs are NOT designated flaky. Not rerunning."); + console.log('Failing jobs are NOT designated flaky. Not rerunning.'); return; } @@ -51,13 +51,13 @@ export async function rerunFlakyTests({ github, context }) { // Tries its best to extract a useful error title and message for the given log export function extractDetails(log) { // Strip off timestamp - const lines = log.split(/^[0-9.:T\-]*?Z /gm); + const lines = log.split(/^[0-9.:T-]*?Z /gm); const failureRegex = /^\t?FAILURE #(?[0-9]+): (?.+)/; const groupRegex = /^##\[group\](?.+)/; const failures = []; - let lastGroup = "root"; + let lastGroup = 'root'; let loggingFailure; const newFailure = (failureMatch) => { @@ -65,7 +65,7 @@ export function extractDetails(log) { loggingFailure = { headline, - group: lastGroup.replace("/datum/unit_test/", ""), + group: lastGroup.replace('/datum/unit_test/', ''), details: [], }; }; @@ -85,7 +85,7 @@ export function extractDetails(log) { } newFailure(failureMatch); - } else if (failureMatch || line.startsWith("##")) { + } else if (failureMatch || line.startsWith('##')) { failures.push(loggingFailure); loggingFailure = undefined; @@ -100,7 +100,7 @@ export function extractDetails(log) { // We had no logged failures, there's not really anything we can do here if (failures.length === 0) { return { - title: "Flaky test failure with no obvious source", + title: 'Flaky test failure with no obvious source', failures, }; } @@ -116,7 +116,7 @@ export function extractDetails(log) { return { title: `Multiple flaky test failures in ${Array.from(uniqueGroups) .sort() - .join(", ")}`, + .join(', ')}`, failures, }; } @@ -164,7 +164,7 @@ export function extractDetails(log) { } // Try to normalize the title and remove anything that might be variable - const normalizedError = failure.headline.replace(/\s*at .+?:[0-9]+.*/g, ""); // " at code.dm:123" + const normalizedError = failure.headline.replace(/\s*at .+?:[0-9]+.*/g, ''); // " at code.dm:123" return { title: `Flaky test ${failGroup}: ${normalizedError}`, @@ -231,11 +231,11 @@ function createBody({ title, failures }, runUrl) { ${failures .map( (failure) => - `${failure.group}: ${failure.headline}\n\t${failure.details.join("\n")}`, + `${failure.group}: ${failure.headline}\n\t${failure.details.join('\n')}`, ) - .join("\n")} + .join('\n')} \`\`\` - `.replace(/^\s*/gm, ""); + `.replace(/^\s*/gm, ''); } export async function reportFlakyTests({ github, context }) { @@ -254,7 +254,7 @@ export async function reportFlakyTests({ github, context }) { // This could one day be relaxed if we face serious enough flaky test problems, so we're going to loop anyway if (filteredFailingJobs.length !== 1) { console.log( - "Multiple jobs failing after retry, assuming maintainer rerun.", + 'Multiple jobs failing after retry, assuming maintainer rerun.', ); return; diff --git a/tools/pull_request_hooks/rerunFlakyTests.test.js b/tools/pull_request_hooks/rerunFlakyTests.test.js index 7f0b2dfb0150..6fc0f2ad9ab9 100644 --- a/tools/pull_request_hooks/rerunFlakyTests.test.js +++ b/tools/pull_request_hooks/rerunFlakyTests.test.js @@ -1,45 +1,45 @@ -import { strict as assert } from "node:assert"; -import fs from "node:fs"; -import { extractDetails } from "./rerunFlakyTests.js"; +import { strict as assert } from 'node:assert'; +import fs from 'node:fs'; +import { extractDetails } from './rerunFlakyTests.js'; function extractDetailsFromPayload(filename) { return extractDetails( fs.readFileSync(`tests/flakyTestPayloads/${filename}.txt`, { - encoding: "utf8", + encoding: 'utf8', }), ); } -const chatClient = extractDetailsFromPayload("chat_client"); +const chatClient = extractDetailsFromPayload('chat_client'); assert.equal( chatClient.title, - "Flaky hard delete: /datum/computer_file/program/chatclient", + 'Flaky hard delete: /datum/computer_file/program/chatclient', ); assert.equal(chatClient.failures.length, 1); -const monkeyBusiness = extractDetailsFromPayload("monkey_business"); +const monkeyBusiness = extractDetailsFromPayload('monkey_business'); assert.equal( monkeyBusiness.title, - "Flaky test monkey_business: Cannot execute null.resolve().", + 'Flaky test monkey_business: Cannot execute null.resolve().', ); assert.equal(monkeyBusiness.failures.length, 1); -const shapeshift = extractDetailsFromPayload("shapeshift"); +const shapeshift = extractDetailsFromPayload('shapeshift'); assert.equal( shapeshift.title, - "Multiple errors in flaky test shapeshift_spell", + 'Multiple errors in flaky test shapeshift_spell', ); assert.equal(shapeshift.failures.length, 16); -const multipleFailures = extractDetailsFromPayload("multiple_failures"); +const multipleFailures = extractDetailsFromPayload('multiple_failures'); assert.equal( multipleFailures.title, - "Multiple flaky test failures in more_shapeshift_spell, shapeshift_spell", + 'Multiple flaky test failures in more_shapeshift_spell, shapeshift_spell', ); assert.equal(multipleFailures.failures.length, 2); -const invalidTimer = extractDetailsFromPayload("invalid_timer"); +const invalidTimer = extractDetailsFromPayload('invalid_timer'); assert.equal( invalidTimer.title, - "Flaky test monkey_business: Invalid timer: /datum/looping_sound/proc/start_sound_loop() on /datum/looping_sound/showering", + 'Flaky test monkey_business: Invalid timer: /datum/looping_sound/proc/start_sound_loop() on /datum/looping_sound/showering', ); diff --git a/tools/screenshot-test-comparison/index.js b/tools/screenshot-test-comparison/index.js index 0998344cf05b..75f0a19f2d26 100644 --- a/tools/screenshot-test-comparison/index.js +++ b/tools/screenshot-test-comparison/index.js @@ -1,25 +1,33 @@ -const fs = require("fs"); -const path = require("path"); -const pixelmatch = require("pixelmatch"); -const process = require("process"); -const PNG = require("pngjs").PNG; - -const artifactsDirectory = process.argv[2]; +import { + copyFileSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + statSync, + writeFileSync, +} from 'node:fs'; +import { join, parse } from 'node:path'; +import { argv, exit } from 'node:process'; +import pixelmatch from 'pixelmatch'; +import { PNG } from 'pngjs'; + +const artifactsDirectory = argv[2]; if (!artifactsDirectory) { - console.error("Artifacts directory was not passed in"); - process.exit(1); + console.error('Artifacts directory was not passed in'); + exit(1); } -const screenshotsDirectory = process.argv[3]; +const screenshotsDirectory = argv[3]; if (!screenshotsDirectory) { - console.error("Screenshots directory was not passed in"); - process.exit(1); + console.error('Screenshots directory was not passed in'); + exit(1); } -const outputDirectory = process.argv[4]; +const outputDirectory = argv[4]; if (!outputDirectory) { - console.error("Output directory was not passed in"); - process.exit(1); + console.error('Output directory was not passed in'); + exit(1); } const knownFailures = new Set(); @@ -27,49 +35,46 @@ const knownFailures = new Set(); const fail = (screenshotName, newScreenshot, oldScreenshot, diff) => { knownFailures.add(screenshotName); - const outputPath = path.join( - outputDirectory, - path.parse(screenshotName).name, - ); - fs.mkdirSync(outputPath, { + const outputPath = join(outputDirectory, parse(screenshotName).name); + mkdirSync(outputPath, { recursive: true, }); - fs.copyFileSync(newScreenshot, path.join(outputPath, "new.png")); + copyFileSync(newScreenshot, join(outputPath, 'new.png')); if (oldScreenshot) { - fs.copyFileSync(oldScreenshot, path.join(outputPath, "old.png")); + copyFileSync(oldScreenshot, join(outputPath, 'old.png')); } if (diff) { - fs.writeFileSync(path.join(outputPath, "diff.png"), PNG.sync.write(diff)); + writeFileSync(join(outputPath, 'diff.png'), PNG.sync.write(diff)); } }; -for (const filename of fs.readdirSync(artifactsDirectory)) { - if (!filename.startsWith("test_artifacts")) { +for (const filename of readdirSync(artifactsDirectory)) { + if (!filename.startsWith('test_artifacts')) { continue; } - const fullPath = path.join(artifactsDirectory, filename, "screenshots_new"); + const fullPath = join(artifactsDirectory, filename, 'screenshots_new'); - const fullPathStat = fs.statSync(fullPath); + const fullPathStat = statSync(fullPath); if (!fullPathStat.isDirectory()) { continue; } - for (const screenshotName of fs.readdirSync(fullPath)) { + for (const screenshotName of readdirSync(fullPath)) { if (knownFailures.has(screenshotName)) { continue; } - const fullPathScreenshotName = path.join(fullPath, screenshotName); + const fullPathScreenshotName = join(fullPath, screenshotName); - const fullPathCompareScreenshot = path.join( + const fullPathCompareScreenshot = join( screenshotsDirectory, screenshotName, ); - if (!fs.existsSync(fullPathCompareScreenshot)) { + if (!existsSync(fullPathCompareScreenshot)) { console.error( `${fullPathCompareScreenshot} is missing an existing screenshot to compare against`, ); @@ -77,11 +82,9 @@ for (const filename of fs.readdirSync(artifactsDirectory)) { continue; } - const screenshotNew = PNG.sync.read( - fs.readFileSync(fullPathScreenshotName), - ); + const screenshotNew = PNG.sync.read(readFileSync(fullPathScreenshotName)); const screenshotCompare = PNG.sync.read( - fs.readFileSync(fullPathCompareScreenshot), + readFileSync(fullPathCompareScreenshot), ); if ( @@ -122,5 +125,5 @@ for (const filename of fs.readdirSync(artifactsDirectory)) { if (knownFailures.size > 0) { console.error(`${knownFailures.size} screenshots failed`); - process.exit(1); + exit(1); } diff --git a/tools/test_merge_bot/comment.js b/tools/test_merge_bot/comment.js index b512870e3a6b..3a7d5c76a9ed 100644 --- a/tools/test_merge_bot/comment.js +++ b/tools/test_merge_bot/comment.js @@ -13,7 +13,7 @@ export const createComment = (servers, existingComment) => { servers[serverName] = server; } - for (const line of entries.split("\n")) { + for (const line of entries.split('\n')) { const match = line.match(ENTRY_PATTERN); if (!match) { continue; @@ -39,7 +39,7 @@ export const createComment = (servers, existingComment) => { .flat() .map(({ round_id }) => round_id) .sort() - .join(", "); + .join(', '); const newHeader = ``; @@ -48,30 +48,30 @@ export const createComment = (servers, existingComment) => { } let totalRounds = 0; - let listOfRounds = ""; + let listOfRounds = ''; for (const [server, rounds] of Object.entries(servers).sort( ([a], [b]) => b - a, )) { totalRounds += rounds.length; - listOfRounds += `${"\n"}### ${server}`; + listOfRounds += `${'\n'}### ${server}`; for (const { datetime, round_id, url } of rounds.sort( (a, b) => b.round_id - a.round_id, )) { - listOfRounds += `${"\n"}- [${round_id} @ ${datetime}](${url})`; + listOfRounds += `${'\n'}- [${round_id} @ ${datetime}](${url})`; } - listOfRounds += "\n"; + listOfRounds += '\n'; } return ( newHeader + `\nThis pull request was test merged in ${totalRounds} round(s).` + - "\n" + - "
Round list\n\n" + + '\n' + + '
Round list\n\n' + listOfRounds + - "\n
\n" + '\n
\n' ); }; diff --git a/tools/test_merge_bot/comment.test.js b/tools/test_merge_bot/comment.test.js index d561bf4faece..c0f1182019a5 100644 --- a/tools/test_merge_bot/comment.test.js +++ b/tools/test_merge_bot/comment.test.js @@ -1,13 +1,13 @@ -import { strict as assert } from "assert"; -import { createComment } from "./comment.js"; +import { strict as assert } from 'node:assert'; +import { createComment } from './comment.js'; const baseServers = { bagil: [ { round_id: 1, - datetime: "2020-01-01 00:00:00", - server: "bagil", - url: "https://tgstation13.org/round/1", + datetime: '2020-01-01 00:00:00', + server: 'bagil', + url: 'https://tgstation13.org/round/1', }, ], }; @@ -40,9 +40,9 @@ assert.equal( bagil: [ { round_id: 2, - datetime: "2020-01-01 01:00:00", - server: "bagil", - url: "https://tgstation13.org/round/2", + datetime: '2020-01-01 01:00:00', + server: 'bagil', + url: 'https://tgstation13.org/round/2', }, ], }, diff --git a/tools/test_merge_bot/main.js b/tools/test_merge_bot/main.js index 1a1f343601d8..4d7e24368596 100644 --- a/tools/test_merge_bot/main.js +++ b/tools/test_merge_bot/main.js @@ -1,12 +1,12 @@ -import fetch from "node-fetch"; -import { createComment } from "./comment.js"; +import fetch from 'node-fetch'; +import { createComment } from './comment.js'; -const TEST_MERGE_COMMENT_HEADER = "